当前位置: 首页 > news >正文

两个角度理解「交叉熵损失函数」

目录

  • 前言
  • 一、交叉熵 角度
    • 1、计算机基础
      • (1)编码
      • (2)数据分布
    • 2、熵 相关
      • 2.1 信息量
      • 2.2 信息熵
      • 2.3 相对熵
      • 2.4 最小化「相对熵」还是「交叉熵」
    • 3、公式推导
      • 3.1 信息量
      • 3.2 信息熵
      • 3.3 相对熵
  • 二、极大似然估计 角度
    • 1、似然函数
      • 1.1 二次函数 vs 指数函数
      • 1.2 概率函数 vs 似然函数
    • 2、极大似然估计
    • 3、公式推导
      • 3.1 单条数据 似然值
      • 3.2 分布 似然值
  • 三、交叉熵损失 等价于 极大似然损失
  • 四、二分类损失 推导
    • 4.1 损失函数 角度
    • 4.2 极大似然估计 角度

前言

模型训练的目的是提取已知数据集中的关键信息,用于预测未知数据的表现;如何评价训练效果是重中之重,可以计算模型的输出值与目标值之间的差距,计算出这个差距值之后,可以利用各种优化方法减小差距值,让模型输出值不断趋近于目标值;计算差距值的函数称为损失函数,损失函数的定义多种多样,深度学习中最常用的有两种:

  • 回归问题:均方损失 MSE(Mean Square Error)
  • 分类问题:交叉熵损失 CE(CrossEntropy)

本篇文章帮助大家理解交叉熵损失。我们可以从 交叉熵极大似然函数 两个角度理解交叉熵损失,最终得到的损失函数是一致的。

以下理解,如有不对或者写的不清楚之处,欢迎评论区指正,感谢

一、交叉熵 角度

信息编码角度理解熵会更清晰

1、计算机基础

(1)编码

  • 当前计算机体系下,是用比特位(0/1二进制位)来编码信息的,对于一个给定的数据集合,可以基于哈夫曼树来编码每个字符,这样能使用最少的比特位编码整个数据集,便于后续数据的存储、传输
    这个例子比较清晰
  • 哈夫曼树的构造逻辑:用更短的编码表示出现频率高的字符,较长的编码表示出现频率低的字符
  • 构建完哈夫曼树后,相当于得到了一个编码本,每个字符都只用若干0/1比特位来表示;
    (就像谍战片里的密码本一样,只不过不是为了安全,而是因为计算值只认得0/1比特位,别的字符识别不了)

(2)数据分布

  • 数据分布是统计学中的概念,用来描述数据集中各值出现的频率或者概率,可以理解为数据集合的形状
  • 深度学习中,我们会先假设模型需要拟合的数据是服从某些分布的,比如正态分布、二项分布等,之后再基于这个分布建模
  • 一般会用「分布」一词指代「数据集合」

2、熵 相关

熵,是信息论中的概念,信息论主要研究信息的编码、存储、传输等问题

2.1 信息量

信息量 是信息论中的基础概念,描述对象是单条数据,表示

编码单条数据所需要的比特数(比特位的数量),即单条数据的 编码长度

2.2 信息熵

信息熵,又称 香农熵,简称熵,可以看作是描述整个分布信息量的一个单位,代表

编码一个已知分布所需要的最小平均比特数,即 分布内所有数据的 最短平均编码长度

可以先用上面提到的哈夫曼树来计算每条数据的具体编码,再计算整个数据集的平均编码长度

2.3 相对熵

相对熵,又称 KL散度,涉及到 实际分布P 和 预定义分布Q(模型表示的分布) 两个分布,描述对象是整个分布,表示

用预定义分布的编码本编码实际分布时,平均会多用多少比特位,即分布内所有数据的 平均编码长度比最短编码长度长多少

多用的比特位就是前言中提到的「差距值」,所以,我们可以将相对熵作为损失函数,最小化相对熵就是我们的目标

2.4 最小化「相对熵」还是「交叉熵」

答:两者一致,实际分布P的信息熵即为训练集的信息熵,是可以计算出来的,可作为已知项

P/Q相对熵 = P/Q交叉熵 - P的信息熵

3、公式推导

3.1 信息量

(1)前面提到,信息熵表示的是最短平均编码长度,如何达到最短?可以用更短的编码表示出现频率高的数据,较长的编码表示出现频率低的数据,因此,数据的编码长度和出现频率成反比,归一化后,可以用出现概率表示,信息量即可定义为

h ( x i ) = log ⁡ 1 p ( x i ) = − log ⁡ p ( x i ) h(x_i)=\log \frac{1}{p(x_i)}=-\log p(x_i) h(xi)=logp(xi)1=logp(xi)

函数图像为
ln(x)

(2)加上 l o g log log 有2个优点:

  1. 信息量的大小与概率成反比,指数级降低,出现概率极小时,信息量极大,随着出现概率的增大,该数据所提供的信息量增幅越来越小,符合我们的直观印象
  2. 两条独立数据的信息量可累加:假设数据1出现的概率为 p 1 p1 p1,数据2出现的概率为 p 2 p2 p2,则两条数据均出现的联合概率为 p 1 ∗ p 2 p1*p2 p1p2,对应的信息量= − l o g ( p 1 ∗ p 2 ) = − l o g p 1 − l o g p 2 = h ( x 1 ) + h ( x 2 ) -log(p1*p2)=-logp1-logp2=h(x1)+h(x2) log(p1p2)=logp1logp2=h(x1)+h(x2),便于后续熵的计算

(3)关于 log 底数

  • 底数是 2、10、e 其实不重要,互相之间都可以转化,不影响计算
  • 从当前编码的角度来理解的话,底数为 2 更符合直观理解(比特位只有0、1)

3.2 信息熵

