神经网络
- 背景:
- 以人脑中的神经网络为启发,有很多不同版本
- 最著名的是1980年的BackPropagation算法
- 多层向前神经网络(Multilayer Feed-Forward Neural Network)
- BackPropagation被使用在多层向前神经网络上
- 多层向前神经网络由以下三部分组成
- 输入层(input layer)
- 隐藏层(hidden layer)
- 输出层(output layer)
- 每层由多个单元组成
- 输入,输出只有一层,隐藏层可以多层
- 经过连接点的权重 ωij ω i j 传入下一层,每一层的输出是下一层的输入
- 每个单元也可以叫做神经节点
- 一层中加权的求和,然后根据非线性方程转化输出。作为下一层中一个unit的输入
- 理论上,如果有足够多的隐藏层,可以模拟出任何方程
设计神经网络:
- 神经网络层数以及每层的单元个数
- 特征被传入输入层时通常会先被标准化
- 神经网络可以解决分类问题和回归问题
- 分类:
- 如果有两类,一个输出单元表示 0 ,另一个输出单元表示 1
- 如果有多个类,每个输出单元表示一个类别
BackPropagation算法:
神经网络正向走一遍直到输出层,然后反向走,经过不断的数学模型优化,最终达到终止条件所规定的阈值。
- 反向走的时候进行权重(weight)和偏向(bias)的更新,直到达到终止条件,所以才叫Back Propagation。
通过迭代性来处理训练集中的实例
对比神经网络的预测值与真实值之间的差距,反方向(output layer, hidden layer, input layer)
算法介绍:
- 输入:
- D:数据集,
- 学习率(learning rate),
- 多层向前神经网络
- 输出:一个已经训练好的神经网络
- 输入:
数学模型:
Ij=∑iωijOi+θj I j = ∑ i ω i j O i + θ j- Sigmoid function: Oj=11+eIj O j = 1 1 + e I j
正向由输入层走到输出层后,根据输出层的误差进行反向传送
- 对于输出层: Errj=Oj(1−Oj)(Tj−Oj) E r r j = O j ( 1 − O j ) ( T j − O j )
- 对于隐藏层:
Errj=Oj(1−Oj)∑kErrkωjk
E
r
r
j
=
O
j
(
1
−
O
j
)
∑
k
E
r
r
k
ω
j
k
- Oj O j :当前层的值
- Errk E r r k :第 k 层的误差(k < j)
- ωjk ω j k :第 k 层的权重
- 权重更新:
Δωij=(l)ErrjOj Δ ω i j = ( l ) E r r j O j,ωij=ωij+Δωij ω i j = ω i j + Δ ω i j
- l l :learning rate
- 偏向更新:
- θj=θj+Δθj θ j = θ j + Δ θ j
终止条件
- 权重更新低于某个阈值
- 预测的错误率低于某个阈值
- 达到预设一定的循环次数