此篇博文是基于李宏毅老师此视频的学习总结。此部分主要介绍,Logistic Regression模型。
一、课程部分内容记录
(1) Logistics Regression和Linear Regression对比
|
Logistics Regression |
Linear Regression |
| Step 1: |
fw,b(x)=σ(∑iwixj+b) Output:value between 0 and 1 |
fw,b(x)=∑iwixj+b Output:any value |
| Step 2: |
Training data:(xn,y^n) y^:Class1 = 1,Class2 = 0 L(f)=∑nC(f(xn),y^n)
|
Training data:(xn,y^n) y^n:real value L(f)=21∑n(f(xn)−y^n)2
|
| Step 3: |
wi=wi−η∑n−(y^−fw,b(xn))xin |
wi=wi−η∑n−(y^n−fw,b(xn))xin |
交叉熵:C(f(xn),y^n)=−[y^nlnfw,b(xn)+(1−y^n)ln(1−fw,b(xn))]
(2) Discrimination和Generative(判别模型与生成模型)
|
Discrimination Model |
Generative Model |
| Function |
$P(C_1 |
x) = \sigma(w.x+b)$ |
| Target |
w , b
|
μ1,μ2,Σ−1
|
生成模型的好处
- 对于较少的训练数据,比较有效;
- 针对具有噪音的数据(数据标记有问题)有效;
- 可以从不同来源估计先验概率和类依赖概率。
(3) Limitation of Logistic Regression
Logistic Regression模型具有限制,因为根据Logistic Regression模型找到的分类函数是一条直线,针对某些情况,会出现不适用:

如图,你无法找到一条直线将Class1和Class2完全分开。
解决方法:
- 特征转化,转化成容易分类的特征:
- 级联逻辑回归模型:
二、学习打卡
(1) Logistic Regression损失函数
LR损失函数的作用就是评价函数的好坏,也就是Step 2:Goodness of a Function,这个作用。
- 假设,训练数据如下:
假设存在fw,b(x)=Pw,b(C1∣x),表示选出x的条件下,x是属于C1的概率。
-
根据之前的学习,为了求到最优参数w和b,设计损失函数:
L(w,b)=fw,b(x1)fw,b(x2)(1−fw,b(x3))…(1.1)
最优的w∗和b∗就是使损失函数值最大的那对:
w∗,b∗=argw,bmaxL(w,b)=argw,bmin−lnL(w,b)(1.2)
-
于是,可得:
−lnL(w,b)=−lnfw,b(x1)−lnfw,b(x2)−ln(1−fw,b(x3))...(1.3)
-
转变数据对应方式:

图中有错误,y^2=1,以及y^3=0。因此,推导公式变成以下形式:
−lnfw,b(x1)=−[y^1lnf(x1)+(1−y^1)ln(1−f(x1))]−lnfw,b(x2)=−[y^2lnf(x2)+(1−y^2)ln(1−f(x2))]−ln(1−fw,b(x3))=−[y^3lnf(x3)+(1−y^3)ln(1−f(x3))](1.4)
结果如图:

5. 对公式 (1.1)(1.3)(1.4)综合,得到下式:
L(w,b)=fw,b(x1)fw,b(x2)(1−fw,b(x3))…fw,b(xN)−lnL(w,b)=−lnfw,b(x1)−lnfw,b(x2)−ln(1−fw,b(x3))...−lnL(w,b)=n∑[y^nlnfw,b(xn)+(1−y^n)ln(1−fw,b(xn))](1.5)
6. 最后,展示如下图所示的形式:

其中cross entropy是交叉熵,表示两个分布p和q之间的接近程度。
(2) Logistic Regression梯度下降
LR梯度下降的目的就是在LR损失函数的基础上,找到最好的函数。
-
根据推导结果公式1.5,损失函数对w进行偏微分:
∂wi−lnL(w,b)=n∑[y^n∂wilnfw,b(xn)+(1−y^n)∂wiln(1−fw,b(xn))](2.1)
-
根据上一节课程的结果,知道:函数fw,b(x)是一个关于z的SIGMOD函数:
fw,b(x)=σ(z)=1+e−z1z=w.x+b=i∑wixi+b(2.2)
-
计算公式(2.1)的偏微分,首先计算左侧偏微分:
∂wi∂lnfw,b(x)=∂z∂lnfw,b(x).∂wi∂z(2.3)
结合公式(2.2)对公式(2.3)细分:
∂z∂lnfw,b(x)=∂z∂lnσ(z)=σ(z)1.∂z∂σ(z)=σ(z)1.σ(z)(1−σ(z))=1−σ(z)(2.4)
∂wi∂z=xi(2.5)
结合公式(2.4)和(2.5),可得:
∂wi∂lnfw,b(x)=(1−fw,b(xn))xin(2.6)
同理,计算公式(2.1)右侧的偏微分:
∂wi∂ln(1−fw,b(x))=∂z∂(1−lnfw,b(x)).∂wi∂z(2.7)
结合公式(2.2)对公式(2.7)细分:
∂wi∂ln(1−fw,b(x))=1−σ(z)1.∂z∂σ(z)=1−σ(z)1.σ(z)(1−σ(z))=σ(z)(2.8)
∂wi∂z=xi(2.9)
结合公式(2.8)和(2.9),可得:
∂wi∂ln(1−fw,b(x))=fw,b(xn)xin(2.10)
- 将偏微分计算结果代入公式(2.1)中,可得:
∂wi−lnL(w,b)=n∑−[y^n(1−fw,b(xn))xin−(1−y^n)fw,b(xn)xin]=n∑−(y^−fw,b(xn))xin(2.11)
因此,梯度下降的迭代式:
wi=wi−ηn∑−(y^−fw,b(xn))xin(2.12)
从结果来看,当前输出fw,b(xn)与实际值y^的差距越大,梯度更新值越大。
(3) Softmax原理
在机器学习中,softmax函数广泛使用于多分类的场景中。他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。因此,经过softmax处理后的数据,输出的是每个分类被取到的概率。下图是李老师在课件中展示的softmax计算原理:

假设有一系列不同类别的数,zi表示第i个元素,一共有j个数。这个元素的softmax值就是:
Si=∑jezjezi
(4) softmax损失函数
首先,重新定义一个Softmax函数:
Si=∑iCeiVeVi(3.1)
其中,Vi 是经过模型函数之后输出的值。i表示第i类,总的类别个数为C。Si 表示的是当前元素的指数与所有元素指数和的比值。
根据上节可知,softmax的输出是:
Si=∑j=1CeSjeSyi(3.2)
Syi是正确类别对应的线性得分函数,Si 是正确类别对应的 Softmax输出。由于 ln 运算符不会影响函数的单调性,我们对 Si 进行 $ln $操作:
lnSi=ln∑j=1CeSjeSyi(3.3)
我们希望 $S_i $越大越好,即正确类别对应的相对概率越大越好,在 lnSi 前面加个负号,表示损失函数:
Li=−lnSi=−ln∑j=1CeSjeSyi(3.4)
进一步处理:
Li=−ln∑j=1CeSjeSyi=−(syi−lnj=1∑Cesj)=−syi+lnj=1∑Cesj(3.5)
于是,损失函数简化成公式(3.5)。
(5) Softmax梯度下降
Softmax梯度下降是对权重参数进行求导:
∂wi∂Li=∂wi−syi+ln∑j=1Cesj=∂wi−syi+∂wiln∑j=1Cesj(4.1)
其中,syj=wi.x+bi,sj=wj.x+bj
∂wi−syi=∂wi−(wi.x+bi)=−x∂wiln∑j=1Cesj=∂wilnes1+lnes2+...+lnesC=w1.x+b1x+w2.x+b2x+...+wC.x+bCx(4.2)
最终,得到:
∂wi∂Li=−x+j∑Cwj+bjx(4.3)
因此,梯度下降的迭代式:
wi=wi−η(−x+j∑Cwj+bjx)(4.4)