信息熵就是所有数据信息量的期望,一个分布的信息熵为

H ( x ) = − ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) H(x)=- \sum_{i=1}^{n}p(x_i)\log p(x_i) H(x)=i=1np(xi)logp(xi)

其中, n n n 指数据条数

若分布内每条数据对应多个类别,则可以细化为

H ( x ) = − ∑ i = 1 n ∑ j = 1 m p ( x i j ) log ⁡ p ( x i j ) H(x)=- \sum_{i=1}^{n}\sum_{j=1}^{m}p(x_{ij})\log p(x_{ij}) H(x)=i=1nj=1mp(xij)logp(xij)

其中, m m m 指类别数量

3.3 相对熵

相对熵的定义是:用预定义分布Q的编码本编码实际分布P时,平均会多用多少比特位,单条数据多用比特数为

h q ( x i ) − h p ( x i ) = − log ⁡ q ( x i ) − ( − log ⁡ p ( x i ) ) h_q(x_i) - h_p(x_i)=-\log q(x_i) - (-\log p(x_i)) hq(xi)hp(xi)=logq(xi)(logp(xi))

整个分布多用比特数期望为

D ( P ∣ ∣ Q ) = ∑ i = 1 n p ( x i ) ( h q ( x i ) − h p ( x i ) ) = ∑ i = 1 n p ( x i ) ( − log ⁡ q ( x i ) − ( − log ⁡ p ( x i ) ) ) = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) − ( − ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) ) = 当前平均编码长度 − 最短平均编码长度 = H ( P , Q ) − H ( P ) = P / Q 交叉熵 − P 信息熵 \begin{align*} D(P||Q) &= \sum_{i=1}^{n}p(x_i)(h_q(x_i) - h_p(x_i)) \\ &=\sum_{i=1}^{n}p(x_i)(-\log q(x_i) - (-\log p(x_i))) \\ &=-\sum_{i=1}^{n}p(x_i)\log q(x_i) - (-\sum_{i=1}^{n}p(x_i)\log p(x_i)) \\ &=当前平均编码长度 - 最短平均编码长度 \\ &=H(P,Q)-H(P) \\ &=P/Q交叉熵 - P信息熵 \end{align*} D(P∣∣Q)=i=1np(xi)(hq(xi)hp(xi))=i=1np(xi)(logq(xi)(logp(xi)))=i=1np(xi)logq(xi)(i=1np(xi)logp(xi))=当前平均编码长度最短平均编码长度=H(P,Q)H(P)=P/Q交叉熵P信息熵

实际分布P即为训练集对应的数据分布,数据已知,分布可计算,对应的信息熵 H ( P ) H(P) H(P)则可视为已知,所以,优化相对熵 D ( P ∣ ∣ Q ) D(P||Q) D(P∣∣Q)等价于优化交叉熵 H ( P , Q ) H(P,Q) H(P,Q),最终目标即为最小化交叉熵,让预定义分布Q尽可能接近实际分布P

H ( P , Q ) = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) H(P,Q)=-\sum_{i=1}^{n}p(x_i)\log q(x_i) H(P,Q)=i=1np(xi)logq(xi)

若分布内每条数据对应多个类别,则可以细化为

H ( P , Q ) = − ∑ i = 1 n ∑ j = 1 m p ( x i j ) log ⁡ q ( x i j ) H(P,Q)=- \sum_{i=1}^{n}\sum_{j=1}^{m}p(x_{ij})\log q(x_{ij}) H(P,Q)=i=1nj=1mp(xij)logq(xij)

二、极大似然估计 角度

1、似然函数

1.1 二次函数 vs 指数函数

先从我们熟悉的开始了解,对于函数 y = a b y=a^b y=ab

  • 当 b为常数 时,假设 b=2,则 y = a 2 y=a^2 y=a2,称为二次函数
  • 当 a为常数 时,假设 a=2,则 y = 2 b y=2^b y=2b,称为指数函数

二次函数 和 指数函数 都是函数 y = a b y=a^b y=ab 的特例,是从两个不同的角度得到的函数,本质相同,名称不同

1.2 概率函数 vs 似然函数

对于函数 y = a x y=ax y=ax,a 称为函数的未知参数,x 称为函数的随机变量,假设 0 < = y < = 1 0<=y<=1 0<=y<=1,为概率值

  • 当 a已知 时,可以根据随机变量x 求输出y 的值,此时称为概率函数,可以理解为 参数已知时,函数输出值等于真实值的可能性
  • 当 (x,y)已知 时,可以将 (x,y) 代入求未知参数a,此时称为似然函数,假设求得 a=a1,再将x代入,求得的 y 可称为 参数a在a1下的似然值,不同参数对应不同的似然值,可以理解为 数据已知时,在不同参数下,函数输出值等于真实值的可能性

概率函数 和 似然函数 间的关系可以类比到 二次函数 和 指数函数 间的关系进行理解

2、极大似然估计

  • 估计 一词是统计学中的概念,表示,根据已知条件去 计算/预估 对应参数值
  • 似然值表示的是 对应参数下,数据会出现的可能性,似然值越大,可能性越大;模型训练中,训练集数据是我们观察到的真实数据,是已经发生了的事实,因此,我们的目标就是求能让这个分布出现的可能性最大的参数,即 似然值最大 时对应的参数,这个求解的过程即为 估计参数 的过程

3、公式推导

3.1 单条数据 似然值

似然值的计算方式为

L ( θ ∣ ( x i , y i ) ) = P ( y i ∣ x i ; θ ) L(θ|(x_i,y_i))=P(y_i|x_i;θ) L(θ(xi,yi))=P(yixi;θ) 简写为 L ( θ ∣ x i ) = P ( x i ; θ ) L(θ|x_i)=P(x_i;θ) L(θxi)=P(xi;θ)

