神经网络学习 BP RBF

最近学习了一下神经网络,主要是学习了BP和RBF,下面时本人的学习笔记(原文我曾经发表在了http://liyitan.sinaapp.com上,都是本人)

学习尚浅,望指正.....

 

本篇介绍BP神经网络,下一篇介绍RBF神经网络

BP神经网络就是Back Propagation(反向传播)的神经网络。

线性感知机

首先,向介绍一下非反向传播的神经网络,其实也就是感知机,本质上就是一个线性分类器。

如下:x1*w1+x2*w2+x3*w3..... xn*wn+b= y      (1)

(1)式我们也可以表示为 tr(X)*W+b = y(2)(粗体表示向量)

当把x1,x2,x3..xn(一个样例)代入时,得到一个y,也就是分类的结果,其实也就是一个点在直线X*W+b = 0的左边还是右边决定了

y的正负,依据正负已经可以判断分类了,当然y的值还有很多其他作用。

这个函数已经可以用于分割两类,当然是线性的,也就是使用超平面分割了样例,但有时候样例并不总是线性可分(多数情况下都是非线性可分的),不过线性感知机是很多高级模型的基础,我们先讨论线性感知机。

求解感知机

求解感知机的过程就是求解(1)式中 w1,w2,w3...wn,b 的过程,以下表示为[W,b]

一般都是利用样例数据进行训练,再使用测试数据检验正确率

可以使用的方法有很多,最原始的求解感知机的算法(抱歉,名字我忘了)

实际上,我们的求得的[W,b]不仅要对训练数据有用,而且要对测试数据有效(也就是泛化性)

很多时候,我们希望求得[W,b]是测试数据的两个类别的最小代价的平面(简单地说——中间垂直面),

最小代价定义为(实际上是一种经验公式)

J =  Σ(Xi*W+b-yi)^2

Xi∈所有样例

yi为目标结果

很容易看出,希望超平面[W,b],能够使得代价J最小,其实这个代价公式很普通,就是求偏差加个平方,我感性得觉得也许还可以用别的公式表示类似的代价。

求解最小代价

自然是对J求导,将J看成J(W),d J(W) / d W = 0 (3)

求解的方法称为最小二乘法,证明比较繁琐,

解:

当(tr(M)*M)^-1存在时   W = (tr(M)*M)^-1*tr(M)*YY为目标值的集合向量)

M = tr[X1,X2...,Xn]     (X为一个样本向量)

可见由于逆不一定总是存在,所以此方法未必可行。

还可以采用的方法有:

最速梯度下降法,widrow-hoff算法(也叫LMS算法——最小均方算法)

这些方法的核心思想都是先求了J(W)的梯度,然后使用梯度与样本的乘积进行迭代更新W的权值,但是具体方法不同。

(所谓梯度下降,顾名思义就是指向梯度小的方向前进)

阈值单元

之前使用感知器可以求得y值,但是这种方法,使得感知在层数增加后仍然被证明为是一个线性的感知机,

于是有了阈值单元,用于使得感知机变得不那么线性,比较实用的有sigmoid单元,能够将数据都压缩再(0,1)中,

并且它是可导函数,这在BP神经网络中非常重要。

具体使用阈值单元 y` = sigmoid(y),其实就是代入函数进行计算,将其作为感知机的一部分

单层的神经网络(也称感知机)

其实就是一个线性感知机加一个阈值单元(比如sigmoid)

不过能力是有限的

多层神经网络

也就是前一层感知机的输出作为后一层感知机每个单元的输入之一,每层若干节点。

但是此时存在一个问题,就是如何求得需要的W的值 ,之前由于是单层,所以更新一层的W非常容易,

但此时,W不止一层,内层(隐含层)的W不好计算,所以提出了BP算法(1986年由Rumelhart和McCelland为首的科学家小组提出)。

具体推导以后补上。

给出具体更新公式:

定义每一个单元的误差项为ei  ,每个节点的输出为oi,每个边的权重为wij

对于每个输出单元ek    (i=k)

ek = ok(1-ok)(yk-ok)

对于每个隐藏层单元eh      (i = h)

eh = oh(1-oh)*  Σwbh*eb

b为h点的前一层节点编号

更行每个wji

wji = wji + u*ej*oji

此更行针对每个训练样例都执行,所有样例遍历一次称为一遍,往往需要多遍执行,

在测试 异或 逻辑(需要1层隐含节点)时,我大约使用了1000多次遍历,结果才满意。

 

参考:《机器学习》(美)Tom Mitchell

 

转载于:https://www.cnblogs.com/liyitan/archive/2012/03/04/2379278.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值