如果我们想从患者的各种身体信息来推断其有多大概率会得心脏病,这时候我们更关心目标函数的值,这是一个分布在 [ 0 , 1 ] [0,1] [0,1]的数,表示的是得心脏病的概率。
这与我们之前所讨论的分类问题不太一样,把它叫做“软性“二分类问题(‘soft’ binary classification)
对于这个问题,理想的训练数据的标签应该是 [ 0 , 1 ] [0,1] [0,1]之间的具体值,但是实际数据可能样本标签就是0/1(比如医院里只有病人是否得心脏病,而没有概率),我们可以把这样的实际数据看作是在理想数据上面添加噪声的结果。
假设函数:
我们还是对特征进行加权求和,但不同于hard binary classification的是对结果不再使用sign函数,而是使用logistic function θ ( s ) \theta(s) θ(s)来将输出限定在 [ 0 , 1 ] [0,1] [0,1]
所以,我们的假设函数为:
h ( x ) = θ ( w T x ) h(x)=\theta(w^Tx) h(x)=θ(wTx)
θ ( s ) \theta(s) θ(s)的具体形式(sigmoid function):
三种线性模型的对比:
logistic regression误差定义:
先考虑数据集: D = ( x 1 , 1 ) , ( x 2 , − 1 ) , … , ( x N , − 1 ) \mathcal D={(x_1,1),(x_2,−1),…,(x_N,−1)} D=(x1,1),(x2,−1),…,(xN,−1)
那么 f f f产生这个数据集的概率 p r o b a b i l i t y ( f ) probability(f) probability(f)显然是:
p r o b a b i l i t y ( f ) = P ( x 1 ) P ( y 1 ∣ x 1 ) × P ( x 2 ) P ( y 2 ∣ x 2 ) × . . . × P ( x N ) P ( y N ∣ x N ) = P ( x 1 ) f ( x 1 ) × P ( x 2 ) ( 1 − f ( x 2 ) ) × . . . × P ( x N ) ( 1 − f ( x N ) ) \begin{aligned} probability(f)&=P(x_1)P(y_1|x_1)\times P(x_2)P(y_2|x_2)\times...\times P(x_N)P(y_N|x_N)\\\\ &=P(x_1)f(x_1)\times P(x_2)(1-f(x_2))\times ... \times P(x_N)(1-f(x_N)) \end{aligned} probability(f)=P(x1)P(y1∣x1)×P(x2)P(y2∣x2)×...×P(xN)P(yN∣xN)=P(x1)f(x1)×P(x2)(1−f(x2))×...×P(xN)(1−f(xN))
如果我们在假设集合中找到 h h h,那么 h h h生成数据集的概率为:
l i e k l i h o o d ( h ) = P ( x 1 ) P ( y 1 ∣ x 1 ) × P ( x 2 ) P ( y 2 ∣ x 2 ) × . . . × P ( x N ) P ( y N ∣ x N ) = P ( x 1 ) h ( x 1 ) × P ( x 2 ) ( 1 − h ( x 2 ) ) × . . . × P ( x N ) ( 1 − h ( x N ) ) \begin{aligned} lieklihood(h)=&P(x_1)P(y_1|x_1)\times P(x_2)P(y_2|x_2)\times...\times P(x_N)P(y_N|x_N)\\\\ =&P(x_1)h(x_1)\times P(x_2)(1-h(x_2))\times ... \times P(x_N)(1-h(x_N)) \end{aligned} lieklihood(h)==P(x1)P(y1∣x1)×P(x2)P(y2∣x2)×...×P(xN)P(yN∣xN)P(x1)h(x1)×P(x2)(1−h(x2))×...×P(xN)(1−h(xN))
这个叫做似然
对于logistic function h ( x ) = θ ( w T x ) h(x)=\theta(w^Tx) h(x)=θ(wTx)来说, h ( − x ) = 1 − h ( x ) h(-x)=1-h(x) h(−x)=1−h(x),所以:
l i e k l i h o o d ( h ) = P ( x 1 ) P ( y 1 ∣ x 1 ) × P ( x 2 ) P ( y 2 ∣ x 2 ) × . . . × P ( x N ) P ( y N ∣ x N ) = P ( x 1 ) h ( x 1 ) × P ( x 2 ) ( 1 − h ( x 2 ) ) × . . . × P ( x N ) ( 1 − h ( x N ) ) = P ( x 1 ) h ( x 1 ) × P ( x 2 ) h ( − x 2 ) × . . . × P ( x N ) h ( − x N ) = P ( x 1 ) h ( y 1 x 1 ) × P ( x 2 ) h ( y 2 x 2 ) × . . . × P ( x N ) h ( y N x N ) = ∏ n = 1 N h ( y n x n ) \begin{aligned} lieklihood(h)=&P(x_1)P(y_1|x_1)\times P(x_2)P(y_2|x_2)\times...\times P(x_N)P(y_N|x_N)\\\\ =&P(x_1)h(x_1)\times P(x_2)(1-h(x_2))\times ... \times P(x_N)(1-h(x_N))\\\\ =&P(x_1)h(x_1)\times P(x_2)h(-x_2)\times ... \times P(x_N)h(-x_N)\\\\ =&P(x_1)h(y_1x_1)\times P(x_2)h(y_2x_2)\times ... \times P(x_N)h(y_Nx_N)\\\\ =&\prod_{n=1}^{N}h(y_nx_n) \end{aligned} lieklihood(h)=====P(x1)P(y1∣x1)×P(x2)P(y2∣x2)×...×P(xN)P(yN∣xN)P(x1)h(x1)×P(x2)(1−h(x2))×...×P(xN)(1−h(xN))P(x1)h(x1)×P(x2)h(−x2)×...×P(xN)h(−xN)P(x1)h(y1x1)×P(x2)h(y2x2)×...×P(xN)h(yNxN)n=1∏Nh(ynxn)
如果 h ≈ f h\approx f h≈f,那么 l i k e l i h o o d ( h ) ≈ p r o b a b i l i t y ( f ) likelihood(h)\approx probability(f) likelihood(h)≈probability(f)
因为 f f f是我们的理想函数,所以 f f f真的能够产生这个数据集的概率一般是非常大的,所以我们为了找到与 f f f最相似的假设,那么我们的目标就是找到似然函数最大的假设 g g g:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ g = \mathop{\a…
将 l i k e l i h o o d ( h ) likelihood(h) likelihood(h)转换为 w w w为参数的形式,同时使用ln操作将连乘转化为累加,然后将最大化问题转化为最小化问题,具体过程如下:
max h l i k e l i h o o d ( h ) ∝ ∏ n = 1 N h ( y n x n ) ⇒ l i k e l i h o o d ( w ) ∝ ∏ n = 1 N θ ( y n w T x n ) \begin{aligned} \mathop{\max}\limits_{h} likelihood(h)\propto \prod_{n=1}^{N}h(y_nx_n) \Rightarrow likelihood(w)\propto \prod_{n=1}^{N}\theta(y_nw^Tx_n)\\\\ \end{aligned} hmaxlikelihood(h)∝n=1∏Nh(ynxn)⇒likelihood(w)∝n=1∏Nθ(ynwTxn)
max w l i k e l i h o o d ( w ) ⇒ m a x w ln l i k e l i h o o d ( w ) ⇒ m a x w ∑ n = 1 N ln θ ( y n w T x n ) ⇒ m i n w 1 N ∑ n = 1 N − ln θ ( y n w T x n ) ⇒ m i n w 1 N ∑ n = 1 N − ln ( 1 1 + e x p ( − y n w T x n ) ) ⇒ m i n w 1 N ∑ n = 1 N ln ( 1 + e x p ( − y n w T x n ) ) ⇒ m i n w 1 N ∑ n = 1 N e r r ( w , x n , y n ) ⇒ m i n w E i n ( w ) \begin{aligned} \mathop{\max}\limits_{w} likelihood(w) &\Rightarrow \mathop{max}\limits_{w} \ln likelihood(w)\\\\ &\Rightarrow \mathop{max}\limits_{w} \sum_{n=1}^{N}\ln\theta(y_nw^Tx_n)\\\\ &\Rightarrow \mathop{min}\limits_{w}\frac{1}{N}\sum_{n=1}^{N}-\ln\theta(y_nw^Tx_n)\\\\ &\Rightarrow \mathop{min}\limits_{w}\frac{1}{N}\sum_{n=1}^{N}-\ln(\frac{1}{1+exp(-y_nw^Tx_n)})\\\\ &\Rightarrow \mathop{min}\limits_{w}\frac{1}{N}\sum_{n=1}^{N}\ln(1+exp(-y_nw^Tx_n))\\\\ &\Rightarrow \mathop{min}\limits_{w}\frac{1}{N}\sum_{n=1}^{N}err(w,x_n,y_n)\\\\ &\Rightarrow \mathop{min}\limits_{w}E_{in}(w)\\\\ \end{aligned} wmaxlikelihood(w)⇒wmaxlnlikelihood(w)⇒wmaxn=1∑Nlnθ(ynwTxn)⇒wminN1n=1∑N−lnθ(ynwTxn)⇒wminN1n=1∑N−ln(1+exp(−ynwTxn)1)⇒wminN1n=1∑Nln(1+exp(−ynwTxn))⇒wminN1n=1∑Nerr(w,xn,yn)⇒wminEin(w)
所以我们就得到了Logistic Regression的Error Function:
e r r ( w , x , y ) = ln ( 1 + e x p ( − y w x ) ) err(w,x,y)=\ln(1+exp(-ywx)) err(w,x,y)=ln(1+exp(−ywx))
称为cross-entropy error(交叉熵误差)
接下来的问题就是如何找到合适的 w w w使得 E i n E_{in} Ein最小。
E i n E_{in} Ein仍然是连续的(continuous), 可微的(differentiable),二次可微的(twice-differentiable),凸的(convex)函数。那么只要梯计算度为零时的 w w w,就可以获得最优的hypothesis。
计算梯度( w w w的每个元素):
E i n ( w ) = 1 N ∑ n = 1 N ln ( 1 + e x p ( − y n w T x n ) ) A = − y n w T x n B = 1 + e x p ( A ) E_{in}(w)=\frac{1}{N}\sum_{n=1}^{N}\ln(1+exp(-y_nw^Tx_n))\\\\ A=-y_nw^Tx_n\\\\ B=1+exp(A) Ein(w)=N1n=1∑Nln(1+exp(−ynwTxn))A=−ynwTxnB=1+exp(A)
∂ E i n ( w ) ∂ w i = 1 N ∑ n = 1 N ( ∂ ln B ∂ B ) ( ∂ B ∂ A ) ( ∂ A ∂ w i ) = 1 N ∑ n = 1 N ( 1 B ) ( e x p ( A ) ) ( − y n x n , i ) = 1 N ∑ n = 1 N ( e x p ( A ) 1 + e x p ( A ) ) ( − y n x n , i ) = 1 N ∑ n = 1 N θ ( A ) ( − y n x n , i ) \begin{aligned} \frac{\partial E_{in}(w)}{\partial w_i}&=\frac{1}{N}\sum_{n=1}^{N}(\frac{\partial \ln B}{\partial B})(\frac{\partial B}{\partial A})(\frac{\partial A}{\partial w_i})\\\\ &=\frac{1}{N}\sum_{n=1}^{N}(\frac{1}{B})(exp(A))(-y_nx_{n,i})\\\\ &=\frac{1}{N}\sum_{n=1}^{N}(\frac{exp(A)}{1+exp(A)})(-y_nx_{n,i})\\\\ &=\frac{1}{N}\sum_{n=1}^{N}\theta(A)(-y_nx_{n,i})\\\\ \end{aligned} ∂wi∂Ein(w)=N1n=1∑N(∂B∂lnB)(∂A∂B)(∂wi∂A)=N1n=1∑N(B1)(exp(A))(−ynxn,i)=N1n=1∑N(1+exp(A)exp(A))(−ynxn,i)=N1n=1∑Nθ(A)(−ynxn,i)
进一步求得(用向量表达):
∇ E i n ( w ) = 1 N ∑ n = 1 N θ ( − y n w T x n ) ( − y n x n ) \nabla E_{in}(w)=\frac{1}{N}\sum_{n=1}^{N}\theta(-y_nw^Tx_n)(-y_nx_{n}) ∇Ein(w)=N1n=1∑Nθ(−ynwTxn)(−ynxn)
这个式子可以看成是 θ \theta θ对 ( − y n x n ) (-y_nx_n) (−ynxn)的线性加权,要使线性加权和为0:
每个数据集都是线性可分的不太现实,所以只能是在第二种情况下求解,这种情况没有closed-form解,与Linear Regression不同,只能用迭代方法求解。
之前介绍的PLA算法是一步一步修正迭代进行的,每次对错误点进行修正,不断更新w值。PLA的迭代优化过程表示如下:
w w w的更新包括两部分内容, η \eta η代表了步长, v v v代表了方向向量
假设 v v v是一个正规化后的单位向量, η \eta η是一个正数
把 E i n ( w ) E_{in}(w) Ein(w)看作是一个山谷,最小化 E i n E_{in} Ein的过程就是下山的过程,这个过程受两个因素影响:
η \eta η和 v v v
假设每次下山我们只前进一小步( η \eta η很小,线性近似),那么根据泰勒展开,得到:
E i n ( w t + η v ) ≈ E i n ( w t ) + η v T E i n ( w t ) E_{in}(w_t+\eta v)\approx E_{in}(w_t)+\eta v^T E_{in}(w_t) Ein(wt+ηv)≈Ein(wt)+ηvTEin(wt)
所以我们的问题变成了:
我们只需要确定 v v v,也就是”向山谷下降“的方向,第一部分的 E i n E_{in} Ein看成是个常数, η \eta η先不考虑,所以:
如果 v v v与$\nabla 方 向 相 反 的 话 , 其 乘 积 最 小 , 所 以 方向相反的话,其乘积最小,所以 方向相反的话,其乘积最小,所以v 是 个 与 是个与 是个与\nabla$方向相反的单位向量:
v = − ∇ E i n ( w t ) ∣ ∣ ∇ E i n ( w t ) ∣ ∣ v=-\frac{\nabla E_{in}(w_t)}{||\nabla E_{in}(w_t)||} v=−∣∣∇Ein(wt)∣∣∇Ein(wt)
那么迭代更新的公式可以写成:
w t + 1 ← w t − η ∇ E i n ( w t ) ∣ ∣ ∇ E i n ( w t ) ∣ ∣ w_{t+1}\leftarrow w_t - \eta \frac{\nabla E_{in}(w_t)}{||\nabla E_{in}(w_t)||} wt+1←wt−η∣∣∇Ein(wt)∣∣∇Ein(wt)
这个方法叫做梯度下降,是一个非常简单且常用的方法
接下来看一下 η \eta η的选择,如果太小下降的速度很慢,如果太大造成下降不稳定,甚至可能出现上升的情况。
一种方法是当梯度较大时选择较大的 η \eta η,梯度较小时选择较小的 η \eta η,也就是二者是正相关的关系
那不妨假设原来的 η \eta η(红色)和梯度大小是有 η \eta η(紫色)的比例关系,那么梯度下降可以用更简单的式子表示:
把之前讲过的整合起来,Logistic Regression算法的过程: