多层感知机(MLP)

  最终还是没有憋住,写下了这篇博文,最近真的是感慨很多啊,真的很想找个人说说。还有那么多的东西要看要学。
  最近一直在搞神经网络方面的东西,看了MLP的讲解,但都是讲解结构,我就是想知道MLP到底是干啥的,有什么用,一直没找到,碰巧在一篇博客中看到便在此记录一下自己的理解。这里不讲解它的结构和历史,想了解的可以看这里这里,本篇只是为了从高维的角度给出一个整体的认识。
  
  作用:它就是一个传统的神经网络,就是为了解决单层感知机无法解决的非线性问题(单层感知机只能对线性数据进行分类)。做图片处理的大都是用caffe,它就相当于caffe里面的p2p层。
  多层感知机最初是为了做分类的,但是它也可以处理回归问题,只要在最后将softmax等分类器改成sigmoid回归就行。它的训练方式也是“BP反向传导”。
  
  很好的一个图片:
  多层感知机vs单层感知机

  
  但是它的隐藏层之间的连接方式是“全连接”的,所以造成(1)训练的参数过多(2)由于(1)造成它的层数不可能过多,限制了它的能力也有限,不能解决比较复杂的问题。于是,局部连接的卷积神经网络便出来了,很好的解决了这些问题。
  

### 多层感知机 (MLP) 的示意图与架构解析 多层感知机(Multi-Layer Perceptron, MLP)是一种典型的前馈神经网络模型,广泛应用于解决复杂的非线性问题。它的基本结构由输入层、隐藏层以及输出层构成,每一层都通过全连接方式相连[^1]。 #### MLP 的主要组成部分 - **输入层**:接收外部数据并将其传递给下一层。 - **隐藏层**:通常包含一个或多个中间层,负责提取特征并通过激活函数引入非线性特性。 - **输出层**:提供最终预测结果,具体形式取决于任务类型(分类或回归)。 以下是基于上述描述的一个典型 MLP 结构图: ```plaintext Input Layer -> Hidden Layer 1 -> Hidden Layer 2 -> Output Layer | | | | v v v v [x1,x2,...xn] --> [h1,h2,...hm] --> [k1,k2,...kp] --> [y1,y2,...yt] ``` 其中: - 输入 `[x1, x2, ..., xn]` 表示 n 维特征向量; - 隐藏层节点 `[h1, h2, ..., hm]` 和 `[k1, k2, ..., kp]` 是通过加权求和及激活函数计算得到的结果; - 输出 `[y1, y2, ..., yt]` 则表示 t 类别的预测值或者连续变量估计值。 为了更直观理解这种层次化设计原理,请参考以下简化版代码实现: ```python import torch.nn as nn class SimpleMLP(nn.Module): def __init__(self, input_size, hidden_sizes, output_size): super(SimpleMLP, self).__init__() layers = [] prev_size = input_size # 添加隐藏层 for size in hidden_sizes: layers.append(nn.Linear(prev_size, size)) layers.append(nn.ReLU()) # 使用ReLU作为激活函数 prev_size = size # 添加输出层 layers.append(nn.Linear(prev_size, output_size)) self.network = nn.Sequential(*layers) def forward(self, x): return self.network(x) ``` 此代码定义了一个简单的三层 MLP 模型,展示了如何利用 PyTorch 实现一个多层感知机,并且每两个线性变换之间加入了 ReLU 函数来增加表达能力[^3]。 最后值得注意的是,在实际应用中,除了标准的全连接拓扑外,还可以结合其他技术比如正则化(dropout),批量标准化(batch normalization)等进一步提升性能表现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值