PyTorch学习笔记之多层感知机

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反向传播

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值