Improving the way neural networks learn
@(深度学习)[深度学习]
二次代价函数
问题:当输出a趋近1的时候, σ′(z) 会变的非常小( σ′(z)=σ(z)(1−σ(z)) ),这个时候偏导也会变的特别小,因此学习的速度会下降
优化的方法
- 代价函数的选择:cross-entropy
- 正则化方法:L1;L2;dropout;artificial expantion(提升模型范化的能力)
- 初始化weights的方法
- 选择超参数的方法
cross-entropy cost function
解决二次代价函数学习缓慢的问题:从下面的公式可以看出cross-entropy代价函数对
w
和
在什么时候cross-entropy能够被解释为代价函数:
- C是一个非负的函数,可以观察到y的取值是0或1,a的取值在(0,1)之间,因此C>0
- 当神经元的输出趋近于期望的输出时,C会接近0,
C→0
- 总结而言 : cross-entropy是正的,且当神经元计算出接近于期望输出的值时,cross-entropy趋近于0
同理,对b的偏导:
cross-entropy to many-neuron multi-layer networks:
假如输出神经元是sigmoid neurons,cross-entropy总是更好的选择,在模型训练之前我们将会初始化参数w和b,可能会导致计算过程中输入x=1,输入结果是0的情况,这样的情况下,二次代价函数的学习速度会下降甚至停止。
代价函数对
wLjk
的偏导:
相比二次代价函数消去了 σ′(zLj)
假如输出层使用线性神经元,即激活函数不使用sigmoid,而是简单的使用 aLj=zLj 时,不会产生速度下降的问题,这个时候二次代价函数同样适用
总结:在选择代价函数的时候,应该考虑输出层激活函数的情况,输出层同时也对应机器学习中单个元的分类或者回归问题,通常分类问题选择cross-entropy,回归问题选择二次函数
Softmax
- 为神经网络定义了一种新的输出类型
特性:
- 输出相加等于一
- 输出的值总是正数
- 也就是说:softmax的输出可以看作一个概率分布
-
∂aLj∂zLk
当
j=k
的时候为正
j≠k
时为负
区别:
- sigmoid层的输出
aLj
是对应加权输入的函数
- softmax层的输出与上一层的所有加权输入相关
softmax-learning slowdown problem
log-likelihood cost:
C≡−lnaLy
说明:在数字识别的例子中,假如输入的图像是数字7,那么log-likelihood cost为
C≡−lnaL7
,在这个例子中,
aL7
是该输入为7的概率,假如此时模型能够较准确的估计,那么
aL7
趋近与1,则
C
会变得很小,相当于代价小。
sigmoid输出层——cross-entropy
softmax输出层——log-likelihood
identity输出层 ——quadratic
记住:backprogation假设了代价函数能够被写成输出层神经元的函数:
C=C(aL) Backpropagation with softmax and the log-likelihood cost
输出层softmax: aLj=ezLj∑kezLk
代价函数(逻辑似然函数): C=−∑kyklnaLk
δLj=∂C∂zLj=∂C∂aLj∂aLj∂zLj=aLj−yjregularization
L1 regularization:
C=C0+λn∑w|w|
∂C∂w=∂C0∂w+λnsgn(w)梯度下降的权重更新:
w→w′=w−nλnsgn(w)−η∂C0∂wl1 的作用是,当 λ 足够大的时候,迫使一些参数估计精确的等于0,相当于执行了些特征选择
因此lasso模型更加适应于特征数量较少的数据集
L2 regularization: l2 则会利用所有特征,只是对参数的值进行限制
In L1 regularization, the weights shrink by a constant amount toward 0. In L2 regularization, the weights shrink by an amount which is proportional to w
Dropout:修改神经网络的结构避免过拟合