机器学习系列(2):初始化的一小步,网络性能的一大步

 

 万事开头难?训练网络当然也不例外,哈哈没错,这里是机器学习系列第二篇,带你走进看似简单且容易被忽视的权重初始化,了解一下呗(清爽科普风),文末有小彩蛋哦

                                                              

                                                      01 初始化方式

1.1 导言: 

  • 在深度学习的训练中,权重的初始化起着重要的作用,如何选择合适的初始化方式,影响着网络的学习能力,今天我们就来看一下各种初始化方式有什么样的异同吧~

1.2:零初始化

Figure 1:三层前馈举例(图片来源知乎koala tree用户)

                                            

                                                Figure 2:三层前馈计算式(图片来源知乎koala tree用户)

  •  都初始化为零(矩阵、向量,下同),这种方式由于导致前馈过程具有对称性,反向传播也产生对称性,导致权重值一样,相当于降低了隐藏层神经元的个数,从而无法进行有效的学习。

  • 以一个三层网络为例:如下结构:

                                                            

    • 那么表达式就如下图所示:

    • 从上式可以看出,如果每个权重都一样,那么在多层网络中,从第二层开始,每一层的输入值都是相同的了也就是a1=a2=a3=....,那么就相当于一个输入了,那么反向传播算法最后得到的W和b也都相同,即对称的,就不能拟合任意输入到输出的映射了。

1.3:随机初始化

  • 初始化为随机值,b初始化为0,这种方式尽管b都为0,但由于W值不同,打破了对称性,可以有效学习,但是若网络深度很深,可能会产生梯度消失或梯度爆炸的问题,需要更好的方式。

  • 梯度消失:通常神经网络所用的激活函数是sigmoid函数,这个函数将负无穷到正无穷的输入映射到0和1之间,这个函数求导的结果是f′(x)=f(x)(1−f(x)),两个0到1之间的数相乘,得到的结果就会变得很小了。由于神经网络的反向传播是逐层对函数偏导相乘,因此当神经网络层数非常深的时候,最后一层产生的偏差就因为乘了很多的小于1的数而越来越小,非常接近0,从而导致层数比较浅的权重没有得到更新。

  • 那么什么是梯度爆炸呢?梯度爆炸就是由于初始化权值过大,前面层会比后面层变化的更快,就会导致权值越来越大,这就是梯度爆炸。

1.4:He initialization

  • 初始化为随机值后,再除以,b初始化为0,这种方式称为"he initialization",可以很好地控制每一层权重,使得其不会太大,从而有效降低梯度爆炸发生的概率,尤其对relu激活函数有效。

1.5:Xavier initialization

  • Xavier initialization和he initialization不同之处在于W除的数是 

                                                                                        

                                                      02 效果展示

2.1 假设我们要训练一个网络对下图(Figure 3)的红点和蓝点点进行二分类,运用不同的初始化方式,效果如下。

                                        

Figure 3:red dots and blue dots

  • 零初始化时,如下图,代价函数不变,分类正确率50%,相当于随机猜,所以网络不具备学习能力。

                                        

  • 随机初始化,效果提升,但由于初始化权重较大,性能还是不完美,分类正确率86%。

                                      

               

  • He initialization,效果比随机初始化提升,分类正确率达到96%

                                      

                                                                                     

                                                 03 python代码

3.1 本文相应的代码及资料已经以.ipynb文件和.pdf形式在github中给出。

点击【蓝字链接】,github传送门了解一下。

觉得有帮助的话别忘了star哦

人生若只如初见,是不拘一格又端庄优雅,不是所有对称都是完美,我愿意多爱你一点。

-by LSayhi的神经网络



猜你喜欢

转载自blog.csdn.net/LSayhi/article/details/81777147
今日推荐