激活函数
-
sigmod梯度消失的解释:反向传播,sigmod函数接近饱和区时,变化缓慢,导致梯度接近0,经过几层网络的叠加,每层激活函数都需要相乘,梯度消失.(sigmod函数导数最大值为0.25,tanh导数最大为1)
-
梯度爆炸原因,前馈网络中W权值初始化过大(?),RNN中BPTT算法
若特征值大于一,则可能梯度爆炸,小于一可能梯度消失。
解决办法:batchNorm 前馈网络,调整W,增设梯度截断阈值,RNN换LSTM
3.ReLU的好处 Rectified Linear Units
计算简便
舍弃一半梯度,防止了过拟合(为此应适当减小学习率)
有效减少梯度消失现象
生物角度
4.Loss Funtion的选择
为什么二次代价函数比交叉熵慢
交叉熵 H ( p , q ) = ∑ x p ( x ) l o g q ( x ) H(p,q)=\sum_xp(x)logq(x) H(p,q)=x∑p(x)logq(x)用于计算两个分布 p ( x ) , q ( x ) p(x),q(x) p(x),q(x)之间的距离,交叉熵越小,概率分布越接近(p是真实分布)求梯度分析
看到梯度大小仅与预测差值和x有关
而二次代价函数
求导后显然与激活函数的导数成正比,而sigmod的激活函数大小有限,所以迭代速度慢
5.Softmax整理
trick1:计算前先整理,-max(a1,a2,…,an)防止指数爆炸
作ANN输出层的时候配合对数似然损失函数,和交叉熵本质上一样,当网络为二分网络时,退化softmax退化为逻辑回归
6.pooling层作用
1)减少网络复杂度,减少需计算的参数
2)增加后面卷积核的感受野,增加网络的泛化能力
3)translation invariance, rotation invariance, scale invariecne.
4)减少重叠区域冗余
7.数据集扩增方法
1)噪声
2)旋转
3)elastic distortions弹性变换
4)截取crop
8.感受野的计算
从输入层开始向后计算
公式
l
k
=
l
k
−
1
+
(
(
f
k
−
1
)
∗
∏
i
=
1
k
−
1
s
i
)
l_k = l_{k-1} + ((f_k - 1) * \prod_{i=1}^{k-1}s_i)
lk=lk−1+((fk−1)∗i=1∏k−1si)
其中l为感受野,f为卷积核大小,s为stride
感受野与padding无关
9.Batch Normalization
解决网络中internal covariate shift问题,即对于sigmod函数,导数有效区域有限,当输出
x
=
W
U
+
b
x=WU+b
x=WU+b太大或太小时,反向梯度很小,网络收敛慢。
解决思路:把每层的的输出结果规范化,
x
^
=
(
x
−
μ
)
/
(
σ
+
ϵ
)
\hat{x} =(x-\mu)/(\sigma+\epsilon)
x^=(x−μ)/(σ+ϵ),变为均值为零,方差为1的标准正态分布。但此时激活函数损失了非线性部分的功能,再加入伸缩和平移因子
y
=
γ
x
^
+
β
y=\gamma\hat{x}+\beta
y=γx^+β,两个因子通过网络迭代学习得到。
在网络测试时,用所有变量的统计结果的均值和方差代替
μ
,
σ
\mu ,\sigma
μ,σ