6.1引言
线性分类在解决很多问题是取得的最小误差率还显得不够!
一个精确选择的非线性函数,可以得到任意判决边界。但主要的困难是如何选择非线性函数。一个完备的基函数可能得到较好的效果,但可能会有太多的参数需要估计,而训练样本总是有限的!
再或者我们可能有先验知识引导我们选择非线性函数,但如果缺少这些信息,就无法自动选择非线性函数。
多层神经网络是一种在训练线性判别函数的同时学习其非线性程度的方法???决定非线性映射的参数的学习与控制线性判别函数的参数的学习同时进行的???
多层神经网络基本上的执行还是线性判决,知识执行过程是在输入信号的非线性映射空间中进行的。提供相当简单的算法,允许非线性函数的具体形式可以通过训练样本获得。
反向转播算法具有简便性和许多成功应用。
仍然有一些启发式技巧。
网络拓扑结构有重要的作用,与实际问题相关。启发式的选择。
正则化:选择或调整网络的复杂程度。
6.2前馈运算和分类
前馈运算比较简单,其实质就是复合函数,所以比没有复合函数的分类器的运算能力和表达能力更强!
对每一个单元都可以有不同的激活函数,我们先假设所有的激活函数是一样的。
******表达能力的问题比较抽象和复杂,暂时只做了解*****************************
戈尔莫戈罗夫证明:只要给出足够的隐单元,任何一般形式的函数都可以用3层网络表示,
但非线性函数是很复杂的,傅里叶给出了更直观的证明。
表达能力给了我们信心,但没什么实际效用。
模式识别的主要任务是设计和训练神经网络。
6.3反向传播算法
最核心思想是最小化误差函数,使得网络输出值最接近训练样本的真实输出值(期望输出值)
一般采用LMS最小均方差,分类问题也可采用不同的误差函数,见andrewNG的课程。
J(w)=...一个误差函数,w为所有权值
BP算法基于梯度下降,计算梯度,并让权值想着减少误差函数的方向调整。
而计算梯度的核心就是链式法则,这与神经网络实质是复合函数是一致的!
在BP中提出了一个单元敏感度的概念,我的理解是敏感度值表示该单元对梯度贡献的大小,同时也暗示着该单元在网络中的重要性。这里还提到与信用分配问题有关,不是很清楚。
6.3.2训练协议(训练方法)
监督学习的3种最有用的学习协议
随机训练stochastic,模式随机取出
成批训练batch,所有模式在训练前全部送往网络中
在线训练on-line:每种模式只需要提供一次,不需要存储
(我的理解:成批训练外层循环是下降次数,内层循环是模式,而在线训练则刚好相反,使得不用每次更新都要遍历数据集,在数据集庞大时是一种较好的实践(可以只训练一个子集))
(PC里提供的是在线训练每个模式只更新一次!)
PC里先考虑的是单个模式的误差,batch训练考虑的是所有模式的总误差。
当然,大量单次更新也可以降低总误差!
6.8节比较不同协议的优缺点。
6.3.3学习曲线
误差对训练次数的曲线,batch的误差是单调减小的。
误差渐进值取决于贝叶斯误差??(前面的都忘了),数据量和参数个数。
3数据集:训练集,测试集,验证集。见6.8.14。
我的理解:
训练集:用于参数训练
测试集:真是场景的性能(网络的推广能力)
验证集:测试集的仿真,可以用于训练集的停止准则,防止过拟合。
第九章深入介绍验证技术或交叉验证
学习总结:
6.1-6.3较为简单,重要的概念和公式基本上都理解了。
有如下需要继续学习的地方:
信用分配,验证集(理解是否到位,实践怎么操作?),贝叶斯误差(是什么?)