机器学习数学原理专题——线性分类模型:损失函数推导新视角——交叉熵

目录

二、从回归到线性分类模型:分类

3.分类模型损失函数推导——极大似然估计法

        (1)二分类损失函数——极大似然估计

        (2)多分类损失函数——极大似然估计

4.模型损失函数推导新视角——交叉熵

        (1)信息量和系统熵

        (2)相对熵(KL散度)与交叉熵

        (3)回归损失函数——交叉熵视角

        (4)二分类损失函数——交叉熵视角

        (5)多分类损失函数——交叉熵视角

二、从回归到线性分类模型:分类

        在上一篇文章中,我们推导了从回归模型到分类模型的“中介”——链接函数,下面在此基础上,同回归模型逻辑一样,进一步推导分类模型的损失函数。

3.分类模型损失函数推导——极大似然估计法

        在回归损失函数的推导中,我们引入了极大似然估计的方法,从概率论的角度得到和最小二乘法一样的结论,这样的推导为损失函数的设置提供了更严谨的数学理论支持。极大似然估计法同样可以推广到分类模型,下面先对之前回归中的估计流程进行一个概括(下述以回归为例)。

极大似然估计推导损函流程(以回归为例):

                1.模型假设分布  : 高斯分布

                2.误差项的分布  : 均值为 0 的正态分布

                3.y 的似然概率   : 正态分布概率密度函数

                4.写出似然函数  : 所有样本 y 似然连乘

                5.极大似然估计公式推导  : 取对数取负

        根据上述流程,首先推导二分类问题的损失函数形式。

        (1)二分类损失函数——极大似然估计

①二分类的误差分布与假设分布

        分类问题与回归问题最显著的一个差异是模型输出的样式。不同于回归的实数输出,二分类问题的标签 y 和模型预测 \hat{y} 的输出要么是 0,要么是 1 。因此可以直接枚举出实际标签和模型预测只可能有四种确定的情况,如下表所示。

\begin{pmatrix} y,&\hat{y} \end{pmatrix}\begin{pmatrix} 1 &1 \end{pmatrix}\begin{pmatrix} 0 &0 \end{pmatrix}\begin{pmatrix} 1 &0 \end{pmatrix}\begin{pmatrix} 0 &1 \end{pmatrix}
误差  \epsilon0011
样本数量t_1t_2f_1f_2

         样本数总和为 Nt_1+t_2+f_1+f_2=N可以看到误差项取值只有两种可能:对应要么模型预测正确,误差为零;要么模型预测错误,误差为一。通过上述表格,可以看出误差项服从伯努利分布,并且可以根据表格中统计的出现频率近似估计这一分布的参数:p ——正类样本发生概率。即可以得到误差项分布,也对应于二分类问题的假设分布。

                                              \epsilon \sim B(p)

