李宏毅机器学习笔记4:Logistic Regression

Logistic Regression

Review
  • classification
    通过样本点的均值 u u u和协方差 Σ \Sigma Σ来计算 P ( C 1 ) , P ( C 2 ) , P ( x ∣ C 1 ) , P ( x ∣ C 2 ) P(C_1),P(C_2),P(x|C_1),P(x|C_2) P(C1),P(C2),P(xC1),P(xC2),进而利用 P ( C 1 ∣ x ) = P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) + P ( C 2 ) P ( x ∣ C 2 ) P(C_1|x)=\frac{P(C_1)P(x|C_1)}{P(C_1)P(x|C_1)+P(C_2)P(x|C_2)} P(C1x)=P(C1)P(xC1)+P(C2)P(xC2)P(C1)P(xC1)计算得到新的样本点x属于class 1的概率,由于是二元分类,属于class 2的概率 P ( C 2 ∣ x ) = 1 − P ( C 1 ∣ x ) P(C_2|x)=1-P(C_1|x) P(C2x)=1P(C1x)

  • sigmoid
    推导了 P ( C 1 ∣ x ) = σ ( z ) = 1 1 + e − z P(C_1|x)=\sigma(z)=\frac{1}{1+e^{-z}} P(C1x)=σ(z)=1+ez1,并且在Gaussian的distribution下考虑class 1和class 2共用 Σ \Sigma Σ,可以得到一个线性的z(其实很多其他的Probability model经过化简以后也都可以得到同样的结果)
    P w , b ( C 1 ∣ x ) = σ ( z ) = 1 1 + e − z z = w ⋅ x + b = ∑ i w i x i + b P_{w,b}(C_1|x)=\sigma(z)=\frac{1}{1+e^{-z}} \\ z=w\cdot x+b=\sum\limits_i w_ix_i+b \\ Pw,b(C1x)=σ(z)=1+ez1z=wx+b=iwixi+b
    这里的w和x都是vector,两者的乘积是inner product,从上式中我们可以看出,现在这个model(function set)是受w和b控制的,因此我们不必要再去像前面一样计算一大堆东西,而是用这个全新的由w和b决定的model——Logistic Regression(逻辑回归)

Three Steps of machine learning
Step 1:function set
  • Logistic Regression——逻辑回归

w i w_i wi:weight, b b b:bias, σ ( z ) \sigma(z) σ(z):sigmoid function, x i x_i xi:input

Step 2:Goodness of a function

现在我们有N笔Training data,每一笔data都要标注它是属于哪一个class

假设这些Training data是从我们定义的posterior Probability中产生的(后置概率,某种意义上就是概率密度函数),而w和b就决定了这个posterior Probability,那我们就可以去计算某一组w和b去产生这N笔Training data的概率,利用极大似然估计的思想,最好的那组参数就是有最大可能性产生当前N笔Training data分布的 w ∗ w^* w b ∗ b^* b

似然函数只需要将每一个点产生的概率相乘即可,注意,这里假定是二元分类,class 2的概率为1减去class 1的概率.

由于$L(w,b)$是乘积项的形式,为了方便计算,我们将上式做个变换,由于class 1和class 2的概率表达式不统一,上面的式子无法写成统一的形式,为了统一格式,这里**将Logistic Regression里的所有Training data都打上0和1的标签.**

在这里插入图片描述

现在已经有了统一的格式,我们就可以把要minimize的对象写成一个summation的形式:
− ln ⁡ L ( w , b ) = ∑ n − [ y ^ n ln ⁡ f w , b ( x n ) + ( 1 − y ^ n ) ln ⁡ ( 1 − f w , b ( x n ) ) ] -\ln L(w,b)=\sum\limits_n -[\hat{y}^n \ln f_{w,b}(x^n)+(1-\hat{y}^n) \ln(1-f_{w,b}(x^n))] lnL(w,b)=n[y^nlnfw,b(xn)+(1y^n)ln(1fw,b(xn))]
这里 x n x^n xn表示第n个样本点, y ^ n \hat{y}^n y^n表示第n个样本点的class标签(1表示class 1,0表示class 2),最终这个summation的形式,里面其实是两个Bernouli distribution(两点分布)的cross entropy(交叉熵)

假设有如上图所示的两个distribution p和q,它们的交叉熵就是 :

H ( p , q ) = − ∑ x p ( x ) ln ⁡ ( q ( x ) ) H(p,q)=-\sum\limits_{x} p(x) \ln (q(x)) H(p,q)=xp(x)ln(q(x))
这也就是之前的推导中在 − ln ⁡ L ( w , b ) -\ln L(w,b) lnL(w,b)前加一个负号的原因.

