CS231n学习笔记--2.NN2

1.不能将神经网络所有的权重都初始化为0,这样会导致所有的神经元输出都是相同的,进而在反向传播时所有的导数就都是相同的,导致所有的参数更新也是相同的。

2.还有其他很多初始化方法,batchnorm在一定程度上能够缓解初始化不好的情况。

3.关于BN,总结几点(来源于https://blog.csdn.net/malefactor/article/details/51476961):

(1)BN的作用是使深度神经网络训练过程中的每一层输入保持相同分布。

(2)启发思想是白化,白化只对输入层做了调整,从而使网络训练收敛变快,而BN是对网络每一层都做了一次简单的白化。

(3)基本思想:

CS231n学习笔记--2.NN2_第1张图片

(4)如果是简单的把输入分布拉到sigmoid的类似线性区域,那么这就失去了深度学习的意义,就简化成线性变换了,因此BN又加了scale和shift,这两个值是需要学习的,核心思想是找到线性和非线性的平衡点,是网络表达能力增强

 

4.正则化(防止过拟合):

L2:是权值更加分散

L1:截断效应,使权值更稀疏,可以用于特征选择,不考虑特征选择的话L2优于L1

Dropout:就是模型融合的思想,即缓解了过拟合,又避免了同时训练多个神经网络模型的计算复杂度,具体参考论文:http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf

CS231n学习笔记--2.NN2_第2张图片

 

5.Dropout实现

CS231n学习笔记--2.NN2_第3张图片

实现就是生成一个dropout矩阵U,然后与H相乘,很简单。注意预测阶段为了保持训练数据和测试数据一直要乘以p.

为了不动predict的代码,也可以采用invert dropout:

CS231n学习笔记--2.NN2_第4张图片

 

 

 

你可能感兴趣的:(CS231n)