我想邀请您加入我的探索,通过不同的方法初始化神经网络中的图层权重。 通过各种简短的实验和思想练习,我们将逐步发现为什么在训练深度神经网络时足够的重量初始化非常重要。 在此过程中,我们将介绍研究人员多年来提出的各种方法,并最终深入研究最适合您最有可能使用的当代网络架构的方法。
接下来的例子来自我自己重新实现的一套笔记本,Jeremy Howard在最新版本的fast.ai的深度学习第二部分课程中介绍了这一课程,该课程目前于2019年春天在USF的数据研究所举行。
Why Initialize Weights
权重初始化的目的是防止层激活输出在正向通过深度神经网络的过程中爆炸或消失。如果发生任何一种情况,损失梯度将太大或太小而无法有效地向后流动,并且如果网络甚至能够这样做,则网络将花费更长时间来收敛。
矩阵乘法是神经网络的基本数学运算。在具有多个层的深度神经网络中,一个前向通道仅需要在每个层,在该层的输入和权重矩阵之间执行连续的矩阵乘法。在一层的这种乘法的乘积成为后续层的输入,依此类推。
对于一个说明这一点的快速和肮脏的例子,让我们假设我们有一个包含一些网络输入的向量x。这是训练神经网络的标准做法,以确保我们的输入值被缩放,使得它们落入这样的正态分布,平均值为0,标准差为1。
让我们假设我们有一个没有激活的简单的100层网络,并且每个层都有一个包含图层权重的矩阵a。 为了完成单个前向传递,