PyTorch学习笔记之多层感知机

本文介绍了多层感知机中的梯度概念,探讨了梯度下降法的应用及可能遇到的鞍点问题,详细讲解了MSE损失函数的求导方法,包括autograd.grad()和backward()函数,并深入剖析了Softmax函数的梯度计算。最后,涵盖了MLP反向传播的过程。

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

PyTorch学习笔记之多层感知机

多层感知机也叫人工神经网络,除了输入输出层,它中间可以有多个隐含层。为实现多层感知机,先从梯度的知识开始了解。

什么是梯度

导数、偏微分均为标量,而梯度是向量。梯度的公式如下:
∇ f = ( ∂ f ∂ x 1 ; ∂ f ∂ x 2 ; ⋯   ; ∂ f ∂ x n ) \nabla{f} = (\frac{\partial f}{\partial x_1};\frac{\partial f}{\partial x_2};\cdots;\frac{\partial f}{\partial x_n}) f=(x1f;x2f;;xnf)

常采用梯度下降法来求解函数最优值,即搜索全局最优解,迭代公式如下:
θ t + 1 = θ t − α t ∇ f ( θ t ) \theta_{t+1} = \theta_t-\alpha_t \nabla{f(\theta_t)} θt+1=θtαtf(θt)

对于凸函数,存在全局最优解,可利用梯度下降法求解得到。
但是当利用梯度下降法求解某函数的最优值时,可能会求得的解为鞍点。鞍点即在某个纬度上取到了局部最小值,而在另一个纬度上取到局部最大值。
影响梯度下降法求解全局最优解的因素有初始解以及学习率,初始解选择的不恰当,学习率选择的不合适,会使得全局最优解的搜索陷入局部最小值陷阱,因此需要采取合适的方法,以逃出局部最小值。

常见函数的梯度

在这里插入图片描述

激活函数

在这里插入图片描述

Loss及其梯度

1.求导的两种方法
MSE(均方差): l o s s = ∑ [ y − ( x w + b ) ] 2 loss = \sum [y-(xw+b)]^2 loss=[y(xw+b)]2
(1) 利用autograd.grad()函数进行求导(对指定的参数进行求导)
代码例子如下:

x = torch.ones(1)
w = torch.full([1],2.0)
w.requires_grad_()
mse = F.mse_loss(torch.ones(1),x*w)
print(torch.autograd.grad(mse,[w]))

求解的结果为:

(tensor([2.],)

(2) 利用backward()函数求导(对所有参数进行一次性求导)
代码例子如下:

x = torch.ones(1)
w = torch.full([1],2.0)
w.requires_grad_()
mse = F.mse_loss(torch.ones(1),x*w)
mse.backward()
print(w.grad)

求解的结果为:

(tensor([2.],)

2.Softmax函数
经softmax函数处理过后的值,概率区间为[0,1],且所有值的概率值累加求和为1。
Softmax函数的换算公式为:

S ( y i ) = e y i ∑ j e y j S(y_i)=\frac{e^{y_i}} { \sum_j e^{y_j}} S(yi)=jeyjeyi

Softmax函数的梯度计算如下:
在这里插入图片描述

单层输出感知机梯度推导

在这里插入图片描述
在这里插入图片描述

多层输出感知机

在这里插入图片描述
在这里插入图片描述

MLP反向传播

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值