第五章 神经网络
此系列文章旨在提炼周志华《机器学习》的核心要点,不断完善中…
5.1 神经元模型
- 基本概念
神经元(neuron)模型是神经网络最基本的成分
阈值(threshold),亦称bias - M-P神经元模型
- 图解
- 激活函数(activation function)
- 理想中的激活函数:阶跃函数
s g n ( x ) = { 1 , x ≥ 0 0 , x < 0 sgn(x)=\begin{cases}1, x≥0\\0, x<0\end{cases} sgn(x)={1,x≥00,x<0
将输入映射为输出值"0"或"1" - 典型的激活函数:Sigmoid函数(挤压函数 squashing function)
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+e−x1
将可能在激活范围内变化的输入值挤压到(0,1)输出值范围内
- 理想中的激活函数:阶跃函数
- 图解
5.2 感知机与多层网络
-
感知机(Perceptron):由两层神经元组成
输入层:接收信号后传递给输出层
输出层:M-P神经元(阈值逻辑神经元)
感知机能容易地实现逻辑与、或、非运算两个输入神经元的感知机网络结构示意图:
-
哑结点(dummy node)
- 统一权重和阈值的学习为权重的学习(把阈值看作固定值-1,0的哑结点所对应的连接权重)
- 感知机学习规则
对训练样例(x,y),当前感知机的输出
感知机权重调整规则:
{ w i ← w i + Δ w i Δ w i = η ( y − y ^ ) x i \begin{cases}w_i\leftarrow w_i+\Delta w_i\\ \Delta w_i=\eta (y-\hat{y})x_i\end{cases} {wi←wi+ΔwiΔwi=η(y−y^)xi - 学习率(learning rate)
过大:容易振荡
过小:收敛速度过慢
-
单层功能神经元网络
- 对线性可分(linearly separable)问题的学习过程一定会收敛(converge)
- 对线性不可分的问题的学习过程难以收敛,将会发生振荡(fluctuation)
-
多层功能神经元网络
- 隐含层(hidden layer)
与输出神经元都是拥有激活函数的功能神经元 - 多层前馈神经网络(multi-layer feedforwaard neural networks)
- 隐含层(hidden layer)
5.3 误差逆传播算法
-
误差逆传播算法(BP: error BackPropagation)
- 图解
需要确定的参数:(d+r+1)*q+r
{ 权 值 { 输 入 层 到 隐 层 : d × q 隐 层 到 输 出 层 : q × l 阈 值 { q 个 隐 层 神 经 元 l 个 输 出 层 神 经 元 \begin{cases} 权值\begin{cases}输入层到隐层:d×q\\ 隐层到输出层:q×l\end{cases}\\ 阈值\begin{cases}q个隐层神经元\\l个输出层神经元\end{cases}\\ \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧权值{输入层到隐层:d×q隐层到输出层:q×l阈值{q个隐层神经元l个输出层神经元
策略:梯度下降(gradient descent) - 算法过程
- 图解
-
积累误差逆传播算法(accumlated error backpropagation) 对比
- 标准BP算法
每次更新只针对单个样例
参数更新得非常频繁
对不同样例进行更新的效果可能出现“抵消”现象
往往需进行更多次数的迭代
在训练集非常大时标准BP往往更快获得较好的解 - 积累BP算法
直接针对累积误差最小化
参数更新的评率低得多
在读取整个训练集D一遍后才对参数进行更新
- 标准BP算法
-
试错法(trial-byerror)
证明:只需两个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数
解决如何设置隐层神经元的个数问题 -
过拟合防止策略
- 早停(early stopping)
训练集:计算梯度、更新连接权和阈值
验证集:估计误差
若训练集误差降低但验证集误差升高,则停止 - 正则化(regularization)
基本思想:在误差目标函数中增加一个用于描述网络复杂度的部分(如连接权与阈值的平方和)
加入正则项的误差目标函数(BP算法最小化训练集D积累误差):
E = 1 m ∑ k = 1 m E k ⇒ ( 正 则 化 ) ⇒ E = λ 1 m ∑ k = 1 m E k + ( 1 − λ ) ∑ i w i 2 E=\frac1 m \sum_{k=1}^mE_k\Rightarrow(正则化)\Rightarrow E=\lambda \frac1 m\sum_{k=1}^mE_k+(1-\lambda )\sum_iw_i^2 E=m1k=1∑mEk⇒(正则化)⇒E=λm1k=1∑mEk+(1−λ)i∑wi2
- 早停(early stopping)
5.4 全局最小与局部最小
- 最为广泛的参数寻优方法:基于梯度的搜索
负梯度方向:函数值下降最快的方向
梯度下降法:沿着负梯度方向搜索最优解
若误差函数在当前点的梯度为零,则已达到局部极小,更新量降为零,参数的迭代更新在此停止 - 试图跳出局部极小策略
以多组不同参数值初始化多个神经网络
模拟退火(simulated annealing)
随机梯度下降(stochasitc gradient descent)
遗传算法(genetic algorithms)