首页
学习
活动
专区
工具
TVP
发布

Softmax

作者头像
mathor
发布2019-12-31 11:46:22
5200
发布2019-12-31 11:46:22
举报
文章被收录于专栏:mathormathor
Softmax函数概述
  • soft version of max
  • 大的越来越大,小的越来越小

Softmax常与crossentropy(交叉熵)搭配连用

上图中假设有三个输出,分别是2.0,1.0和0.1,如果将数值转换成概率的话,我们希望概率最大的值作为预测的label。即我们希望将最大值2.0所对应的索引作为相应的label输出,那么如何作为probilities输出呢?

sigmoid函数可以将input压缩到[0,1]的范围,但是对于分类问题来说,我们不仅要求概率范围是[0,1],还要求所有的概率和为1,即$\sum p_i = 1$

为了解决此类问题,就有了Softmax函数,具体的函数表达式为

$$ S(y_i) = \frac{e^{y_i}}{\sum_j e^{y_j}} $$

另外有一点要注意,Softmax具有差距放大功能,例如原来2.0和1.0是两倍关系,经过Softmax压缩后,变为0.7和0.2,增大到3.5倍关系

Softmax求导

对Softmax函数进行求导,首先写出其函数表达式

$$ p_i = \frac{e^{a_i}}{\sum_{k=1}^Ne^{a_k}} $$

根据除法求导法则,若$f(x)=\frac{g(x)}{h(x)}$,则$f'(x) = \frac{g'(x)h(x)-h'(x)g(x)}{h^2(x)}$

当$i=j$时

$$ \begin{align*} \frac{\nabla\frac{e^{a_i}}{\sum_{k=1}^Ne^{a_k}}}{\nabla{a_j}} &= \frac{e^{a_i}\sum_{k=1}^{N} a_k - e^{a_j}e^{a_i}}{(\sum_{k=1}^N e^{a_k})^2} \\ &= \frac{e^{a_i}(\sum_{k=1}^{N} a_k - e^{a_j})}{(\sum_{k=1}^N e^{a_k})^2} \\ &= \frac{e^{a_j}}{\sum_{k=1}^N e^{a_k}}*\frac{(\sum_{k=1}^N e^{a_k}-e^{a_j})}{\sum_{k=1}^N e^{a_k}} \\ &= p_i(1-p_j) \end{align*} $$

当$i\neq j$时

$$ \begin{align*} \frac{\nabla\frac{e^{a_i}}{\sum_{k=1}^Ne^{a_k}}}{\nabla{a_j}} &= \frac{0 - e^{a_j}e^{a_i}}{(\sum_{k=1}^N e^{a_k})^2} \\ &= \frac{-e^{a_j}}{\sum_{k=1}^N e^{a_k}}*\frac{e^{a_i}}{\sum_{k=1}^N e^{a_k}} \\ &= -p_j * p_i \end{align*} $$

对以上求导过程进行总结

$$ \frac{\nabla p_i}{\nabla{a_j}}=\begin{cases}p_i(1-p_j) & i = j \cr -p_j*p_i &i \neq j\end{cases} $$

需要注意的一点是,由于$p_j$和$p_j$均在$[0,1]$范围内,故$p_i(1-p_j)>0$,$-p_i*p_j<0$

下面使用代码举例

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Softmax函数概述
  • Softmax求导
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档