机器学习技法(12)--Neural Network
单层神经网络。加权的过程在这里进行的两次,取正负号的函数也进行了两次。
可以对每一个g到G的过程进行逻辑运算(and,or,not),数学表达如下:
虽然上面的算法很强大,但是还是有些东西算不出来,例如XOR:
但是如果再多加一层的话,就可以达到了:
这就是多层的神经网络。
每一个圆圈g都是一个node,每一个权重w就是信息链接的程度的强弱。
最后的输出就是前一步的线性模型,对每一个g的加权计算。而之前的所有步骤,可以看做是对输入x的各种转换。
线性函数的转换在多层神经网络中没有任何意义;
阶梯状函数在最佳化的过程操作太复杂;
最流行的是tanh函数。
每一个进过权重运算的时候,就叫一层。前一层就是后一层的输入,后一层就是前一层的输出,而权重w就是前后两层的联系(匹配模式)。神经网络模型就是要找出这些和这些权重吻合的模式。那么这些好的权重怎么计算呢?
使用随机梯度下降的思路,进行计算。一下是数学推导:
引出BP神经网络的概念:
在每一次倒推的时候,不一定非得一个一个进行计算,可以通过mini-batch来批量的计算。
在优化的时候:
这一次并不是传统的山谷状的函数,我们有可能找不到全局最小的点,但是我们可以找得到局部最小点。因此,局部最小点就跟我们选择出发点有很大的关系了,虽然我们没有办法选择最佳的出发点,但是我们可以想办法避免选择不好的出发点。所以,刚开始选择权重的时候需要选小一点的权重,让我们有机会做更多的选择。
神经网络模型的VC Dimension问题:
神经元数量很大的时候,VC Dimension就会很大,过拟合也就会很容易出现。所以需要加入正则化的惩罚项:
L1和L2的正则项在这里都不太适用。所以引入了新的方法:weight-elimination regularizer:
无论是原来或大或小的w,都会有同样效果的放缩,同时,它是可微的,易于求解。
还有另一种Early Stopping的方法:
总结: