首页 > 代码库 > 机器学习笔记——人工神经网络

机器学习笔记——人工神经网络

人工神经网络(Artificial Neural Networks,ANN)提供了一种普遍而实用的方法从样例中学习值为实数、离散值或向量的函数。

人工神经网络由一系列简单的单元相互密集连接构成,其中每一个单元有一定数量的实值输入(可能是其他单元的输出),并产生单一的实数值输出(可能成为其他单元的输入)。

适合神经网络学习的问题:

  • 实例是很多“属性-值”对表示的
  • 目标函数的输出可能是离散值、实数值或者由若干实数或离散属性组成的向量
  • 训练数据可能包含错误
  • 可容忍长时间的训练
  • 可能需要快速求出目标函数值
  • 人类能否理解学到的目标函数是不要重要的
感知器
以一个实数值向量作为输入,计算这些输入的线性组合,然后如果结果大于某个阀值,就输出1,否则输出-1.更精确地,如果输入x1到xn,那么感知器计算的输出为:

其中每一个w i 是一个实数常量,或叫做权值(weight ),用来决定输入xi 对感知器输出的贡献率。
请注意,常量(w0) 是一个阈值,它是为了使感知器输出 1 ,输入的加权和w1x1+w2x2+...+wnxn必须超过的阈值。


(图片均搜于google)
为了简化表示,我们假想有一个附加的常量输入x0=1,那么我们就可以把上边的不等式写成上图中的output函数。
学习一个感知器意味着选择权w0,……,wn的值。
感知器的表征能力:
我们可以把感知器看作是n维实例空间(即点空间)中的超平面决策面。对于超平面一侧的实例,感知器输出1,对于另一侧的实例输出-1。这个超平决策面的方程是。当然,某些正反样例集合不可能被任一超平面分割。那些可以被分割的成为线性可分(linearly separable)样例集合。
感知器训练法则

从随机的权值开始,然后反复地应用这个感知器到每个训练样例,只要它误分类样例就修改感知器的权值。重复这个过程,知道感知器能正确分类所有的训练样例。
每一步根据感知器训练法则(perceptron training rule)来修改权值,也就是修改与输入 x对应的权 w法则如下:


其中:

这里t是当前训练样例的目标输出,O是感知器的输出(1或-1),η是一个正的常数称为学习速率(learning rate)学习速率的作用是缓和每一步调整权的程度。它通常被设为一个小的数值(例如0.1),而且有时会使其随着权调整次数的增加而衰减。

对于权值的调整是一例一调,也就是输入一个样例,就计算每个Δwi, 来调整wi的值,一直训练到会收敛到一个能一个能正确分类所有训练样例的权向量,前提是训练样例线性可分,并且使用了充分小的η 。如果数据不是线性可分的,那么不能保证收敛。

梯度下降和delta法则
如果训练样本不是线性可分的,那么delta法则会收敛到目标概念的最佳近似。delta法则的关键思想是使用梯度下降(gradient descent)来搜索可能的权向量的假设空间,以找到最佳拟合训练样例的权向量。这个法则为反向传播算法提供了基础,而反向传播算法能够学习多个单元的互联网络。
最好把delta训练法则理解为训练一个无阀值的感知器,也就是一个线性单元(linear unit),他的输出如下:

总而言之,训练线性单元的梯度下降算法如下:
  1. 选取一个初始的随机权向量
  2. 应用线性单元到所有的训练样例
  3. 根据下面的公式计算每个权值的Δwi
  4. 通过加上Δwi来更新每个权值,然后重复这个过程