给定数据 x i 时,参数 θ 的似然值 = 视参数 θ 为已知值时,将随机变量 x i 输入到对应的概率函数中,输出是 y i 的概率值 给定数据x_i时,参数θ的似然值 = 视参数θ为已知值时,将随机变量x_i输入到对应的概率函数中,输出是 y_i的概率值 给定数据xi时,参数θ的似然值=视参数θ为已知值时,将随机变量xi输入到对应的概率函数中,输出是yi的概率值

两值 数值上相等,但含义不同

此时, x i x_i xi 代表的是一整条数据,包含自变量和输出两部分

3.2 分布 似然值

一个分布内,多条独立同分布数据的联合似然值即为

L ( θ ∣ x 1 , x 2 , . . . , x n ) = ∏ i = 1 n p ( x i ; θ ) L(θ|x_1,x_2,...,x_n)=\prod_{i=1}^{n}p(x_i;θ) L(θx1,x2,...,xn)=i=1np(xi;θ)

求它的极大值对应的参数即可,至于极大值是多少,我们并不关心

求解参数 θ θ θ 的详细推导过程如下:

  • 公式中的每一项都表示概率值,值域在[0,1]之间,多项连乘后,结果值会非常小,计算机可能无法表示,数值稳定性差,不利于计算,而 log 函数不会改变该函数的单调性,不影响求解参数 θ,可简化计算;得到(2),根据 l o g log log 公式得到(3)
  • 深度学习的优化算法一般是求最小值,因此,将此极值问题也转化成求最小值;得到(4)
  • 缩放函数值不影响函数的单调性,不影响求解参数 θ;得到(5)
  • 根据大数定理,当数据量足够大时,其算术平均值等价于期望值;得到(6)
  • p ( x i ; θ ) p(x_i;θ) p(xi;θ) 是待求解函数, E X ∼ P {E}_{X\sim P} EXP是已知分布的期望,为了防止混淆,修改待求解函数名称为 q ( x i ; θ ) q(x_i;θ) q(xi;θ);得到(7)

θ = arg max ⁡ θ ∏ i = 1 n p ( x i ; θ ) = arg max ⁡ θ log ⁡ ( ∏ i = 1 n p ( x i ; θ ) ) = arg max ⁡ θ ∑ i = 1 n log ⁡ p ( x i ; θ ) = arg min ⁡ θ − ∑ i = 1 n log ⁡ p ( x i ; θ ) = arg min ⁡ θ − 1 n ∑ i = 1 n log ⁡ p ( x i ; θ ) = arg min ⁡ θ − ∑ i = 1 n E X ∼ P log ⁡ p ( x i ; θ ) = arg min ⁡ θ − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ; θ ) \begin{align} θ&=\argmax\limits_{θ} \prod_{i=1}^{n}p(x_i;θ) \\ &=\argmax\limits_{θ} \log(\prod_{i=1}^{n}p(x_i;θ)) \\ &=\argmax\limits_{θ}\sum_{i=1}^{n} \log p(x_i;θ) \\ &=\argmin\limits_{θ}-\sum_{i=1}^{n} \log p(x_i;θ) \\ &=\argmin\limits_{θ}-\frac{1}{n}\sum_{i=1}^{n} \log p(x_i;θ) \\ &=\argmin\limits_{θ}-\sum_{i=1}^{n} \mathbb{E}_{X\sim P} \log p(x_i;θ) \\ &=\argmin\limits_{θ}-\sum_{i=1}^{n} p(x_i) \log q(x_i;θ) \end{align} θ=θargmaxi=1np(xi;θ)=θargmaxlog(i=1np(xi;θ))=θargmaxi=1nlogp(xi;θ)=θargmini=1nlogp(xi;θ)=θargminn1i=1nlogp(xi;θ)=θargmini=1nEXPlogp(xi;θ)=θargmini=1np(xi)logq(xi;θ)

三、交叉熵损失 等价于 极大似然损失

交叉熵损失

H ( P , Q ) = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) H(P,Q)=-\sum_{i=1}^{n}p(x_i)\log q(x_i) H(P,Q)=i=1np(xi)logq(xi)

极大似然损失

l o s s = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ; θ ) loss = -\sum_{i=1}^{n} p(x_i) \log q(x_i;θ) loss=i=1np(xi)logq(xi;θ)

虽然两者是从不同的角度思考的,但最终得到的损失函数形势是一致的

四、二分类损失 推导

4.1 损失函数 角度

若以(随机变量,label)的形势表示一条数据,损失函数可以写成

l o s s = − ∑ i = 1 n p ( x i , y i ) log ⁡ q ( y i ∣ x i ; θ ) loss = -\sum_{i=1}^{n} p(x_i,y_i) \log q(y_i|x_i;θ) loss=i=1np(xi,yi)logq(yixi;θ)

当数据可以有多个类别时,将每个类别看成是一个分布,可以写成

l o s s = − ∑ i = 1 n ∑ j = 1 m p ( x i , y i j ) log ⁡ q ( y i j ∣ x i ; θ ) loss = -\sum_{i=1}^{n} \sum_{j=1}^{m} p(x_i,y_{ij}) \log q(y_{ij}|x_i;θ) loss=i=1nj=1mp(xi,yij)logq(yijxi;θ)

其中, ∑ j = 1 m p ( x i , y i j ) = 1 \sum_{j=1}^{m} p(x_i,y_{ij})=1 j=1mp(xi,yij)=1 ∑ j = 1 m q ( x i , y i j ) = 1 \sum_{j=1}^{m} q(x_i,y_{ij})=1 j=1mq(xi,yij)=1

