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

$$
f_{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个训练数据的概率,$f_{w,b}(x^3)$表示 $x^3$ 属于C1的概率,但是其真实分类为C2,所以要用 $1-f_{w,b}(x^3)$。

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

20220818204159

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

$$
-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))]
$$

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

$$
lnf_{w,b}(x)=[1 \cdot ln_{w,b}f(x)+(1-1) \cdot ln(1-f_{w,b}(x))]=lnf_{w,b}(x)
$$

当 $\hat y$为 0 的时候

$$
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),用梯度下降方法即可。

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

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

20220818213456

20220818213521

下图则为最终的结果:

20220818213551

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

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

20220818215308