多层感知机:Multi-Layer Perceptron

多层感知机:MLP

多层感知机由感知机推广而来,最主要的特点是有多个神经元层,因此也叫深度神经网络(DNN: Deep Neural Networks)。

感知机:PLA

多层感知机是由感知机推广而来,感知机学习算法(PLA: Perceptron Learning Algorithm)用神经元的结构进行描述的话就是一个单独的。

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

u=i=1nwixi+by=sign(u)={+1,u>01,u0

从上述内容更可以看出,PLA是一个线性的二分类器,但不能对非线性的数据并不能进行有效的分类。因此便有了对网络层次的加深,理论上,多层网络可以模拟任何复杂的函数。


多层感知机:MLP

多层感知机的一个重要特点就是多层,我们将第一层称之为输入层,最后一层称之有输出层,中间的层称之为隐层。MLP并没有规定隐层的数量,因此可以根据各自的需求选择合适的隐层层数。且对于输出层神经元的个数也没有限制。
MLP神经网络结构模型如下,本文中只涉及了一个隐层,输入只有三个变量 [x1,x2,x3] 和一个偏置量 b ,输出层有三个神经元。相比于感知机算法中的神经元模型对其进行了集成。


前向传播

前向传播指的是信息从第一层逐渐地向高层进行传递的过程。以下图为例来进行前向传播的过程的分析。
假设第一层为输入层,输入的信息为[x1,x2,x3]。对于层 l ,用Ll表示该层的所有神经元,其输出为 yl ,其中第 j 个节点的输出为y(j)l,该节点的输入为 u(j)l ,连接第 l 层与(l1)层的权重矩阵为 Wl ,上一层(第 l1 层)的第 i 个节点到第l层第 j 个节点的权重为w(ji)l

结合之前定义的字母标记,对于第二层的三个神经元的输出则有:

y(1)2=f(u(1)2)=f(i=1nw1i2xi+b(1)2)=f(w(11)2x1+w(12)2x2+w(13)2x3+b(1)2)y(2)2=f(u(2)2)=f(i=1nw2i2xi+b(2)2)=f(w(21)2x1+w(22)2x2+w(23)2x3+b(2)2)y(3)2=f(u(3)2)=f(i=1nw3i2xi+b(3)2)=f(w(31)2x1+w(32)2x2+w(33)2x3+b(3)2)

将上述的式子转换为矩阵表达式:
y2=y(1)2y(2)2y(3)2=fw112w212w312w122w222w322w132w232w332x1x2x3+b(1)2b(2)2b(3)2=f(W2X+b2)

将第二层的前向传播计算过程推广到网络中的任意一层,则:
y(j)l=f(u(j)l)u(j)l=iLl1w(ji)ly(i)l1+b(j)lyl=f(ul)=f(Wlyl1+bl)
其中 f() 为激活函数, b(j)l 为第 l 层第j个节点的偏置。


反向传播

基本的模型搭建完成后的,训练的时候所做的就是完成模型参数的更新。由于存在多层的网络结构,因此无法直接对中间的隐层利用损失来进行参数更新,但可以利用损失从顶层到底层的反向传播来进行参数的估计。(约定:小写字母—标量,加粗小写字母—向量,大写字母—矩阵)

假设多层感知机用于分类,在输出层有多个神经元,每个神经元对应一个标签。输入样本为 x=[x1,x2,,xn] ,其标签为 t ;
对于层 l ,用Ll表示该层的所有神经元,其输出为 yl ,其中第 j 个节点的输出为y(j)l,该节点的输入为 u(j)l ,连接第 l 层与(l1)层的权重矩阵为 Wl ,上一层(第 l1 层)的第 i 个节点到第l层第 j 个节点的权重为w(ji)l

对于网络的最后一层第 k 层——输出层,现在定义损失函数:

E=12jLk(t(j)y(j)k)2

为了极小化损失函数,通过梯度下降来进行推导:

Ew(ji)lEb(j)l=Ey(j)ly(j)lw(ji)l=Ey(j)ly(j)lu(j)lu(j)lw(ji)l=Ey(j)ly(j)lb(j)l=Ey(j)ly(j)lu(j)lu(j)lb(j)l

在上式子中,根据之前的定义,很容易得到:

y(j)lu(j)lu(j)lw(ji)lu(j)lb(j)l=f(u(j)l)=y(i)l1=1

那么则有:
Ew(ji)lEb(j)l=Ey(j)ly(j)lu(j)lu(j)lw(ji)l=Ey(j)lf(u(j)l)y(i)l1=Ey(j)ly(j)lu(j)lu(j)lb(j)l=Ey(j)lf(u(j)l)

另有,下一层所有结点的输入都与前一层的每个结点输出有关,因此损失函数可以认为是下一层的每个神经元结点输入的函数。那么:
Ey(j)l=E(u(1)l+1,u(2)l+1,...,u(k)l+1,...,u(K)l+1)y(j)l=kLl+1Eu(k)l+1u(k)l+1y(j)l=kLl+1Ey(k)l+1y(k)l+1u(k)l+1u(k)l+1y(j)l=kLl+1Ey(k)l+1y(k)l+1u(k)l+1w(kj)l+1

此处定义节点的灵敏度为误差对输入的变化率,即:
δ=Eu

那么第 l 层第j个节点的灵敏度为:
δ(j)l=Eu(j)l=Ey(j)ly(j)lu(j)l=Ey(j)lf(u(j)l)

结合灵敏度的定义,则有:
Ey(j)l=kLl+1Ey(k)l+1y(k)l+1u(k)l+1w(kj)l+1=kLl+1δkl+1w(kj)l+1

上式两边同时乘上 f(u(j)l) ,则有
δ(j)l=Ey(j)lf(u(j)l)=f(u(j)l)kLl+1δkl+1w(kj)l+1

注意到上式中表达的是前后两层的灵敏度关系,而对于最后一层,也就是输出层来说,并不存在后续的一层,因此并不满足上式。但输出层的输出是直接和误差联系的,因此可以用损失函数的定义来直接求取偏导数。那么:
δ(j)l=Ey(j)lf(u(j)l)=f(u(j)l)kLl+1δkl+1w(kj)l+1lf(u(j)l)(y(j)lt(j))l

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

Ew(ji)lEb(j)l=Eu(j)lu(j)lw(ji)l=δ(j)ly(i)l1=Eu(j)lu(j)lb(j)l=δ(j)l

上述的推到都是建立在单个节点的基础上,对于各层所有节点,采用矩阵的方式表示,则上述公式可以写成:
EWlEblδl=δlyTl1=δl={(WTl+1δl+1)f(ul),l(ylt)f(ul),l

其中运算符 表示矩阵或者向量中的对应元素相乘。
常见的几个激活函数的导数为:
f(ul)f(ul)f(ul)=sigmoid(ul)=sigmoid(ul)(1sigmoid(ul))=yl(1yl)=tanh(ul)=1tanh2(ul)=1y2l=softmax(ul)=softmax(ul)softmax2(ul)=yly2l

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

Wlbl:=WlηEWl=WlηδlyTl1:=blηEb=blηδl


References:

<think>好的,用户现在想查找多层感知机MLP)的结构图。我需要先回顾之前的对话内容,确保回答符合用户的需求。用户之前询问了深度学习的基础知识,包括MLP的结构,现在需要结构图。 首先,用户提供的引用材料里提到了MLP的基本结构,包括输入层、隐藏层和输出层,各层全连接。引用[1]和[2]提到MLP通过堆叠全连接层并使用激活函数来克服线性模型的限制。引用[3]和[4]讨论了具体实现,包括激活函数的作用和参数训练。引用[5]则涉及训练中的优化问题。 用户可能希望得到MLP的结构图,最好是图示。但由于文本回复无法直接插入图片,我需要用文字描述结构,并推荐资源或提供简单的ASCII示意图。此外,用户可能需要了解各层之间的连接方式、激活函数的位置,以及输入输出数据的流动路径。 需要确认用户是否了解全连接的概念,可能需要进一步解释。同时,结合之前的回答,用户可能需要结构图来辅助理解MLP的工作原理,尤其是在学习深度学习入门时,结构图有助于直观理解。 另外,用户提到“参考站内引用”,但实际引用可能来自不同资料,需要正确对应引用标记。比如,引用[1]和[2]都描述了MLP的结构,应正确标注来源。注意用户可能混淆了引用编号,需要核对内容。 最后,用户可能需要进一步的问题,比如如何实现MLP,或者不同层数的影响,但当前问题集中在结构图上,需优先解决。可能需要建议用户查阅具体书籍或在线资源,如“动手学深度学习”中的图示,或者提供ASCII结构示例。</think>### 多层感知机MLP)结构详解 #### 1. **MLP核心结构** 根据引用[1][2][3],多层感知机由以下层构成(以典型的三层结构为例): 1. **输入层**:接收原始数据(如图像像素、文本向量),节点数与输入特征维度一致。 2. **隐藏层**:至少一个非线性变换层,通过激活函数(如ReLU、Sigmoid)引入非线性能力,节点数可自由设计。 3. **输出层**:根据任务类型选择激活函数(分类用Softmax、回归用线性函数)。 #### 2. **全连接特性** - 相邻层之间所有节点两两相连(引用[1]的"全连接"定义) - 数学表达式(引用[3]): $$ H = \phi(XW_h + b_h) \quad (\text{隐藏层}) $$ $$ O = H W_o + b_o \quad (\text{输出层}) $$ 其中$\phi$为激活函数,$W_h, W_o$为权重矩阵,$b_h, b_o$为偏置项。 #### 3. **结构示意图** 以下为ASCII简图(基于引用[2][4]描述): ``` 输入层 (3节点) 隐藏层 (4节点) 输出层 (2节点) ○───────┬───────○────────○ │ │ │ ○───────┼───────○────────○ │ │ ○───────┴───────○ ``` - 箭头表示全连接权重(每个输入节点连接所有隐藏节点,每个隐藏节点连接所有输出节点) - 隐藏层含激活函数模块(如$\text{ReLU}(·)$) #### 4. **经典结构图来源** 建议参考以下资源(基于引用[2][4]): 1. 《动手学深度学习》[^2] 第4章图示(含层间连接细节) 2. 经典教材《Deep Learning》第6章MLP示意图 3. TensorFlow Playground交互演示(可动态观察数据流) #### 5. **关键设计要素** 1. **激活函数位置**:隐藏层后必须接非线性激活函数(引用[2]的"从线性到非线性") 2. **参数规模**:若输入层$d_{in}$维、隐藏层$d_h$维,则权重矩阵大小为$d_{in} \times d_h$[^3] 3. **深层扩展**:可堆叠多个隐藏层形成深度MLP(引用[4]的"模型实现"部分) --- ### 相关问题 1. MLP隐藏层节点数如何影响模型性能?是否有设计准则? 2. 为什么MLP必须使用非线性激活函数?能否用恒等函数替代? 3. 如何用PyTorch实现一个包含两个隐藏层的MLP?[^4] 4. MLP与卷积神经网络(CNN)的全连接层有何区别?[^1] [^1]: 多层感知机-MLP [^2]: 多层感知机——MLP(动手学深度学习) [^3]: 深度学习基础--多层感知机MLP) [^4]: 【动手学深度学习】--03.多层感知机MLP
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值