二分类时,只有[0,1]两个类别,损失函数推导如下:

  • 两概率和为1,可得出(1)~(3)
    • p ( x i , y i = 1 ) + p ( x i , y i = 0 ) = 1 p(x_i,y_i=1) + p(x_i,y_i=0)=1 p(xi,yi=1)+p(xi,yi=0)=1
      => p ( x i , y i = 0 ) = 1 − p ( x i , y i = 1 ) p(x_i,y_i=0) =1 - p(x_i,y_i=1) p(xi,yi=0)=1p(xi,yi=1)
    • q ( y i = 1 ∣ x i ; θ ) + q ( y i = 0 ∣ x i ; θ ) = 1 q(y_i=1|x_i;θ) + q(y_i=0|x_i;θ) = 1 q(yi=1∣xi;θ)+q(yi=0∣xi;θ)=1
      => q ( y i = 0 ∣ x i ; θ ) = 1 − q ( y i = 1 ∣ x i ; θ ) q(y_i=0|x_i;θ) = 1 - q(y_i=1|x_i;θ) q(yi=0∣xi;θ)=1q(yi=1∣xi;θ)
  • p i = p ( x i , y i = 1 ) , q i = q ( x i , y i = 1 ) p_i=p(x_i,y_i=1),q_i=q(x_i,y_i=1) pi=p(xi,yi=1),qi=q(xi,yi=1),可得出(4)
  • 正负例用 [1, 0] 表示时, p ( x i , y i ) = y i p(x_i,y_i)=y_i p(xi,yi)=yi,可得出(5)

l o s s = − ∑ i = 1 n ∑ j = 1 2 p ( x i , y i 1 ) log ⁡ q ( y i 1 ∣ x i ; θ ) = − ∑ i = 1 n [ p ( x i , y i = 1 ) log ⁡ q ( y i = 1 ∣ x i ; θ ) + p ( x i , y i = 0 ) log ⁡ q ( y i = 0 ∣ x i ; θ ) ] = − ∑ i = 1 n [ p ( x i , y i = 1 ) log ⁡ q ( y i = 1 ∣ x i ; θ ) + ( 1 − p ( x i , y i = 1 ) ) log ⁡ ( 1 − q ( y i = 1 ∣ x i ; θ ) ) ] = − ∑ i = 1 n [ p i log ⁡ q i + ( 1 − p i ) log ⁡ ( 1 − q i ) ] = − ∑ i = 1 n [ y i log ⁡ q i + ( 1 − y i ) log ⁡ ( 1 − q i ) ] \begin{align*} loss &= -\sum_{i=1}^{n} \sum_{j=1}^{2} p(x_i,y_{i1}) \log q(y_{i1}|x_i;θ) \tag{1}\\ &= -\sum_{i=1}^{n} [p(x_i,y_i=1) \log q(y_i=1|x_i;θ) + p(x_i,y_i=0) \log q(y_i=0|x_i;θ)] \tag{2}\\ &= -\sum_{i=1}^{n} [p(x_i,y_i=1) \log q(y_i=1|x_i;θ) + (1 - p(x_i,y_i=1)) \log (1 - q(y_i=1|x_i;θ))] \tag{3}\\ &= -\sum_{i=1}^{n} [p_i \log q_i + (1 - p_i) \log (1 - q_i)] \tag{4}\\ &= -\sum_{i=1}^{n} [y_i \log q_i + (1 - y_i) \log (1 - q_i)] \tag{5} \end{align*} loss=i=1nj=12p(xi,yi1)logq(yi1xi;θ)=i=1n[p(xi,yi=1)logq(yi=1∣xi;θ)+p(xi,yi=0)logq(yi=0∣xi;θ)]=i=1n[p(xi,yi=1)logq(yi=1∣xi;θ)+(1p(xi,yi=1))log(1q(yi=1∣xi;θ))]=i=1n[pilogqi+(1pi)log(1qi)]=i=1n[yilogqi+(1yi)log(1qi)](1)(2)(3)(4)(5)

最终即为最小化 l o s s = − ∑ i = 1 n [ y i log ⁡ q i + ( 1 − y i ) log ⁡ ( 1 − q i ) ] loss= -\sum_{i=1}^{n} [y_i \log q_i + (1 - y_i) \log (1 - q_i)] loss=i=1n[yilogqi+(1yi)log(1qi)]

4.2 极大似然估计 角度

  • 将前面 [3.2 分布 似然值] 中的待求解函数直接改写为 q ( x i ; θ ) q(x_i;θ) q(xi;θ) 可得(1)
  • 根据似然函数定义, q ( x i ; θ ) q(x_i;θ) q(xi;θ) 表示模型输出值等于真实值的可能性,这个真实值可能是正,也可能是负
    • 假设当前数据集真实值为[1,0,0,1,1], ∏ i = 1 n q ( x i ; θ ) = q ( y 1 = 1 ∣ x 1 ; θ ) ∗ q ( y 2 = 0 ∣ x 2 ; θ ) ∗ q ( y 3 = 0 ∣ x 3 ; θ ) ∗ q ( y 4 = 1 ∣ x 4 ; θ ) ∗ q ( y 5 = 1 ∣ x 5 ; θ ) \prod_{i=1}^{n}q(x_i;θ)=q(y_1=1|x_1;θ)*q(y_2=0|x_2;θ)*q(y_3=0|x_3;θ)*q(y_4=1|x_4;θ)*q(y_5=1|x_5;θ) i=1nq(xi;θ)=q(y1=1∣x1;θ)q(y2=0∣x2;θ)q(y3=0∣x3;θ)q(y4=1∣x4;θ)q(y5=1∣x5;θ)

    • 公式里可能同时出现 y = 1 y=1 y=1 y = 0 y=0 y=0 两种情况,由于是二分类,这两种情况的概率和为1, q ( y = 0 ) = 1 − q ( y = 1 ) q(y=0) = 1-q(y=1) q(y=0)=1q(y=1),可以构造一个式子统一这两种情况,这个式子能同时表示正负例对应的概率

      • 正例时, y = 1 , 1 − y = 0 y=1,1-y=0 y=1,1y=0,负例时, y = 0 , 1 − y = 1 y=0,1-y=1 y=0,1y=1
        • 统一表达式即为

        q ( x ; θ ) = q ( y = 1 ∣ x ; θ ) y ∗ q ( y = 0 ∣ x ; θ ) 1 − y = q ( y = 1 ∣ x ; θ ) y ∗ ( 1 − q ( y = 1 ∣ x ; θ ) ) 1 − y \begin{align*} q(x;θ) &= q(y=1|x;θ)^y*q(y=0|x;θ)^{1-y} \\ &=q(y=1|x;θ)^y*(1-q(y=1|x;θ))^{1-y} \end{align*} q(x;θ)=q(y=1∣x;θ)yq(y=0∣x;θ)1y=q(y=1∣x;θ)y(1q(y=1∣x;θ))1y

        • 分别将 y = 1 、 0 y=1、0 y=10 代入可得到对应类别的概率表达式
      • 简写 q ( y = 1 ∣ x ; θ ) = q q(y=1|x;θ) = q q(y=1∣x;θ)=q,即可得到

        q ( x ; θ ) = q y ∗ ( 1 − q ) 1 − y q(x;θ) = q^y*(1-q)^{1-y} q(x;θ)=qy(1q)1y

    • 以上即可得到(2)

  • l o g log log,理由同 3.2 节,并根据 l o g log log 公式展开计算,得到(3)~(6)