cross entropy交叉熵的含义是表达这两个distribution有多接近,如果p和q这两个distribution一模一样的话,那它们算出来的cross entropy就是0(详细解释在“信息论”中),而这里 f ( x n ) f(x^n) f(xn)表示function的output, y ^ n \hat{y}^n y^n表示预期 的target,因此交叉熵实际上表达的是希望这个function的output和它的target越接近越好

总之,我们要找的参数实际上就是:
w ∗ , b ∗ = arg ⁡ max ⁡ w , b L ( w , b ) = arg ⁡ min ⁡ w , b ( − ln ⁡ L ( w , b ) = ∑ n − [ y ^ n ln ⁡ f w , b ( x n ) + ( 1 − y ^ n ) ln ⁡ ( 1 − f w , b ( x n ) ) ] w^*,b^*=\arg \max\limits_{w,b} L(w,b)=\arg\min\limits_{w,b}(-\ln L(w,b)=\sum\limits_n -[\hat{y}^n \ln f_{w,b}(x^n)+(1-\hat{y}^n) \ln(1-f_{w,b}(x^n))] w,b=argw,bmaxL(w,b)=argw,bmin(lnL(w,b)=n[y^nlnfw,b(xn)+(1y^n)ln(1fw,b(xn))]

step 3:Find the best function

实际上就是去找到使loss function即交叉熵之和最小的那组参数 w ∗ , b ∗ w^*,b^* w,b就行了,这里用gradient descent的方法进行运算就ok

这里sigmoid function的微分可以直接作为公式记下来: ∂ σ ( z ) ∂ z = σ ( z ) ( 1 − σ ( z ) ) \frac{\partial \sigma(z)}{\partial z}=\sigma(z)(1-\sigma(z)) zσ(z)=σ(z)(1σ(z)),sigmoid和它的微分的图像如下:

先计算 − ln ⁡ L ( w , b ) = ∑ n − [ y ^ n ln ⁡ f w , b ( x n ) + ( 1 − y ^ n ) ln ⁡ ( 1 − f w , b ( x n ) ) ] -\ln L(w,b)=\sum\limits_n -[\hat{y}^n \ln f_{w,b}(x^n)+(1-\hat{y}^n) \ln(1-f_{w,b}(x^n))] lnL(w,b)=n[y^nlnfw,b(xn)+(1y^n)ln(1fw,b(xn))] w i w_i wi的偏微分,分别求出 ln ⁡ f w , b ( x n ) \ln f_{w,b}(x^n) lnfw,b(xn) ln ⁡ ( 1 − f w , b ( x n ) ) \ln (1-f_{w,b}(x^n)) ln(1fw,b(xn)) w i w_i wi的偏微分即可,整体推导过程如下:

将得到的式子进行进一步化简,可得:
我们发现最终的结果竟然异常的简洁,gradient descent每次update只需要做:

w i = w i − η ∑ n − ( y ^ n − f w , b ( x n ) ) x i n w_i=w_i-\eta \sum\limits_{n}-(\hat{y}^n-f_{w,b}(x^n))x_i^n wi=wiηn(y^nfw,b(xn))xin
那这个式子到底代表着什么意思呢?现在你的update取决于三件事:

  • learning rate:
    • 提前设定
  • x i x_i xi:
    • 来自于data
  • y ^ n − f w , b ( x n ) \hat{y}^n-f_{w,b}(x^n) y^nfw,b(xn):
    • 代表function的output跟理想target的差距有多大
    • 如果离目标越远,update的步伐就要越大
Logistic Regression V.s. Linear Regression

我们可以把逻辑回归和之前将的线性回归做一个比较

function modelloss functionupdate rate
Logistic Regressionsigmoid function的输出作为output,介于0~1取minimize的对象,求所有样本的output( f ( x n ) f(x^n) f(xn) )和实际target( y ^ n \hat{y}^n y^n )在伯努利分布(两点分布)下的cross entropy(交叉熵)总和 w i w_i wiupdate的方式是一模一样的。
Linear Regression没有通过sigmoid function,所以它可以是任何值function的output( f ( x n ) f(x^n) f(xn) )和实际target( y ^ n \hat{y}^n y^n )在数值上的平方和的均值(MSE)

交叉熵的描述:这里把 f ( x n ) f(x^n) f(xn) y ^ n \hat{y}^n y^n各自看做是一个Bernoulli distribution(两点分布),那它们的cross entropy l ( f ( x n ) , y ^ n ) = − [ y ^ n ln ⁡ f ( x n ) + ( 1 − y ^ n ) ln ⁡ ( 1 − f ( x n ) ) ] l(f(x^n),\hat{y}^n)=-[\hat{y}^n \ln f(x^n)+(1-\hat{y}^n) \ln (1-f(x^n))] l(f(xn),y^n)=[y^nlnf(xn)+(1y^n)ln(1f(xn))]之和,就是我们要去minimize的对象,直观来讲,就是希望function的output f ( x n ) f(x^n) f(xn)和它的target y ^ n \hat{y}^n y^n越接近越好

注:这里的“看做”只是为了方便理解和计算,并不是真的做出它们是两点分布的假设

Logistic Regression + Square error?
Square errorcross entropy
label=1 y ^ n = 1 \hat{y}^n=1 y^n=1 --> f w , b ( x ) − y ^ f_{w,b}(x)-\hat{y} fw,b(x)y^=0,微分 ∂ L ∂ w i \frac{\partial L}{\partial w_i} wiL=0 ,速率变得很慢,正常;衡量真实值与预测值之间有多接近,越靠近微分越小;反之越大
label=1 y ^ n = 0 \hat{y}^n=0 y^n=0 --> 但是由于在step3中求出来的update表达式中有一个 f w , b ( x n ) f_{w,b}(x^n) fw,b(xn),微分 ∂ L ∂ w i \frac{\partial L}{\partial w_i} wiL=0 ,速率变得很慢,不正常。

假设中心点就是距离目标很近的地方,如果是cross entropy的话,距离目标越远,微分值就越大,参数update的时候变化量就越大,迈出去的步伐也就越大

综上,尽管square error可以使用,但是会出现update十分缓慢的现象,而使用cross entropy可以让你的Training更顺利

Discriminative (判别模型)v.s. Generative(生成模型)
same model but different currency

Logistic Regression的方法,我们把它称之为discriminative的方法;而我们用Gaussian来描述posterior Probability这件事,我们称之为Generative的方法

GenerativeDiscriminative
概率联合概率P(X,Y)后验概率P(Y|X)
解释首先建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X),再利用它进行分类(所有概率进行比较,取最大的一个)输入属性X可以直接得到Y。有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型
特点尝试去找到底数据是怎么生成的,基于假设不进行过多假设,不关心数据产生,只关心差异
优点生成模型收敛速度比较快,即当样本数量较多时,生成模型能更快地收敛于真实模型。直接学习P(Y|X)或f(X),可以对数据进行抽象、定义特征并使用特征,因此可以简化学习问题。直接面对预测,准确率较高
缺点需要更多的样本和更多计算,只需要做分类任务,就浪费了计算资源。决策函数Y=f(X)或者条件概率分布P(Y|X),不能反映训练数据本身的特性。
  • 实践中多数情况下判别模型效果更好。

哪一个假设的结果是比较好的呢?Generative model和discriminative model的预测结果比较如下:

Conclusion

对于分类的问题(主要是二元分类),我们一般有两种方法去处理问题,一种是Generative的方法,另一种是Discriminative的方法,注意到分类问题的model都是从贝叶斯方程出发的。

两种方法的区别在于:

  • Generative model会假设一个带参数的Probability contribute,利用这个假设的概率分布函数带入(1)中去计算 P ( x ∣ C i ) P(x|C_i) P(xCi) P ( x ∣ C j ) P(x|C_j) P(xCj),结合极大似然估计法最终得到最优的参数以确定这个model的具体形式

DIscriminative model不作任何假设,因此它无法通过假定的Probability distribution得到 P ( x ∣ C i ) P(x|C_i) P(xCi)的表达式,因此它使用的是(2),直接去利用交叉熵和gradient descent结合极大似然估计法得到最优的b和w,以确定model的具体形式

最后,利用得到的 P ( C i ∣ x ) P(C_i|x) P(Cix)与0.5相比较来判断它属于那个class的可能性更大

Multi-class Classification(多元分类)
softmax

假设有三个class: C 1 , C 2 , C 3 C_1,C_2,C_3 C1,C2,C3,每一个class都有自己的weight和bias,这里 w 1 , w 2 , w 3 w_1,w_2,w_3 w1,w2,w3分布代表三个vector, b 1 , b 2 , b 3 b_1,b_2,b_3 b1,b2,b3分别代表三个const,input x也是一个vector

softmax的意思是对最大值做强化,因为在做第一步的时候,对 z z z取exponential会使大的值和小的值之间的差距被拉得更开,也就是强化大的值

我们把 z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3丢进一个softmax的function,softmax做的事情是这样三步:

  • 取exponential,得到 e z 1 , e z 2 , e z 3 e^{z_1},e^{z_2},e^{z_3} ez1,ez2,ez3
  • 把三个exponential累计求和,得到total sum= ∑ j = 1 3 e z j \sum\limits_{j=1}^3 e^{z_j} j=13ezj
  • 将total sum分别除去这三项(归一化),得到 y 1 = e z 1 ∑ j = 1 3 e z j y_1=\frac{e^{z_1}}{\sum\limits_{j=1}^3 e^{z_j}} y1=j=13ezjez1 y 2 = e z 2 ∑ j = 1 3 e z j y_2=\frac{e^{z_2}}{\sum\limits_{j=1}^3 e^{z_j}} y2=j=13ezjez2 y 3 = e z 3 ∑ j = 1 3 e z j y_3=\frac{e^{z_3}}{\sum\limits_{j=1}^3 e^{z_j}} y3=j=13ezjez3

原来的output z可以是任何值,但是做完softmax之后,你的output y i y_i yi的值一定是介于0~1之间,并且它们的和一定是1, ∑ i y i = 1 \sum\limits_i y_i=1 iyi=1,以上图为例, y i y_i yi表示input x属于第i个class的概率,比如属于C1的概率是 y 1 = 0.88 y_1=0.88 y1=0.88,属于C2的概率是 y 2 = 0.12 y_2=0.12 y2=0.12,属于C3的概率是 y 3 = 0 y_3=0 y3=0

而softmax的output,就是拿来当z的posterior probability

multi-class classification的过程:

如下图所示,input x经过三个式子分别生成 z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3,经过softmax转化成output y 1 , y 2 , y 3 y_1,y_2,y_3 y1,y2,y3,它们分别是这三个class的posterior probability,由于summation=1,因此做完softmax之后就可以把y的分布当做是一个probability contribution,我们在训练的时候还需要有一个target,因为是三个class,output是三维的,对应的target也是三维的,为了满足交叉熵的条件,target y ^ \hat{y} y^也必须是probability distribution,这里我们不能使用1,2,3作为class的区分,为了保证所有class之间的关系是一样的,这里使用类似于one-hot编码的方式,即
y ^ = [ 1 0 0 ] x   ∈   c l a s s 1 y ^ = [ 0 1 0 ] x   ∈   c l a s s 2 y ^ = [ 0 0 1 ] x   ∈   c l a s s 3 \hat{y}= \begin{bmatrix} 1\\ 0\\ 0 \end{bmatrix}_{x \ ∈ \ class 1} \hat{y}= \begin{bmatrix} 0\\ 1\\ 0 \end{bmatrix}_{x \ ∈ \ class 2} \hat{y}= \begin{bmatrix} 0\\ 0\\ 1 \end{bmatrix}_{x \ ∈ \ class 3} y^=100x  class1y^=010x  class2y^=001x  class3

这个时候就可以计算一下output y y y和 target y ^ \hat{y} y^之间的交叉熵,即 − ∑ i = 1 3 y ^ i ln ⁡ y i -\sum\limits_{i=1}^3 \hat{y}_i \ln y_i i=13y^ilnyi,同二元分类一样,多元分类问题也是通过极大似然估计法得到最终的交叉熵表达式的,这里不再赘述

Limitation of Logistic Regression

Logistic Regression在两个class之间的boundary就是一条直线,但是在这个平面上无论怎么画直线都不可能把图中的两个class分隔开来

Feature Transformation

如果坚持要用Logistic Regression:Feature Transformation

  • 假设这里定义 x 1 ′ x_1' x1是原来的点到 [ 0 0 ] \begin{bmatrix}0\\0 \end{bmatrix} [00]之间的距离, x 2 ′ x_2' x2是原来的点到 [ 1 1 ] \begin{bmatrix}1\\ 1 \end{bmatrix} [11]之间的距离,重新映射之后如下图右侧(红色两个点重合),此时Logistic Regression就可以把它们划分开来
  • 我们会希望这个Transformation是机器自己产生的,怎么让机器自己产生呢?
  • 我们可以让很多Logistic Regression cascade(连接)起来
    • 先用n个Logistic Regression做feature Transformation(n为每个样本点的feature数量),生成n个新的feature,然后再用一个Logistic Regression作classifier
  • 下图是二维feature的例子,分别表示四个点经过transform之后的 x 1 ′ x_1' x1 x 2 ′ x_2' x2,在新的feature space中可以通过最后的Logistic Regression划分开来
  • 注意:当面对多元分类问题,需要用到多个Logistic Regression来画出多条直线划分所有的类,每一个Logistic Regression对应它要检测的那个类
Powerful Cascading Logistic Regression

通过上面的例子,我们发现,多个Logistic Regression连接起来会产生powerful的效果,我们把每一个Logistic Regression叫做一个neuron(神经元),把这些Logistic Regression串起来所形成的network,就叫做Neural Network,就是类神经网路,这个东西就是Deep Learning!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值