最近在学习李宏毅教授的机器学习课程,讲解的非常细致,推倒也非常详细,同时,也和线性回归做了类比,非常不错,现在这里总结一下。
LR二分类推倒过程
Input :
$x^1$ | $x^2$ | $x^3$ | … | $x^n$ |
---|---|---|---|---|
$C_1$ | $C_1$ | $C_2$ | … | $C_2$ |
$\hat{y^1}=1$ | $\hat{y^2}=1$ | $\hat{y^3}=0$ | $\hat{y^n}=0$ |
其中第一行表示所有的变量,第二行表示属于的类别,这里之后两类。
最大似然估计
由于LR使用的是回归函数是$\frac{1}{1+e^{-x}}$, 值域是(0,1),可以天然的表示概率,我们用$f_{w,b}(x)$表示x属于$C_1$ 的概率,w,b表示参数,那么属于$C_2$的概率可以表示为$1-f_{w,b}(x)$。这个时候,我们就能够用最大似然估计来解这个问题。
定义 $L(w,b) = f_{w,b}(x^1)*f_{w,b}(x^2)(1-f_{w,b}(x^3))…$
那么:$w^{*}, b^{*} = arg\, \underset{w,b}{max}L(w, b)$
$w^{*}, b^{*} = arg\, \underset{w,b}{min}-ln(L(w,b))$
即:将最大似然估计转化成了loss,并且将之前的乘法转换成了加法,下面具体求解:
$arg\,\underset{w,b}{min}-ln(L(w,b)) = -ln(f_{w,b}(x^1))-ln(f_{w,b}(x^2))-ln(1-f_{w,b}(x^3))$
符号变换
下面需要做下符号变换,将所有的$C_1$看成1, 所有的$C_2$看成0, 并记为:$\hat{y^n}$
那么,为了将两种格式的式子写成一个式子,我们做如下的变换:
$-ln(f_{w,b}(x^1))=-[\hat{y^1}ln(f(x^1)) + (1-\hat{y^1})ln(1-f(x^1))]$
$-ln(f_{w,b}(x^2))=-[\hat{y^2}ln(f(x^2)) + (1-\hat{y^2})ln(1-f(x^2))]$
$-ln(f_{w,b}(x^3))=-[\hat{y^3}ln(f(x^3)) + (1-\hat{y^3})ln(1-f(x^3))]$
只需要简单带入进去就可以理解了。
合并起来:
$\sum\limits_{n}-[\hat{y^n}ln(f(x^n)) + (1-\hat{y^n})ln(1-f(x^n))]$,这个其实就是两个伯努利分布的交叉熵,也就是说LR的loss func使用的是交叉熵。
求导
对其中一个变量$w_i$进行求导,我们只需要$ln(f(x^n))$和$ln(1-f(x^n))$对$w_i$进行求导。
$\frac{\partial ln(f_{w,b}(x))}{\partial w_i} = \frac{\partial ln(f_{w,b}(x))}{\partial z}\frac{\partial z}{\partial w_i}$,$z=wx + b = \sum\limits_{i}w_ix_i+b$, $f_{w,b}(x)) = \frac{1}{1+e^{-z}}$
化简后可以得到:
$\sum\limits_{n}-(\hat{y^n} - f_{w,b}(x^n))*{x^{n}_{i}}$
由此得到参数更新的方法:
$w_i \leftarrow w_i - \eta\sum\limits_{n}-(\hat{y^n} - f_{w,b}(x^n))*{x^{n}_{i}}$