θ = arg max ⁡ θ ∏ i = 1 n q ( x i ; θ ) = arg max ⁡ θ ∏ i = 1 n q i y i ∗ ( 1 − q i ) 1 − y i = arg max ⁡ θ log ⁡ ( ∏ i = 1 n q i y i ∗ ( 1 − q i ) 1 − y i ) = arg max ⁡ θ ∑ i = 1 n [ log ⁡ q i y i + log ⁡ ( 1 − q i ) 1 − y i ] = arg max ⁡ θ ∑ i = 1 n [ y i log ⁡ q i + ( 1 − y i ) log ⁡ ( 1 − q i ) ] = arg min ⁡ θ − ∑ i = 1 n [ y i log ⁡ q i + ( 1 − y i ) log ⁡ ( 1 − q i ) ] \begin{align*} θ&=\argmax\limits_{θ} \prod_{i=1}^{n}q(x_i;θ) \tag{1}\\ &=\argmax\limits_{θ} \prod_{i=1}^{n} q_i^{y_i}*(1-q_i)^{1-y_i} \tag{2}\\ &=\argmax\limits_{θ} \log(\prod_{i=1}^{n}q_i^{y_i}*(1-q_i)^{1-y_i}) \tag{3}\\ &=\argmax\limits_{θ}\sum_{i=1}^{n} [\log q_i^{y_i} + \log (1-q_i)^{1-y_i}] \tag{4}\\ &=\argmax\limits_{θ}\sum_{i=1}^{n} [y_i\log q_i + (1-y_i)\log (1-q_i)] \tag{5}\\ &=\argmin\limits_{θ}-\sum_{i=1}^{n} [y_i\log q_i + (1-y_i)\log (1-q_i)] \tag{6} \end{align*} θ=θargmaxi=1nq(xi;θ)=θargmaxi=1nqiyi(1qi)1yi=θargmaxlog(i=1nqiyi(1qi)1yi)=θargmaxi=1n[logqiyi+log(1qi)1yi]=θargmaxi=1n[yilogqi+(1yi)log(1qi)]=θargmini=1n[yilogqi+(1yi)log(1qi)](1)(2)(3)(4)(5)(6)

与 4.1 节计算得到的损失函数相等

参考:
1、https://www.zhihu.com/question/41252833
2、https://cloud.tencent.com/developer/article/2014526
3、https://www.zhihu.com/question/54082000/answer/145495695?utm_source=com.miui.notes&utm_medium=social
4、https://www.cnblogs.com/wangguchangqing/p/12068084.html

相关文章:

两个角度理解「交叉熵损失函数」

目录 前言一、交叉熵 角度1、计算机基础&#xff08;1&#xff09;编码&#xff08;2&#xff09;数据分布 2、熵 相关2.1 信息量2.2 信息熵2.3 相对熵2.4 最小化「相对熵」还是「交叉熵」 3、公式推导3.1 信息量3.2 信息熵3.3 相对熵 二、极大似然估计 角度1、似然函数1.1 二次…...

深挖vue3基本原理之一 —— 响应式系统(Reactivity System)

响应式系统&#xff08;Reactivity System&#xff09; 1.1 基于 Proxy 的响应式代理 在 Vue 3 中&#xff0c;响应式系统的核心是使用 ES6 的 Proxy 来替代 Vue 2 里的 Object.defineProperty 方法&#xff0c;以此实现更加全面和强大的响应式追踪功能。下面我们来详细剖析这…...

解锁Rust:融合多语言特性的编程利器

如果你曾为理解Rust的特性或它们之间的协同工作原理而苦恼,那么这篇文章正是为你准备的。 Rust拥有许多令人惊叹的特性,但这些特性并非Rust所独有。实际上,Rust巧妙地借鉴了众多其他语言的优秀特性,并将它们融合成了一个完美的整体。深入了解Rust这些重要特性的来源以及它是…...