②标签 y 的似然概率

        在回归中,我们通过正态分布的线性组合性质推出 y 的具体分布。这实际是用模型输出来估计真实标签高斯分布的均值参数 \mu。其中的数学原理在回归推导损失函数章节详细解释。

                        \left\{\begin{matrix} \epsilon \sim N(0,\sigma ^2) \\ y=\hat{y}+\epsilon \end{matrix}\right.\,\,\,\,\rightarrow \,\,\,\,\,\,y\sim N(\hat{y},\sigma ^2)

                   \Leftrightarrow y\sim N(\mu ,\sigma ^2)              ,其中  \mu\rightarrow \hat{y}

        二分类同理,模型的输出 \hat{y} 估计的是伯努利分布中的参数 p 。因此可以直接写出 y 的在模型输出 \hat{y} 作为参数下的分布具体形式。

                                \epsilon \sim B(p)\,\,\,\,\,\rightarrow\,\,\,\,\, y\sim B(\hat{y})

        根据伯努利分布的密度函数,可以计算写出 y 取不同值的具体概率。对于二分类问题,真实标签 y 和模型输出 \hat{y} 都只有两种取值情况。因此可以将两种分类情况写成一个式子概括。

                                \left\{\begin{matrix} P(y=1\mid \hat{y}) =\hat{y}\\\,\,\,\,\,\,\,\,\,\,P(y=0\mid \hat{y}) =1-\hat{y} \end{matrix}\right.

                        \rightarrow P(y\mid \hat{y})=(\hat{y})^{y}\cdot (1-\hat{y})^{1-y}

③似然函数与极大似然估计

        上述有了单个样本的分类似然概率值函数,那么对应于二分类问题的似然函数,就是将所有样本的似然值乘积起来得到,遇到出现当前所有样本取值情况的总的发生概率值。而极大似然估计朴素的想法就是,既然出现了当前的采样结果,就证明当前这个情况在“所有情况”中发生的概率应该最大,因此我们通过最大化之前乘积的概率,可以得到相关参数的估计值。

        样本中正类样本的概率为 P ,得到所有样本发生概率如下。

                                L(P) =\prod_{i=1}^{N}\,\,P^{y_i}\,\,\cdot\,\,(1-P) ^{y_i}

        在似然估计中,我们用模型的输出 \hat{y} 来近似估计正类样本概率 P

                                 L(\hat{y}) =\prod_{i=1}^{N}\,\,\hat{y}^{y_i}\,\cdot\,(1-\hat{y}) ^{y_i}

                max\,\,\,\,ln\,\,L(\hat{y}) =max\,\,\,\sum_{i=1}^{N}\,\,ln\,\,[\hat{y}^{y_i}\,\cdot\,(1-\hat{y}) ^{y_i}]

                                           =min\,\,\,-\sum_{i=1}^{N}[\,\,y_i\cdot ln\,\,\hat{y}+(1-y_i)ln\,\,(1-\hat{y})]

        进一步知道模型的输出 \hat{y} 是由模型参数 W 决定的(因为特征矩阵X对于每个样本是固定的),而模型参数就是我们需要去优化的部分。同时为了数值稳定,还需求取平均。因此可以得到二分类问题优化所需的损失函数如下。

          min\,\,\,Loss(\hat{y_i})=min\,\,\,-\frac{1}{N}\sum_{i=1}^{N}[\,\,y_i\cdot ln\,\,\hat{y}_i+(1-y_i)ln\,\,(1-\hat{y}_i)]

        (2)多分类损失函数——极大似然估计

        同二分类一样的逻辑,这里不再赘述。区别是在其似然函数的数学表达上。对于 n 个分类的问题,对应 n 个不同的概率取值。可以用一种“独热编码”的方式来表达。

        我们可以“创建”一个 n 维的向量,对于真实的分类标签来说,其对应的分类可以用 n 维向量的对应索引位置取 1 来表达。

                                y_i = \begin{bmatrix} 0 ,&0, &...&1,&...&,0 \end{bmatrix}_{1*n}

        模型的输出同样也是一个 n 维的向量,具体来讲,其是一个概率的向量空间,每个值对应该位置对应分类的概率取值。

                               \hat{y} _i= \begin{bmatrix} p_1 ,&p_2, &...&p_i,&...&,p_n \end{bmatrix}_{1*n}

        那么对于上述给出真实标签分类的样本,其给定 x(\hat{y} = WX) 对 y 的似然如下。

                               P(y_i\mid \hat{y}_i)=p_{1}^{0}\cdot p_{2}^{0}\cdot ...\cdot p_{i}^{1}\cdot ...\cdot p_{n}^{0}

        可以发现,对于当前样本其概率取值只需取出其真实分类的类别下,模型预测的该类别概率值即可。因此可以用元素取值的方式将上述连乘归纳为一个式子,其代表对应独热编码中的索引取出预测概率的值(这也是为什么要用独热编码来标记不同类别的原因:这样使得下述式子连乘)可以推广到所有样本。

                                        P(y_i\mid \hat{y}_i)=\prod_{j=1}^{n}\,\,[(\hat{y}_{i})_{j}]^{(y_i)_j}

                                                            =\,\,\hat{y}_{i}^{y_i}

        那么根据极大似然估计的思想,我们将所有类别的样本对应于当前模型的概率值连乘起来,就是当前模型预测所有采样结果整体发生概率的评估值。通过最大化这个值,可以优化我们模型的参数 W 了。

            L(P) =(p_{1}^{1}\cdot p_{2}^{0}\cdot ...\cdot p_{i}^{0}\cdot ...\cdot p_{n}^{0})^{k_1}\cdot (p_{1}^{0}\cdot p_{2}^{1}\cdot ...\cdot p_{i}^{0}\cdot ...\cdot p_{n}^{0})^{k_2}...(p_{1}^{0}\cdot p_{2}^{0}\cdot ...\cdot p_{i}^{1}\cdot ...\cdot p_{n}^{0})^{k_i}...(p_{1}^{0}\cdot p_{2}^{0}\cdot ...\cdot p_{i}^{0}\cdot ...\cdot p_{n}^{1})^{k_n}

                                                            其中, k_i 代表第 i 个类别采样的样本数\sum_{i=1}^{n}\,k_i=n

                         L(\hat{y}) =\prod_{i=1}^{n}(\prod_{j=1}^{n}\,\,[(\hat{y}_{i})_{j}]^{(y_i)_j})^{k_i}

                                   =\prod_{i=1}^{n}(\hat{y}_{i}^{y_i})^{k_i}

        对于小批次 k 个训练样本,假设每个类别都只有一个样本,那么似然函数可以简化。

                        L(\hat{y}) =\prod_{i=1}^{k}\hat{y}_{i}^{y_i}

        使用极大似然估计法得到多分类的损失函数。

                        max\,\,\,L(\hat{y}) =min\,\,\,-log\,\prod_{i=1}^{k}\hat{y}_{i}^{y_i}

                         min\,\,\,Loss(\hat{y}) = min\,\,\,-\sum_{i=1}^{k} \,log\hat{y_i}^{y_i}

4.模型损失函数推导新视角——交叉熵

        使用极大似然估计法推到模型损失函数的方法总结来说是,先根据假设分布得出关于 X 似然函数,再将从实际分布中随机抽样的变量 X 值代入似然函数得到关于所有样本的总的似然。最终得到的似然是一个值,它代表的是实际分布中的变量在假设分布下得到的概率,换句话说极大似然估计是通过概率值的角度比较了实际和假设分布的差异,其目的是为了通过参数变化使假设分布不断逼近实际分布。

        因为实际分布和假设分布不是同一种分布,因此我们不能直接比较其分布对应的参数,如两个高斯分布可以通过比较其均值方差的差异来判断分布的差距。回归中实际分布是一个均匀分布,假设分布是个高斯分布。因此才使用极大似然估计这一“下策”来衡量分布差异。

        这样得到的损失函数,其实本质是在衡量假设分布和实际分布的“差距”——当假设分布和实际分布差异很大时,用实际分布的变量在假设分布下计算的概率应很小(因此需要极大化似然函数);差异小时,概率很大。而极大化的优化过程就是通过模型参数W的变换来改变假设分布中的一些变量。

        模型参数 W 隐含在模型输出中,再通过链接函数与假设分布中的一些参数相关。如回归高斯分布中的均值(\mu =W^TX),二分类中的正样样本概率值(p=\frac{1}{1+e^{-W^{T}X}}),多分类问题中每类的概率(p_{i}=\frac{e^{W^{T}X_{i}}}{\sum e^{W^{T}X_{i}}})

        因此我们推到损失函数关心的关键点就是找到一种衡量假设分布和实际分布差异的指标,交叉熵视角下,也是延用了这一概率论的思想——从信息论的角度比较两个分布的差异。

        (1)信息量和系统熵

       引入信息量的概率并将其量化为数学公式。

        ①信息量和概率存在反比关系

        现实生活中小概率事件总“让人着迷”,这也是因为小概率事件包含的信息量更大。就比如股市上未来大涨或大跌的消息包含的信息量更大,因为大多数情况股市都是一个区间的波动,而突然的大涨大跌都是小概率事件,其背后往往蕴藏着机遇或危机。又或者如猜明星游戏中告知姓氏就比告知性别信息量更大,因为性别只有男女,即二分之一的概率值;而姓氏则是在百家姓中的选择,随机猜中的概率更小。

        由此,我们可以初步定义一个最简单的数学关系式描述上述关系,在后续逐步完善。设信息量用字母 I 表示,事件的概率用 P 表示。

                                        I=\frac{1}{P}

        上述式子显然没有很好的描述概率和信息量的关系,一个最特殊的例子是,必然事件(概率P=1)的信息量应该为零(I=0),比如“太阳东升”这一表述就没有什么信息量对于一个有常识的人来说,因为总所周知,也就是日常说的“废话”。这表明信息量与概率的数学关系没有这么简单,应该存在一个函数关系

                                        I=f(\frac{1}{P})

        ②信息量具有乘积化加的性质

        举例来说,假设场景为从工厂生产的甲、乙、丙、丁四种产品中抽取次品检测,A信息是抽取甲、乙、丙、丁概率分别为 \frac{1}{2}\frac{1}{4}\frac{1}{8}\frac{1}{8}B信息是抽到是甲产品,甲为次品的概率为 \frac{1}{2}C信息是直接表示从工厂生产的两种产品中抽到甲产品是次品的概率是 \frac{1}{2}\times \frac{1}{2}=\frac{1}{4}

        例子中最后一个C信息在信息量的角度是A信息和B信息的总和,因为抽到甲次品需要先确定抽到的是甲产品,其次还要确定其为次品。同时,A信息和B信息描述的事件是独立的,因此概率上和C信息具有乘积等式关系。将上述表述用数学式子归纳如下。

                                \left\{\begin{matrix} f(\frac{1}{P_C})=f(\frac{1}{P_A})+f(\frac{1}{P_B})\\ P_C=P_A\times P_B\end{matrix}\right.

        第一个式子表示信息量的和关系,第二个式子表示概率的乘积关系。由此可推出以下等式。

                        \Rightarrow f(\frac{1}{P_A}\cdot \frac{1}{P_B})=f(\frac{1}{P_A})+f(\frac{1}{P_B})

        这表明对于计算信息量的函数 f(x),其应该满足上述式子中内部乘积可拆开为独立求和,可以推断,基础函数中 log(x\cdot y)=log\,x+log\,y 应是信息量函数的合理选择。

        目前为止,已知的信息量计算函数式子如下。

                                        I=log(\frac{1}{P})

                                           =-\,log(P)

        ③信息量与二进制的关系。

        知道是 log 函数还不够,还需清楚其底数。这需要信息编码角度重新审视,我们先从一个简单的例子开始,再过渡到之前找次品的例子。

        现在有A、B、C、D四个等可能的事件(它们发生概率都为 \frac{1}{4})。假设现在只有0、1两个数(二进制)来表述信息,通过其排列组合,我们可以将四个事件用编码的方式用数字表示。最短编码的长度为2。

事件ABCD
编码00011011
概率1/41/41/41/4

        当事件数量增加——八个等可能事件时,最短编码长度为3。

事件ABCDEFGH
编码000001010011100101110111
概率1/81/81/81/81/81/81/81/8

        当事件都是等可能时,用最“粗暴”的方法就是给所有的可能性都编码,所以对于均匀分布来说,其编码的可能性就是其概率的倒数,设编码长度为 L,均匀分布概率为 P,可得等式如下。

                                                        \frac{1}{P}=2^L

                                                       L=log_2\,(\frac{1}{P})

        此时得到了和上一步相同的信息计算函数形式,并且得到了底数的具体意义——用多少进制来编码数据:底数为2代表使用二进制;底数为3代表使用三进制....

        让我们回到稍复杂一点的找次品的例子,其事件发生概率不再是等可能的情况了,此时该如何编码。一种简单的方法是直接按可能情况编码,如对于A信息只有四种情况:抽到甲、抽到乙、抽到丙或抽到丁。这样编码和一个四个等可能事件编码没有区别。

事件ABCD
概率1/41/41/41/4
次品事件抽到甲抽到乙抽到丙抽到丁
概率1/21/41/81/8
编码00011011

        但这样编码“效率是低的”,对于“高频”发生的事件——抽到甲(概率 \frac{1}{2},将其和其他低概率发生的事件编码一样长度是不合理的,有没有更好的编码方式?我们可以按其各自发生概率值根据编码长度(信息量)计算公式来定其长度。如下表所示。

次品事件抽到甲抽到乙抽到丙抽到丁
概率1/21/41/81/8
编码长度log_2(\frac{1}{\frac{1}{2}})=1log_2(\frac{1}{\frac{1}{4}})=2log_2(\frac{1}{\frac{1}{8}})=3log_2(\frac{1}{\frac{1}{8}})=3
编码(√)100010011
编码(×)000010011

        需注意,抽到甲编码应和后续编码第一个数字区分开,不然将难以区分开是抽到甲的信息未传输完还是其他情况,最后一行给出了这种错误的编码方式。

        对上述编码方式求其关于概率的加权平均长度如下,设平均编码长度 L,不同情况的概率和其对应计算的编码长度分别为 p_i\,\,,\,\,l_i

                        L=\sum_{i=1}^{4}\,p_i\cdot l_i=\frac{1}{2}\times 1+\frac{1}{4}\times 2+\frac{1}{8}\times 3+\frac{1}{8}\times 3=1.75

        这要比原先简单的将所有可能视为等概率编码使用更少的开销。因此可以归纳出一般的计算任意一个离散分布的信息量计算公式(实际上推广到连续分布情况,只需将求和符合变为积分)

                                        L=\sum_{i=1}^{n}\,\,p_i\cdot log_2\,(\frac{1}{p_i})

                                            =-\sum_{i=1}^{n}\,\,p_i\cdot log_2\,(p_i)

        上述计算公式得到的不总是一个整数,因此称其为编码“长度”不那么严谨了。这里引入一个新的名词系统熵,也是信息熵——H(P),其代表的是关于分布的平均编码长度

                                        H(P)=\sum_{i=1}^{n}\,\,-p_i\cdot log_2\,(p_i)

        (2)相对熵(KL散度)与交叉熵

        有了信息熵的计算定义以后,回想我们最初引入信息量和熵概率的目的是,找到一个“指标”可以定量衡量两个概率分布的差别,从而可以计算机器学习模型参数代表的分布和实际我们希望机器学习到的现实的分布之前的差异。信息熵的计算得到的值可以代表分布的混乱程度,也是其包含的信息量。因此很自然的,我们关心两个分布信息熵的差值

        一种最直接的方法就是计算假设模型的信息熵减去实际分布的信息熵就好了。但是问题在于,实际分布的情况好说,假设模型的分布由于是存在于“我们脑海里”的一种假设,它的采样概率真实是多少我们无从得知,最多从这个假设算出其可能的“编码长度”,即这个假设包含了多少的信息量。

        下面详细看一下信息熵计算公式 H(P) 中的 P,它其实需要拆分成两半。一半是用作加权求和的权值的概率 P^W,一半是用于计算事件所需编码长度的概率 P^L 。这么做也对应了前面说的,假设分布的权值概率(采样概率)P^W 是未知的。

                   

        上述计算信息熵的式子实际是计算一个分布每个概率值对应的编码长度,最后加权求期望。回到之前抽次品的例子,我们能计算出最短的平均编码长度(也就是对抽到的是哪个产品这一事件的分布编码),是因为我们在题干中以“上帝视角”给出了所有情况对应的概率。而现实中,我们不可能把工厂所有产品都检测一遍,我们只能抽样出小批量的样本。

        基于这个背景,此时出现了两种概率——假设分布的概率 P^{hypo} (心里预期估计的概率)& 实际分布的概率  P^{real}(实际采样得到的概率)

        下面举例说明,假设检测次品中抽样产品类型——甲乙丙丁,小批量独立随机的抽出10件产品。实际抽出的结果即其对应的实际概率分布如下。

抽样结果
采样事件   甲      乙      丙      丁  
实际分布概率2/52/51/101/10
求和权值2/52/51/101/10
编码长度log_2(\frac{1}{\frac{2}{5}})\approx 1.32log_2(\frac{1}{\frac{2}{5}})\approx 1.32log_2(\frac{1}{\frac{1}{10}})\approx 3.32log_2(\frac{1}{\frac{1}{10}})\approx 3.32

        假设分布(即我们自己脑海里猜测的甲乙丙丁的概率——也可以理解为机器学习模型参数推测的概率分布),现在给出两个不同的假设——1.假设同之前题目中给出的概率分布情况一样;2.四个事件等概率发生。

题目概率的假设分布

假设事件   甲      乙      丙      丁  
假设分布概率1/21/41/81/8
求和权值
编码长度log_2(\frac{1}{\frac{1}{2}})=1log_2(\frac{1}{\frac{1}{4}})=2log_2(\frac{1}{\frac{1}{8}})=3log_2(\frac{1}{\frac{1}{8}})=3

等概率的假设分布

假设事件   甲      乙      丙      丁  
假设分布概率1/41/41/41/4
求和权值
编码长度log_2(\frac{1}{\frac{1}{4}})=2log_2(\frac{1}{\frac{1}{4}})=2log_2(\frac{1}{\frac{1}{4}})=2log_2(\frac{1}{\frac{1}{4}})=2

         实际和假设分布的关键区别就在于,假设分布就好比说“明天有多大概率下雨”,我们只能去衡量这句话包含了多少的信息量(编码长度),而无法知道明天到底会不会下雨(求和权值)

        于是,有了一种替代方案——不用假设分布和实际分布的绝对熵来衡量差异,使用相对熵( KL散度)来替换衡量两个分布的关系。

        下面给出本节重点的 KL 散度定义式,并由其推出我们想要的交叉熵表示式。

        其实KL散度很简单,既然只是假设分布的求和权值不知道,那么就用已知的实际分布权值代替使用不就好了。因此 KL 散度中一定有一个基准分布,如本例中将实际分布(小批量抽样的结果概率)视为基准,可以得到 KL 散度衡量下的,两个分布的相似度

                 D(real\parallel hypo)=\sum_{i=1}^{n}p_i^{real}[\,\,log_2(\frac{1}{p^{hypo}_i})-log_2(\frac{1}{p_i^{real}})\,\,]                                    

         KL散度衡量的是两个分布系统的相似程度。因此这个值越小越好,值越小,假设分布和真实分布越相似,趋于0时,两个分布几乎一致了。

        首先讨论之前给出的两个假设分布对应的 KL 散度值。

        对于题目给出概率的假设分布,根据公式可以计算得到它和真实的抽样分布的相似度如下。  

        对于等概率的假设分布,根据公式可以计算得到它和真实的抽样分布的相似度如下。

        可以看到题干给出的概率分布比等概率分布的假设计算的 KL 散度更小,说明题干概率更接近真实的分布状况。很自然的联想到,机器学习的模型参数训练过程就是从一个随机的参数(等概率假设分布)不断优化到接近真实的样本分布(题干概率分布) 。那么我们就需要极小化 KL 散度(这得在KL散度计算是一个正数的前提下,可以证得,此处省略)。

        回到 KL 散度计算式,由于真实分布的权值概率和信息量已知且固定,因此绿色后式实际是一个“常数”,而前式中蓝色部分会根据假设分布的不同而变化。因此在极小化过程中,常数可以省略,仅保留“变化部分”。

        

        由此比较假设分布和实际分布的相似度,可简化用一个式子表示,上面前半部分就是交叉熵。下面定义数学表达式。

           

        (3)回归损失函数——交叉熵视角

        有了交叉熵衡量分布相似度后,我们就可以定义一个“损失函数”来不断优化模型的预测分布不断逼近真实的样本分布。现在我们用交叉熵的计算视角,重新推导回归模型的损失函数。

        首先我们假设了回归模型的假设分布为高斯分布(正态分布),其分布均值为模型输出(\mu =W^TX);其采样的训练数据集满足随机独立抽样,因此真实分布为均匀分布,分布的概率为样本总数的倒数 (p=\frac{1}{N})

        根据交叉熵的分量求和运算,由于假设分布和真实分布都是连续的,因此要写出其对应的概率密度,均匀分布的概率密度简单;假设分布只需将模型参数代入正态分布概率密度函数即可。

        因此可以得到假设分布和真实分布概率。

                               P_{real}\sim U(\frac{1}{N})\,\,\,:             p_i^{real} =\frac{1}{N}

                P_{hypo}\sim N(W^TX,\sigma ^2)\,\,\,:             p_i^{hypo}= \frac{1}{\sqrt{2\pi \sigma ^2}}\cdot exp[\,-\frac{1}{2\sigma ^2}(y_i-W^TX_i)^2\,]

        代入交叉熵计算式,化简得到交叉熵视角下的回归损失函数。

                    H(P_{real}, P_{hypo})=\sum_{i=1}^{N}\frac{1}{N}\cdot [-log_2\,(\frac{1}{\sqrt{2\pi \sigma ^2}}\cdot exp[\,-\frac{1}{2\sigma ^2}(y_i-W^TX_i)^2\,])\,]

        之前极大似然估计中已经说明正态分布的方差 \sigma 不是我们关心的重点,可以省略。

                                                 =\sum_{i=1}^{N}\frac{1}{N}\cdot [-log_2\,(exp[\,-(y_i-W^TX_i)^2\,])\,]

                                                 =\sum_{i=1}^{N}\frac{1}{N}\cdot [(y_i-W^TX_i)^2\cdot log_2\,(e)\,]

        log_2\,(e) 为常数可以省略。因此得到了和之前推导的一致的均方误差损失函数。极小化这一损失函数,就是极小化假设分布和真实分布的差异

                                        H(P_{real}, P_{hypo})=\sum_{i=1}^{N}\frac{1}{N}\cdot (y_i-W^TX_i)^2

                            min\,\,\,\,\,H(P_{real}, P_{hypo})=min\,\,\,\,\,\sum_{i=1}^{N}\frac{1}{N}\cdot (y_i-W^TX_i)^2

        (4)二分类损失函数——交叉熵视角

        二分类问题只有两种情况,真实分布就是这两类样本在总样本中的比例关系。同时二分类两个概率和为1,因此只需知道正类样本概率 y , 即可推出负类概率为 1-y 。假设分布为伯努利分布,且其概率参数在链接函数下和模型输出相关(p=\frac{1}{1+e^{-W^{T}X}})

    P_{real}=\begin{Bmatrix}\frac{N_0}{N}=p,&\frac{N-N_0}{N} =1-p\end{Bmatrix}\,\,\,:        p_i^{real} =\begin{Bmatrix} p ,&1-p \end{Bmatrix}

                    P_{hypo}\sim B(p=\frac{1}{1+e^{-W^{T}X}})\,\,\,:        p_i^{hypo}=(\frac{1}{1+e^{-W^{T}X_i}}) ^{y_i}(1-\frac{1}{1+e^{-W^{T}X_i}})^{1-y_i} 

        代入交叉熵计算式,化简得到交叉熵视角下的二分类损失函数。 

                H(P_{real}, P_{hypo})=\sum_{i=1}^{N}\frac{1}{N}\cdot (-log_2\,[\,\,(\frac{1}{1+e^{-W^{T}X_i}}) ^{y_i}(1-\frac{1}{1+e^{-W^{T}X_i}})^{1-y_i}\,\,]\,)

        由二分类问题的定义可知,\hat{y}_i=\frac{1}{1+e^{-W^{T}X_i}} 即伯努利分布的参数其实就是模型的预测输出,代入交叉熵式子中可化简得下式。

                H(P_{real}, P_{hypo})=\sum_{i=1}^{N}\frac{1}{N}\cdot( -log_2\,\,[\,\hat{y}_i^{y_i}\cdot (1-\hat{y}_i)^{1-y_i}\,])

                                             =-\frac{1}{N}\cdot\sum_{i=1}^{N}\,\,y_i log_2(\hat{y}_i)+(1-y_i)log_2(1-\hat{y}_i)

        (5)多分类损失函数——交叉熵视角

        多分类与二分类并无本质区别,难懂点在于符号上,在极大似然估计法中我们并没有深入解释那些符号运算的推导,现在举例说明,关键是人为巧妙的引入了“独热编码”的方式。

        不失一般性,假设一个三分类问题,简单起见,每个类别有一个样本,对应有模型对其预测,我们可以将这里的训练真实样本分布和模型预测的假设分布,按之前的表格形式写下来。

类别ABC
独热编码[    1,     0,     0   ]   0,     1,     0   ][    0,     0,     1   ]
模型预测[ 0.7,   0.2,   0.1 ][ 0.1,   0.8,   0.1 ][ 0.2,   0.2,   0.6 ]

       经过独热编码以后对于每个类别的交叉熵都可以用权值求和的形式计算交叉熵。

类别交叉熵
A-1\cdot log_2(0.7)-0\cdot log_2(0.2)-0\cdot log_2(0.1)
B-0\cdot log_2(0.1)-1\cdot log_2(0.8)-0\cdot log_2(0.1)
C-0\cdot log_2(0.2)-0\cdot log_2(0.2)-1\cdot log_2(0.6)

        这样的编码方式让我们发现,计算一个样本的交叉熵值时,其实就是对这个类别下模型预测的概率求其信息量(因为对应的真实分布中标签值为 “1”),其余的类别都不需要去管他们,这在优化过程中也是合理的,代表看到当前类别的特征值输入,就要在当前类别的概率预测输出上越大越好。

        由于不管样本取的是哪个类别,真实分布都取的是 “1” 这个特殊值,这个巧妙的设计使得我们无需去管交叉熵中真实分布的概率,只需要取出假设分布即模型输出中对应于真实标签的预测概率值即可。

                              P_{real}=1\,\,\,:            p_i^{real} =\begin{Bmatrix} 0,&0,&...&1,&...&0 \end{Bmatrix}_{1[index]=i}

                            P_{hypo} = \hat{y}^{y}\,\,\,:            p_i^{hypo}=\hat{y}_i^{y_i}

                                                                   =p_i\rightarrow \begin{Bmatrix} p_1, &p_2 ,& ... &p_i,&...&p_N \end{Bmatrix}_{p_i[index]=i}

        特别注意,此处的 \hat{y}_i^{y_i} 中都是向量元素,不是幂次运算,而是从\hat{y}_i中取出对应类别的元素值。

        由此得到和极大似然法一致的损失函数形式。

                                H(P_{real}, P_{hypo})=\sum_{i=1}^{N} 1\cdot [\,-log_2\,(\hat{y}_i^{y_i})]

                                                             =\sum_{i=1}^{N} -log_2\,(\hat{y}_i^{y_i})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/746754.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud_GateWay服务网关

网关作用 Gateway网关是我们服务的守门神,所有微服务的统一入口。 网关的核心功能特性: 请求路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务&a…

Python数据分析-糖尿病数据集数据分析

一、研究背景介绍 糖尿病是美国最普遍的慢性病之一,每年影响数百万美国人,并对经济造成重大的经济负担。糖尿病是一种严重的慢性疾病,其中个体失去有效调节血液中葡萄糖水平的能力,并可能导致生活质量和预期寿命下降。。。。糖尿…

如何借助物联网实现土壤监测与保护

如何借助物联网实现土壤监测与保护 高标准农田信息化是指利用现代信息技术,如物联网、大数据、云计算等,对农田进行数字化、智能化的管理,以提高农田的生产效率和可持续发展能力。其中,土壤监测与保护是农田信息化的重要内容之一…

解决SD卡被写保护问题

存储卡在使用过程中,有时会遇到写保护问题,导致无法写入或删除数据。这可能会对用户的正常使用造成困扰。MK米客方德将为您介绍几种常见的解决方法,帮助用户解除存储卡的写保护。 一、检查物理写保护开关 许多存储卡,如SD卡&…

JavaScript的学习之dom的查询(一)

一、获得元素 通过document对象调用&#xff1a; getElementById()&#xff1a;通过id属性获取一个元素节点对象getElementsByTagName()&#xff1a;通过标签名获取一组元素节点对象getElementsByName()&#xff1a;通过name属性来获取一组元素节点对象 核心学习代码 <scrip…

【UE5.3】笔记3-静态网格体,BSP

静态网格体组件 主要有两个属性 一个是静态网格体&#xff1a;对应的也就是模型&#xff0c;比如fbx&#xff0c;maya&#xff0c;obj等格式 一个是材质&#xff1a;由各种贴图、渲染设置等&#xff0c;比如unity里的shader BSP画刷&#xff1a; 打开放置Actor选项卡&#…

QT中子工程的创建,以及如何在含有库的子工程项目中引用主项目中的qt资源

1、背景 在qt中创建多项目类型,如下: CustomDll表示其中的一个动态库子项目; CustomLib表示其中的一个静态库子项目; MyWidget表示主项目窗口(main函数所在项目); 2、qrc资源的共享 如何在CustomDll和CustomLib等子项目中也同样使用 MyWidget项目中的qrc资源呢??? 直…

MySQL 7种Join的定义图解示范结果(所有join类型)

文章目录 MySQL 7种Join的定义&图解&示范&结果&#xff08;所有join类型&#xff09;基本知识笛卡尔积 建表&填充数据1-Join不带条件account筛选 1-Inner Join 内连接不带条件account相同where筛选玩点特殊的 2-Left Join 左连接不带条件account筛选 3-Right J…

神经网络学习8-反向传播

back propagation 拿到前面传回来的L对z的偏导&#xff0c;再分别算损失值对x和w的偏导 反向传播 前馈过程求局部梯度 反向传播 这里的loss&#xff08;wxb-y)^2,第一个关于b的偏导为2(wxb-y),第二个关于w的为2w(wxb-y)

业绩尚可但股价不振,浙商银行陆建强闯“3元大关”

&#xff08;题图&#xff09; 文&#xff5c;新熔财经 作者&#xff5c;宏一 本来做着钱生钱的“美梦”&#xff0c;现在倒好&#xff0c;本金都不一定拿得回来。 因为不想把“鸡蛋都放在一个笼子里”&#xff0c;所以前几年在理财的时候一部分放在银行定存&#xff0c;一…

Sum of Single Effects Linear Regression (susieR):多个因果变异位点的鉴定

使用susieR鉴定多个因果变异位点只需要两个输入文件&#xff0c;一个输入文件是包含Zscore值的SNP位点&#xff08;zscore.txt&#xff09;&#xff0c;另一个文件是LD matrix&#xff08;LD.matrix.ld&#xff09;。 zscore.txt 文件如下所示&#xff1a; LD.matrix.ld 文件…

Vue DevTools

介绍 什么是 Vue DevTools&#xff1f; Vue DevTools 是一款旨在增强 Vue 开发者体验的工具&#xff0c;它是一款功能强大且用途广泛的工具&#xff0c;可以在使用 Vue 应用程序时显着提高您的生产力和调试能力。它的实时编辑、时间旅行调试和全面检查功能使其成为任何Vue.js开…

程序员如何用ChatGPT解决常见编程问题:实例解析

引言 在现代编程的世界中&#xff0c;技术进步日新月异&#xff0c;程序员们面临着各种各样的挑战和问题。解决这些问题的过程中&#xff0c;找到合适的工具至关重要。ChatGPT作为一种先进的人工智能语言模型&#xff0c;能够帮助程序员迅速、高效地解决常见的编程问题。本文将…

基于SpringBoot的学生综合测评系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 系统首页&#xff0c;提供综合…

【ajax07基础】回调函数地狱

一&#xff1a;什么是回调函数地狱 在一个回调函数中嵌套另一个回调函数&#xff08;甚至一直嵌套下去&#xff09;&#xff0c;形成回调函数地狱 回调函数地狱存在问题&#xff1a; 可读性差异常捕获严重耦合性严重 // 1. 获取默认第一个省份的名字axios({url: http://hmaj…

LabVIEW电动汽车核心部件检测系统

LabVIEW开发的电动汽车核心部件检测系统&#xff0c;通过硬件接入板和数据采集卡实现信号采集和分析。系统具备智能诊断、模块化设计和用户友好的特点&#xff0c;能够快速、精确地定位故障&#xff0c;提高电动汽车的维护效率和可靠性&#xff0c;支持新能源汽车市场的快速发展…

【Streamlit学习笔记】Streamlit-ECharts箱型图添加均值和最值label

Streamlit-ECharts Streamlit-ECharts是一个Streamlit组件&#xff0c;用于在Python应用程序中展示ECharts图表。ECharts是一个由百度开发的JavaScript数据可视化库Apache ECharts 安装模块库 pip install streamlitpip install streamlit-echarts绘制箱型图展示 在基础箱型…

深入探讨C++的高级反射机制(2):写个能用的反射库

在现代软件开发中&#xff0c;反射是一种强大的特性&#xff0c;它可以支持程序在运行时查询和调用对象的属性和方法。 但是在C中&#xff0c;没有内置的反射机制。我们可以通过一些巧妙的技术模拟反射的部分功能。 上一篇文章写了个简单的反射功能&#xff0c;这回完善一下&a…

最新版Git安装指南使用指南

首先&#xff0c;访问Git的官方网站https://git-scm.com下载适用于您操作系统的安装包。您也可以选择使用阿里云镜像来加速下载过程。 也可以用国内地址下载https://pan.quark.cn/s/0293d76e58bchttps://pan.quark.cn/s/0293d76e58bc安装过程 在这里插入图片描述 2、点击“…

前端 CSS 经典:backface-visibility 属性

前言&#xff1a;backface-visibility 属性可以使反转 180deg 的元素隐藏&#xff0c;使用这个属性实现卡片翻转效果 效果 代码实现 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><meta http-equiv"X-…