交叉熵(cross-entropy)损失函数求导过程推导

交叉熵(cross-entropy)损失函数求导过程推导

  • 1. 什么是交叉熵?
    • 1.1 熵
    • 1.2 KL散度
    • 1.3 交叉熵
  • 2. 关于softmax函数
  • 3. 推导过程
    • 3.1 关于softmax的求导
    • 3.2 关于cross-entropy的求导

  今天,师兄突然问我关于交叉熵求导的问题,分分钟被难住了,感慨自己读研一年多了,连这种基本问题都不懂。在师兄的帮助下,从头到尾推导了一遍, 决定写篇博客记录一下自己的收获。

1. 什么是交叉熵?

1.1 熵

  首先,我们要知道什么是熵(entropy), 熵的物理意义是对体系混乱程度的一种度量方式。后来,香农将熵的概念引入到信息论中,提出了所谓的“信息熵”概念,从概率论的角度来看,就是说某个事件发生的不确定性越大,信息熵就越大。下文中提到的熵都是指“信息熵”。信息熵的公式如下:
交叉熵(cross-entropy)损失函数求导过程推导_第1张图片
  公式中的 p ( x i ) p(x_i) p(xi)表示的是事件P发生第i类的概率。

1.2 KL散度

  在说交叉熵之前,还要提一下KL散度(Kullback-Leibler divergence),大家平时说的KL散度(其实也是一种熵,我们称之为相对熵。KL散度可以用来度量两个分布的相似度,比如在机器学习中,我们就可以用KL散度来衡量样本真实分布与预测分布之间的差异。KL散度的公式如下:
交叉熵(cross-entropy)损失函数求导过程推导_第2张图片

1.3 交叉熵

  我们对KL散度进行如下变换:
交叉熵(cross-entropy)损失函数求导过程推导_第3张图片
  因为我们知道在机器学习问题中,样本的真实分布是已知的,所以真实分布的熵 H H H是固定不变的, D K L D_{KL} DKL的大小只与后面的部分有关。于是,我们把后面的那一部分称为交叉熵,在优化过程中,只要优化这一部分就行了。交叉熵的公式如下:
交叉熵(cross-entropy)损失函数求导过程推导_第4张图片

2. 关于softmax函数

  在深度学习中,softmax函数是分类任务中常用的激活函数。softmax的公式如下:
在这里插入图片描述
  其中, y j y_j yj表示第j个神经元的输出。有兴趣的同学,推荐看一下link,里面有一副图十分形象。

3. 推导过程

  在开始正式的推导之前,我再讲一下容易被大家遗忘的基础知识。
  商函数的求导法则:交叉熵(cross-entropy)损失函数求导过程推导_第5张图片
  好了,介绍完所有相关的基础知识,我们接下来就可以开始正式推导的工作了。

3.1 关于softmax的求导

  首先,我们对softmax进行求导:
交叉熵(cross-entropy)损失函数求导过程推导_第6张图片

3.2 关于cross-entropy的求导

  为了保证符号上的统一,我们在这定义神经网络优化过程中的交叉熵形式为
在这里插入图片描述
  其中 y i y_i yi表示预测得到的的样本分布, y i ′ y^{'}_i yi表示真实的样本分布。
交叉熵(cross-entropy)损失函数求导过程推导_第7张图片
  在这里我们令 Y = ( y 1 , y 2 , . . . , y n ) Y=(y_1,y_2,...,y_n) Y=(y1,y2,...,yn),根据链式法则可做以下推导:
交叉熵(cross-entropy)损失函数求导过程推导_第8张图片
  然后,我们将对softmax的求导结果代入到上式中,可得
交叉熵(cross-entropy)损失函数求导过程推导_第9张图片
  对交叉熵CE对 y i y_i yi求导可得
在这里插入图片描述
  带入到 ( 1 ) (1) (1)式中,得到
交叉熵(cross-entropy)损失函数求导过程推导_第10张图片
  ok,到这里我们的工作就算是正式收工了。其实在写的时候,很多东西我自己也不是特别明白,但是一边写一边想,就感觉自己的思路越来越清晰了。推导过程中还是有很多的细节我没有一一提到,相信大家动手推导一遍就能都能明白。欢迎大家留言交流。HHHH~
在这里插入图片描述

你可能感兴趣的:(深度学习基础)