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

news2024/11/25 15:54:54

目录

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

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})

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java | Leetcode Java题解之第174题地下城游戏

题目&#xff1a; 题解&#xff1a; class Solution {public int calculateMinimumHP(int[][] dungeon) {int n dungeon.length, m dungeon[0].length;int[][] dp new int[n 1][m 1];for (int i 0; i < n; i) {Arrays.fill(dp[i], Integer.MAX_VALUE);}dp[n][m - 1] …

C语言入门系列:初识函数

文章目录 一&#xff0c;C语言函数与数学函数的区别1&#xff0c;回忆杀-初中数学2&#xff0c;C语言中的函数 二&#xff0c; 函数的声明1&#xff0c;函数头1.1&#xff0c;函数名称1.2&#xff0c;返回值类型1.3&#xff0c;参数列表 2&#xff0c;函数体2.1&#xff0c;函数…

idea右侧找不到Maven,在View-> Tool Windows下也找不到

正常情况Idea右侧没有Maven&#xff0c;只需去View -> Tool Windows 目录中找到Maven并点击Maven&#xff0c;Idea右侧就会出现 问题&#xff1a; idea右侧找不到Maven&#xff0c;在View -> Tool Windows 目录中也找不到Maven&#xff0c;下图 全局搜索ctrl N&#xff…

数据结构历年考研真题对应知识点(栈和队列的应用)

目录 3.3栈和队列的应用 3.3.2栈在表达式求值中的应用 【中缀表达式转后缀表达式的过程(2012、2014)】 【栈的深度分析(2009、2012)】 【用栈实现表达式求值的分析(2018)】 3.3.3栈在递归中的应用 【栈在函数调用中的作用和工作原理(2015、2017)】 3.3.5队列在计算机系…

苹果智能和人工智能最大化

苹果智能和人工智能最大化 除了苹果公司&#xff0c;还没有人真正使用过苹果的智能功能。它要到秋天才会分阶段发布&#xff0c;即使到那时&#xff0c;它也无法在80%或90%的iPhone安装基础上运行&#xff0c;因为它需要只有iPhone 15 Pro才能使用的设备上处理功能。没有什么能…

如何从magento1迁移到magento2

m2相较m1 变化可以说非常大&#xff0c;相当于从头到位都改写一遍&#xff0c;更现代化&#xff0c;更优雅。除了数据库表变化不是很大。 主要迁移的内容有&#xff1a; 1&#xff0c;主题 2&#xff0c;插件(自己开发的或者第三方插件) 3&#xff0c;数据库 主题 不能迁移到m…

如何在Windows 11和10上清除更新缓存?这里提供了几种方法

​Windows 11和Windows 10都可以非常轻松地清除Windows更新缓存。可以使用图形方法或命令行选项删除保存的更新文件。我们将向你展示你的可用选项。 为什么要清除Windows更新缓存 你可能希望清除Windows更新缓存的原因有很多。 你可能在查找或安装更新时遇到问题,清除缓存通…

如何恢复丢失的文件?免费为 Mac 恢复数据

丢失 Mac 上的重要文件是一件非常痛苦的事情。无论是重要的工作文件、重要文件还是心爱的照片&#xff0c;意外删除它们或出现系统错误都会非常令人沮丧。别担心&#xff1b;有办法&#xff1a;奇客数据恢复Mac版。这款免费的 Mac 文件恢复软件就像您文件的救星 - 当出现问题时…

每日一练:攻防世界:5-1 MulTzor

一、XorTool 基于 XOR&#xff08;异或&#xff09;运算实现。它可以帮助您快速地对文本、二进制文件进行加密解密操作。 认识XorTool工具&#xff1a; 让我们先去认识一下工具&#xff1a; xortool.py 是基于 python 的脚本&#xff0c;用于完成一些 xor 分析&#xff0c;…

持久化、主从 、分片、哨兵

