softmax输出向量的计算过程以及log_softmax的优势

说明:本文部分文本参考知乎博主chuang的一篇文章

  • softmax

  • 计算过程如图所示:
    在这里插入图片描述

  • logsoftmax
    而logsoftmax无非是在softmax的结果至上进行log操作,即log(yi),输出结果均为负数;
    值域范围在(0, 1)之间如图所示:(随便画的有点丑)
    在这里插入图片描述

  • 重点:

  • log_softmax能够解决函数overflow和underflow,加快运算速度,提高数据稳定性。

在这里插入图片描述

如上图所示:

  • softmax会进行指数操作,当上一层的输出,也就是softmax的输入比较大的时候, 可能就会产生overflow。比如上图中,z1、z2、z3取值很大的时候,超出了float能表示的范围。
  • 同理当输入为负数且绝对值也很大的时候,会出现分母会变得极大,有可能四舍五入为0,导致下溢出。
  • 尽管在数学表示式上是对softmax在取对数的情况。但是在实操中是通过
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    来实现,其中在这里插入图片描述即 M为所有概率分布中最大的值。

  • 可以解决这个问题,在加快运算速度的同时,可以保持数值的稳定性

log_softmax函数将输入进行log操作后再进行softmax操作,得到的结果是一个概率分布,所有的值都是负数。这是因为log操作会将大于1的概率值转换为正数,小于1的概率值转换为负数。这样做的目的是为了方便计算和比较概率值。在深度学习中,通常使用log_softmax函数来计算损失函数,因为它可以避免数值溢出和下溢出的问题。引用\[1\]中提到,当输入的值比较大时,softmax函数可能会产生数值溢出,而当输入的值比较小且绝对值很大时,softmax函数可能会产生下溢出。通过使用log_softmax函数,可以避免这些问题的发生。所以,log_softmax函数得到的结果都是负数。 #### 引用[.reference_title] - *1* [使用PyTorch时,最常见的4个错误](https://blog.csdn.net/m0_61899108/article/details/122885780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [softmax输出向量计算过程以及log_softmax优势](https://blog.csdn.net/qq_41475067/article/details/117131516)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【研一小白白话理解】各种小知识](https://blog.csdn.net/weixin_46235765/article/details/121892062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值