人工神经网络(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)来改动权值,也就是改动与输入 xi 相应的权 wi 法则例如以下:
当中:
这里t是当前训练例子的目标输出,O是感知器的输出(1或-1),η是一个正的常数称为学习速率(learning rate)学习速率的作用是缓和每一步调整权的程度。它通常被设为一个小的数值(比如0.1),并且有时会使其随着权调整次数的添加而衰减。
对于权值的调整是一例一调,也就是输入一个例子,就计算每一个Δwi, 来调整wi的值。一直训练到会收敛到一个能一个能正确分类全部训练例子的权向量,前提是训练例子线性可分,而且使用了充分小的η 。假设数据不是线性可分的,那么不能保证收敛。
梯度下降和delta法则:
如果训练样本不是线性可分的,那么delta法则会收敛到目标概念的最佳近似。delta法则的关键思想是使用梯度下降(gradient descent)来搜索可能的权向量的如果空间,以找到最佳拟合训练例子的权向量。这个法则为反向传播算法提供了基础,而反向传播算法可以学习多个单元的互联网络。
最好把delta训练法则理解为训练一个无阀值的感知器。也就是一个线性单元(linear unit),他的输出例如以下:
。
总而言之,训练线性单元的梯度下降算法例如以下:
- 选取一个初始的随机权向量
- 应用线性单元到全部的训练例子
- 依据以下的公式计算每一个权值的Δwi
- 通过加上Δwi来更新每一个权值,然后反复这个过程