目录 持久化 RDB&#xff08;存数据&#xff09; 使用场景 bgsave 使用方法 原理 AOF&#xff08;存命令&#xff09; 使用方法 原理 bgrewriteaof AOF和RDB 主从集群 搭建 数据同步原理(slave宕机&#xff09; 全量同步 增量同步 集群优化 总结 哨兵机制&…

JAVA学习过程中遇到的问题

前言 记录学习过程中遇见的各种问题。希望对你有帮助。 目录 前言 1、新建maven项目时&#xff0c;archetype项目骨架加载慢 2、maven的pop.xml添加依赖项无法检测到 3、java: 无效的目标发行版: 20 4、idea添加maven依赖太慢 5、CTRLCV复制粘贴太慢 6、Swagger写接口文…

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发 专业版 插件版 手持弹幕小程序通常提供多种功能&#xff0c;以便用户在不同的场合如夜店、表白、接机等使用。以下是一些常见的功能列表&#xff1a; 文本输入&#xff1a; 输入要显示的文字内容&#xff0c;…

Android招聘市场技术要求越来越高,从事三年开发是否应该考虑转行?

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训&#xff0c;学会这小块知识就能随便找到不错的工作了。 不过很显然现在远远不够了&#xff0c;拒绝无休止的CV&#xff0c;亲自去项目实战&#xff0c;读源码&#xff0c;研究原理吧&#xff01; 《Framework精编…

HeidiSQL导入与导出数据

HeidiSQL两种导入与导出数据的方法&#xff1a;整个库复制&#xff0c;和仅复制数据 一 整个库复制 1 选中需要导出的数据库(这里是MyDBdata)&#xff0c;点击导出为SQL脚本。 2 按照如图进行选择 3 选做&#xff1a;删除当前数据库【如果有】 -- 删除数据库 USE mysql; D…

Linux-cp命令实现-系统调用和函数区别-文件截断-文件空洞

1、实现CP命令 vimdiff file1 file2 vimdiff是Vim编辑器的一个功能&#xff0c;主要用于比较两个或多个文件之间的差异&#xff0c;并在一个Vim窗口中显示这些差异。这个功能特别适合用于比较修改前后的文件&#xff0c;或者比较两个不同版本的文件。 注意&#xff1a;用…

SD卡无法读取:原因解析与数据恢复策略

一、SD卡无法读取的尴尬场景 在数字化日益普及的今天&#xff0c;SD卡作为便携式存储设备&#xff0c;广泛应用于各类电子设备中。然而&#xff0c;当您急需访问SD卡中的数据时&#xff0c;却发现设备无法读取SD卡&#xff0c;这无疑是一个令人沮丧的场景。SD卡无法读取可能表…

【已解决】在IDEA中使用Git拉取代码时提示:Can‘t update / master has no tracked branch

文章目录 问题描述原因分析解决方案 问题描述 在IDEA中使用Git拉取代码&#xff0c;尝试更新本地项目代码&#xff0c;提示 " Cant update / master has no tracked branch "&#xff0c;如下图所示&#xff1a; 原因分析 出现上述问题意味着本地名为master的分支&…

Google Earth Engine(GEE)——ui.DateSlider时间进度条的设置

结果 函数: ui.DateSlider(start, end, value, period, <

排序不等式——AcWing 913. 排队打水

排序不等式 定义 这主要涉及到利用 C 的排序操作对数据进行排序后&#xff0c;基于排序结果进行一些分析和处理。 运用情况 对一组数据进行排序后&#xff0c;根据排序后的顺序来解决一些与顺序相关的问题&#xff0c;比如选取最大或最小的若干个元素。在一些需要按照特定顺…

前端项目结构介绍与Vue-cli(脚手架)环境搭建

传统的前端项目结构 一个项目中有许多html文件 每一个html文件都是相互独立的 如果需要在页面中导入一些外部依赖的组件(vue.js,elementUI),就需要在每一个html文件中引用都导入,十分的麻烦 而且这些外部组件都需要在其官网中自行下载,也增加了导入的繁琐程度 当今的前端项…