随机梯度下降

激活函数

激活函数用来加入非线性因素,解决线性模型所不能解决的问题

原始激活函数:阈值函数(大于0为1,小于0为0)
缺点不可导

改进激活函数:

  • sigmoid(0~1之间)
    f ( x ) = σ ( x ) = 1 1 + e − x f(x)=\sigma(x)=\frac{1}{1+e^{-x}} f(x)=σ(x)=1+ex1
    优点是可导且易导:
    σ ′ = σ ( 1 − σ ) \sigma^{\prime}=\sigma(1-\sigma) σ=σ(1σ)
    缺点是会在两端会出现长时间loss保持不变
torch.sigmoid(a)
  • Tanh
    f ( x ) = tanh ⁡ ( x ) = ( e x − e − x ) ( e x + e − x ) = 2 sigmoid ⁡ ( 2 x ) − 1 \begin{aligned} f(x) &=\tanh (x)=\frac{\left(e^{x}-e^{-x}\right)}{\left(e^{x}+e^{-x}\right)} \\ &=2 \operatorname{sigmoid}(2 x)-1 \end{aligned} f(x)=tanh(x)=(ex+ex)(exex)=2sigmoid(2x)1
    常用于RNN
  • ReLU
    目前使用最多,起到奠基作用的激活函数,一般做研究优先使用ReLU激活函数
    f ( x ) = { 0  for  x < 0 x  for  x ≥ 0 f(x)=\left\{\begin{array}{ll} {0} & {\text { for } x<0} \\ {x} & {\text { for } x \geq 0} \end{array}\right. f(x)={0x for x<0 for x0
    优点:减少了梯度爆炸和梯度离散的情况
torch.relu(a)
  • Softmax
    用预测分类,每个值都在0~1之间,且和为1
    S ( y i ) = e y i ∑ j e y j S\left(y_{i}\right)=\frac{e^{y_{i}}}{\sum_{j} e^{y_{j}}} S(yi)=jeyjeyi
    求导:
    ∂ p i ∂ a j = { p i ( 1 − p j )  if  i = j − p j ⋅ p i  if  i ≠ j \frac{\partial p_{i}}{\partial a_{j}}=\left\{\begin{array}{ll} {p_{i}\left(1-p_{j}\right)} & {\text { if } i=j} \\ {-p_{j} \cdot p_{i}} & {\text { if } i \neq j} \end{array}\right. ajpi={pi(1pj)pjpi if i=j if i=j
    i=j是正的,其它时是负的
p=F.softmax(a,dim=0)
torch.autograd.grad(p[1],[a],retain_graph=True) 

Loss及其梯度

MSE:均方误差
Cross Entropy Loss:交叉熵
loss求导:

  • torch.autograd.grad(loss,[w1,w2,…]
In [55]: x=torch.ones(1)                                                        
In [56]: w=torch.full([1],2)                                                    
In [57]: w.requires_grad_()                                                     
Out[57]: tensor([2.], requires_grad=True)                            
In [63]: mse=F.mse_loss(torch.ones(1),x*w)                                      
In [64]: torch.autograd.grad(mse,[w])                                           
Out[64]: (tensor([2.]),)
  • loss.backward()
mse=F.mse_loss(torch.ones(1),x*w) 
mse.backward()
w.grad

反向传播

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值