首页 > 编程知识 正文

卡尔曼滤波与组合导航原理,perceptronliar

时间:2023-05-05 03:27:43 阅读:11060 作者:3923

多层感知机: MLP多层感知机从感知机开始普及,最主要的特点是具有多个神经元层,也称为深度神经网络(DNN: Deep Neural Networks )。

感知机: PLA多层感知机是从感知机普及而来的,感知机学习算法(PLA : perceptronlearningalgorithm )用神经元结构描述时是单独的。

感知机的神经网络表示如下。

u=I=1nwixiby=sign(u )={ 1,u01,u0

综上所述,PLA是线性的二分类器,但不能有效地对非线性的数据进行分类。 因此,网络层次变深,理论上多层网络能够模拟任何复杂的函数。 多层感知机: MLP

多层探测器的一个重要特征是多层,第一层叫输入层,最后一层叫输出层,中间一层叫隐藏层。 因为MLP没有规定隐藏层数,所以可以根据各自的需要选择合适的隐藏层数。 另外,输出层神经元的个数也没有限制。

MLP神经网络的结构模型如下。 本文只处理一个隐藏层,输入只有三个变量[x1、x2、x3]和一个偏移量b,输出层有三个神经元。 与感知机算法的神经元模型进行了比较集成。

前向传播前向传播是指信息从第一层逐渐传递到上层的过程。 以下图为例进行前向传播过程分析。

设第一层为输入层,所输入的信息为[x1、x2、x3]。 对于层l,该层的所有神经元用Ll表示,其输出为yl。 这里,第j个节点输出为y(j ) l,该节点的输入为y(j ) l,连接第l层和第(L1 )层的权重矩阵为Wl,从上一层(L1 )的第I个节点到第l个节点的权重为w

与以前定义的字母符号结合,第二层的三个神经元的输出如下

y(1)2=f(u )1)2) f ) I=1nw1I2XiB )1)2) f ) w ) 11 ) 2x1w ) 12 ) 2w ) 13 ) 2x3b )1)2=2=f (u )3)2)

将上述公式转换为矩阵公式:

y2=y(1) 2y (2y )3)2=f w112 w212 w 312 w 222 w 322 w 332 x1 b (1) 2b (3)2=f (w2xb2) () ) ) ) ) )

当第二层前向传播计算过程部署到网络中的任何层时,

y(j ) l=f (u ) l ) j ) l=Ill1w ) Ji ) ly ) I ) L1b(j ) lyl=f(ul )=f (wlyl1bl )这里f ) )是激活函数,b ) ul )

基本模型构建完成后,训练时所做的就是完成模型参数的更新。 由于存在多层网络结构,不能直接利用损耗对中间隐层进行参数更新,但可以利用损耗从顶层到底层的反向传播进行参数估计。 (约定)小写(标量、粗体、小写)向量、大写(矩阵) ) ) ) ) ) ) ) )。

假设多层感知机用于分类,输出层有多个神经元,每个神经元对应一个标签。 输入示例为x=[x1,x2,xn],其标签为t;

对于层l,该层的所有神经元用Ll表示,其输出为yl。 这里,第j个节点输出为y(j ) l,该节点的输入为y(j ) l,连接第l层和第(L1 )层的权重矩阵为Wl,从上一层(L1 )的第I个节点到第l个节点的权重为w

现在为网络中的最后一层k层——输出层定义损耗函数。

e=12jlk(t(j ) y ) j (k ) 2

为了使损失函数最小化,通过梯度下降导出:

ew(ji ) leb ) j ) l=ey(j ) ly ) lw ) l=ey ) j ) Lu ) j ) lw ) Ji ) l=ey ) j ) ly ) lb

根据前面的定义,上式很容易得到:

y(j ) Lu(j ) lw ) Ji ) Lu ) j ) lb ) j ) l=f ) j ) l )=y ) I ) l1=1

那么,如下所示。

⎪⎪⎪∂E∂w(ji)l∂E∂b(j)l=∂E∂y(j)l∂y(j)l∂u(j)l∂u(j)l∂w(ji)l=∂E∂y(j)lf′(u(j)l)y(i)l−1=∂E∂y(j)l∂y(j)l∂u(j)l∂u(j)l∂b(j)l=∂E∂y(j)lf′(u(j)l)
另有,下一层所有结点的输入都与前一层的每个结点输出有关,因此损失函数可以认为是下一层的每个神经元结点输入的函数。那么:
∂E∂y(j)l=∂E(u(1)l+1,u(2)l+1,...,u(k)l+1,...,u(K)l+1)∂y(j)l=∑k∈Ll+1∂E∂u(k)l+1∂u(k)l+1∂y(j)l=∑k∈Ll+1∂E∂y(k)l+1∂y(k)l+1∂u(k)l+1∂u(k)l+1∂y(j)l=∑k∈Ll+1∂E∂y(k)l+1∂y(k)l+1∂u(k)l+1w(kj)l+1
此处定义节点的灵敏度为误差对输入的变化率,即:
δ=∂E∂u
那么第 l 层第j个节点的灵敏度为:
δ(j)l=∂E∂u(j)l=∂E∂y(j)l∂y(j)l∂u(j)l=∂E∂y(j)lf′(u(j)l)
结合灵敏度的定义,则有:
∂E∂y(j)l=∑k∈Ll+1∂E∂y(k)l+1∂y(k)l+1∂u(k)l+1w(kj)l+1=∑k∈Ll+1δkl+1w(kj)l+1
上式两边同时乘上 f′(u(j)l) ,则有
δ(j)l=∂E∂y(j)lf′(u(j)l)=f′(u(j)l)∑k∈Ll+1δkl+1w(kj)l+1
注意到上式中表达的是前后两层的灵敏度关系,而对于最后一层,也就是输出层来说,并不存在后续的一层,因此并不满足上式。但输出层的输出是直接和误差联系的,因此可以用损失函数的定义来直接求取偏导数。那么:
δ(j)l=∂E∂y(j)lf′(u(j)l)=⎧⎩⎨⎪⎪f′(u(j)l)∑k∈Ll+1δkl+1w(kj)l+1l层为隐层f′(u(j)l)(y(j)l−t(j))l层为输出层

至此,损失函数对各参数的梯度为:

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪∂E∂w(ji)l∂E∂b(j)l=∂E∂u(j)l∂u(j)l∂w(ji)l=δ(j)ly(i)l−1=∂E∂u(j)l∂u(j)l∂b(j)l=δ(j)l
上述的推到都是建立在单个节点的基础上,对于各层所有节点,采用矩阵的方式表示,则上述公式可以写成:
∂E∂Wl∂E∂blδl=δlyTl−1=δl={(WTl+1δl+1)∘f′(ul),l层为隐层(yl−t)∘f′(ul),l层为输出层
其中运算符 ∘ 表示矩阵或者向量中的对应元素相乘。
常见的几个激活函数的导数为:
f′(ul)f′(ul)f′(ul)=sigmoid′(ul)=sigmoid(ul)(1−sigmoid(ul))=yl(1−yl)=tanh′(ul)=1−tanh2(ul)=1−y2l=softmax′(ul)=softmax(ul)−softmax2(ul)=yl−y2l

根据上述公式,可以得到各层参数的更新公式为:

Wlbl:=Wl−η∂E∂Wl=Wl−ηδlyTl−1:=bl−η∂E∂b=bl−ηδl

References:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。