2017/7/20 朱兴全教授学术讲座观点与总结第三讲:多层神经网络
一、多层神经网络(为什么可以解决多种问题)
多层神经网络:在输入和输出层上有隐含层,可以克服单层神经网络的限制处理非线性分离问题
- 多层有更大的区分度,多条线去拟合
第三个图中,每一个方块对应第二个图中神经网络,即有两个隐含层。
二、Feedforward Neural Networks
1、FF NN模型
选择sigmoid函数作为激活函数的原因是其处处可导。
多层神经网络的误差,输出误差(期望输出与真实输出的差)、单个样本网络误差(单个样本对应所有输出与期望输出的误差)、所有样本的网络误差。
前馈神经网络
loss:期望与实际情况的差异 去调整权重。观察到某种情况下(某一权重分布下)的影响(输出结果),去更改行为(权重),以使其往期望的方向改变。
2、训练:BP算法
重复:
- 前向传递 从输入到输出的计算,得到error
- 后向传递 从输出层开始,误差反向传播,对每一个神经元计算局部梯度,更改权重(最后层附近更改权重是最大的,越往前影响越弱,如绳子抖波浪一样)
算法步骤:
2、BP规则的推导(个人认为十分调理清晰,简单易懂,非常推荐看看)
输出层与隐含层神经元的权重更新不同
各个层到底学到的是什么?
权重与特征并不同等,具有可区分性的特征对应的权重值更大,对应点(神经元)response更高。
这里有一个demo,适合运行在32位的计算机上,希望后面有时间来运行一下(64位要在x86里更改什么来着。。。)
http://www.inf.ed.ac.uk/teaching/courses/inf1-cg/labs/lab6/mcmaster/digit-demo.html
训练停止法则:两点,一是整个平均误差平方达到一个很小的值。二是使用验证集,整个模型的泛化性能表现足够良好。
- 有效数据集:训练数据集、验证集(监测误差,决定是否停止迭代)、测试集
- 控制好模型的复杂度与泛化能力
- 通过交叉验证选择合适的模型
3、神经网络设计
数据表示
①网络拓扑结构(层数等)
②网络参数(权重、学习率、隐藏层数和神经元个数、训练集样本个数)
本文为个人学习笔记!!