转自: https://www.zhenxiangsimple.com/2019/03/29/tech-ml-sjwl/
不论神经网络的模型是否真的跟生物自身的神经网络相似,也不是特别重要,可以不用太关心,能大概理解它的一个构造思想即可。通常大家不会具体到要去通过代码实现神经网络模型,所以不必太在意其数学公式和具体计算,只需要关心其大概原理,本文就说说相关的一些概念。
M-P神经元模型
基本原理就是将输入样本数据,通过赋予不同权值后,将各项输入值求和得到输出值,通过数学公式简单表示如下,其中
w
i
j
w_{ij}
wij为神经元
x
i
x_i
xi和
y
j
y_j
yj之间的权重。
y
j
=
∑
i
=
1
k
(
x
i
×
w
i
j
)
y_j=\sum_{i=1}^{k}(x_i\times w_{ij})
yj=∑i=1k(xi×wij)
感知机
感知机或者叫感知器是只有单层功能神经元的模型,是最简单的一种神经网络模型,相当于从输入直接到输出,没有中间隐含层神经元。
BP网络
英文全称是error Back Propagation,中文意思是误差逆传播,其实顾名思义就是有信息可以从输出传递到输入端,而之前简单的感知机是只有输入到输出的计算。核心包含两部分,一部分是从输入到输出对误差的计算,另一部分从输出到输入对神经元之间权重和自身阈值的迭代,其算法流程如下:
输入:训练集
D
=
(
x
k
,
y
k
)
k
=
1
m
D={(x_k,y_k)}_{k=1}^m
D=(xk,yk)k=1m, 学习率:
η
\eta
η
过程:
- 在(0,1)范围内随机初始化网络中所有连接权和阈值
- repeat
- for all ( x k , y k ) ∈ D (x_k,y_k)\in D (xk,yk)∈D do
- 根据当前参数,计算当前样本输出 y k y_k yk
- 计算输出层神经元的梯度项 g j g_j gj
- 计算隐层神经元的梯度项 e h e_h eh
- 更新连接权 w h j , v i h w_{hj},v_{ih} whj,vih和阈值 θ j , γ h \theta_j,\gamma_h θj,γh
- end for
- until 达到停止条件
输出:连接权与阈值确定的多层前馈神经网络
全局最小
对于常规的神经网络模型是使用梯度下降算法进行迭代,但梯度下降可能就会导致达到局部最小值,就好像爬山时候在有多个山头的山脉里,第一次只是先爬到了一个矮的山丘,有一些策略可以跳出局部最优达到全局最优,如下:
- 使用多组不同的起始参数值
- 一定比例上接受次优解(模拟退火算法)
- 对梯度方向加入随机量,即使以及达到了梯度为零,那也因为随机量而还可以继续迭代
其它网络模型
除了BP网络外,还有一些常用的算法如下,具体我也没了解过,供各位自行参考:
- RBF(Radial Basis Function) 径向基函数网络:单隐成前馈神经网络
- ART(Adaptive Resonance Theory)自适应谐振理论网络
- SOM(Self-Organazing Map)自组织映射网络
- 级联相关网络(Cascade-Correlation)
- Elman网络
- Boltzmann机
- 深度学习:很深层的神经网络