机器学习 人工神经网络

一.神经元模型
1.M-P神经元模型:

人工神经网络中最基本的成分是"神经元"(Neuron).1943,McCullochand Pitts将神经元模型抽象为如下图所示的简单模型,称为"M-P神经元模型"
(McCulloch-Pitts Model).在该模型中,每个神经元都通过带有"权重"(Weight)"连接"(Connection)接收到来自其他n个神经元的输入信号,然后
将总输入值与阙值进行比较,最后通过激活函数进行处理以产生输出信号

在这里插入图片描述
2.激活函数
(1)概念:

"激活函数"(Activation Function)用于对输入信号进行处理,从而产生输出信号.使用激活函数对输入信号进行加工的神经元称为"功能神经元"

(2)常用激活函数:

"单位阶跃函数"(Unit Step Function)
  其具有不连续/不光滑等不好的性质,因此常用"Sigmoid函数"/"Logistic函数"作为替代.这种函数把在(-,+)变化的输入值挤压到(0,1),因此有
  时也称"挤压函数"(Squashing Function)"双曲正切函数"(Hyperbolic Tangent Function;tanh Function)"修正线性单元函数"/"线性整流函数"(Rectified Linear Unit Function;ReLU Function)"带泄露线性整流函数"(Leaky Rectified Linear Unit Function;LReLU Function)"参数化修正线性单元函数"(Parametric Rectified Linear Unit Function;PReLU Function)"指数线性单元函数"(Exponential Linear Unit Function;ELU Function)"高斯误差线性单元函数"(Gaussian Error Linerar Units Function;GELU Function)"自门控函数"(Swich Function)"缩放指数线性单元函数"(Scaled Exponential Linear Units Function;SELU Function)

二.人工神经网络
1.概述
(1)概念:

把多个神经元按一定层次结构连接起来就得到了"人工神经网络"(Artificial Neural Network;ANN).1层神经元称为"输入层"(Input Layer),用
于接收输入信号并将信号传递给下1层神经元(注意:该层不对输入信号进行处理);"输出层"(Output Layer)接收上1层神经元传递过来的信号,对这些信
号进行处理从而产生输出信号;二者之间的各层神经元均称为"隐藏层"(Hidden Layer)"中间层"(Middle Layer),用于接收上1层神经元传递过来的
信号,进行处理后再传递到下1层神经元.所有神经网络都有输入/出层,但不一定包含隐藏层.神经网络的学习过程,就是根据训练数据来调整神经元间的权
重及功能神经元处的阈值

在这里插入图片描述
(2)应用:

自动驾驶
模式识别
智能机器人
医学诊断
风险评估
价格预测

(3)记号:

记激活函数为 f ( x ) f(x) f(x);第 j j j层的第 i i i个神经元为 a i j a_i^j aij;第 j j j到第 j + 1 j+1 j+1层神经元的信号权重矩阵为 θ j θ^j θj,其中 θ m n j θ_{mn}^j θmnj表示 a n j a^j_n anj a m j + 1 a^{j+1}_m amj+1的信号权重;第 j j j层的第 i i i个神经元的阈值为 b i j b_i^j bij,则 a i j   ( j ≠ 1 ) a_i^j\,(j≠1) aij(j=1)的输出为 y i j = f i j ( ∑ p θ i p j − 1 y p j − 1 − b i j ) y_i^j=f_i^j(\displaystyle\sum_pθ^{j-1}_{ip}y^{j-1}_p-b_i^j) yij=fij(pθipj1ypj1bij)其矩阵形式为 y j = f j ( θ j − 1 y j − 1 − b j ) y^j=f^j(θ^{j-1}y^{j-1}-b^j) yj=fj(θj1yj1bj)将第 i i i个输入数据元接收的输入信号记为 x i x_i xi,则 a i 1 a_i^1 ai1的输出为 y i 1 = x i y_i^1=x_i yi1=xi

2.感知机

感知机是最基本的神经网络

(1)概念:

"感知机"(Perceptron)是由2层神经元组成的ANN且输出层为"阈值逻辑单元"(Threshold Logic Unit;TLU)的ANN(如下图1).由于感知机只有输出层
对输入信号进行激活函数处理,即只有1层功能神经元,因而学习能力非常有限.Minsky和Papert在1969证明了,2类模式是线性可分的(如下图2),则感
知机的学习过程必定会收敛而求得合适的权重向量;否则感知机的学习过程将会发生振荡,因而求不出合适的权重向量,如感知机不能解决异或(见下图2)这
样的非线性可分问题

在这里插入图片描述
在这里插入图片描述
(2)实现逻辑运算:

