当前位置:文档之家› 算 法 的 鲁 棒 性

算 法 的 鲁 棒 性

【架构设计】【程序指标】鲁棒性与健壮性的细节区别
一、健壮性
健壮性是指软件对于规范要求以外的输入情况的处理能力。

所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。

另外健壮性有时也和容错性,可移植性,正确性有交叉的地方。

比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量度标准,但是也可以认为这个软件是健壮的。

一个软件可以正确地运行在不同环境下,则认为软件可移植性高,也可以叫,软件在不同平台下是健壮的。

一个软件能够检测自己内部的设计或者编码错误,并得到正确的执行结果,这是软件的正确性标准,但是也可以说,软件有内部的保护机制,是模块级健壮的。

软件健壮性是一个比较模糊的概念,但是却是非常重要的软件外部量度标准。

软件设计的健壮与否直接反应了分析设计和编码人员的水平。

即所谓的高手写的程序不容易死。

(不是硅谷,印度才是全球软件精英向往之地)
为什么印度人的软件业在国际上要比中国的好,除了印度人母语是英语的原因外,更重要的是因为印度人严谨,他们的程序更有健壮性。

印度的一个老程序员,月代码量在一千行左右,这一千行代码,算法平实,但都是经过仔细推敲,实战检验的代码,不会轻易崩溃的代码。

我们的程序
员,一天就可以写出一千行代码,写的代码简短精干,算法非常有技巧性,但往往是不安全的,不完善的。

印度人的程序被称作:傻壮。

但程序就得这样。

写一段功能性的代码,可能需要一百行代码,但是写一段健壮的程序,至少需要300行代码。

例如:房贷计算器的代码,算法异常简单,十多行就完成了,但是,这段程序完全不具备健壮性,很简单,我的输入是不受限制的,这个程序要求从用户界面读取利率,年限,贷款额三个数据,一般同学的写法很简单,一句doubleNum = Double.parseDouble(JOptionPane.showInputDialog(null,"请输入"+StrChars)) ;就万事OK了。

但是,真的有这么简单么,开玩笑,这么简单就好了,列举以下事例1,我输入了负数2,我的输入超出了double类型所能涵盖的范围3,我输入了标点符号4,我输入了中文5,我没输入6,我选择了取消或者点了右上角的关闭这一切都是有可能发生的事件,而且超出了你程序的处理范围,这种事情本不该发生,但是程序使用时,一切输入都是有可能的,怎么办,你只能在程序中限制输入。

作为一个程序员,你如何让你的代码在执行的时候响应这些事件呢,我用了四十行代码编写了一个方法,用来限定我的输入只能为正实数,否则就报错,用户点击取消或者关闭按钮,则返回一个特殊数值,然后在主方法增加一个循环,在调用输入方法的时候检查返回值,如果为特殊值,就返回上层菜单或者关闭程序。

二、鲁棒性
鲁棒是Robust的音译,也就是健壮和强壮的意思。

鲁棒性(robustness)就是系统的健壮性。

它是指一个程序中对可能
导致程序崩溃的各种情况都充分考虑到,并且作相应的处理,在程序遇到异常情况时还能正常工作,而不至于死机。

比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。

相应的处理,例如有异常处理捕获异常,避免发生越界读写等等,这些要靠程序员的经验来完成。

所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。

根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。

以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。

相应的处理,例如有异常处理捕获异常,避免发生越界读写等等,这些要靠程序员的经验来完成。

导语:深度神经网络在各种各样的重要任务中取得了令人印象深刻的成果。

但有一点,对不同于训练分布的数据进行评估时,表现并不是很好。

最近,蒙特利尔算法学习研究所提出了一种强化网络,它能够有效提高现有深度神经网络的鲁棒性。

if( pRoot1-val == pRoot2-val )
o--outlier。

采用该数据模型,再在目标函数中引入关于o的惩罚项(如L1,L2范数),可提高算法鲁棒性。

if(pHead == NULL || pHead-next == NULL)
5)如果模型性能达到设定的阈值或迭代达到预定次数,则算法终止,否则跳转到第一步
步骤2:回复美美“ICDAR2019”,则会自动将您加入ICDAR2019-ReCTS 技术交流群
2nd-octave两项分别是2σ,2kσ;由于无法比较极值,我们必须在高斯空间继续添加高斯模糊项,使得形成σ,kσ,k2σ,k3σ,k4σ这样就可以选择DoG
不同的是Surf还加入了Hessian矩阵迹的判断,如果两个特征点的矩阵迹正负号相同,代表这两个特征具有相同方向上的对比度变化,如果不同,说明这两个特征点的对比度变化方向是相反的,即使欧氏距离为0,也直接予以排除。

学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。

在Adaboost中,经过m此迭代之后,可以得到fm(x)fm(x):。

相关主题