深度学习笔记二:多层感知机(MLP)与神经网络结构

本文介绍了神经网络的基本结构,包括输入层、隐藏层和输出层,强调了前向传播的过程,并以手写体识别为例进行说明。讨论了激活函数的重要性,特别是sigmoid函数在神经网络中的作用,以及它与logistic回归的关系。文章还简述了神经网络的训练,使用随机梯度下降法最小化损失函数,为后续的反向传播打下基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了尽量能形成系统的体系,作为最基本的入门的知识,请参考一下之前的两篇博客:
神经网络(一):概念
神经网络(二):感知机
上面的两篇博客让你形成对于神经网络最感性的理解。有些看不懂的直接忽略就行,最基本的符号的记法应该要会。后面会用到一这两篇博客中的一些记号和用法的约定什么的之后就不再啰嗦了。

一.基本结构

看完上面给出的两个博客或者已经有基本概念的同学应该对于神经网络的基本结构有基本的认识了。但是上面那个还只是涉及到单层结构,并没有推广到多层结构,同时,也没有在实践中使用这种结构的经验。所以,这节的内容就是以手写体识别为例子来讲一下基本结构,和实践中的基本使用思想。这是推广到更加复杂任务上的基础。
假设你现在已经有了神经网络的一些感性认识了,那就就看下面这幅图。
这里写图片描述
输入层(最左边),隐藏层(中间两层),和输出层(最右边),在之前列出的博客就讲过了,这里回顾一下。感受一下大概的架构。
神经网络的流程分为前向过程和反向过程。反向过程一般用于训练,后面讲,这里只讲前向过程。
还记得每个神经元上面都有对于一个输入的权值,以及一个偏置,还有一个激活函数。(不知道的话看之前列出来的博客,后面不再强调了

### 关于深度学习多层感知机MLP) #### 概念 多层感知机(Multilayer Perceptron,简称MLP)是一种前向人工神经网络模型,由多个神经元组成的网络间以全连接的方式连接[^1]。作为一种基础的人工神经网络(Artificial Neural Network, ANN)结构,MLP主要用于分类和回归任务。该模型采用全连接结构,即每一的所有神经下一的所有神经元相连。这种特性使得MLP能够逼近复杂的非线性映射关系,在机器学习领域占据重要地位[^2]。 #### 实现 为了实现一个多层感知机,除了构建基本的网络架构外,还需要定义激活函数来处理各之间的数据传递。常用的激活函数有: - ReLU函数(Rectified Linear Unit),这是目前最常使用的激活函数之一; - Sigmoid函数,适用于某些特定场景下的平滑过渡需求; - Tanh函数,提供了一个范围更广的选择区间[-1, 1]内的输出值[^4]。 下面是一个简单的Python代码示例,展示了如何利用PyTorch框架创建并训练一个两MLP来进行手写数字识别的任务: ```python import torch from torch import nn, optim from torchvision.datasets.mnist import MNIST from torchvision.transforms import ToTensor class SimpleMLP(nn.Module): def __init__(self): super(SimpleMLP, self).__init__() self.fc1 = nn.Linear(784, 500) # 输入维度为28*28=784像素的手写图片展成一维向量后的大小 self.relu = nn.ReLU() self.fc2 = nn.Linear(500, 10) # 输出维度对应十个类别标签 def forward(self, x): out = self.fc1(x.view(-1, 784)) out = self.relu(out) out = self.fc2(out) return out # 加载MNIST数据集 train_dataset = MNIST(root='./data', train=True, transform=ToTensor(), download=True) # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.01) model = SimpleMLP() for epoch in range(num_epochs): for images, labels in dataloader: outputs = model(images) loss = criterion(outputs, labels) optimizer.zero_grad() # 清除梯度缓存 loss.backward() # 计算参数更新方向 optimizer.step() # 更新权重参数 ``` 这段代码实现了基于PyTorch库的一个简单版本的MLP,并对其进行了初步配置以便可以用于实际的数据分析工作流中[^3]。 #### 应用 多层感知机广泛应用于各种类型的监督学习问题上,尤其是在图像识别、语音处理等领域表现优异。例如上述提到的手写体字符辨识就是其中一个典型的应用案例;除此之外还包括但不限于自然语言理解、时间序列预测等多个方面。随着硬件性能提升以及算法改进,未来还将看到更多创新性的应用场景涌现出来。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值