本系列博客基于温州大学黄海广博士的机器学习课程的笔记,小伙伴们想更详细学习黄博士课程请移步到黄博士的Github、或者机器学习初学者公众号,现在在中国慕课也是可以学习的,内容包括机器学习、深度学习及Python编程,matplotlib、numpy、pandas、sklearn等,资料很详细,要系统学习请移步哦!笔者的博客只是笔记,内容不会十分详细,甚至会有些少错误!
1.人工神经网络简史
2.感知机算法
- 感知机:一个二分类问题的线性分类模型;
- 用 X ∈ R n × d X\in{R}^{n\times{d}} X∈Rn×d表示数据集,用 Y Y Y表示标签;
- 需要学习的目标函数:
f ( x ) = s i g n ( ω T x + b ) f(x)=sign(\omega^Tx+b) f(x)=sign(ωTx+b) - 从输入输出中学习模型参数 ω \omega ω和 b b b;
- 随机选择模型参数的 ( ω 0 , b 0 ) (\omega_0,b_0) (ω0,b0)初始值;
- 选择一个训练样本
(
x
n
,
y
n
)
(x_n,y_n)
(xn,yn);
若判别函数 ω T x n + b > 0 , 且 y n = − 1 \omega^Tx_n+b>0,且y_n=-1 ωTxn+b>0,且yn=−1,则 ω = ω − x n , b = b − 1 \omega=\omega-x_n,b=b-1 ω=ω−xn,b=b−1;
若判别函数 ω T x n + b < 0 , 且 y n = + 1 \omega^Tx_n+b<0,且y_n=+1 ωTxn+b<0,且yn=+1,则 ω = ω + x n , b = b + 1 \omega=\omega+x_n,b=b+1 ω=ω+xn,b=b+1;
再选取另一训练样本 ( x m , y m ) (x_m,y_m) (xm,ym),重复上述步骤;
终止条件:直到所有数据的输入输出对都不满足上述条件,则退出循环; - 注:单层感知机只能处理线性问题,无法处理非线性问题;
3.BP算法
3.1 Sigmoid函数优缺点
- 优点
- 函数处处连续,便于求导;
- 可将函数值的范围压缩到 [ 0 , 1 ] [0,1] [0,1],可用于压缩数据,且幅度不变;
- 便于前向传输;
- 缺点
- 在趋于无穷的地方,函数值变化很小,容易出现梯度消失,不利于深层神经的反馈传输;
- 幂函数的梯度计算复杂;
- 收敛速度较慢;
3.2 算法步骤
- 对样本明确预测输出值与损失函数;
- 明确参数调整策略;
- 计算输出层阈值的梯度;
- 计算隐层到输出层连接权值的梯度;
- 计算隐层阈值的梯度;
- 计算输入层到隐层连接权值的梯度;
- 引出归纳结论;
3.3 算法步骤详解
3.4 算法优缺点
- 优点
- 能够自适应、自主学习。BP可以根据预设参数更新规则,通过不断调整神经网络中的参数,以达到最符合期望的输出;
- 拥有很强的非线性映射能力;
- 误差的反向传播采用的是链式法则,推导过程严谨,科学;
- 算法泛化能力很强;
- 缺点
- BP神经网络参数众多,每次迭代需要更新较多数量的阈值和权值,收敛速度较慢;
- 网络中隐藏层含有的节点数目没有明确的准则,需要不断设置节点数试凑,根据网络误差结果最终确定隐藏层节点个数;
- BP算法是一种速度较快的梯度下降算法,容易陷入局部极小值的问题;