线性回归&逻辑回归&最小二乘法&最大似然法

线性回归

target function:

f(x)=wx+b

 
loss function:

最小二乘的角度:

mini=0N(yif(xi))2

最大似然的角度:

maxi=0N(12πσe(yif(xi))22σ2)

=maxln{i=0N(12πσe(yif(xi))22σ2)}

=maxi=0N{ln(12πσ)+ln(e(yif(xi))22σ2)}

=maxi=0N{ln(12πσ)+((yif(xi))22σ2)}

=Nln(12πσ)+maxi=0N((yif(xi))22σ2)

=Nln(12πσ)+N2σ2mini=0N(yif(xi))2

Nln(12πσ)N2σ2都是常数,可以不看,最终的loss function化简结果为:
mini=0N(yif(xi))2

 
无论是最小二乘法推导,还是从最大似然推导,得到的损失函数是相同的。

相同的原因在于:
最小二乘法遵循前提:yi存在误差,而误差的分布满足以f(x)为中心的正态分布。

最小二乘:(yif(xi))2(yif(xi))2
最大似然:ln(12πσe(yif(xi))22σ2)(yif(xi))2

PS:把maxi=0N(Pi)转换为maxlni=0N(Pi)这一步想法很巧妙。

 
 
 
 

逻辑回归

  在线性回归中,我们target function用f(x)=wx+b,是因为yi满足线性分布,yiR,但是当在解决一个二分类问题/二型分布时,yi{0,1},就不能在用f(x)=wx+b来进行拟合。因为得到的预估结果f(x)R,预估范围与目标范围不匹配,同时误差不好定义。
  所以,引入了sigmod函数,用于对线性得到的结果进行一次映射:sigmod(x)=11+ex。sigmod导数:sigmod(x)=singmod(x)[1sigmod(x)]
  所以我们定义target function:

g(f(x))=sigmod(f(x))=11+ef(x)=11+ewxb

 
  引入sigmod后解决了区间的问题,但是loss function的定义又是一个问题。最快想到的就是类似线性回归中类似定义loss function:

mini=0N[yig(f(xi))]2

 
  这样定义其实是可以的,因为如果我们的预测准确性很高的话,lim(yig(xi))0,则i=0N(yig(xi))20,loss function达到最小值。

  以上定义的loss function的最优解满足我们的期望“误差最小”,但是我们在求解w最优解的过程中会出现问题,我们一般是使用“梯度下降”的方式寻找最优解。但“梯度下降”能找到最优解的前提是“函数是凸函数”。很遗憾这个loss function并不满足,详情如下:

  “梯度下降”即:不断进行w=wloss(w)运算,最终w收敛到某个稳定值。此时我们认为loss function达到最小值。
 
  进行一下模拟:

loss(w)=i=0N2[yig(f(xi))](1)gf(f(x))fw(xi)

loss(w)=i=0N2[yig(f(xi))](1)g(f(xi))[1g(f(xi))]xi

loss(w)=i=0N(2xi)[yig(f(xi))]g(f(xi))[1g(f(xi))]

分类讨论:

yi=0时,xi对导数的贡献为:

loss(w)=(2xi)[0g(f(xi))]g(f(xi))[1g(f(xi))]

loss(w)=2xig(f(xi))2[1g(f(xi))]

yi=1时,xi对导数的贡献为:

loss(w)=(2xi)[1g(f(xi))]g(f(xi))[1g(f(xi))]

loss(w)=(2xi)g(f(xi))[1g(f(xi))]2

  我们假设xi>0(不考虑xi的影响)
  以下讨论yi=0时的情况,yi=1的情况类似。不在讨论。
  
  yi=0时,loss(w)g(f(x)) 关系曲线大致如图:

线性回归&逻辑回归&最小二乘法&最大似然法
loss(w)f(x) 关系曲线大致如图:
线性回归&逻辑回归&最小二乘法&最大似然法
  基于loss(w)__g(f(x))的图像我们可以知道:yi=0时,g(f(x))的值越靠近1或者越靠近0时的变化越来越小。所以可以评估loss(w)__g(f(x))图像大致如下(同样假设yi=0):
线性回归&逻辑回归&最小二乘法&最大似然法

  现在考虑假设情况:
  y0=0,g(x0)=0.98
  y1=1,g(x1)=0.80
  此时我们对w进行梯度下降,gw(x0)=h0gw(x1)=h1h0>0,h1>0
  因为我们刚才讨论,g(f(x))在趋近于0或者1时导数越小,所以h0<h1,也就是梯度下降方向:

