12 Neural Network
12.1 Motivation
在神经网络的节点上使用感知机,那我们可以把神经网络看作是通过不同感知机以及常数的线性组合得到一个新的特征,将新的特征加上一个常数再进行线性组合得到结果。其原理和aggregation类似,但是在神经网络中进行了多层级的aggregation。
从生物的角度来说神经网络模拟了人脑神经网络。
12.2 Neural Network Hypothesis
如果神经元节点都用线性回归的话,那么无论怎么组合最终都是个线性回归,模型的能力没有大幅提高,如果用感知机的话计算起来太麻烦,因此神经元节点通常使用tanh(s):
tanh(s)=es?e?ses+e?s=2θ(2s)?1
其中θ是sigmoid函数。
另外本节讲述了变量个数和神经元的关系。
12.3 Neural Network Learning
本节讲述了BP算法。对神经网络训练的重点在于根据神经网络最后输出值与真实样本的差距对内部的权重进行修正。具体方法是使用平方损失函数,然后在该损失函数上对所有权重求偏导,并利用偏导结果进行梯度下降。
在对最后一层求偏导的时候,可以将其拆分为:
?en?w(L)i,1=?en?s(L)1?s(L)1?w(L)i,1
其中,s(L)1=∑d(L?1)i=0w(L)i1x(L?1)i是倒数第二层神经元的分数,en是第n个样本的误差。可以看到,这个求解是可以得到结果的。然后接下来对之后的其他层的权重求偏导,其结果即将上式的L换成l,但可以注意到,?en?s(l)j是不能马上求出结果的,因为这与l之后的层的变量相关,我们令?en?s(l)j=δ(l)j。
由于神经网络的计算顺序是s(l)j→x(l)j→s(l+1)j…→en,因此我们需要对s(l)j与en之间的每一个变量求偏导。这里我们在展开δ(l)j求导的过程中加入考虑l+1层的偏导,即:
?en?s(l)j=∑d(l+1)k=1?en?s(l+1)j?s(l+1)j?x(l)j?x(l)j?s(l)j
可以发现求导结果是:
∑kδ(l+1)kw(l)jk(tanh′(s(l)j))
最后一层的δ(L)k我们是知道的,因此可以反推回来。总结一下,BP算法的过程是先选取一个样本,计算出结果,然后根据结果倒推回来修改权重。由于这是一个随机梯度下降的算法,因此可以同时训练多个样本,得到多个权重修改结果,对其取平均,即mini-bat梯度下降。
12.4 Optimization and Regularization
本节讲述了在训练神经网络中可以使用的避免过拟合的策略,可以注意到的是,神经网络的VC维是O(VW),其中V是神经元数量。
(1)正则化项:我们希望使用一种能达到稀疏解的正则化项,但是L1正则化不利于求导,L2正则化是大的权重下降大,小的权重下降小,因此可以对L2正则化进行放缩以达到目的:
∑(w(l)ij)21+(w(l)ij)2
(2)减少迭代次数:由于更多的迭代次数可以看做是在假设空间中尝试了更多的权重组合,因此适当减少迭代次数也可以达到避免过拟合的结果。