额外1:总览整个神经网络的工作过程
由于今天睡得太多,脑子昏昏沉沉的,所以看新东西很费劲,于是我决定总览一下整个神经网络的工作过程。
神经网络的作用是通过输入一组数据,与预期的输出结果进行对比,然后对比以后调整中间层的权值和阈值,从而自动输出其他没有预期输出结果的数据的模型。
其中代价函数是用于对“与预期的输出结果进行对比”量化的函数。比如二次代价函数,还有交叉熵代价函数。
如何调整中间层的权值和阈值呢?就通过梯度下降法来调整。
梯度下降法指的是:针对以w和b作为函数2个自变量的代价函数,在w和b的两个方向上的偏导是它使代价函数减小所走的的步长。
走的步长是
写成向量形式是 ΔC≈∇C⋅Δv
为了保证代价函数一直在减小,所以应该令ΔC始终为负数。那么Δv=−η∇C
ΔC≈−η∇C⋅∇C=−η||∇C||2 此时的ΔC可以显而易见的看出,它一定小于0。
为了使我们的梯度下降法能够正确地运行,我们需要选择足够小的学习速率η使得上面的等式能得到很好的近似。如果不那么做,我们将会以ΔC>0结束,这显然不是一个很好的结果。与此同时,我们也不能把η变得过小,因为如果η过小,那么梯度下降算法就会变得异常缓慢。
知识点1:正则化
但是我们不愿减小网络规模,因为大的网络潜力更大。所以用另一种方法,称为正则化。
一种正则化的方法称为权重衰减(L2正则化)。数学形式如下
本质上就是加了一个权重平方的均值。
他的目的是为了让神经网络倾向于学习权值更小的部分。
对于偏置b来说,由于增加的是权重,对b求偏导的效果是一样的。所以b的学习方式不变。
对于权重w来说,由于增加了一个权重量w,学习的方式变为如下形式
在这个公式里,权值用调整。这让权值得到了衰减,所以称为权值衰减。
但是我依然不能理解为什么要学习权值更小的部分。
有一个说法是这样的:一个小权重的神经元,如果输入的有一些噪声,那么其对最终结果的影响比较小。反之,大权重的神经元,噪声对最终结果的影响比较大。
为了让我们的模型更泛化(预测准确度更高),我们需要一个简单的模型,而不是一个能完美拟合所有点的复杂模型。因为这些点的分布很有可能受到某些噪声的影响。
所以我们要减小噪声的影响,所以选择小权重的神经元。
但是这个理论的对错还是有待商榷的。因为不一定简单模型就是正确的模型。(笑)
另外:学习速率是可以随着学习而变化的,所以权值衰减的另一个意思就是权值会随着学习而越来越少。
知识点2:softmax
在计算输出结果的时候,我们不使用sigmoid函数,而是使用softmax函数。其数学形式如下
它有很多很好的特征。首先是所有的输出,总和为1。当其自变量增加,输出的激活值也随之增加。
因此,我们可以得到一个结论:从 softmax 层得到的输出可以看做是一个概率分布。
在许多问题中,我们可以很方便地将输出激活值看作是神经网络认为结果是
的概率。比如,在 MNIST 分类问题中,我们可以将
看作是神经网络认为这个数字是
的概率估计。
知识点3:log-likelihood函数
log-likelihood函数是一个单价函数,用来搭配softmax函数的输出层。
我们可以将 softmax 输出层与 log-likelihood 代价函数的搭配,类比成 sigmoid 输出层与交叉熵代价函数的搭配。
其数学形式如下
代表一个图像是7的概率,他可以由softmax层得到。当其很大时,它接近1,那么C将会接近0.反之,它远离1,那么C就会远离0.