接着上篇博客继续,我们发现,概率生成模型最终推导函数,其本质还是寻找参数w和b,所以可以设置一个函数,直接来寻找最优的w和b

fw,b(x)=Pw,b(C1x)=σ(z)σ(z)=11+exp(z)z=wx+bf_{w,b}(x)=P_{w,b}(C_1|x)=\sigma(z)\\ \sigma(z)=\frac{1}{1+exp(-z)}\\ z = w \cdot x+b

相较于线性回归,逻辑回归做的事情便是将 wx+b 放入 sigmoid 函数中,使其输出一直处于0~1之间。

在我们确定了函数之后,便是应该再定义一个损失函数。
20220818202556
假设有一组训练数据,其数据大小为 N,而且分别有自己的类别标签C。给定一组 w 和 b,就可以计算这组w,b下产生上图N个训练数据的概率,fw,b(x3)f_{w,b}(x^3)表示 x3x^3 属于C1的概率,但是其真实分类为C2,所以要用 1fw,b(x3)1-f_{w,b}(x^3)

L(w,b)L(w,b)L(w,b)L(w,b)取得的数值最大的时候,即取得最好的w和b,w,b=argmaxw,bL(w,b)w^∗,b^∗ = argmax_{w,b}L(w,b)

20220818204159

在此我们可以做一个变换,对 L(w,b)L(w,b)取对数不影响其单调性,然后再加上符号,单调性与之前的相反,那么就是求 lnL(w,b)-lnL(w,b) 的最小值。对于 lnL(w,b)-lnL(w,b),我们可以将其写为

lnL(w,b)=lnfw,b(x1)=[y^lnw,bf(x1)+(1y^)ln(1fw,b(x1))]-lnL(w,b) \\ = -lnf_{w,b}(x^1)\\ =-[\hat yln_{w,b}f(x^1)+(1-\hat y)ln(1-f_{w,b}(x^1))]

其实很好理解,当 y^\hat y 为 1 的时候

lnfw,b(x)=[1lnw,bf(x)+(11)ln(1fw,b(x))]=lnfw,b(x)lnf_{w,b}(x)=[1 \cdot ln_{w,b}f(x)+(1-1) \cdot ln(1-f_{w,b}(x))]=lnf_{w,b}(x)

y^\hat y为 0 的时候

ln(1fw,b(x))=[0lnw,bf(x)+(10)ln(1fw,b(x))]=ln(1fw,b(x))ln(1-f_{w,b}(x))=[0 \cdot ln_{w,b}f(x)+(1-0) \cdot ln(1-f_{w,b}(x))]=ln(1-f_{w,b}(x))

所以便是有了下图的转化

20220818211509

即两个伯努利分布的交叉熵,假设有两个分布 p 和 q,这两个分布的交叉熵就是H(p,q),交叉熵代表的含义是这两个分布有多接近,如果两个分布是一模一样的话,那计算出的交叉熵就是0,也就是说,当交叉熵为零的时候,说明我们的函数完全符合实际的分布。
如果把function的输出和target都看作是两个伯努利分布,所做的事情就是希望这两个分布越接近越好,交叉熵最小,Loss就最小。

对找最好的function,就是最小化−lnL(w,b),用梯度下降方法即可。

  • 计算算出lnfw,b(xn)lnf_w,_b(x^n)wiw_i​​的偏微分
  • fw,b(x)​f_w,_b(x)​可以用 σ(z)\sigma{(z)}​表示,而z可以用 ​wiw_i ​和 $b $表示,所以可以利用链式法则展开
  • 计算 ln(1fw,b(xn))​ln(1-f_{w,_b}(x^n))wi​w_i​的偏微分
  • 继续使用链式法则进行计算

(lnx)=1x(lnx)^′=\frac{1}{x},sigmoid函数求导:σ(x)=σ(x)(1σ(x))\sigma(x)^′=\sigma(x)⋅(1−\sigma(x))

20220818213456

20220818213521

下图则为最终的结果:

20220818213551

得到了梯度之后,便是可以再度使用梯度下降进行 wiw_i 的更新。对于 Loss 函数的选择,我们使用交叉熵作为其损失。

上面说的是二分类问题,对于多分类应该如何解决呢?

20220818215308