前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅析 Softmax 与 LogSumExp

浅析 Softmax 与 LogSumExp

作者头像
zenRRan
发布2022-07-04 14:20:27
5930
发布2022-07-04 14:20:27
举报
文章被收录于专栏:深度学习自然语言处理

每天给你送来NLP技术干货!


来自:AI算法小喵

写在前面

在神经网络中,假设网络模型的最后一层是使用 softmax 去得到一个概率分布,且损失函数使用的是 cross entropy loss (交叉熵损失),那我们就会遇到 LogSumExp(之后简称 LSE )。本文将对 LSE 的相关知识进行简要介绍。

1. 由来

假设我们有  个值的数据集 ,我们想要求  的值,应该如何计算?看上去这个问题可能比较奇怪,但实际上我们在神经网络中经常能碰到这个问题。

在神经网络中,假设我们的最后一层是使用 softmax 去得到一个概率分布,其中 softmax 的形式为:

这里的  是其中的一个值。最终 loss函数 如果使用 cross entropy,那么就涉及到需要对该式求 log,也就是

等式中减号后面的部分,也就是我们上面所要求的  ,即 LogSumExpLSE)。

2. 特点

我们想要通过 softmax 获得概率分布。假设我们目前有两个数据集:其中一个数据集为 ,另一个数据集为  。

两组数据在理论上应得到的概率分布都应该是 。但实际上如果我们直接按照  去计算时会有:

代码语言:javascript
复制
>>> import math
>>> math.e**1000
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: (34, 'Result too large')
>>> math.e**-1000
0.0

可以发现,对于指数部分,一个计算不出来,另一个结果0,很明显这些结果都是有问题的,LSE 也没法计算。

在 64-bit 系统中,因为 下溢(underflow) 和 上溢(overflow) 的存在,我们没有办法精确计算这些值的结果。那么我们就需要别的方法来解决这个问题,这时候我们就需要对该式进行分析。

由于在 softmax 的时候是针对指数进行操作的,值一定会很大,但是之后在计算 cross-entropy 的时候由于 log 的存在导致值又回到正常范围。因此我们考虑如何去重写这个正常范围内的值。也就是如何去近似LSE

2. 近似

根据指数函数的性质可以得到:

对于log函数而言,

所以我们可以将LSE重写为:

将这个带入到 cross-entropy 里,那么

此时,对于数据集  来说,LSE就变成可计算的:

在实际应用中,往往会取  ,这样可以保证取指数时的最大值为0。起码不会因为 上溢 而报错,即使其余的 下溢 ,也可以得到一个合理的值。

3. 性质

LSE 函数是 凸函数,且在域内严格单调递增,但是其并非处处严格凸(摘自维基百科[1])。严格凸的LSE应该是:

首先,如果我们使用线性近似[2] 的方法即  ,那么对于  来说,令  ,可得:

因此有:

那么有:

在维基百科中,该式直接  了。但是由于不清楚这样写的原因,因此在此无法详细描述。

由于 ,且对于正数来说  ,因此有:

因此可以说  。换句话说,它实际上是针对 max函数 的一种平滑操作。从字面上理解来说,LSE 函数才是真正意义上的 softmax 函数;而我们在神经网络里所说的 softmax 函数其实是近似于 argmax 函数的,也就是我们平时所用的 softmax 应该叫做 softargmax

参考资料

[1]

维基百科: https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/LogSumExp

[2]

线性近似: https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Linear_approximation

来源:https://zhuanlan.zhihu.com/p/153535799 作者:Hurry Z


📝论文解读投稿,让你的文章被更多不同背景、不同方向的人看到,不被石沉大海,或许还能增加不少引用的呦~ 投稿加下面微信备注“投稿”即可。

最近文章

EMNLP 2022 和 COLING 2022,投哪个会议比较好?

一种全新易用的基于Word-Word关系的NER统一模型

阿里+北大 | 在梯度上做简单mask竟有如此的神奇效果

ACL'22 | 快手+中科院提出一种数据增强方法:Text Smoothing


代码语言:javascript
复制
下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!  后台回复【五件套】
下载二:南大模式识别PPT  后台回复【南大模式识别】

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

代码语言:javascript
复制
整理不易,还望给个在看!
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 1. 由来
  • 2. 特点
  • 2. 近似
  • 3. 性质
    • 参考资料
    相关产品与服务
    NLP 服务
    NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档