图示Softmax及交叉熵损失函数

图示Softmax及交叉熵损失函数Softmax 函数 Softmax 是将神经网络得到的多个值 进行归一化处理 使得到的值在之间 让结果变得可解释 即可以将结果看作是概率 某个类别概率越大 将样本归为该类别的可能性也就越高 Softmax 就如下图 借鉴李宏毅老师的课件 SoftMax 为了更加清晰的看清整个过程 我将其制作成 gif 如下图所示 Softmax 的工作过程交叉熵 假设和是关于样本集的两个分布 其

Softmax函数

Softmax是将神经网络得到的多个值,进行归一化处理,使得到的值在[0,1]之间,让结果变得可解释。即可以将结果看作是概率,某个类别概率越大,将样本归为该类别的可能性也就越高。Softmax就如下图(借鉴李宏毅老师的课件)

图示Softmax及交叉熵损失函数
SoftMax

为了更加清晰的看清整个过程,我将其制作成gif,如下图所示:

图示Softmax及交叉熵损失函数
Softmax的工作过程

交叉熵:

假设pq是关于样本集的两个分布,其中p是样本集的真实分布,q是样本集的估计分布,那么按照真是分布p来衡量识别一个样本所需要编码长度的期望(即,平均编码长度):

H(p)=\sum_{i}^{n} p_{i}log\frac{1}{p_{i}}=\sum_{i}^{n}- p_{i}logp_{i}

如果用估计分布q来表示真实分布p的平均编码长度,应为:

H(p,q)=\sum_{i=1}^{n}p_{i}log\frac{1}{q_{i}}=\sum_{i=1}^{n}-p_{i}logq_{i}

这是因为用q来编码的样本来自于真是分布p,所以期望值H(p,q)中的概率是p_{i}。而H(p,q)就是交叉熵。

注:不了解什么是编码的请看这里:如何理解用信息熵来表示最短的平均编码长度。

在神经网络后面添加Softmax,真实的标签(或者是类别)就相当于真实的分布,经过Softmax得出的值就是预测的结果,因此可以使用交叉熵函数来作为损失函数。有了交叉熵的概念,我们就可以得出,Softmax的损失函数:

                                                                                   L=\sum- \hat{y}_{i}lny_{i}

其中y_{i}是神经元的输出也可以作为预测结果,\hat{y}_{i}是第i个类别的真实值,\hat{y}_{i}只能取值0\: \: or\: \: 1。在Softmax中我们取以e为底的对数,因为都是e的指数形式,可以方便计算。在反向传播的过程中,如何对交叉熵损失函数求导呢?可以先看下图的示例,显示了如何得到损失函数:

图示Softmax及交叉熵损失函数

图示Softmax及交叉熵损失函数

