本系列是作者上课时记录的笔记整理,同时有对应的作业习题,自学的同学参考博客同步即可。邮箱联系humminwang@163.com
Preview:
监督学习(第一部分)
- 线性回归
- Logistic回归
- Softmax回归
编程作业
Review:
监督学习:
输入
χ
\chi
χ,目标
ψ
\psi
ψ,通过给出训练样本,我们希望学习到一个假设函数
h
:
χ
→
ψ
h:\chi\rightarrow\psi
h:χ→ψ,所以
h
(
x
)
h(x)
h(x)是
y
y
y的一个好的预测器。
如果
y
y
y是离散的,我们称为分类问题。如果
y
y
y是连续的,我们称为回归问题。
1 线性回归
h
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
h(x)=\theta_0+\theta_1x_1+\theta_2x_2
h(x)=θ0+θ1x1+θ2x2
θ
i
\theta_i
θi称为参数。
使用向量标记:
h
(
x
)
=
θ
T
x
,
θ
=
[
θ
0
θ
1
θ
2
]
,
x
=
[
1
x
1
x
2
]
h(x)=\theta^Tx,\theta=\begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2 \end{bmatrix},x=\begin{bmatrix} 1\\ x_1\\ x_2 \end{bmatrix}
h(x)=θTx,θ=⎣⎡θ0θ1θ2⎦⎤,x=⎣⎡1x1x2⎦⎤
最小二乘法
损失函数:
J
(
θ
)
=
1
2
∑
i
=
1
m
(
h
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta)=\frac{1}{2}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2
J(θ)=21i=1∑m(h(x(i))−y(i))2
x
(
i
)
x^{(i)}
x(i)表示第几个样本,而
x
i
x_{i}
xi表示
x
x
x的第几个特征。
总结最小二乘法问题:
m
i
n
θ
J
(
θ
)
=
m
i
n
θ
1
2
∑
i
=
1
m
(
h
(
x
(
i
)
−
y
(
i
)
)
)
2
min_\theta\quad J(\theta)=min_\theta\frac{1}{2}\sum_{i=1}^m(h(x^{(i)}-y^{(i)}))^2
minθJ(θ)=minθ21i=1∑m(h(x(i)−y(i)))2
最小化损失函数的方法:
- 数值解法(梯度下降,牛顿方法)
- 分析解法(正规方程)
1.1 梯度下降
利用一阶导数优化,来发现最优值。
如果
J
(
θ
)
J(\theta)
J(θ)是凸的,那么梯度下降算法一定可以找到全局最优解。
要点:
- 随机开始
- 迭代计算 θ \theta θ
对最小二乘法来说:
m
i
n
θ
J
(
θ
)
=
m
i
n
θ
1
2
∑
i
=
1
m
(
h
(
x
(
i
)
)
−
y
(
i
)
)
2
=
1
2
∑
i
=
1
m
(
θ
T
x
(
i
)
−
y
(
i
)
)
2
min_\theta\quad J(\theta)=min_\theta\frac{1}{2}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2=\frac{1}{2}\sum_{i=1}^m(\theta^Tx^{(i)}-y^{(i)})^2
minθJ(θ)=minθ21i=1∑m(h(x(i))−y(i))2=21i=1∑m(θTx(i)−y(i))2
▽
J
(
θ
)
=
[
∂
J
(
θ
)
∂
θ
1
.
.
.
∂
J
(
θ
)
∂
θ
n
]
,
\bigtriangledown J(\theta)=\begin{bmatrix}\frac{\partial J(\theta)}{\partial \theta_1}\\ ...\\ \frac{\partial J(\theta)}{\partial \theta_n} \end{bmatrix},
▽J(θ)=⎣⎢⎡∂θ1∂J(θ)...∂θn∂J(θ)⎦⎥⎤,
∂
J
(
θ
)
∂
θ
j
=
∂
1
2
∑
i
=
1
m
(
θ
T
x
(
i
)
−
y
(
i
)
)
2
∂
θ
j
=
∑
i
=
1
m
(
θ
T
x
(
i
)
−
y
(
i
)
)
x
j
(
i
)
\frac{\partial J(\theta)}{\partial\theta_j}=\frac{\partial \frac{1}{2}\sum_{i=1}^m(\theta^Tx^{(i)}-y^{(i)})^2}{\partial\theta_j}=\sum_{i=1}^m(\theta^Tx^{(i)}-y^{(i)})x_j^{(i)}
∂θj∂J(θ)=∂θj∂21∑i=1m(θTx(i)−y(i))2=i=1∑m(θTx(i)−y(i))xj(i)
损失函数:
▽
J
(
θ
)
=
∑
i
=
1
m
(
θ
T
x
(
i
)
−
y
(
i
)
)
x
j
(
i
)
\bigtriangledown J(\theta)=\sum_{i=1}^m(\theta^Tx^{(i)}-y^{(i)})x_j^{(i)}
▽J(θ)=∑i=1m(θTx(i)−y(i))xj(i)
梯度更新公式:
θ
:
=
θ
−
α
▽
J
(
θ
)
\theta:=\theta-\alpha\bigtriangledown J(\theta)
θ:=θ−α▽J(θ)
Batch (批)梯度下降和随机梯度下降:
θ
\theta
θ每次更新,每次读取训练数据。
- 随机梯度下降很快
- 适合大量的数据
1.2 正规方程
最小化
J
(
θ
)
J(\theta)
J(θ):
矩阵表示形式:
[
.
.
.
(
x
(
1
)
)
T
.
.
.
.
.
.
(
x
(
2
)
)
T
.
.
.
.
.
.
.
.
.
.
(
x
(
m
)
)
T
.
.
.
]
,
y
=
[
y
(
1
)
y
(
2
)
.
.
.
.
y
(
m
)
]
\begin{bmatrix} ...(x^{(1)})^T...\\ ...(x^{(2)})^T...\\ ....\\ ...(x^{(m)})^T... \end{bmatrix},y=\begin{bmatrix} y^{(1)}\\ y^{(2)}\\ ....\\ y^{(m)} \end{bmatrix}
⎣⎢⎢⎡...(x(1))T......(x(2))T..........(x(m))T...⎦⎥⎥⎤,y=⎣⎢⎢⎡y(1)y(2)....y(m)⎦⎥⎥⎤
J
(
θ
)
=
1
2
(
X
θ
−
y
)
T
(
X
θ
−
y
)
J(\theta)=\frac{1}{2}(X\theta-y)^T(X\theta-y)
J(θ)=21(Xθ−y)T(Xθ−y)
计算梯度:
▽
θ
J
(
θ
)
=
▽
θ
[
1
2
(
X
θ
−
y
)
T
(
X
θ
−
y
)
]
=
X
T
X
θ
−
X
T
y
\bigtriangledown_\theta J(\theta)=\bigtriangledown_\theta[\frac{1}{2}(X\theta-y)^T(X\theta-y)]=X^TX\theta-X^Ty
▽θJ(θ)=▽θ[21(Xθ−y)T(Xθ−y)]=XTXθ−XTy
当
J
(
θ
)
J(\theta)
J(θ)是凸的时,可以达到全局最优,这时
▽
J
(
θ
)
=
0
\bigtriangledown J(\theta)=0
▽J(θ)=0
这时
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ=(XTX)−1XTy
正规方程求解和梯度下降的区别
正规方程:
- 解析表达式
- 不稳定,不一定可以求解,当特征之间是有很强的联系的时候
- 速度会很慢,当数据很大的时候
梯度下降:
- 迭代解法
- 需要选择合适的 α \alpha α来确保损失函数的收敛
- 对大规模数据很适用
1.3 牛顿法优化损失函数
牛顿法通过迭代的方法求解方程的根。
x
n
+
1
:
=
x
n
−
f
(
x
n
)
f
‘
(
x
n
)
x_{n+1}:=x_n-\frac{f(x_n)}{f`(x_n)}
xn+1:=xn−f‘(xn)f(xn)
通过使用牛顿法来解决
▽
θ
J
(
θ
)
=
0
:
\bigtriangledown_\theta J(\theta)=0:
▽θJ(θ)=0:
x是一维的:
θ
:
=
θ
−
f
‘
(
x
)
f
‘
‘
(
x
)
\theta:=\theta-\frac{f`(x)}{f``(x)}
θ:=θ−f‘‘(x)f‘(x)
x是多维的:
θ
=
θ
−
H
−
1
(
θ
)
▽
J
(
θ
)
\theta=\theta-H^{-1}(\theta)\bigtriangledown J(\theta)
θ=θ−H−1(θ)▽J(θ)
H是HESSIAN矩阵。
优点
- 比梯度下降需要更少次迭代。
- 计算 H − 1 H^{-1} H−1需要很多时间。
- 当n很小的时候,计算的很快。
2 Logistic回归
2.1 Logistic回归的预测函数
Sigmoid函数:
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1
g
:
R
→
(
0
,
1
)
g:R\rightarrow(0,1)
g:R→(0,1)
g
‘
(
z
)
=
g
(
z
)
(
1
−
g
(
z
)
)
g`(z)=g(z)(1-g(z))
g‘(z)=g(z)(1−g(z))
Logistic的预测函数:
h
θ
=
g
(
θ
T
X
)
=
1
1
+
e
−
θ
T
X
h_\theta=g(\theta^TX)=\frac{1}{1+e^{-\theta^TX}}
hθ=g(θTX)=1+e−θTX1
Logistic回归的最大似然估计:
Logistic回归假设y|x是伯努利分布,即:
p
(
y
=
1
∣
x
;
θ
)
=
h
θ
(
x
)
,
p
(
y
=
0
∣
x
;
θ
)
=
1
−
h
θ
(
x
)
p(y=1|x;\theta)=h_\theta(x),p(y=0|x;\theta)=1-h_\theta(x)
p(y=1∣x;θ)=hθ(x),p(y=0∣x;θ)=1−hθ(x)
m个独立分布的样本,似然函数是:
L
(
θ
)
=
p
(
y
∣
x
;
θ
)
=
∏
i
=
1
m
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
L(\theta)=p(y|x;\theta)=\prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta)
L(θ)=p(y∣x;θ)=i=1∏mp(y(i)∣x(i);θ)
I
(
θ
)
=
l
o
g
(
L
(
θ
)
)
=
∑
i
=
1
m
y
(
i
)
l
o
g
h
θ
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
I(\theta)=log(L(\theta))=\sum_{i=1}^my^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)}))
I(θ)=log(L(θ))=i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))
2.2 多类别分类
每个数据属于多类别中的一类;
ψ
=
{
1
,
.
.
.
.
K
}
\psi=\{1,....K\}
ψ={1,....K}
2.2.1传统方法多分类
one-VS-rest
多次利用二分类来划分数据。
缺点:
- 类别不平衡:负样例的个数大于正样例的个数。
- 不同的分类器有着不同的置信标量。
3 SoftMax回归
假设
p
(
y
∣
x
)
p(y|x)
p(y∣x)是多项式分布。
h
θ
(
x
)
=
[
p
(
y
=
1
∣
x
;
θ
1
)
.
.
.
.
.
.
p
(
y
=
k
∣
x
;
θ
k
)
]
=
1
∑
j
=
1
k
e
θ
j
T
x
j
[
e
θ
1
T
x
e
θ
2
T
x
.
.
.
e
θ
k
T
x
]
=
s
o
f
t
m
a
x
(
θ
T
x
)
h_\theta(x)=\begin{bmatrix} p(y=1|x;\theta_1)\\ ...\\ ...\\ p(y=k|x;\theta_k)\end{bmatrix}=\frac{1}{\sum_{j=1}^ke^{\theta^T_j}x_j }\begin{bmatrix} e^{\theta^T_1}x\\ e^{\theta^T_2}x\\ ...\\ e^{\theta^T_k}x\end{bmatrix}=softmax(\theta^Tx)
hθ(x)=⎣⎢⎢⎡p(y=1∣x;θ1)......p(y=k∣x;θk)⎦⎥⎥⎤=∑j=1keθjTxj1⎣⎢⎢⎡eθ1Txeθ2Tx...eθkTx⎦⎥⎥⎤=softmax(θTx)
s
o
f
t
m
a
x
(
z
i
)
=
e
z
i
∑
j
=
1
k
e
z
j
softmax(z_i)=\frac{e^{z_i}}{\sum_{j=1}^{k}e^{z_j}}
softmax(zi)=∑j=1kezjezi
给出m个样本
(
x
(
i
)
,
y
(
i
)
)
,
i
=
1
,
.
.
.
m
,
l
o
g
(x^{(i)},y^{(i)}),i=1,...m,log
(x(i),y(i)),i=1,...m,log下的SoftMax似然函数:
l
(
θ
)
=
∑
i
=
1
m
l
o
g
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
∑
i
=
1
m
l
o
g
∏
l
=
1
k
p
(
y
(
i
)
=
l
∣
x
(
i
)
)
{
1
y
(
i
)
=
l
}
=
∑
i
=
1
m
∑
l
=
1
k
{
1
y
(
i
)
=
l
}
l
o
g
p
(
y
(
i
)
=
l
∣
x
(
i
)
)
l(\theta)=\sum_{i=1}^mlogp(y^{(i)}|x^{(i)};\theta)=\sum_{i=1}^mlog\prod_{l=1}^kp(y^{(i)}=l|x^{(i)})^{\{{1y^{(i)}=l\}}}=\sum_{i=1}^{m}\sum_{l=1}^k\{1{y^{(i)}=l}\}logp(y^{(i)}=l|x^{(i)})
l(θ)=i=1∑mlogp(y(i)∣x(i);θ)=i=1∑mlogl=1∏kp(y(i)=l∣x(i)){1y(i)=l}=i=1∑ml=1∑k{1y(i)=l}logp(y(i)=l∣x(i))
=
∑
i
=
1
m
∑
l
=
1
k
1
{
y
(
i
)
=
l
}
l
o
g
e
θ
l
T
x
(
i
)
∑
j
=
1
k
e
θ
j
T
x
(
i
)
=\sum_{i=1}^m\sum_{l=1}^k1\{y^{(i)}=l\}log\frac{e^{\theta^T_lx^{(i)}}}{\sum_{j=1}^ke^{\theta_j^Tx^{(i)}}}
=i=1∑ml=1∑k1{y(i)=l}log∑j=1keθjTx(i)eθlTx(i)
求解
▽
θ
l
l
(
θ
)
\bigtriangledown_{\theta_l}l(\theta)
▽θll(θ):
▽
θ
l
l
(
θ
)
=
∑
i
=
1
m
[
(
1
{
y
(
i
)
=
l
}
−
P
(
y
(
i
)
=
l
∣
x
(
i
)
;
θ
)
)
x
(
i
)
]
\bigtriangledown_{\theta_l}l(\theta)=\sum_{i=1}^m[(1\{y^{(i)}=l\}-P(y^{(i)}=l|x^{(i)};\theta))x^{(i)}]
▽θll(θ)=i=1∑m[(1{y(i)=l}−P(y(i)=l∣x(i);θ))x(i)]
什么时候使用SoftMax?
当类别之间是互相排斥的使用SoftMax,不明显的时候使用多次二分类。