Logistic Regression
Logistic Regression Problem
- 二元分类:尝试明确“是”或者“否”
- “软”二元分类:尝试明确“是”的概率 P ( + 1 ∣ x ) P(+1|\bold x) P(+1∣x)
- 我们希望在完成第二个任务时,希望能够有直接对应的标签(概率),但是只有第一个任务的结果
- 将二元标签(是和否)视为概率式标签的含噪声版本
- 使用和“硬”二元分类相同的数据,希望得到一个不同的目标函数
- 逻辑假设
- 和线性回归一样,对输入的特征 x \bold x x,使用加权和处理之: s = ∑ i = 0 d w i x i s = \sum_{i=0}^d w_i x_i s=∑i=0dwixi
- 将结果值 s s s使用逻辑函数 θ ( s ) \theta(s) θ(s)映射为一个预估概率
- 逻辑函数
θ
(
s
)
=
1
1
+
e
−
s
\theta(s) = \frac {1} {1 + e^{-s}}
θ(s)=1+e−s1
- 平滑
- 单调
- s型(sigmoid)
- 逻辑回归的假设 h ( x ) = 1 1 + exp ( − w T x ) h(\bold x) = \frac 1 {1 + \exp(-\bold w^T \bold x)} h(x)=1+exp(−wTx)1
Logistic Regression Error
- 逻辑回归的目标函数 P ( y ∣ x ) = { f ( x ) y = +1 1 − f ( x ) y = -1 P(y | \bold x) = \begin{cases} f(\bold x) & \text{y = +1}\\ 1 - f(\bold x) & \text{y = -1} \end{cases} P(y∣x)={f(x)1−f(x)y = +1y = -1
- 对一组数据
D
=
{
(
x
1
,
+
1
)
,
(
x
2
,
−
1
)
,
…
,
(
x
N
,
−
1
)
,
}
\mathcal D = \{ (\bold x_1, +1), (\bold x_2, -1), \ldots, (\bold x_N, -1), \}
D={(x1,+1),(x2,−1),…,(xN,−1),}:
- 目标函数产生该数据集的概率: P ( x 1 ) f ( x 1 ) × … × P ( x N ) ( 1 − f ( x N ) ) P(\bold x_1)f(\bold x_1) \times \ldots \times P(\bold x_N)(1 - f(\bold x_N)) P(x1)f(x1)×…×P(xN)(1−f(xN))
- 假设产生该数据集的可能性(替换之): P ( x 1 ) h ( x 1 ) × … × P ( x N ) ( 1 − h ( x N ) ) P(\bold x_1)h(\bold x_1) \times \ldots \times P(\bold x_N)(1 - h(\bold x_N)) P(x1)h(x1)×…×P(xN)(1−h(xN))
- 如果 h ≈ f h \approx f h≈f,那么 l i k e l i h o o d ( h ) ≈ p f r o m f likelihood(h) \approx p \ from \ f likelihood(h)≈p from f
- 来自f的概率通常很大
- 选择: g = arg h max l i k e l i h o o d ( h ) g = \arg\limits_h \max \ likelihood(h) g=hargmax likelihood(h)
- 根据逻辑函数性质:
1
−
h
(
x
)
=
h
(
−
x
)
1 - h(\bold x) = h(- \bold x)
1−h(x)=h(−x)
- 发现关系: l i k e l i h o o d ( h ) ∝ ∏ n = 1 N h ( y n x n ) likelihood(h) \propto \prod_{n = 1}^N h(y_n \bold x_n) likelihood(h)∝∏n=1Nh(ynxn)
- 交叉熵损失:
- $\min_{\bold w} \ \frac 1N \sum_{n=1}^N err(\bold w, \bold x_n, y_n) $
- e r r ( w , x n , y n ) = ln ( 1 + exp ( − y n w T x n ) ) err(\bold w, \bold x_n, y_n) = \ln(1 + \exp(-y_n \bold w^T \bold x_n)) err(w,xn,yn)=ln(1+exp(−ynwTxn))
Gradient of Logistic Regression Error
- 这个误差函数的特点:连续,可微,二次可微,凸形
- 最小值:局部谷底, ∇ E i n ( w ) = 0 \nabla E_{in}(\bold w) = 0 ∇Ein(w)=0
- 梯度: ∇ E i n ( w ) = 1 N ∑ n = 1 N θ ( − y n w T x n ) ( − y n x n ) \nabla E_{in}(\bold w) = \frac 1N \sum_{n=1}^N \theta(-y_n \bold w^T \bold x_n)(-y_n \bold x_n) ∇Ein(w)=N1∑n=1Nθ(−ynwTxn)(−ynxn)
- 梯度复杂,无法直接找到为0的位置——迭代优化方法
- 步长 η \eta η和幅度(速度) v \bold v v用于决定梯度的优化方向
Gradient Descent
- 基本思路:迭代优化法
w
t
+
1
←
w
t
+
η
v
\bold w_{t+1} \leftarrow \bold w_t + \eta \bold v
wt+1←wt+ηv
- 对PLA算法, v \bold v v来自错误修正
- 对逻辑回归的平滑错误,需要让 v \bold v v
- 给定 η > 0 \eta > 0 η>0: min ∥ v ∥ = 1 E i n ( w t + η v ) \min\limits_{\| \bold v\| = 1}E_{in}(\bold w_t + \eta \bold v) ∥v∥=1minEin(wt+ηv)
- 限制性解决,线性方程局部近似(泰勒展开,这里 η \eta η很小): E i n ( w t + η v ) ≈ E i n ( w t ) + η v T ∇ E i n ( w t ) E_{in}(\bold w_t + \eta \bold v) \approx E_{in}(\bold w_t) + \eta \bold v^T \nabla E_{in}(\bold w_t) Ein(wt+ηv)≈Ein(wt)+ηvT∇Ein(wt)
- $ \bold v 优 化 思 路 : 与 梯 度 完 全 反 方 向 优化思路:与梯度完全反方向 优化思路:与梯度完全反方向\bold v = - \frac {\nabla E_{in}(\bold w_t)}{| \nabla E_{in}(\bold w_t) |}$
- 梯度下降,对于一个小的 η \eta η, w t + 1 ← w t − η ∇ E i n ( w t ) ∥ ∇ E i n ( w t ) ∥ \bold w_{t+1} \leftarrow \bold w_t - \eta \frac {\nabla E_{in}(\bold w_t)}{\| \nabla E_{in}(\bold w_t) \|} wt+1←wt−η∥∇Ein(wt)∥∇Ein(wt)
- 对
η
\eta
η的选择
- 太小:太慢
- 太大:越过最大值,震荡
- 合适的:先大后小,逐渐地接近最小值
- 启发式改变η
- 单调于 ∥ ∇ E i n ( w t ) ∥ \| \nabla E_{in}(\bold w_t) \| ∥∇Ein(wt)∥
- 令固定学习率η为上述η与 ∥ ∇ E i n ( w t ) ∥ \| \nabla E_{in}(\bold w_t) \| ∥∇Ein(wt)∥的比值
- 固定学习率梯度下降 w t + 1 ← w t − η ∥ ∇ E i n ( w t ) ∥ \bold w_{t+1} \leftarrow \bold w_t - \eta \| \nabla E_{in}(\bold w_t) \| wt+1←wt−η∥∇Ein(wt)∥
- 迭代优化
- 计算 ∇ E i n ( w ) = 1 N ∑ n = 1 N θ ( − y n w T x n ) ( − y n x n ) \nabla E_{in}(\bold w) = \frac 1N \sum_{n=1}^N \theta(-y_n \bold w^T \bold x_n)(-y_n \bold x_n) ∇Ein(w)=N1∑n=1Nθ(−ynwTxn)(−ynxn)
- 更新权重 w t + 1 ← w t − η ∥ ∇ E i n ( w t ) ∥ \bold w_{t+1} \leftarrow \bold w_t - \eta \| \nabla E_{in}(\bold w_t) \| wt+1←wt−η∥∇Ein(wt)∥
- 直到 ∇ E i n ( w t + 1 ) ≈ 0 \nabla E_{in}(\bold w_{t+1}) \approx 0 ∇Ein(wt+1)≈0或者足够多次迭代