由上图可以看到,损失函数具体形式是什么。为了计算反向传播,我们从最后一层开始,也就是首先要对Softmax的输入z_{i}求导,得:

                                                             \frac{\partial L}{\partial z_{i}}=\frac{\partial L}{\partial y_{j}}\frac{\partial y_{j}}{\partial z_{i}},其中\left\{\begin{matrix} \begin{matrix} y_{j}=\frac{e^{z_{j}}}{\sum_{k}e^{z_{k}}}\\ \\ \, \, \, \, \, \, \, \, \, L=-\sum_{j}\hat{y_{j}}lny_{j}\\ \end{matrix} \end{matrix}\right.

由于每个y_{j}的分母中都有z_{i}的贡献,故我们要考虑每一个输出值。则:

                                                            \frac{\partial L}{\partial y_{j}}=\frac{\partial[ -\sum_{j}\hat{y_{j}}logy_{j}]}{\partial y_{j}}=-\sum_{j}\frac{\hat{y_{j}}}{y_{j}}

对于\frac{\partial y_{j}}{\partial z_{i}},需要分开讨论因为j=ij\neq i时的求导结果不同,故需分开讨论。则

                                    \frac{\partial L}{\partial z_{i}}=\sum_{j}\frac{\partial (-\hat{y}_{j}lny_{j})}{\partial z_{i}} =\sum_{j}\frac{\partial (-\hat{y}_{j}lny_{j})}{\partial y_{j}} \frac{\partial (y_{j})}{\partial z_{i}}=\left\{\begin{matrix} \frac{\partial (-\hat{y}_{i}lny_{i})}{\partial y_{i}} \frac{ \partial (\frac{e^{z_{i}}}{\sum_{k}e^{z_{k}}})}{\partial z_{i}}&j=i \\ & \\ \sum_{j\neq i}\frac{\partial (-\hat{y}_{j}lny_{j})}{\partial y_{j}} \frac{ \partial (\frac{e^{z_{j}}}{\sum_{k}e^{z_{k}}})}{\partial z_{i}}&j\neq i \end{matrix}\right.

  • j=i时,有:

                                                        \large {\color{Magenta} \begin{matrix} {\color{Golden} \frac{\partial y_{j}}{\partial z_{i}}}=\frac{\partial y_{i}}{\partial z_{i}}=\frac{\partial [\frac{e^{z_{i}} }{\sum_{k}e^{z_{k}}}]}{\partial z_{i}}=\frac{e^{z_{i}}\sum_{k}e^{z_{k}}-(e^{z_{i}})^{2} }{ (\sum_{k}e^{z_{k}})^{2} }\\ \\ \: \: \: \: =\frac{e^{z_{i}} }{\sum_{k}e^{z_{k}} }(1-\frac{e^{z_{i}} }{\sum_{k}e^{z_{k}} })=y_{i}(1-y_{i}) \end{matrix}}

  • j\neq i

                                                       {\color{Magenta} {\color{Golden} \frac{\partial y_{j}}{\partial z_{i}}}=\frac{\partial [\frac{e^{z_{j}} }{\sum_{k}e^{z_{k}}}]}{\partial z_{i}}=\frac{0-e^{z_{j}}e^{z_{i}} }{ (\sum_{k}e^{z_{k}})^{2} }=-y_{i}y_{j}}

故,

                                                                       \large \begin{matrix} \, \, \, \, \, \, \, \, \, \, \, \, \, \, \,\, {\color{Red} \frac{\partial L}{\partial z_{i}}}=-\sum_{j}\frac{\hat{y_{j}}}{y_{j}}\frac{\partial y_{j}}{\partial z_{i}}\\ \\ \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: =-\frac{\hat{y_{i}}}{y_{i}}y_{i}(1-y_{i})+\sum_{j\neq i}\frac{\hat{y_{j}}}{y_{j}}y_{i}y_{j}\\ \\ \: \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \; \: \: \: \: \: \: \: \: \: \: \: =y_{i}\hat{y}_{i}-\hat{y}_{i}+\sum_{j\neq i}y_{i}\hat{y}_{j}\\ \\ \: \: \: \: \: \: \: \: \:\: \: \: \: \: \: \: \: \: \: \: \: =-\hat{y}_{i}+\sum_{j}y_{i}\hat{y}_{j}\\ \\ \; \; \; \; \; \; \;\: \: \: \: \: \: \: \: \: \: \: \: \: =-\hat{y}_{i}+y_{i}\sum_{j}\hat{y}_{j}\\ \\ \: \: \: \: \: \: ={\color{Magenta} y_{i}-\hat{y_{i}}} \end{matrix}

注:因为如果给定一个样本\large x那么他对应的真实标签只有一个值为\large 1,其余为0,故,

                                                                               \sum_{j}\hat{y}_{j}=1

Sotfmax的交叉熵损失函数,还有另外的形式:

  •                                                                  L_{i} = - \sum_{j=1}^{k} 1\left\{y_{(i)} = j\right\} \log \frac{e^{z_{j}}}{\sum_{l=1}^k e^{z_{k} }}=-\hat{y}_{i}lny_{i}
  •                                                                 \begin{matrix} L = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y_{(i)} = j\right\} \log \frac{e^{z_{j}}}{\sum_{l=1}^k e^{z_{k} }}\right]\\ \\ \; \; \; \; \; \; \; \; \; \; \; \; =- \frac{1}{m} \left[ \sum_{i=1}^{m} \hat{y}_{i} \log \frac{e^{z_{i}}}{\sum_{l=1}^k e^{z_{k} }}\right] {\color{Magenta} =- \frac{1}{m} \left[ \sum_{i=1}^{m} \hat{y}_{i} \log y_{i}\right]} \end{matrix}

