笔记:计算机视觉与深度学习-北邮-鲁鹏-2020年录屏
写在开头(重复的)
1.课程来源:B站视频.
2.笔记目的:个人学习+增强记忆+方便回顾
3.时间:2021年4月13日
4.同类笔记链接:(钩子:会逐渐增加20210428)
第一讲.第二讲.第三讲.第四讲.第五讲.第六讲.第七讲.第八讲.第九讲.第十讲.第十一讲.番外篇一个简单实现.第十二讲.第十三讲.第十四讲完结.
5.请一定观看视频课程,笔记是对视频内容的有限度的重现和基于个人的深化理解。
6.注意符号 SS:意味着我的个人理解,非单纯授课内容,有可能有误哦。
—以下正文—
(00:00-25:00)为复习内容
一、再谈激活函数
(一)梯度消失问题
- 1.从sigmoid函数的导数引出梯度消失问题
- sigmoid函数及其导函数如图所示

- 因此sigmoid现在不常用了
- 2.梯度消失是神经网络训练中非常致命的问题,其本质是由于数学工具—链式求导法则—的惩罚特性导致的。
- 3.梯度爆炸:断崖处梯度乘以学习率后会是一个非常大的值,从而“飞”出了合理区域,最终导致算法不收敛。
- 解决方法:把沿梯度方向前进的步长限制在某个值内,就可以避免“飞”出了,这个方法也成为梯度裁剪。
- 4.同样的,tanh(双曲正切函数)也有局部梯度特征不利于网络梯度流的方向传递(既梯度消失问题)。
- 5.ReLU函数方便使用

- ReLU函数的局部特性方面,当输入大于0时,局部梯度永远不会为0,比较有利于梯度流的传递。
- 6.Leakly ReLU激活函数:好处是梯度永远不为0,而且梯度很好计算。

- 7.激活函数如何选择?尽量选择ReLU或者Leakly ReLU函数,相对于Sigmoid/tanh,ReLU函数或者Leakly ReLU函数会让梯度流更加顺畅,训练过程手收敛得更快。
二、动量法与自适应梯度
(一)动量法
- 1.为什么需要动量法?答:当一个损失函数在一个方向上变化迅速,在另一个方向上变化缓慢时,在向答案收敛时,计算中各个步骤会在总体上表现为在快的方向来回震动,在慢的方向进展缓慢。使用我们已有的梯度下降方法作为工具,不能很好解决这一问题。

- 2.改进思想:利用累加历史梯度信息,更新梯度。
- 3.两种方法伪代码对比

*3.1 μ的取值[0,1),建议取值0.9
(二)自适应梯度法
- 1.自适应梯度法通过减小震荡方向步长,增大平坦方向步长来减小震荡,加速通往谷底。
- 2.AdaGrad法与小批量梯度下降算法对比

- 2.1AdaGrad法也有问题,既r当代递增,到后期r的增长对步长的调节就失效了。因此提出了下面的方法。
- 3.RMSProp法(是一种自适应梯度方法)

(三)ADAM法(就是动量法和自适应梯度法混合一下)
- 1.见伪代码

- 1.1修正偏差步骤极大缓解算法初期的冷启动问题。
- 1.2其中有ρ、μ、Δ是超参数,其中理论上可以随便设,但是已经有经验值可以使用了。
三、权值初始化
1.建议避免全0初始化,采用随机初始化。
2.随即权值初始化
- 2.1权值采样自N(0,0.01)的高斯分布。在采用sigmoid函数作为激活函数的情况下,由于权值过小(sigmoid的导数:f(z)’ = f(z)(1 − f(z)) 的形式),会导致信息消失。
- 2.2权值采样自N(0,1)的高斯分布。在采用双曲正切函数作为激活函数的情况下,由于权值过大,导致梯度过小,传播过程中发生梯度消失。
- 2.3初始化时让权值不相等,并不能保证网络能够正常工作。
3.Xavier初始化-结论
- 3.1权值采样自N(0,1/N)的高斯分布,N为输入神经元个数。
- 3.2 模拟实验的结果(图中为每层神经元输出所有结果的统计)

- 3.2Xavier初始化方法适合sigmoid和tanh激活函数,但不适合ReLU方法。ReLU方法的各层函数值同一如下

- 3.3 MSRA方法(何凯明 He方法)-一种简单改动后适用于ReLUi或函数

4.Xavier初始化合理性的数学证明(SS不建议观看)

四、批归一化
(一)说在前面
1.关于标准化和归一化两个名词的具体含义,从网上搜集的资料里看是有争议的。抛开中文翻译,先理解 英文-意义 的对应关系。
2.normalization:将一些列数据变化到某个固定区间中,通常,这个区间是[0,1],广义的讲,可以是各种区间,比如图片通常是映射到[0,255]。
3.standardization:将数据变换为均值为0,标准差为1的分布,切记,并非一定是正态分布。(SS进行的操作是减均值除标准差,考研数学概率统计部分有)

4.通常的,将normalization翻译为归一化,将standardization翻译为标准化。但是我看视频中,老师在提到批归一化中,进行的操作就是standardization,因此不太确定。
(二)批归一化的操作方式
- 1.批归一化的方法,其操作是针对输出端的。既直接对神经元的输出进行批归一化。
- 2.具体操作中,我们要结合小批量梯度下降算法,对一批的(比如)32个输出进行减均值除方差(SS能够确定,老师讲错了,standardization应该是除标准差,ppt后面的图也是除标准差);之后的数据输出值的分布符合0均值1方差。

- 注意,这里的输入是BN层的输入,输出是BN层的输出
(三)将批归一化整合到神经网络中
- 1.经常插入到全连接层后,非线性激活函数前。

- 1.1名词解释 FC全连接神经层;BN批归一化操作;tanh激活函数
版权声明:本文为weixin_45562510原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。