机器学习&&深度学习——softmax回归(下)

‍作者简介:一位即将上大四,正专攻机器学习的保研er
上期文章:机器学习&&深度学习——softmax回归(上)
订阅专栏:机器学习&&深度学习
希望文章对你们有所帮助

softmax回归(下)

  • 损失函数
    • 对数似然
    • softmax及其导数
    • 交叉熵损失
  • 信息论基础
    • 信息量
    • 重新审视交叉熵
  • 模型预测和评估

以下的内容有些需要用到信息论基础,没有这方便基础的,大家可以先看目录后面的信息论。

损失函数

对数似然

softmax给出了一个向量y hat,我们将其视为“对给定任意输入x的每个类的条件概率”,例如:
y ^ 1 = P ( y = 猫 ∣ x ) \hat{y}_1=P(y=猫|x) y^1=P(y=x)
表示对于给定任意输入x时,y=猫的概率
假设整个数据集{X,Y}具有n个样本,其中索引i的样本由特征向量和独热标签向量组成。我们可以将估计值与实际值进行比较:
P ( Y ∣ X ) = ∏ i = 1 n P ( y ( i ) ∣ x ( i ) ) P(Y|X)=\prod_{i=1}^nP(y^{(i)}|x^{(i)}) P(YX)=i=1nP(y(i)x(i))
根据最大似然估计,我们最大化P(Y|X),相当于最小化负对数似然
− l o g P ( Y ∣ X ) = ∑ i = 1 n − l o g P ( y ( i ) ∣ x ( i ) ) = ∑ i = 1 n l ( y ( i ) , y ^ ( i ) ) -logP(Y|X)=\sum_{i=1}^n-logP(y^{(i)}|x^{(i)})=\sum_{i=1}^nl(y^{(i)},\hat{y}^{(i)}) logP(YX)=i=1nlogP(y(i)x(i))=i=1nl(y(i),y^(i))
其中,对于任何标签y和预测模型y hat,损失函数为:
l ( y , y ^ ) = − ∑ j = 1 q y j l o g y ^ j l(y,\hat{y})=-\sum_{j=1}^qy_jlog\hat{y}_j l(y,y^)=j=1qyjlogy^j
这里的损失函数又叫做交叉熵损失。由于y是一个长度为q的独热编码向量,所以除了一个项以外的所有项j都消失了。由于所有的预测概率,其对数都永远不会大于0。因此,如果正确地预测实际标签,即如果实际标签P(y|x)=1,则损失函数不能进一步最小化。

softmax及其导数

将下面的式子:
y ^ = s o f t m a x ( o ) ,其中 y ^ j = e x p ( o j ) ∑ k e x p ( o k ) \hat{y}=softmax(o),其中\hat{y}_j=\frac{exp(o_j)}{\sum_kexp(o_k)} y^=softmax(o),其中y^j=kexp(ok)exp(oj)
带入
l ( y , y ^ ) = − ∑ j = 1 q y j l o g y ^ j l(y,\hat{y})=-\sum_{j=1}^qy_jlog\hat{y}_j l(y,y^)=j=1qyjlogy^j
可以得到:
l ( y , y ^ ) = − ∑ j = 1 q y j l o g e x p ( o j ) ∑ k = 1 q e x p ( o k ) = ∑ j = 1 q y j l o g ∑ k = 1 q e x p ( o k ) − ∑ j = 1 q y j o j = l o g ∑ k = 1 q e x p ( o k ) − ∑ j = 1 q y j o j l(y,\hat{y})=-\sum_{j=1}^qy_jlog\frac{exp(o_j)}{\sum_{k=1}^qexp(o_k)}\\ =\sum_{j=1}^qy_jlog\sum_{k=1}^qexp(o_k)-\sum_{j=1}^qy_jo_j\\ =log\sum_{k=1}^qexp(o_k)-\sum_{j=1}^qy_jo_j l(y,y^)=j=1qyjlogk=1qexp(ok)exp(oj)=j=1qyjlogk=1qexp(ok)j=1qyjoj=logk=1qexp(ok)j=1qyjoj
考虑相对于任何未规范化预测的导数,我们得到:
∂ o j l ( y , y ^ ) = e x p ( o j ) ∑ k = 1 q e x p ( o k ) − y j = s o f t m a x ( o ) j − y j \partial_{o_j}l(y,\hat{y})=\frac{exp(o_j)}{\sum_{k=1}^{q}exp(o_k)}-y_j=softmax(o)_j-y_j ojl(y,y^)=k=1qexp(ok)exp(oj)yj=softmax(o)jyj
也就是说,导数是我们softmax模型分配的概率与实际发生的情况(独热标签向量表示)之间的差异。这与我们在回归中看到的很相似,其中梯度是观测值与估计值之间的差异。这不是巧合。

交叉熵损失

现在的标签,考虑的是整个结果分布的情况,观察到的不仅仅是一个结果。我们现在用一个概率向量来表示,如(0.1,0.2,0.7),而不是仅包含二元项的向量(0,0,1)。
我们用上式的
l ( y , y ^ ) = − ∑ j = 1 q y j l o g y ^ j l(y,\hat{y})=-\sum_{j=1}^qy_jlog\hat{y}_j l(y,y^)=j=1qyjlogy^j
来定义损失l,它是所有标签分布的与其损失值。这个损失叫做交叉熵损失,是分类问题常用损失之一,下面将通过介绍信息论基础来理解交叉熵损失。

信息论基础

信息论涉及了编码、解码、发送、简洁处理信息

信息论的核心思想就是量化数据中的信息内容。在信息论中,该数值被称为分布P的熵。可以通过下面方程得到:
H [ P ] = ∑ j − P ( j ) l o g P ( j ) H[P]=\sum_j-P(j)logP(j) H[P]=jP(j)logP(j)
信息论指出:为了对从分布p中随机抽取的数据进行编码,我们至少需要H[P]纳特(相当于比特,但是对数底是e而不是2)对其进行编码

信息量

如果我们很容易预测下一个数据,那么这个数据就很容易压缩。可以通过极端例子来理解:假如数据流中的每个数据完全相同,我们就总是知道下一个数据是什么,很容易预测。数据都一样也很好压缩。
如果我们不能完全预测每个事件,我们会觉得“惊异”。用下式:
l o g 1 P ( j ) = − l o g P ( j ) log\frac{1}{P(j)}=-logP(j) logP(j)1=logP(j)
来量化这种惊异程度。
在观察一个事件j时,赋予它主观概率P(j)。则上式的H[P]定义的熵,是当分配的概率真正匹配数据生成过程时的信息量的期望。

重新审视交叉熵

若把H[P]视为“知道真实概率的人所经历的惊异程度”,那么交叉熵H[P,Q]可以视为“主观概率为Q的观察者在看到根据概率P生成的数据时预期差异”。当P=Q时,交叉熵最低,此时H[P,Q]=H[P,P]=H[P]。
总之,我们可以从2方面考虑交叉熵分类目标:
(1)最大化观测数据的似然
(2)最小化传达标签所需的惊异

模型预测和评估

在训练softmax回归模型后,给出任何样本特征,我们可以预测每个输出类别的概率。通常我们使用预测概率最高的类别作为输出类别。如果预测和实际的标签一致,则预测正确。下面将开始使用精度来评估模型的性能。概率=正确预测数/预测总数。

你可能感兴趣的:(机器学习,深度学习,人工智能,线性回归)