感知机能容易地实现逻辑与/或/非运算.假设 f f f为阶跃函数,则有:
①"与"运算:令 θ 1 = θ 2 = 1 , b = 2 θ_1=θ_2=1,b=2 θ1=θ2=1,b=2,则 y = f ( x 1 + x 2 − 2 ) y=f(x_1+x_2-2) y=f(x1+x22),当且仅当 x 1 = x 2 = 1 x_1=x_2=1 x1=x2=1 y = 1 y=1 y=1
②"或"运算:令 θ 1 = θ 2 = 1 , b = 0.5 θ_1=θ_2=1,b=0.5 θ1=θ2=1,b=0.5,则 y = f ( x 1 + x 2 − 0.5 ) y=f(x_1+x_2-0.5) y=f(x1+x20.5),当且仅当 x 1 = 1 x_1=1 x1=1 x 2 = 1 x_2=1 x2=1 y = 1 y=1 y=1
③"非"运算:令 θ 1 = − 0.6 , θ 2 = 0 , b = − 0.5 θ_1=-0.6,θ_2=0,b=-0.5 θ1=0.6,θ2=0,b=0.5,则 y = f ( − 0.6 x 1 + 0.5 ) y=f(-0.6x_1+0.5) y=f(0.6x1+0.5),当 x 1 = 1 x_1=1 x1=1 y = 0 y=0 y=0; x 1 = 0 x_1=0 x1=0 y = 1 y=1 y=1

扫描二维码关注公众号,回复: 12822706 查看本文章

(3)感知机的学习:

给定训练集,权重 ω i   ( i = 1 , 2... n ) ωi\,(i=1,2...n) ωi(i=1,2...n)及阙值 b b b可通过学习得到.其中 b b b可看作1个输入值固定为 − 1 -1 1哑结点(Dummy Node)所对应的权重 ω n + 1 ω_{n+1} ωn+1;这样,权重和阙值的学习就可统一为权重的学习.感知机的学习规则为:对训练样例 ( x , y ) (x,y) (x,y),代价函数 J J J,若输出为 h θ ( x ) h_θ(x) hθ(x),则权重将进行如下调整: θ = θ + η ⋅ ∇ J ( θ ) θ=θ+η⋅∇J(θ) θ=θ+ηJ(θ)其中 η ∈ ( 0 , 1 ) η∈(0,1) η(0,1)学习率(Learning Rate)

(4)多层感知机:

要解决非线性可分问题,就需要使用多层功能神经元.在感知机中增加阈值逻辑单元作为隐藏层就得到"多层感知机"(Multi-Layer Perceptron)

(5)实现:


三.反向传播算法
1.概念:

"前向传播算法"(Forward-Propagation Algorithm;FP算法)是指将上1层的输出作为下1层的输入,直到输出层为止

######################################################################################################################

"反向传播算法"(Back-Propagation Algorithm;BP算法)"误差反向传播算法"(Error Back Propagation Algorithm)的简称.该算法使来自代
价函数的信息通过网络反向流动以便计算梯度,从而训练多层神经网络(尤其是前馈神经网络)

2.原理
(1)标准BP算法:

标准BP算法(Standard Error BP Algorithm)每次仅针对1个训练样本进行训练:设神经网络共有 L L L层,对样本 ( x i , y i ) (x_i,y_i) (xi,yi)的输出为 y L y^L yL,代价函数为 J J J,则误差为 δ L = J ( y L , y i ) δ_L=J(y^L,y_i) δL=J(yL,yi)设激活函数为 f ( x ) f(x) f(x),第 j j j j + 1 j+1 j+1层的信号权重矩阵为 θ j θ^j θj,则之前各层的误差为 δ j − 1 = θ j − 1 T δ j ∗ f ′ ( θ j T x i ) δ_{j-1}={θ^{j-1}}^Tδ_j*f'({θ^j}^Tx_i) δj1=θj1Tδjf(θjTxi)而第1层没有误差.然后即可通过梯度下降等方法对各层参数进行更新,目标是 min ⁡ δ k \min{δ_k} minδk
在这里插入图片描述

(2)累计误差BP算法:

累计误差BP算法(Accumulated Error BP Algorithm)每次都针对全部训练样本进行训练,目标是 min ⁡ 1 L ∑ k = 1 L δ k \min{\frac{1}{L}\displaystyle\sum_{k=1}^Lδ_k} minL1k=1Lδk

(3)比较:

一般来说,标准BP算法每次更新只针对单个样本,参数更新得非常频繁,且对不同样例进行更新的效果可能出现"抵消现象".因此,为了达到同样的累积误差
极小点,标准BP算法常需进行更多次数的迭代.累积BP算法则直接针对累积误差进行学习,参数更新的频率低得多.但在很多任务中,当累积误差已经下降到
了一定程度时,累计BP算法的下降会非常缓慢;这时标准BP常能更快获得较好的解,尤其是在训练集D非常大的时候

3.实现
(1)标准BP算法:


(2)累计误差BP算法:


四.其他
1.防止过拟合
(1)早停:

"早停"(Early-Stoping)策略将数据集分为训练集和验证集,训练集用于计算梯度/更新权值和阈值,验证集则用于评估误差.若训练误差降低但泛化误差
升高,则停止训练并返回具有泛化误差的权值和阈值

(2)正则化:

参见 机器学习.正则化 部分

2.梯度检验:

参见 机器学习.梯度下降.三 部分

#注意:通过差分得到的近似梯度会被用和解析梯度相同的方法反向传播

3.初始化:

可以使用随机值进行初始化

猜你喜欢

转载自blog.csdn.net/weixin_46131409/article/details/114260430