神经网络

神经网络是常见的机器学习模型。通过模拟人类神经网络的运行方式,来达到学习的目的。


基本原理

假设如下的图为一个神经元的工作原理:


输入N维的X,每个Xi经过权重wi处理后,相加得到能量值,作为神经元的输入。如果这个能量值超过一个阈值,则神经元被激发,输出正信号。

现在我们把神经元增加为M个,则有如下的模型:


第一层为输入层,N个输入单元。通常一个N维的特征向量,每个元素对应一个输入;

第二层为隐含层,M个输入单元。

每个输入i,隐含层j对应一个转移权重Wij。那么整个模型对应一个权重矩阵W(N*M)。

每个隐含层还对应一个非线性的激励函数F,一个偏移量b。t=F(Wij*Xi+b)作为这个隐含层的输出。

最终可以表示成:


也就是一个线性变换,非线性阈值输出的模式。


F函数

F函数通常为一个非线性函数,当输入小于阈值时,输出0,大于则输出1。常见的函数如下:

斜面函数:


图像如下:

这个函数主要模拟人的神经突触细胞的工作原理。突触处于两种状态,兴奋或抑制,当刺激达到一定水平时,激发兴奋状态。


当然,如果需要输出为连续值,我们可以使用logistic函数;

logistic函数:


图形如下:


双S函数:


Logistic与双S图形如下:



偏移量b

能量值大于一定的值时,才会激发神经元。除了定义F函数外,还可以加上一个偏移量b来更好地控制输出结果。

 

 

直观理解

神经网络的输出可以看做如下的公式:


也就是一个线性变换W,加一个非线性函数f,最终得到一个非线性的变换模型。

而f通常为一个阈值函数,WA+B大于某个值时,输出1,否则输出0。

那么我们可以把W看做一个线性变换,WX+B=0看做变换后空间中的超平面,那么输出的结果就是A处于超平面的哪一侧。

 

从几何角度来看,就是在线性变换后的空间中寻找一个超平面来划分样本。

 

如果是多层的话,就是不同空间中的多个超平面分隔的一个空间来划分样本。

 

反馈规则

上面是一般神经网络的正向传导过程,那么如何通过输出来反馈训练模型?


Belta rule

Belta规则是神经网络的反馈规则。是一种有监督的方式。

我们知道训练就是我们用已有正确的结果去反向引导学习。那么神经网络中,我们希望通过正确的输出引导神经网络得到正确的模型。

 

神经网络中的两个变量分别是权重矩阵W与激励函数F。其中常见的做法是通过训练权重矩阵W来训练模型。

 

设tj为节点j的期望输出值,yj为当前输出值,那么反馈可以用如下的最小二乘误差来定义:


我们可以采用常见的梯度下降法来求解。求负梯度方向,得到:


根据微分的链式规则,不断变换,如下为wiki的推导过程:


根据链式规则:


其中hj表示其输出,即

上式变为:


因为

最终得到:


 

 

hebbian theory

Hebbian认为,前后两个神经元同时发生兴奋或抑制时,增强这种联系。根据这个理论,权重更新时,根据前后两个神经元的输出,更新其权重。同时兴奋或抑制,权值增加;否则,权值减少。

公式如下:


表示j->i的更新值。

其中yita是学习率。A表示i输出,o表示j输出,也就是i的输入。

通常来说hebb是很不稳定的反馈方法,不常用作反馈规则。


matlab的编程可参考blog:

http://www.cnblogs.com/heaad/archive/2011/03/07/1976443.html  


推荐阅读:

http://blog.csdn.net/zzwu/article/details/574931 

http://en.wikipedia.org/wiki/Hebbian_theory 

http://en.wikipedia.org/wiki/Delta_rule 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值