机器学习笔记之人工神经网络
一、发展历史
1943年,心理学家McCulloch和逻辑学家Pitts建立神经网络的数学模型,MP模型。
神经元生理结构:
神经元数学模型:
1.1 人工神经员发展历史
1960年代,人工网络得到了进一步地发展感知机和自适应线性元件等被提出。M.Minsky仔细分析了以感知机为代表的神经网络的局限性,指出了感知机不能解决非线性问题,这极大影响了神经网络的研究。
单层感知机的数学模型:
1982年,加州理工学院J.J.Hopfield教授提出了Hopfield神经网络模型,引入了计算能量概念,给出了网络稳定性判断。
离散Hopfield神经网络模型:
1986年,Rumelhart和McClelland为首的科学家提出了BP(Back Propagation)神经网络的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,目前是应用最广泛的神经网络。
1.2 BP神经网络模型:
极限学习机(Extreme Learning Machine, ELM),是由黄广斌提出的用于处理单隐层神经网络的算法。随机初始化输入权重𝛼𝑖和偏置,只求解输出权重值𝛽𝑖。
优点:
- 学习精度有保证
- 学习速度快
二、感知机算法
感知机(Perceptron)是二分类问题的线性分类模型,用 𝑋 ∈ $𝑅^{𝑛×𝑑} $表示数据集,用 𝑌 表示标签。需要学习的目标函数是:
从一堆输入输出中学习模型参数𝑤和𝑏。
感知机算法(Perceptron Algorithm):
-
随机选择模型参数的(𝑤0, 𝑏0)初始值。选择一个训练样本\((𝑥_𝑛, 𝑦_𝑛)\)。
-
若判别函数\(𝑤^𝑇𝑥_𝑛+ 𝑏 > 0,且𝑦_𝑛= −1,则𝑤 = 𝑤 − 𝑥_𝑛,𝑏 = 𝑏 − 1\)。
-
若判别函数\(𝑤^𝑇𝑥_𝑛+ 𝑏 < 0,且𝑦_𝑛= +1,则𝑤 = 𝑤+𝑥_𝑛,𝑏 = 𝑏+1\)。
-
再选取另一个训练样本\((𝑥_𝑚, 𝑦_𝑚)\),回到2。
-
终止条件:直到所有数据的输入输出对都不满足,则退出循环。
单层感知机只能处理线性问题,无法处理非线性问题!!
三、 BP算法
3.1 神经网络模型:
3.2 激活函数:
常见激活函数选择:
- sigmoid 函数
- tanh 函数
- ReLU 函数
- Leaky ReLU函数
最常用Sigmoid函数的优缺点:
优点:
- 函数处处连续,便于求导
- 可将函数值的范围压缩至[0,1],可用于压缩数据,且幅度不变
- 便于前向传输
缺点:
- 在趋向无穷的地方,函数值变化很小,容易出现梯度消失,不利于深层神经的反馈传输
- 幂函数的梯度计算复杂
- 收敛速度比较慢
3.3 BP算法主要步骤
第一步,对样本明确预测输出值与损失函数
第二步,明确参数调整策略
第三步,计算输出层阈值的梯度
第四步,计算隐层到输出层连接权值的梯度
第五步,计算隐层阈值的梯度
第六步,计算输入层到隐层连接权值的梯度
第七步,引出归纳结论
3.3.1 第一步,明确损失函数
对样本\((𝑥_𝑘, 𝑦_𝑘)\),神经网络的预测输出值为\(\hat{y}_k\)。全网络在样本\((𝑥_𝑘, 𝑦_𝑘)\)上的均方误:
3.3.2 第二步,明确参数调整策略
基于梯度下降(Gradient Descent)策略,以目标的负梯度方向对参数进行调整
3.3.3 计算输出层阈值\(𝜽_𝒋\)的梯度
利用链式法则,可得:
更新公式:\(\theta_j\)<--\(\theta_j\)-\(\eta\)\(_j\)
3.3.4 第四步,计算隐层到输出层连接权值𝒘\(_{𝒉𝒋}\)的梯度
利用链式法则,可得:
3.3.5 第五步,计算隐层阈值\(𝜸_𝒉\)的梯度\(\frac{𝜕𝐸𝑘}{𝜕𝛾}\)
利用链式法则,可得:
3.3.6 第六步,计算隐层权重\(𝒗_{𝒊𝒉}\)的梯度\(\frac{𝜕𝐸_𝑘}{𝜕𝑣_{𝑖ℎ}}\)
利用链式法则,可得:
3.3.7 第七步,引出结论
隐层阈值梯度取决于隐层神经元输出、输出层阈值梯度和隐层与输出层的连接权值。在阈值的调整过程中,当前层的阈值梯度取决于下一层的阈值,这就是BP算法的精髓。当前层的连接权值梯度,取决于当前神经元阈值梯度和上层神经元输出。只要知道上一层神经元的阈值梯度,即可计算当前层神经元阈值梯度和连接权值梯度。随后可以计算输出层神经元阈值梯度,从而计算出全网络的神经元阈值和连接权值梯度。最终达到训练网络的目的。
3.3.8 算法流程回顾:
- 将输入样本提供给输入层神经元
- 逐层将信号前传至隐层、输出层,产生输出层的结果
- 计算输出层误差
- 将误差反向传播至隐藏层神经元
- 根据隐层神经元对连接权重和阈值进行调整
- 上述过程循环进行,直至达到某些停止条件为止
优点:
- 能够自适应、自主学习。BP可以根据预设参数更新规则,通过不断调整神经网络中的参数,已达到最符合期望的输出。
- 拥有很强的非线性映射能力。
- 误差的反向传播采用的是成熟的链式法则,推导过程严谨且科学。
- 算法泛化能力很强
缺点:
- BP神经网络参数众多,每次迭代需要更新较多数量的阈值和权值,故收敛速度比较慢。
- 网络中隐层含有的节点数目没有明确的准则,需要不断设置节点数字试凑,根据网络误差结果最终确定隐层节点个数
- BP算法是一种速度较快的梯度下降算法,容易陷入局部极小值的问题。
四、参考资料
- Prof. Andrew Ng. Machine Learning. Stanford University
- 《统计学习方法》,清华大学出版社,李航著,2019年出版
- 《机器学习》,清华大学出版社,周志华著,2016年出版
- Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2006
- Stephen Boyd, Lieven Vandenberghe, Convex Optimization, Cambridge University Press, 2004
- https://www.icourse163.org/course/WZU-1464096179