【Pytorch】激活函数与loss的梯度

1. 什么是激活函数

1959年生物学家对青蛙的神经元细胞做了一个深入的研究,研究发现:青蛙的神经元细胞有多个输入,这些多个输入经过加权后相加产生一个输出,这个输出并不是一个线性的输出,也就是说,你这个输出的值低于某个响应值时,青蛙并不会做出任何反应,这个响应值称为阈值,细胞体中模拟出来的加权函数就是激活函数,

意为当函数值高于某个阈值时,该函数才会被激活产生一个有意义的值

图解单一神经元模型

在这里插入图片描述

x0、x1、x2都是神经元细胞的 输入

w0、w1、w2都是输入的 权值

细胞体中的函数 f 就是 激活函数

在这里插入图片描述

2. Sigmoid 激活函数及其loss函数

Sigmoid函数

Sigmoid函数是一个非线性的激活函数,其数学形式及函数图如下:

在这里插入图片描述

Sigmoid函数的loss函数

loss函数推导过程及函数图如下:

在这里插入图片描述

Sigmoid 函数特点

特点:

  • 将连续输入的值转化为 0 到 1 之间的输出
  • 如果输入极小,输出趋近于 0
  • 如果输入极大,输出趋近于 1

缺点:

  • 易出现 gradient vanishing
  • 函数输出并不是zero-centered
  • 幂运算相对来讲比较耗时

3. Tanh 激活函数及其loss函数

Tanh激活函数

tanh 读作 Hyperbolic Tangent,其函数结构和函数图如下:

在这里插入图片描述

Tanh函数的Loss函数

Tanh函数推导过程及函数图如下:

在这里插入图片描述

Tanh函数特点

特点:

  • 解决了zero-centered问题
  • 仍有 gradient vanishing 问题

4. ReLU 激活函数及其loss函数

ReLU 激活函数

ReLU 是 Rectified Linear Unit 的简称,其函数结构和函数图如下:

在这里插入图片描述

``ReLU 函数的loss函数`

ReLU 函数的loss函数及函数图如下:

在这里插入图片描述

ReLU函数特点

特点:

  • 解决了 gradient vanishing 问题 (在正区间)
  • 计算速度非常快,只需要判断输入是否大于 0
  • 收敛速度远快于 sigmoid 和 tanh
  • 输出不是 zero-centered

5. loss函数的梯度

5.1 Mean Squared Error

loss 函数:

image-20210302221504382

loss函数的梯度:

在这里插入图片描述

torch.autograd.grad 函数

x = torch.ones(1)
w = torch.full([1], 2., requires_grad=True) 	
# 如果参数传2而不是2.: RuntimeError: Only Tensors of floating point and complex dtype can require gradients
mse = torch.nn.functional.mse_loss(torch.ones(1), x * w)
print(mse)  # tensor(1., grad_fn=<MseLossBackward>)
loss_value = torch.autograd.grad(mse, [w])
print(loss_value)   # (tensor([2.]),)

loss.backward 函数

x = torch.ones(1)
w = torch.full([1], 2., requires_grad=True)
mse = torch.nn.functional.mse_loss(torch.ones(1), x * w)
print(mse)  # tensor(1., grad_fn=<MseLossBackward>)
mse.backward()
print(w.grad)   # (tensor([2.]),)
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值