一、卷积层weight和bias初始化(Mnist)
weight的mean为0,标准差待定,bias为常数,待定。
(1)Bias初始化太大(比如0.5,weight std=0.01),则网络loss初始非常大,即使加了BN层使得Loss减小,亦难以收敛。
我猜测是Bias太大,其在与Feature Map的博弈中,占了绝对上方,特别是多层网络,原始图的特征逐层递减直至消失。
(2)Bias和weigh较小(比如Bias=0.0, weight stddev=0.01),网络可以收敛,但收敛较慢
(3)Mnist图片反色(即foreground像素值在0这一端,background在255这一端)后收敛速度下降较大(目测2~3倍)。
(4)Bias=0.1 ,weight stddev=0.1 网络收敛较快。但
看了xavier和he_normal两篇论文,主要是保证feedforward/backpropagation的梯度在传递过程中,每一层分布不变(均值+方差)。
感觉无脑用就好了。(不过测试时,7、8层的网络使用xavier/he_normal效果并不比N(0,0.01))效果更好)
二、Learning Rate
设置太大无法收敛,比如1e-2。
ResNet中以0.1为初值训练不知怎么回事。
三、BN层顺序:一个不收敛的例子
当我们采用x->bn->relu->weight的放置顺序,有些情况会导致无法收敛。分析如下:
我们假设图片像素值为0~10,黑色(0)为前景色,白色(10)为背景色。
考虑图片某一行的像素值:(其中像素0位前景色,5,6,7,8,10为背景色)
x-> [10 5 6 0 7 8],mean=6.0,variance=9.667
经过bn层处理
bn(x) -> [-1.92980254, -0.3216337 , 0. , 0.3216337 , 0.64326751, 1.28653514]
再经过relu处理
relu(bn(x))->[0,0,0, 0.3216337 , 0.64326751, 1.28653514]