AI编程01-生成前/后端接口对表-豆包(或Deepseek+WPS的AI

前言: 做过全栈的工程师知道,如果一个APP的项目分别是前端/后端两个团队开发的话,那么原型设计之后,通过接口文档进行开发对接是非常必要的。 传统的方法是,大家一起定义一个接口文档,然后,前端和后端的工程师进行为何,现在AI的时代,是不是通过AI能协助呢,显然可以…...

[AUTOSAR通信] - PDUR模块解读

点击订阅专栏不迷路 文章目录 一、 PDUR模块概述二、功能描述2.1 发送路由功能2.2 接收路由功能2.3 网关路由功能2.4 路由控制功能 三、配置項介紹3.1. PduRBswModules3.2. PduRGeneral3.3. PduRRoutingTables3.4. PduRRoutingPath3.5. PduRSrcPdu3.6. PduRDestPdu 四、总结 &g…...

伺服报警的含义

前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任软件经理&#xff0c;从事C#上位机软件开发8年以上&#xff01;我们在开发C#的运动控制程序的时候&#xff0c;一个必要的步骤就是设置伺服报警信号的…...

物联网(IoT)如何与人工智能(AI)的结合

物联网&#xff08;IoT&#xff09;与人工智能&#xff08;AI&#xff09;的结合是当前技术发展的重要趋势&#xff0c;通常被称为 AIoT&#xff08;人工智能物联网&#xff09;。这种结合通过将AI的计算能力和数据分析能力与物联网的海量设备连接能力相结合&#xff0c;实现了…...

有哪些PHP开源框架属于是“高开疯走”的?

“高开疯走”是一个网络流行语或者谐音梗。可能是指一开始起点很高&#xff08;高开&#xff09;&#xff0c;然后发展迅速或者变得非常牛&#xff08;疯走&#xff09;。 在PHP生态中&#xff0c;一些框架面对市场的风起云涌&#xff0c;能持续保持高质量发展&#xff0c;切实…...

本地部署DeepSeek摆脱服务器繁忙

由于图片和格式解析问题&#xff0c;可前往 阅读原文 最近DeepSeek简直太火了&#xff0c;频频霸榜热搜打破春节的平静&#xff0c;大模型直接开源让全球科技圈都为之震撼&#xff01;再次证明了中国AI的换道超车与崛起 DeepSeek已经成了全民ai&#xff0c;使用量也迅速上去了…...

Miniforge —— 轻量化的 conda 解决方案

引言 在日常使用中&#xff0c;我们常常使用 Anaconda 或 Miniconda 来管理 Python 环境和包。但由于 Anaconda/Miniconda 属于商业产品&#xff0c;当企业规模超过一定人数时就会涉及付费问题。相比之下&#xff0c;Miniforge 是由社区主导维护的一个完全免费的替代方案&…...

GO语言基础知识

一、引言 在当今快速发展的软件开发领域&#xff0c;Go语言&#xff08;又称Golang&#xff09;凭借其简洁的语法、强大的并发支持和高效的性能&#xff0c;逐渐成为许多开发者的首选编程语言之一。Go语言由Google团队开发&#xff0c;自2009年发布以来&#xff0c;已经在云原…...

Electron 全面解析:跨平台桌面应用开发指南

引言 在当今多平台并存的数字时代&#xff0c;如何高效开发跨平台桌面应用成为开发者面临的重要挑战。Electron作为GitHub开源的跨平台框架&#xff0c;凭借其独特的Web技术融合能力&#xff0c;已成为构建桌面应用的热门选择。本文将深入探讨Electron的核心原理、开发实践及未…...

git 克隆指定 tag 的项目

git 克隆指定 tag 的项目 一、克隆指定tag的项目二、验证克隆结果 一、克隆指定tag的项目 以 tinyxml2项目 为例说明&#xff1a; git clone --branch V10.0.0 https://github.com/leethomason/tinyxml2.git解释&#xff1a; git clone&#xff1a;这是克隆一个远程仓库的命…...

pytorch笔记:mm VS bmm

1 bmm (batch matrix multiplication) 批量矩阵乘法&#xff0c;用于同时处理多个矩阵的乘法bmm 的输入是两个 3D 张量&#xff08;batch of matrices&#xff09;&#xff0c;形状分别为 (batch_size, n, m) 和 (batch_size, m, p)bmm 输出的形状是 (batch_size, n, p) 2 mm…...

《qt open3d中添加最远点采样》

qt open3d中添加最远点采样 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionFilterFarthestDownSample_triggered();void MainWindow::on_...

自然语言处理NLP入门 -- 第二节预处理文本数据

在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;数据的质量直接影响模型的表现。文本预处理的目标是清理和标准化文本数据&#xff0c;使其适合机器学习或深度学习模型处理。本章介绍几种常见的文本预处理方法&#xff0c;并通过 Python 代码进行示例。 2.1 文本清理…...

depcheck检查node.js项目中未使用和缺失依赖的工具

depcheck检查node.js项目中未使用和缺失依赖的工具 一、安装二、使用方法 depcheck 是一个用于检查 Node.js 项目中未使用依赖项和缺失依赖项的工具。以下为你详细介绍它的相关信息、使用方法和作用。 主要作用: 1.发现未使用的依赖 在项目开发过程中&#xff0c;我们可能会安…...

正则表达式(竞赛篇)

为了更深入了解正则表达式&#xff0c;我们需要首先学习与正则表达式有关的类以及方法。如Pattern和Matcher类&#xff0c;以及部分字符串方法。 我们这里先将简单的字符串方法(String类)进行讲解 在Java中&#xff0c;String类提供了许多用于字符串操作的方法&#xff0c;其中…...

国科大 2024-2025秋 大数据分析课程期末复习重点

教师&#xff1a;靳小龙、刘盛华 博主在做期末复习时&#xff0c;发现这门课的资料少之又少&#xff0c;搜遍全网只能找到几份作业答案。特此将本学期老师画的重点分享给学弟学妹们&#xff0c;希望对大家的复习有所帮助。 靳小龙老师部分&#xff1a; 大数据与大数据分析简…...

使用Python爬虫获取淘宝Custom API接口数据

一、引言 淘宝作为中国最大的电商平台之一&#xff0c;其提供的API接口为开发者提供了丰富的数据访问能力。通过淘宝的Custom API接口&#xff0c;开发者可以获取商品详情、店铺信息、订单数据等多种资源。这些数据对于电商运营、市场分析、竞品监控等场景具有极高的价值。本文…...

人生的转折点反而迷失了方向

就像我老婆说的&#xff0c;我是抽空结了一个婚。今天是上班的第三天&#xff0c;不知道是出于何种原因&#xff0c;自己反而陷入了深深的困境&#xff0c;没有了斗志&#xff0c;原因也找不出来&#xff0c;白天在公司没有很大量的产出&#xff0c;晚上回去是想学一学&#xf…...

Web应用项目开发 ——Spring Boot邮件发送

一.邮件发送介绍 邮件发送是一个非常常见的功能&#xff0c;注册时的身份认证、重要通知发送等都会用到邮件发送。在现代的Web应用程序中&#xff0c;邮件发送功能是非常常见且重要的一部分&#xff0c;Spring Boot框架提供了简单且强大的方式来实现邮件发送功能。Spring中提供…...

mit6.824-lab1

1.任务及要求 https://pdos.csail.mit.edu/6.824/labs/lab-mr.html 2 Coordinator 与 Worker 的设计分析 2.1 Coordinator&#xff08;协调器&#xff09;的核心职责 协调器是 MapReduce 系统的核心控制节点&#xff0c;负责全局任务调度与状态管理&#xff0c;具体功能如下…...

Vision Transformer:打破CNN垄断,全局注意力机制重塑计算机视觉范式

目录 引言 一、ViT模型的起源和历史 二、什么是ViT&#xff1f; 图像处理流程 图像切分 展平与线性映射 位置编码 Transformer编码器 分类头&#xff08;Classification Head&#xff09; 自注意力机制 注意力图 三、Coovally AI模型训练与应用平台 四、ViT与图像…...

linux查看所有程序占用的本地端口

sudo ss -tulwnp ss是Socket Statistics的缩写&#xff0c;用来替代旧的netstat工具&#xff0c;功能更强大&#xff0c;执行更快。它用于查看系统的网络连接情况&#xff0c;包括TCP、UDP等协议的信息。 查阅ss的帮助文档&#xff08;man ss&#xff09;&#xff0c;发现选项…...

java后端开发day15--字符串(一)

&#xff08;以下内容全部来自上述课程&#xff09; 1.API &#xff08;Application Programming Interface 应用程序编程接口&#xff09; 1.简单理解 简单理解&#xff1a;API就是别人已经写好的东西&#xff0c;我们不需要自己编写&#xff0c;直接使用即可。 Java API&…...

C++STL容器之map的使用及复现

map 1. 关联式容器 vector、list、deque、forward_list(C11) 等STL容器&#xff0c;其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身&#xff0c;这样的容器被统称为序列式容器。而 map、set 是一种关联式容器&#xff0c;关联式容器也是用来存储数据的&#xf…...

lvs的DR模式

基于Linux的负载均衡集群软件 LVS 全称为Linux Virtual Server,是一款开源的四层(传输层)负载均衡软件 Nginx 支持四层和七层(应用层)负载均衡 HAProxy 和Nginx一样,也可同时支持四层和七层(应用层)负载均衡 基于Linux的高可用集群软件 Keepalived Keepalived是Linux…...

FlutterWeb实战:07-自动化部署

Flutter Web 开发打包后&#xff0c;可以手动发布到服务器上&#xff0c;通过 nginx 来托管静态页面。本文将介绍如何将这一过程自动化。 整体思路 使用脚本自动化构建&#xff0c;然后使用 Docker 打包成镜像&#xff0c;最后部署在服务器上。 自动化构建 这里使用 GitLab-…...

剑指 Offer II 020. 回文子字符串的个数

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20020.%20%E5%9B%9E%E6%96%87%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E4%B8%AA%E6%95%B0/README.md 剑指 Offer II 020. 回文子字符串的个数 题目描述 …...

vue中附件下载及打印功能

1.附件dom 注&#xff1a;fileList是由后台返回的附件数组&#xff0c;数组中包含附件名称fileName,附件地址url&#xff0c;附件id等信息 <el-form-item label"附件" style"width: 100% !important;" v-if"modelTypeborrowDetail"><d…...

Python(十九)实现各大跨境船公司物流查询数据处理优化

一、前言 之前已经实现了常用 跨境物流船司 基础信息查询功能&#xff0c;如下所示 实现各大跨境船公司[COSCO/ZIM/MSK/MSC/ONE/PIL]的物流信息查询&#xff1a;https://blog.csdn.net/Makasa/article/details/145484999?spm1001.2014.3001.5501 然后本章在其基础上做了一些…...

android 安装第三方apk自动赋予运行时权限

摘要&#xff1a;行业机使用场景点击运行时权限很麻烦&#xff0c;而随着android的演进&#xff0c;对于权限的管控越发严格。故本文通过对系统的修改实现第三方app在运行时直接获取全部权限。 通过属性ro.perms.force_grant控制功能开关。 Index: frameworks/base/services/…...

java8、9新特性

JAVA8 Lambda 表达式 (parameters) -> expression 或 (parameters) ->{ statements; } 提供了一种更为简洁的语法&#xff0c;尤其适用于函数式接口。相比于传统的匿名内部类&#xff0c;Lambda 表达式使得代码更为紧凑&#xff0c;减少了样板代码的编写。 它允许将函…...

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<9>

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 这一节是对之前内容的修整 目录 一、传值调用和传址调用二、数组名的理解三、指针访问数组四、结尾 一…...

Java网络编程入门

网络编程是指通过计算机网络进行数据传输和通信的过程。在Java中&#xff0c;网络编程提供了一套强大的API&#xff0c;使得开发者能够轻松地创建网络应用程序。本文将介绍Java网络编程的基本概念和一些常用的类。 1.网络编程的基本概念 在网络编程中&#xff0c;我们通常需要…...

2.4 构建模块化应用

第4章&#xff1a;构建模块化应用 模块化应用是 JDK 9 的核心特性之一&#xff0c;通过模块化系统&#xff08;Project Jigsaw&#xff09;实现代码的强封装和显式依赖管理。本章详细讲解如何从零构建一个模块化应用&#xff0c;包括模块定义、编译、打包、运行及调试。 4.1 模…...

14.1 Auto-GPT 项目定位与价值解读:揭开自主智能体的神秘面纱

Auto-GPT 项目定位与价值解读:揭开自主智能体的神秘面纱 关键词:Auto-GPT 核心机制、自主任务分解、LangChain 智能体、持续自我优化、AGI 实践路径 一、为什么 Auto-GPT 能引爆技术圈? 1.1 从工具到员工的范式转移 维度传统AI系统Auto-GPT 智能体输入方式精确指令(“翻译…...

【Elasticsearch】分析器的构成

在Elasticsearch中&#xff0c;分析器&#xff08;Analyzer&#xff09;是一个处理文本数据的管道&#xff0c;它将输入的文本转换为一系列词元&#xff08;tokens&#xff09;&#xff0c;并可以对这些词元进行进一步的处理和规范化。分析器由以下三个主要组件构成&#xff1a…...

2025 年前端开发现状分析:卷疯了还是卷麻了?

一、前端现状&#xff1a;框架狂飙&#xff0c;开发者崩溃 如果你是个前端开发者&#xff0c;那么你大概率经历过这些场景&#xff1a; 早上打开 CSDN&#xff08;或者掘金&#xff0c;随便&#xff09;&#xff0c;发现又有新框架发布了&#xff0c;名字可能是 VueXNext.js 之…...

单例模式详解(Java)

单例模式详解(Java) 一、引言 1.1 概述单例模式的基本概念和重要性 单例模式是一种常用的软件设计模式,它确保一个类在整个应用程序中只有一个实例,并提供一个全局访问点来访问这个唯一实例。这种模式在资源管理、配置设置和日志记录等方面非常有用,因为它们通常只需要…...

后端面试题

以下是一些常见的后端面试题: 一、通用基础 请简述HTTP协议的工作原理。 答案: HTTP是基于请求 - 响应模型的协议。客户端(通常是浏览器)向服务器发送一个HTTP请求,请求包含请求行(包含请求方法,如GET、POST等、请求的URL和HTTP版本)、请求头(包含诸如浏览器类型、接…...

深入理解Linux网络随笔(一):内核是如何接收网络包的(上篇)

深入理解Linux网络随笔&#xff08;一&#xff09;&#xff1a;内核是如何接收网络包的&#xff08;上篇&#xff09; 1、TCP/IP模型概述 从Linux视角看&#xff0c;TCP/IP网络分层模型包括用户空间和内核空间。用户空间&#xff08;应用层&#xff09;负责HTTP、FTP等协议的…...

SQL-leetcode—1393. 股票的资本损益

1393. 股票的资本损益 Stocks 表&#xff1a; ---------------------- | Column Name | Type | ---------------------- | stock_name | varchar | | operation | enum | | operation_day | int | | price | int | ---------------------- (stock_name, operation_day) 是这张…...

热更图片方案

项目平常需要对线上一些图片资源修正&#xff0c;所以需要热更图片功能。 远端入口新增字段配json文件 {"1.1.22030303":{"sprite":{"assets/ui/common/images/acient_gold.png" : "https://aaaa.png","assets/ui/common/image…...

Flutter PIP 插件 ---- iOS Video Call

以下是一篇关于在 iOS 中实现画中画(PiP)功能的技术博客: iOS 画中画(PiP)功能实现指南 简介 画中画(Picture in Picture, PiP)是一项允许用户在使用其他应用时继续观看视频内容的功能。本文将详细介绍如何在 iOS 应用中实现 PiP 功能。 系统要求 iOS 15.0 及以上版本AVKi…...

本地部署DeepSeek开源大模型:从零开始的详细教程

友情提示&#xff1a;本文内容全部由银河易创&#xff08;https://ai.eaigx.com&#xff09;AI创作平台deepseek-reasoner模型生成&#xff0c;仅供参考。请根据具体情况和需求进行适当的调整和验证。 近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;大模型在各个领…...

java项目之基于SSM会议管理系统的设计与实现源码(ssm+mysql)

项目简介 基于SSM会议管理系统的设计与实现实现了以下功能&#xff1a; 基于SSM会议管理系统的设计与实现的主要使用者分为&#xff1a;管理员登录后修改个人的密码。用户管理中&#xff0c;对公司内的用户进行管理&#xff0c;包括会议管理员和员工&#xff0c;管理部门信息…...

PortSwigger——WebSockets vulnerabilities

文章目录 一、WebSockets二、Lab: Manipulating WebSocket messages to exploit vulnerabilities三、Lab: Manipulating the WebSocket handshake to exploit vulnerabilities四、Using cross-site WebSockets to exploit vulnerabilities4.1 跨站WebSocket劫持&#xff08;cro…...

STM32系统架构介绍

STM32系统架构 1. CM3/4系统架构2. CM3/4系统架构-----存储器组织结构2.1 寄存器地址映射&#xff08;特殊的存储器&#xff09;2.2 寄存器地址计算2.3 寄存器的封装 3. CM3/4系统架构-----时钟系统 STM32 和 ARM 以及 ARM7是什么关系? ARM 是一个做芯片标准的公司&#xff0c…...