线性回归:
target function:
f(x)=wx+b
loss function:
最小二乘的角度:
min∑i=0N(yi−f(xi))2
最大似然的角度:
max∏i=0N(12π−−√σe−(yi−f(xi))22σ2)
=maxln{∏i=0N(12π−−√σe−(yi−f(xi))22σ2)}
=max∑i=0N{ln(12π−−√σ)+ln(e−(yi−f(xi))22σ2)}
=max∑i=0N{ln(12π−−√σ)+(−(yi−f(xi))22σ2)}
=N∗ln(12π−−√σ)+max∑i=0N(−(yi−f(xi))22σ2)
=N∗ln(12π−−√σ)+N2σ2min∑i=0N(yi−f(xi))2
N∗ln(12π√σ)和N2σ2都是常数,可以不看,最终的loss function化简结果为:
min∑i=0N(yi−f(xi))2
无论是最小二乘法推导,还是从最大似然推导,得到的损失函数是相同的。
相同的原因在于:
最小二乘法遵循前提:yi存在误差,而误差的分布满足以f(x)为中心的正态分布。
最小二乘:(yi−f(xi))2∝(yi−f(xi))2
最大似然:ln(12π√σe−(yi−f(xi))22σ2)∝(yi−f(xi))2
PS:把max∏Ni=0(Pi)转换为maxln∏Ni=0(Pi)这一步想法很巧妙。
逻辑回归:
在线性回归中,我们target function用f(x)=wx+b,是因为yi满足线性分布,yi⊆R,但是当在解决一个二分类问题/二型分布时,yi⊆{0,1},就不能在用f(x)=wx+b来进行拟合。因为得到的预估结果f(x)⊆R,预估范围与目标范围不匹配,同时误差不好定义。
所以,引入了sigmod函数,用于对线性得到的结果进行一次映射:sigmod(x)=11+e−x。sigmod导数:sigmod′(x)=singmod(x)∗[1−sigmod(x)]
所以我们定义target function:
g(f(x))=sigmod(f(x))=11+e−f(x)=11+e−wx−b
引入sigmod后解决了区间的问题,但是loss function的定义又是一个问题。最快想到的就是类似线性回归中类似定义loss function:
min∑i=0N[yi−g(f(xi))]2
这样定义其实是可以的,因为如果我们的预测准确性很高的话,lim(yi−g(xi))→0,则∑Ni=0(yi−g(xi))2→0,loss function达到最小值。
以上定义的loss function的最优解满足我们的期望“误差最小”,但是我们在求解w最优解的过程中会出现问题,我们一般是使用“梯度下降”的方式寻找最优解。但“梯度下降”能找到最优解的前提是“函数是凸函数”。很遗憾这个loss function并不满足,详情如下:
“梯度下降”即:不断进行w=w−loss′(w)运算,最终w收敛到某个稳定值。此时我们认为loss function达到最小值。
进行一下模拟:
loss′(w)=∑i=0N2∗[yi−g(f(xi))]∗(−1)∗g′f(f(x))∗f′w(xi)
loss′(w)=∑i=0N2∗[yi−g(f(xi))]∗(−1)∗g(f(xi))∗[1−g(f(xi))]∗xi
loss′(w)=∑i=0N(−2xi)∗[yi−g(f(xi))]∗g(f(xi))∗[1−g(f(xi))]
分类讨论:
yi=0时,xi对导数的贡献为:
loss′(w)=(−2xi)∗[0−g(f(xi))]∗g(f(xi))∗[1−g(f(xi))]
loss′(w)=2xi∗g(f(xi))2∗[1−g(f(xi))]
yi=1时,xi对导数的贡献为:
loss′(w)=(−2xi)∗[1−g(f(xi))]∗g(f(xi))∗[1−g(f(xi))]
loss′(w)=(−2xi)∗g(f(xi))∗[1−g(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进行梯度下降,g′w(x0)=h0,g′w(x1)=−h1,(设h0>0,h1>0)
因为我们刚才讨论,g(f(x))在趋近于0或者1时导数越小,所以h0<h1,也就是梯度下降方向:
−loss′(w)=−g′w(x0)−(−g′w(x1))=h1−h0>0
我们发现梯度下降的方向是g′w(x1)主导的,w正在朝着(−g′w(x1))的方向变化,这将使得g(x1)得到优化,但代价是进一步牺牲g(x0)的准确性,因为w正在朝着(−g′w(x0))的反方向改变。
经过这样一步之后,可能结果变成:
y0=0,g(x0)=0.99
y1=1,g(x1)=0.84
更可怕的是梯度最终会稳定在−g′w(x0)=g′w(x1))的时候。此时结果大概为:
y0=0,g(x0)=0.9999
y1=1,g(x1)=0.999
陷入了局部最优,失败。
分析一下错误的原因:
进行调节的过程中,每个数据xi对loss′(w)的贡献值为([yi−g(f(xi))]2)′,我们对w的调节是将每个数据xi的贡献(也就是导数)相加,所以导数的(绝对值)大小可以理解为表征自己偏离正确答案的差距,应该做到预测结果越偏离真实值,导数的绝对值越大。
显然上文中的loss function的导数并不是这样。比如yi=0时,g(xi)=0.7时的导数的绝对值大于g(xi)=0.9处的导数的绝对值。说明loss function认为0.7处的改善比0.9处的改善更加迫切。当若干组数据提供的梯度方向不一致时,导数又错误的表述了该组数据“等待改变的迫切情况/偏离正确的程度”。最终导致梯度相加得到的结果是不准确的,收敛到局部最优。
那么怎么可以避免这种情况呢。就是当导数是单调的时候
比如在yi=0时,loss′(w)__g(f(x)) 关系曲线如下图:

以上图为例。
loss′(w)是单调的
⇒若g(f(x1))>g(f(x2)),则loss(x1)>loss(x2)
⇒loss(x1)+loss(x2)<2∗loss(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,定义其为:
min∑i=0N[(1−yi)∗(−ln(1−g(f(xi))))+yi∗(−lng(f(xi)))]
此式的灵感由最大似然得到。
经过这样一个改进,在满足第一个条件的情况下,也让loss function满足了第二个条件。理由如下:
yi=0时,xi对loss function导数的贡献为:
loss′(w)=(−ln(1−g(f(xi))))′
loss′(w)=(−1)∗11−g(f(xi))∗(−1)∗g′f(f(xi))∗fw(xi)
loss′(w)=11−g(f(xi))∗g(f(xi))∗[1−g(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))∗g′f(f(xi))∗fw(xi)
loss′(w)=(−1)∗1g(f(xi))∗g(f(xi))∗[1−g(f(xi))]∗xi
loss′(w)=[g(f(xi))−1]∗xi
loss′(w)__g(f(x))是一个单调函数,且loss′(w)越远离1,靠近0,其绝对值越大,满足条件。
综上所述,该loss function满足两个条件,为凸函数。同时yi=0与yi=1两种情况下,loss(w)__g(f(x)),loss′(w)__g(f(x))两个图像左右对称,保证了不偏向0或者1中的某一个。
SUCCESS
回过头我们在来评估下线性回归的loss function 为什么不会出现问题:
loss=min∑i=0N(yi−f(xi))2
xi对loss function导数的贡献为:
loss′(w)=2∗(yi−f(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:如果你能找到一个寻找到全局最优解的方法,且这个方法没有“凸函数”之类的前提要求。你就可以在逻辑回归中使用min∑Ni=0[yi−g(f(xi))]2作为loss function。