机器学习技法(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的方法:

总结:

posted @ 2016-10-08 19:09  cyoutetsu  阅读(219)  评论(0编辑  收藏  举报