机器学习优化中的交叉熵及改进形式
【摘要】目前分类问题广泛的应用到我们的实际生活中[1],因而我们应该研究如何分类,研究它的算法。交叉熵通常在机器学习的分类问题中用作损失函数来判断分类模型的优劣,即把交叉熵当做损失函数。在实际的使用过程中,有时会不加区分交叉熵和相对熵,或者说用交叉熵代替相对熵。本文将从三个方面对机器学习优化中的交叉熵进行综述,分别是交叉熵的定义和理论推导,交叉熵的适用性分析,利用交叉熵办法的各种改良方式。
关键词:交叉熵、机器学习、改进的交叉熵
Cross-entropy and improved forms in machine learning optimization
Abstract: At present, classification problems are widely used in our actual life [1], so it is of great significance to study classification algorithm. Cross entropy is usually used as a loss function in machine learning classification problems to judge the merits of the classification model, that is, cross entropy is used as a loss function. In actual use, sometimes the entropy and relative entropy are not distinguished, or the relative entropy is replaced by the cross entropy. This article will review the cross-entropy in machine learning optimization from three aspects, including the definition and theoretical derivation of cross-entropy, the applicability analysis of cross-entropy, and various improved forms using cross-entropy methods.
Keywords: cross entropy, machine learning, improved cross entropy
一、交叉熵的定义和理论推导
1.信息量
在信息论课程上,已经学习过了某个概率为p的事件发生时所带来的信息量为[2]
2.信息熵
有了信息量的概念之后,又引入了熵。熵的概念在信息论的课程中也有讲到过,它是与随机变量有关的,熵的定义如下[2]:
发生的概率我们可以用来表示,因为概率是介于0到1之间的,所以信息熵H(x)≥0。
3.相对熵
相对熵的概念,也有人称它为KL散度,又有人称其为信息散度,是一种非对称性度量,它度量的是两个概率分布之间的不同[3]。假设有两个概率分布,分别是P(x)(一般认为它是随机变量X的真实分布),Q(x)(一般认为它是随机变量X的预测模型)。那么,我们可以把这二者之间的相对熵定义为如下形式[4]:
根据对数函数的性质,可以将相对熵做如下等价变换:
根据前面对于信息熵的定义,可以进一步改写相对熵的形式:
4.交叉熵
交叉熵(CE)与相对熵(RE)有着一定的关系,因此先引出相对熵的概念,再给出交叉熵的定义。对于同一离散事件X,Q(x)是根据模型预测出来的分布,P(x)是它的实实在在的分布,那么P和Q的交叉熵定义为[5]:
请注意,此处的交叉熵的表示方法H(p,q)与联合熵的表示方法相同,大家应该能够根据上下文区分交叉熵和联合熵。
从交叉熵的定义中,可以很容易看出它与相对熵的关系:
前面已经说过,P(x)是随机变量X的真实分布,那么就应该是一个固定的值,因此在实际应用中,经常用相对熵代替交叉熵。
二、交叉熵的适用性分析
1.交叉熵的计算
设现在我们有一个离散型的随机变量X,它只能取0,1,2这三个值,它的P(x)和Q(x)如表一所示。
表一
按照前面给出的计算公式,交叉熵为:
相对熵:
进一步计算分布概率P(x)的信息熵:
通过计算结果,能够验证如下公式:
2.交叉熵作为损失函数
优化分类模型时,交叉熵被广泛用于损失函数[6]。根据输出变量数目的不同,可以将分类问题进一步细分。
下面先看一下每张样本图片只有一个类别的情况,如图1所示
图1 单分类类别
与它相关的标签值和预测值如表二所示。
表二
那么交叉熵:
此处的交叉熵用作损失函数,也就是说当前的预测模型对于这张图片的这次预测结果的损失为0.32。如果这个模型进行了m次预测,那么此时的交叉熵为:
上面的例子是只有一个类别的情况,下面再来看一下有多个类别的情况,如图2所示。
图2多分类类别
图2对应的标签和预测值如表三所示
表三
从表三中可以看出,标签值的和不为1,预测值的和也不为1。此时每个标签值和每个预测值都是独立分布的,猫、老鼠、狗这三者之间不再相互影响,对于标签值,若取1,则说明图中有相应的动物,若取0,则说明图中没有相应的动物。对于预测值,它的大小表示相应动物在图中出现的概率。
此时交叉熵的求法与上一个例子有所不同,它应该是把每一种情况看成一个二项分布,分别求每一种情况的交叉熵再求和,此时的交叉熵如下式:
3.更加深入的理解交叉熵
前面已经说过,交叉熵可以用作及其学习中的损失函数,它可以表示你所构建的预测模型的优良性。当两个概率分布一模一样时,它们的CE就是信息熵,此时我们称概率分布之间的“距离”是零,请注意,此处的距离的概念并不完备。如果两个概率分布不相同时,它们的交叉熵要大于随机变量真实分布的信息熵,而多出来的这部分恰好是真实分布于预测分布的相对熵。当用信息论的观点来看待交叉熵时,相对熵是编码时所多出来的bit的数目,因为随机变量X的真实分布和预测模型所训练出来的分布不一致,所以会有一定的信息损失,那么这时候在编码过程中就需要更多的比特来传送相同数量的信息。
三、使用交叉熵方法的各种改进形式
1.随机优化的改进交叉熵方法[7]
通常来说,在绝大部分优化问题中,随机算法由于它的随机性,所以传统的交叉熵方法的收敛速度要快得多。在传统的交叉熵方法中,它的更新策略中有一个叫精英样本的概念,精英样本总共有ρN个,其中ρ叫做稀薄参数。由于精英样本的存在,使得当样本不是很理想的情况下,交叉熵方法也能得到较好的效果。但任何事情都有两面性,精英样本可以提高交叉熵对样本的适应性,但是选取出来的精英样本的数目毕竟是有限的,不可能把所有的样本都放在精英样本中,这就使得有一部分样本不会参与到计算当中,因此使得在某些情况下,计算精度会较低。
文献[7]为了解决CE计算中精英样本的问题,提出了“全局精英样本”和“当前精英样本”的概念。现在的参数更新策略如下面的公式所示:
上面公式提出的意义在于:每次迭代更新时,不仅仅考虑当前的情况,而是要看一下历史数据,因为历史信息有时也会包含有用的信息。
伴随着两个概念的提出,即“全局精英样本”,以及“当前精英样本”,虽然会使交叉熵计算的迭代速率降低,但是却能够提高计算的精度,因此在某些应用场景下(比如对算力较强或对迭代速率要求不高,但对计算精度要求较高)使用改进之后的交叉熵会得到更好的效果。
2.自适应平滑参数[7]
按照之前的做法,平滑参数通常只有一个。虽然在大多数情况下这种方法可以取得较高的性价比,但是在某些极端的条件下,它计算出来的结果可能并不理想[8],基于此种原因,有论文指出需要提出一种新的自适应平滑参数[7]。
我们仔细研究式18,应当会发现一些有用的规矩。α3是作用在之前的,这也就是说α3的大小影响的其实是对历史信息的选择。当α3越大,也就是说上一次迭代结果的置信度越大,这时会拓广全局搜索的范围。当α3越小时,说明上一次迭代结果的置信度越小,这时会更倾向于相信“精英样本”,那么收敛的速度就会变快。因而我们必须设法解决这二者之间的矛盾,在搜索范围和收敛速度之间做出选择。文献中给出的平滑参数自适应调整公式:
是预先设定的总的迭代次数,K是当前迭代的次数,和分别是α3的最小值和最大值。
按照上面的公式,文献[7]中的实验表明,通过优化了的交叉熵得到的最优解在精确性和稳定性等方面与传统交叉熵相比,都得到了显著的提升。
3.变异操作[7]
变异操作的核心思想是增加扰动。每一次迭代过程都会得到一组参数,假设每次迭代的计算结果都是准确无误的,那么迭代过程可能只局限于某一区域,从而使得局部最优,显然这并不是我们所期望的。可以通过增加样本的随机性来处理局部最优问题,比如每次都将样本加上一个大小合适的值,并称这个值为扰动。只要扰动值选取的合适,这种方法就能保证计算的准确性,并且尽可能的预防算法陷入局部最优的处境。对于如何选取扰动,文献中给出了一种扰动函数:
上式中,表示的是没有施加扰动时,第K+1次迭代中样本的方差。表示的是施加扰动后,样本的方差。表示扰动函数,它的选取比较灵活。可以选一个关于迭代次数k的函数,如果想要提高计算的效率,也可以选一个常数,这样就不需要每次迭代时都去计算扰动函数的值。
4.多目标交叉熵优化算法[9]
交叉熵优化算法产生于对小概率时间的估计,我们在求解最优化问题时,也会用到,其实交叉熵目前主要用于求解最优化问题。传统的交叉熵优化算法的步骤主要是初始化、采样、选择、更新参数、平滑处理、结果判断。论文[9]提出了一种多目标交叉熵的优化算法,对于有多个输出的最小化问题,作者通过实验论证了多目标交叉熵优化算法具有较好的精度和鲁棒性。
假设有n个变量,现在需要寻找m(m≤n)个最优解,也就是说n为决策变量的维数,m为目标函数的个数。进行初始化时可以随机选取一个均值向量和一个方差向量,得到初始种群。之后进入算法的主循环,通过现有的方法进行快速非支配排序,排序完成之后,适用度值用非支配序代替。提取最优个体的分布特征,然后更新正态分布模型的均值和方差。本算法中定义了一个新的概念——方向向量,期望能用它来提高收敛的速度,根据每一个采样个体的收敛过程信息,得出综合的收敛速度,之后使算法朝着高速的方向前进。更新均值向量和方差向量之后,根据新的正态分布模型,结合方向向量,通过采样产生下一代种群。当不断的产生下一代种群之后,个体的数目就会增多,此时需要进行个体数目的选择,选择依据是个体的费支配序。当程序达到设定的最大E时,算法终止。
四、总结
1.调研总结
通过调研发现,交叉熵有着非常广的应用领域,通过对交叉熵的形式加以改进,交叉熵可以应用到风电功率组合预测[10],社区发现算法[11],火焰图像阈值选取[12]等领域,它们的核心思想都是基于预测模型展开的。交叉熵作为机器学习中的一个重要概念和方法,对它的研究有着重要的意义。通过调研发现,有些论文中会将相对熵定义为交叉熵[13],这种定义方法虽然不严谨,但是在实际应用中却没什么问题,因为相对熵和交叉熵只是差了一个常数,这个常数就是随机事件真实概率分布的信息熵。
目前已经有大量的科研工作者提出了交叉熵的改进和优化形式,在本论文中也已经进行了综述。限于篇幅,仍有一部分改进形式未在本论文中列出,每种改进形式都是为了解决一个特定的问题,并且通过实验证明,这种改进是有效的。但无论交叉熵的形式如何改,它的本质都是不变的,即交叉熵是用来衡量某个随机事件的真实分布和预测分布之间的差距的一种方法或手段。通常来说,预测模型所得出的分布于真实分布之间会有一定的差距,差距的大小可以用相对熵(交叉熵)来衡量。
2.认识到的章节内容
交叉熵是比KL散度更进一步的概念,而KL散度是比信息熵更进一步的概念,信息熵是比信息量更进一步的概念。在信息论课程中,学到了信息量和信息熵的定义,但在写这篇论文时,发现从课本中学到的还是太浅,只是浮于表面,因此我又从网上搜索了大量的资料,读了多篇关于信息论中熵的概念(信息论中的熵和热力学中熵不同),自己对熵的理解也有了质的飞越。
从信息论课程中来看[2],只有第二章离散信源及其信息测度是在讲熵的概念和在信息论中的含义,但是信息熵却贯穿了整门课程,无论是信源编码还是信道编码,都是以熵为基础的。在信源编码中,我们要进行压缩,即用尽可能少的比特传送信源固定数量的熵;在信道编码中,为了提高传输的可靠性,要使用冗余的方法,即增加传输的信息量。
课程中的内容只是让我们入门的,但这并不能说明它不重要。当对信息量和熵有了一定的理解后,再去看相对熵和交叉熵的定义就会变得简单许多。
参考文献
[1] 杨剑锋,乔佩蕊,李永梅,王宁.机器学习分类问题及算法研究综述[J].统计与决策,2019(6):36-40.
[2]傅祖芸.信息论基础理论与应用[M].北京:电子工业出版社,2012.
[3] Kullback, S. and Leibler, R.A., 1951. On information and sufficiency. The annals of mathematical statistics, 22(1), pp.79-86.
[4] Goodfellow, I., Bengio, Y., Courville, A..Deep learning (Vol. 1).Cambridge:MIT Press,2016:71-73.
[5] Kullback S.Information Theory and Statistics.New York, USA:Wiley, 1959
[6]任进军,王宁.人工神经网络中损失函数的研究[J].甘肃高师学报,2018,23(02),61-63.
[7]任超,张航,李洪双.随机优化的改进交叉熵方法[J].北京航空航天大学学报,2018,44(01),205-214.
[8]HUI K P, BEAN N, KRAETZL M, et al.The tree cut and merge algorithm for estimation of network reliability[J]. Probability in the Engineering&Informational Sciences, 2002, 17 (1) :23-45.
[9]赵舵,唐启超,余志斌. 一种采用改进交叉熵的多目标优化问题求解方法[J].西安交通大学学报,2019,53(03),66-74
[10] 陈宁,沙倩,汤奕,朱凌志. 基于交叉熵理论的风电功率组合预测方法[J].中国电机工程学报,2012(04),29-34+22.
[11] 于海,赵玉丽,崔坤,朱志良. 一种基于交叉熵的社区发现算法[J].计算机学报,2015(08),1574-1581.
[12] 吴一全,孟天亮,王凯. 基于斜分倒数交叉熵和蜂群优化的火焰图像阈值选取[J].光学精密工程,2014(01),235-243.
[13]黄常峰. 交叉熵方法理论上的缺陷及其改进研究——基于社会核算矩阵平衡和更新的分析[J]. 数量经济技术经济研究,2013(03),151-161.