loss(w)=gw(x0)(gw(x1))=h1h0>0

 
  我们发现梯度下降的方向是gw(x1)主导的,w正在朝着(gw(x1))的方向变化,这将使得g(x1)得到优化,但代价是进一步牺牲g(x0)的准确性,因为w正在朝着(gw(x0))的反方向改变。
  经过这样一步之后,可能结果变成:
  y0=0,g(x0)=0.99
  y1=1,g(x1)=0.84
  更可怕的是梯度最终会稳定在gw(x0)=gw(x1))的时候。此时结果大概为:
  y0=0,g(x0)=0.9999
  y1=1,g(x1)=0.999
  

  陷入了局部最优,失败。


分析一下错误的原因:
  进行调节的过程中,每个数据xiloss(w)的贡献值为([yig(f(xi))]2),我们对w的调节是将每个数据xi的贡献(也就是导数)相加,所以导数的(绝对值)大小可以理解为表征自己偏离正确答案的差距,应该做到预测结果越偏离真实值,导数的绝对值越大。
  显然上文中的loss function的导数并不是这样。比如yi=0时,g(xi)=0.7时的导数的绝对值大于g(xi)=0.9处的导数的绝对值。说明loss function认为0.7处的改善比0.9处的改善更加迫切。当若干组数据提供的梯度方向不一致时,导数又错误的表述了该组数据“等待改变的迫切情况/偏离正确的程度”。最终导致梯度相加得到的结果是不准确的,收敛到局部最优。

  那么怎么可以避免这种情况呢。就是当导数是单调的时候
  比如在yi=0loss(w)__g(f(x)) 关系曲线如下图:
线性回归&逻辑回归&最小二乘法&最大似然法

以上图为例。

loss(w)

g(f(x1))>g(f(x2)),loss(x1)>loss(x2)

loss(x1)+loss(x2)<2loss(x1+x22)

loss(w)

 
  所以我们的loss function 要满足2个条件:

1.g(f(xi))越偏离yi时,loss(w)值越大

2.g(f(xi))越偏离yi时,loss(w)绝对值越大,其实等价于要求loss(w)是一个凸函数

 
  所以我们给出新的loss function,定义其为:

mini=0N[(1yi)(ln(1g(f(xi))))+yi(lng(f(xi)))]

 
  此式的灵感由最大似然得到。
  经过这样一个改进,在满足第一个条件的情况下,也让loss function满足了第二个条件。理由如下:

yi=0时,xi对loss function导数的贡献为:

loss(w)=(ln(1g(f(xi))))

loss(w)=(1)11g(f(xi))(1)gf(f(xi))fw(xi)

loss(w)=11g(f(xi))g(f(xi))[1g(f(xi))]xi

loss(w)=g(f(xi))xi

loss(w)__g(f(x))是一个单调函数,且loss(w)越远离0,靠近1,其绝对值越大,满足条件。

yi=1时,xi对loss function导数的贡献为:

loss(w)=(lng(f(xi)))

loss(w)=(1)1g(f(xi))gf(f(xi))fw(xi)

loss(w)=(1)1g(f(xi))g(f(xi))[1g(f(xi))]xi

loss(w)=[g(f(xi))1]xi

loss(w)__g(f(x))是一个单调函数,且loss(w)越远离1,靠近0,其绝对值越大,满足条件。

 
  综上所述,该loss function满足两个条件,为凸函数。同时yi=0yi=1两种情况下,loss(w)__g(f(x))loss(w)__g(f(x))两个图像左右对称,保证了不偏向0或者1中的某一个。
  

SUCCESS 

回过头我们在来评估下线性回归的loss function 为什么不会出现问题:

loss=mini=0N(yif(xi))2

xi对loss function导数的贡献为:

loss(w)=2(yif(xi))(xi)

可以看出如果f(xi)yi差越大的话,也就是如果给出的评估与实际结果偏差越远,则loss’(w)绝对值越大。满足条件。

 
  总结整个流程就是:
  1.寻找loss function目前没有什么很好很通用的方法,所以一般用梯度下降算法。
  2.梯度的最终方向是将数据xi的梯度相加,这就要求xi的梯度要以全局考虑,taget(xi)越靠近yi,那xi你的梯度就越小,把主导机会留给其他taget(xi)远离yi的数据。即

|target(xi)yi||loss(xi)|

  
  
  
PS:如果你能找到一个寻找到全局最优解的方法,且这个方法没有“凸函数”之类的前提要求。你就可以在逻辑回归中使用mini=0N[yig(f(xi))]2作为loss function。