其本质是一样的,因为1\left\{y_{(i)} = j\right\}是示性函数,只有当大括号内的值为真时才取值为1,否则为0,即1\left\{y_{(i)} = j\right\}\Leftrightarrow \hat{y_{i}}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219527.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:21
下一篇 2026年3月17日 下午10:22


相关推荐

  • VC++常用功能开发「建议收藏」

    VC++常用功能开发「建议收藏」系列文章目录第一章:VC++ini配置文件封装类源代码第二章:VC++实现二维码(显示+保存图片)功能源代码第三章:VC++调节系统音量(与任务栏音量同步)源代码提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启..

    2022年5月2日
    31
  • 怎么从安卓设备转移数据到苹果_如何将数据从安卓手机转移到苹果手机[通俗易懂]

    怎么从安卓设备转移数据到苹果_如何将数据从安卓手机转移到苹果手机[通俗易懂]手机人手一部,更新也特别快,换系统的同时也想保留之前的数据怎么办?如何将数据从安卓手机转移到苹果手机?android手机数据转移到iPhone手机的方法教程在这里为你准备,第一次使用苹果的用户怎样才能将原有android数据迁移到苹果呢?来看如下具体内容!我们都知道在大屏iPhone6和iPhone6Plus智能手机即将上市的前夕,苹果公司发布了一份详细的支持文件,指导Android用户如何…

    2026年1月19日
    4
  • ssd1315驱动oled屏_oled屏幕的手机有哪些

    ssd1315驱动oled屏_oled屏幕的手机有哪些淘宝隔壁老王家的OLED运动手环,非常的便宜2RMB一个。###Part0:可用器件列表0x00:OLDE屏幕:0.91inch,分辨率:12832,主控:SSD1306,接口:SPI,颜色:

    2022年8月4日
    6
  • 微商分销商城购物系统的优势

    微商分销商城购物系统的优势不论买方还是卖方都可以实时查看数据,这些线上的发展模式。微信分销商城是微信公众平台推出的商品营销模式,都是基于微信的一个总店,快速精准的管控微信的各级分店,可控制性强不管是什么类型的营销,传播力度广卖家能够在许多平台上进行推广自己的产品,专为微信而打造微信分销商的功能从前台的服务系统到后台的运营系统,都可以根据自己的需求进行实时查对核实分析,打开微信公众号开通微信分销商城即可,抖音等,若需系统的更好发展。这种多渠道分销可以帮助微商者快速发展下线,数据上有清晰的记录,从招募、运营、分销管理.

    2022年5月17日
    36
  • R实现KMeans聚类算法教程

    R实现KMeans聚类算法教程本文和你一起学习无监督机器学习算法 kmeans 算法 并在 R 中给详细的实现示例和步骤 什么是 k means 聚类算法聚类是从数据集中对观测值进行聚类的机器学习方法 它的目标是聚类相似观测值 不同类别之间差异较大 聚类是一种无监督学习方法 因为它仅尝试从数据集中发现结构 而不是预测应变量的值 下面是一个市场营销中对客户分类的场景 通过下面客户信息 家庭收入住房面积户主职业据城区距离我们利用这些信息进行聚类 可识别相似家庭 从而能够识别某类型家庭可能购买某种产品或对某种类型的广告

    2026年3月17日
    2
  • Midjourney 应用场景3:App & 徽章 Logo

    Midjourney 应用场景3:App & 徽章 Logo

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号