【cs229】吴恩达MachineLearning-2/2
本系列相关链接:
【cs229】吴恩达MachineLearning-1/2
4. Neural Networks
4.1 Why not linear
线性模型的缺点是,特征量太大且冗余,计算困难;
无法模拟异或门;
4.2 What about brain
神经重接实验证明,大脑皮层其实是通用的,不是专用的。换句话说,如果连上声音信号的采集器,这块区域就是一个声音处理器;如果连上视频信号,这块区域就是一个视频处理器,原来大脑是万能的。
如果我们能找出大脑的学习算法,然后在计算机上执行大脑学习算法或与之相似的算法,也许这将是我们向人工智能迈进做出的最好的尝试。人工智能的梦想就是有一天能制造出真正的智能机器。
(https://zhuanlan.zhihu.com/p/199833762)
4.3 Terminology in NN
θ
⇔
\theta\hArr
θ⇔ weights, parameters
a
i
l
=
g
(
z
i
l
)
⇔
{a_i}^l=g({z_i}^l)\hArr
ail=g(zil)⇔ activation of unit
i
i
i in layer
l
l
l
s
l
⇔
s_l\hArr
sl⇔ the number of units in layer
l
l
l, not counting bias unit
L
⇔
L\hArr
L⇔ total number of layers
Θ
l
⇔
\Theta^l\hArr
Θl⇔ matrix of weights controlling function mapping from layer
l
l
l to layer
l
+
1
l+1
l+1, shape is
s
l
+
1
×
(
s
l
+
1
)
s_{l+1}\times(s_l+1)
sl+1×(sl+1)
Θ
k
,
t
l
⇔
{\Theta_{k,t}}^l\hArr
Θk,tl⇔ weight controlling function mapping from layer
l
l
l input
t
t
t-th unit to layer
l
+
1
l+1
l+1 output
k
k
k-th unit.
δ
j
l
⇔
{\delta_j}^l\hArr
δjl⇔ “error” of node
j
j
j in layer
l
l
l.
4.4 Backpropagation Algorithm
导数的计算还是没明白,先跳过,务必看完补上
g
(
z
)
=
1
1
+
e
−
z
g
(
z
)
−
1
=
g
(
z
)
(
1
−
g
(
z
)
)
δ
L
=
a
L
−
y
δ
l
=
(
Θ
l
)
T
δ
l
+
1
.
∗
∂
∂
Θ
l
a
l
=
(
Θ
l
)
T
δ
l
+
1
.
∗
a
l
.
∗
(
1
−
a
l
)
J
(
Θ
)
=
−
1
m
[
∑
i
=
1
m
∑
k
=
1
K
y
k
i
l
o
g
h
θ
(
x
i
)
k
+
(
1
−
y
k
i
)
l
o
g
(
1
−
h
θ
(
x
i
)
k
)
]
+
λ
2
m
∑
l
=
1
L
−
1
∑
i
=
1
s
l
∑
j
=
1
s
l
+
1
(
Θ
i
j
l
)
2
Δ
l
:
=
Δ
l
+
δ
l
+
1
(
a
l
)
T
⇐
(
初
始
化
时
Δ
i
j
l
全
0
,
K
次
累
加
)
D
i
j
l
=
∂
∂
Θ
i
j
l
J
(
Θ
)
=
1
m
Δ
i
j
l
+
λ
m
Θ
i
j
l
≈
J
(
Θ
i
j
l
+
ϵ
)
−
J
(
Θ
i
j
l
−
ϵ
)
2
ϵ
⇐
(
G
r
a
d
i
e
n
t
C
h
e
c
k
i
n
g
)
\begin{aligned} g(z)&=\frac{1}{1+e^{-z}}\\ g(z)^{-1}&=g(z)(1-g(z))\\ \delta^L&=a^L-y\\ \delta^l&=(\Theta^l)^T\delta^{l+1}.*\frac{\partial}{\partial\Theta^l}a^l\\ &=(\Theta^l)^T\delta^{l+1}.*a^l.*(1-a^l)\\ J(\Theta)&=-\frac{1}{m}[\sum_{i=1}^{m}\sum_{k=1}^{K}{y_k}^ilogh_\theta(x^i)_k+(1-{y_k}^i)log(1-h_\theta(x^i)_k)]\\ &+\frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}({\Theta_{ij}}^l)^2\\ \Delta^l:&=\Delta^l+\delta^{l+1}({a^l})^T\lArr(初始化时{\Delta_{ij}}^l全0,K次累加)\\ {D_{ij}}^l&=\frac{\partial}{\partial{\Theta_{ij}}^l}J(\Theta)=\frac{1}{m}{\Delta_{ij}}^l+\frac{\lambda}{m}{\Theta_{ij}}^l\\ &\approx\frac{J({\Theta_{ij}}^l+\epsilon)-J({\Theta_{ij}}^l-\epsilon)}{2\epsilon}\lArr(Gradient Checking) \end{aligned}
g(z)g(z)−1δLδlJ(Θ)Δl:Dijl=1+e−z1=g(z)(1−g(z))=aL−y=(Θl)Tδl+1.∗∂Θl∂al=(Θl)Tδl+1.∗al.∗(1−al)=−m1[i=1∑mk=1∑Kykiloghθ(xi)k+(1−yki)log(1−hθ(xi)k)]+2mλl=1∑L−1i=1∑slj=1∑sl+1(Θijl)2=Δl+δl+1(al)T⇐(初始化时Δijl全0,K次累加)=∂Θijl∂J(Θ)=m1Δijl+mλΘijl≈2ϵJ(Θijl+ϵ)−J(Θijl−ϵ)⇐(GradientChecking)
打破对称 Symmetry breaking
如果
Θ
\Theta
Θ初始化为相同值,则:
同一layer的所有
a
i
l
{a_i}^l
ail都相同,所以同一layer的所有
δ
i
l
{\delta_i}^l
δil都相同,则:
同一layer连接下一层同一个node的所有
∂
∂
Θ
i
j
l
J
(
Θ
)
\frac{\partial}{\partial{\Theta_{ij}}^l}J(\Theta)
∂Θijl∂J(Θ)都相同(
i
i
i、
l
l
l固定),则:
每次迭代后
Θ
i
j
l
{\Theta_{ij}}^l
Θijl都相同(
i
i
i、
l
l
l固定),那就永远相同下去,就冗余了。
5. Machine Learning System Design
如何评估ML系统是否work?
- 数据集切分为训练集+测试集;
- model selection problem: 切分为训练集+验证集+测试集;
(三份数据,一份用来训练,一份用于选择模型,一份用于在最终的模型上做测试); - underfit = high bias, overfit = high variance
- underfit时,增加样本量不能解决问题;
- error analysis, 分析交叉验证集中的哪些样本被错误分类(臭名昭著的特征工程)
- Precision/Recall (需要权衡)
Skewed Data 倾斜数据 样本不均衡
P r e c i s i o n ⇔ Precision\hArr Precision⇔预测的患癌症的人,有多少是真正的癌症患者;
R e c a l l ⇔ Recall\hArr Recall⇔真正的癌症患者,有多少被我们识别出来;
F 1 s c o r e = 2 P R P + R F_1score=2\frac{PR}{P+R} F1score=2P+RPR验证集上计算 F 1 s c o r e F_1score F1score,选定threshold,然后预测测试集;
6. SVM
6.1 Large Margin
l
o
g
i
s
t
i
c
r
e
g
r
e
s
s
i
o
n
:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
y
i
l
o
g
h
θ
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
h
θ
(
x
i
)
+
λ
2
m
∑
j
=
1
n
θ
j
2
=
1
m
∑
i
=
1
m
−
y
i
l
o
g
h
θ
(
x
i
)
−
(
1
−
y
i
)
l
o
g
(
1
−
h
θ
(
x
i
)
+
λ
2
m
∑
j
=
1
n
θ
j
2
y
=
1
时
,
期
望
θ
T
X
≥
0
;
y
=
0
时
,
期
望
θ
T
X
<
0
⇓
(
C
=
1
λ
)
S
V
M
:
J
(
θ
)
=
C
∑
i
=
1
m
y
i
c
o
s
t
1
(
θ
T
x
i
)
+
(
1
−
y
i
)
c
o
s
t
0
(
θ
T
x
i
)
+
1
2
∑
j
=
1
n
θ
j
2
y
=
1
时
,
期
望
θ
T
X
≥
1
;
y
=
0
时
,
期
望
θ
T
X
≤
−
1
⇓
等
效
于
y
=
1
时
,
期
望
P
∥
θ
∥
≥
1
;
y
=
0
时
,
期
望
P
∥
θ
∥
≤
−
1
(
C
很
大
时
,
上
述
第
一
项
逼
近
0
)
\begin{aligned} logistic~regression&:\\ J(\theta)&=-\frac{1}{m}\sum_{i=1}^{m}y^ilogh_\theta(x^i)+(1-y^i)log(1-h_\theta(x^i)+\frac{\lambda}{2m}\sum_{j=1}^{n}{\theta_j}^2\\ &=\frac{1}{m}\sum_{i=1}^{m}-y^ilogh_\theta(x^i)-(1-y^i)log(1-h_\theta(x^i)+\frac{\lambda}{2m}\sum_{j=1}^{n}{\theta_j}^2\\ y&=1时,期望\theta^TX\geq0; y=0时,期望\theta^TX<0\\ &\Downarrow(C=\frac{1}{\lambda})\\ SVM&:\\ J(\theta)&=C\sum_{i=1}^{m}y^icost_1(\theta^Tx^i)+(1-y^i)cost_0(\theta^Tx^i)+\frac{1}{2}\sum_{j=1}^{n}{\theta_j}^2\\ y&=1时,期望\theta^TX\geq1; y=0时,期望\theta^TX\leq-1\\ &\Downarrow 等效于\\ y&=1时,期望P\Vert\theta\Vert\geq1; y=0时,期望P\Vert\theta\Vert\leq-1\\ (C&很大时,上述第一项逼近0) \end{aligned}
logistic regressionJ(θ)ySVMJ(θ)yy(C:=−m1i=1∑myiloghθ(xi)+(1−yi)log(1−hθ(xi)+2mλj=1∑nθj2=m1i=1∑m−yiloghθ(xi)−(1−yi)log(1−hθ(xi)+2mλj=1∑nθj2=1时,期望θTX≥0;y=0时,期望θTX<0⇓(C=λ1):=Ci=1∑myicost1(θTxi)+(1−yi)cost0(θTxi)+21j=1∑nθj2=1时,期望θTX≥1;y=0时,期望θTX≤−1⇓等效于=1时,期望P∥θ∥≥1;y=0时,期望P∥θ∥≤−1很大时,上述第一项逼近0)
还记得正则化的用处吗?防止少数用例对模型整体影响太大。SVM中
C
C
C的作用也是如此,如果C非常大,相当于
λ
\lambda
λ非常小,则正则化效果不明显,或者说受少数用例影响大。因此SVM算法中
C
C
C得是个合适的大值。
t
a
n
α
=
u
2
u
1
t
a
n
(
α
+
θ
)
=
v
2
v
1
=
t
a
n
α
+
t
a
n
θ
1
−
t
a
n
α
t
a
n
θ
⇓
两
式
可
得
:
t
a
n
θ
=
u
1
v
2
−
u
2
v
1
u
1
v
1
+
u
2
v
2
⇓
又
有
:
t
a
n
2
θ
+
1
=
s
e
c
2
θ
s
e
c
θ
=
∥
V
∥
P
=
v
1
2
+
v
2
2
P
⇓
综
上
可
得
:
P
=
u
1
v
1
+
u
2
v
2
(
u
1
2
+
u
2
2
)
(
v
1
2
+
v
2
2
)
⇓
也
即
:
U
T
V
=
P
⋅
∥
U
∥
=
V
T
U
\begin{aligned} tan\alpha&=\frac{u_2}{u_1}\\ tan(\alpha+\theta)&=\frac{v_2}{v_1}=\frac{tan\alpha+tan\theta}{1-tan\alpha tan\theta}\\ &\Downarrow两式可得:\\ tan\theta&=\frac{u_1v_2-u_2v_1}{u_1v_1+u_2v_2}\\ &\Downarrow又有:\\ tan^2\theta+1&=sec^2\theta\\ sec\theta&=\frac{\Vert V\Vert}{P}=\frac{\sqrt{v_1^2+v_2^2}}{P}\\ &\Downarrow综上可得:\\ P&=\frac{u_1v_1+u_2v_2}{\sqrt{(u_1^2+u_2^2)(v_1^2+v_2^2)}}\\ &\Downarrow也即:\\ U^TV&=P\cdot\Vert U\Vert=V^TU \end{aligned}
tanαtan(α+θ)tanθtan2θ+1secθPUTV=u1u2=v1v2=1−tanαtanθtanα+tanθ⇓两式可得:=u1v1+u2v2u1v2−u2v1⇓又有:=sec2θ=P∥V∥=Pv12+v22⇓综上可得:=(u12+u22)(v12+v22)u1v1+u2v2⇓也即:=P⋅∥U∥=VTU
6.2 Landmarks and Kernels
选择标记点,选择合适的核函数,设计新特征
f
e
a
t
u
r
e
x
=
s
i
m
i
l
a
r
i
t
y
(
s
a
m
p
l
e
,
l
a
n
d
m
a
r
k
x
)
=
k
e
r
n
e
l
k
(
s
a
m
p
l
e
,
l
a
n
d
m
a
r
k
x
)
\begin{aligned} feature_x&=similarity(sample, landmark_x)\\ &=kernel_k(sample, landmark_x) \end{aligned}
featurex=similarity(sample,landmarkx)=kernelk(sample,landmarkx)
标记点的选择:可以选所有正样本(or 所有样本?<–所有样本,并不适用
y
i
y^i
yi,正负样本的概念用0\1的输出表示了)
核函数设计特征的方法,为什么没有用于逻辑回归?计算量大,无法迁移使用针对SVM的 高级优化(?)。
常见的核函数有:
- 线性核
- 高斯核 g a u s s i n ( x , y ) = e x p ( − ∥ x − y ∣ 2 2 σ 2 ) gaussin(x,y)=exp(-\frac{\Vert x-y \vert^2}{2\sigma^2}) gaussin(x,y)=exp(−2σ2∥x−y∣2)(别忘记用feature scale)
- 多项式核,例如 ( X T Y ) 2 {(X^TY)}^2 (XTY)2、 ( X T Y + 4 ) 3 {(X^TY+4)}^3 (XTY+4)3等
7.Unsupervised Learning
7.1 K-means
算法核心:
- 可视化数据,手动选择K值
- 初始化K个中心
- 遍历所有数据看每个数据最靠近哪个中心
- 根据所附着的样本的均值移动中心
- 重复3-4,直到损失 J J J最小( J J J指所有样本离自己所在中心的距离的和)
- 重复2-5,多次随机初始化后,取损失最小的
(因为不同的初始化位置,可能导致聚类并不是最优的,例如将两类合为一类,又将一类分成两类) - 重复1-6,多个K值后,选择拐点Elbow的K值,K太小误差大,K太大没意义
注意,K-means也能用于无明显界限的数据聚类,例如将衣服尺寸根据体重身高强行分成S\M\L三个档次。
7.2 Data Compression and PCA
数据压缩/降维的好处:减小计算量,降低内存
Principal Component Analysis
PCA跟线性回归完全不同,线性回归试图找到一条线将所有样本基本贯穿,误差是红线上的预测值和样本标签/纵坐标的距离;PCA试图找到一条线能基本投影所有样本,误差是样本点到红线的投影高度。
PCA算法核心:
- 预处理数据 X 维 度 m × n X维度m\times n X维度m×n,减均值除范围
- 构造协方差矩阵 S i g m a = X T X 维 度 n × n Sigma=X^TX维度n\times n Sigma=XTX维度n×n
- 奇异值分解: [ U , S , V ] = s v d ( S i g m a ) [U,S,V] = svd(Sigma) [U,S,V]=svd(Sigma)
- 取 U U U的前K个列向量,作为主成分 U r e d u c e U_{reduce} Ureduce
- z = U r e d u c e T x , x 维 度 n × 1 , U r e d u c e 维 度 n × k z={U_{reduce}}^Tx,x 维度n\times1, U_{reduce}维度n\times k z=UreduceTx,x维度n×1,Ureduce维度n×k
- 如果想将数据恢复成高维, x a p p r o x = U r e d u c e z x_{approx}=U_{reduce}z xapprox=Ureducez
- PCA无法解决过拟合
选择合适的K,例如保留99%的方差:
∑
i
=
1
m
∥
x
i
−
x
a
p
p
r
o
x
i
∥
2
∑
i
=
1
m
∥
x
i
∥
2
≤
0.01
\frac{\sum_{i=1}^{m}{\Vert x^i-{x_{approx}}^i\Vert}^2}{\sum_{i=1}^{m}{\Vert x^i\Vert}^2}\leq0.01
∑i=1m∥xi∥2∑i=1m∥xi−xapproxi∥2≤0.01
另一个等效的、更快的方法是,根据svd返回的对角线矩阵
S
S
S,其只有对角线非零并按照顺序表示特征的重要性依次递减。
8. Anomaly Detection
8.1 Gaussian/Normal Distribution
X
∼
N
(
μ
,
σ
2
)
X\thicksim~ \Nu(\mu,\sigma^2)
X∼ N(μ,σ2)
p
(
x
)
=
1
2
π
σ
e
x
p
(
−
(
x
−
μ
)
2
2
σ
2
)
p(x)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2})
p(x)=2πσ1exp(−2σ2(x−μ)2)
σ
2
=
1
m
∑
i
=
1
m
(
x
i
−
μ
)
2
\sigma^2=\frac{1}{m}\sum_{i=1}^{m}(x_i-\mu)^2
σ2=m1∑i=1m(xi−μ)2,数学上的标准差的定义是m-1,但是ML常用的是m,好计算,且m很大时两者没有理论上的区别。
8.2 vs. supervised learning
异常检测的数据中,异常样本(正样本)远远少于正常样本;异常检测中,异常样本之间互不相同、无法“以此类推”。
原始数据不符合高斯分布怎么办?虽然能work,但是不能很好拟合,所以最好先进行转换(例如sqrt、n次幂、log…)使得预处理的数据基本符合高斯分布。
8.3 Multivariate Gaussian Distribution
多个单维高斯分布= Σ \Sigma Σ只有对角线非零的多参高斯分布。
9.Recommender Systems
9.1 Content Based Recommendations
已知每部电影的特征值 x x x,根据每个用户已经看过的电影的评分,学习参数 θ \theta θ,最后预测该用户对一个没看过的电影的评分 θ u s e r T x m o v i e {\theta_{user}}^Tx_{movie} θuserTxmovie。
9.2 Collaborative Filtering
已知每个用户的评分标准 θ \theta θ,根据每个用户已经看过的电影的评分,学习电影的特征值 x x x,最后预测用户对该没看过的电影的评分 θ u s e r T x m o v i e {\theta_{user}}^Tx_{movie} θuserTxmovie。
不断根据
θ
\theta
θ、
x
x
x互相推导、迭代更新,则可以不错的进行推荐。
θ
1
,
.
.
.
,
θ
n
u
m
i
n
1
2
∑
j
=
1
n
u
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
j
)
T
x
i
−
y
i
,
j
)
2
+
λ
2
∑
j
=
1
n
u
∑
k
=
1
n
(
θ
k
j
)
2
x
1
,
.
.
.
,
x
n
m
m
i
n
1
2
∑
i
=
1
n
m
∑
j
:
r
(
i
,
j
)
=
1
(
(
θ
j
)
T
x
i
−
y
i
,
j
)
2
+
λ
2
∑
i
=
1
n
m
∑
k
=
1
n
(
x
k
j
)
2
⇓
J
(
x
1
,
.
.
.
,
x
n
m
,
θ
1
,
.
.
.
,
θ
n
u
)
=
1
2
∑
(
i
,
j
)
:
r
(
i
,
j
)
=
1
(
(
θ
j
)
T
x
i
−
y
i
,
j
)
2
+
λ
2
∑
j
=
1
n
u
∑
k
=
1
n
(
θ
k
j
)
2
+
λ
2
∑
i
=
1
n
m
∑
k
=
1
n
(
x
k
j
)
2
\begin{aligned} _{\theta^1,...,\theta^{n_u}}^{~~~min}\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}((\theta^j)^Tx^i-y^{i,j})^2&+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}({\theta_k}^j)^2\\ _{x^1,...,x^{n_m}}^{~~~min}\frac{1}{2}\sum_{i=1}^{n_m}\sum_{j:r(i,j)=1}((\theta^j)^Tx^i-y^{i,j})^2&+\frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}({x_k}^j)^2\\ &\dArr\\ J(x^1,...,x^{n_m},\theta^1,...,\theta^{n_u})=\frac{1}{2}\sum_{(i,j):r(i,j)=1}((\theta^j)^Tx^i-y^{i,j})^2&+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}({\theta_k}^j)^2+\frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}({x_k}^j)^2\\ \end{aligned}
θ1,...,θnu min21j=1∑nui:r(i,j)=1∑((θj)Txi−yi,j)2x1,...,xnm min21i=1∑nmj:r(i,j)=1∑((θj)Txi−yi,j)2J(x1,...,xnm,θ1,...,θnu)=21(i,j):r(i,j)=1∑((θj)Txi−yi,j)2+2λj=1∑nuk=1∑n(θkj)2+2λi=1∑nmk=1∑n(xkj)2⇓+2λj=1∑nuk=1∑n(θkj)2+2λi=1∑nmk=1∑n(xkj)2
统一公式如上,实际上可以用偏导同时更新
θ
\theta
θ和
x
x
x;
向量化公式为: X Θ T = Y , 其 中 Y 是 n m × n u 的 打 分 矩 阵 X\Theta^T=Y,其中Y是n_m\times n_u的打分矩阵 XΘT=Y,其中Y是nm×nu的打分矩阵;
面对新用户A,上面的
J
(
)
J()
J()的第一项不存在,
∂
∂
θ
A
J
(
)
\frac{\partial}{\partial\theta^A}J()
∂θA∂J()也就只有第二项跟
θ
\theta
θ有关,最小化
J
(
)
J()
J()会导致
θ
A
\theta_A
θA全0,那怎么推荐?
Mean Normalization的做法就是根据所有用户的观看评分计算每部电影的平均得分,作为新用户的预测得分,也就是
(
θ
j
)
T
x
i
+
μ
i
(\theta^j)^Tx^i+\mu_i
(θj)Txi+μi;
类似的,面对新电影,也可以使用Mean Normalization方法。
10. Large Datasets
数据量大一定好吗?不,例如high-bias问题,增加样本量并不能解决问题,而应该增加特征数,或者重新设计特征。
10.1 Stochastic Gradient Descent
区别于普通梯度下降算法(也叫Batch梯度下降),随机梯度下降每次只使用一个样本,就迈出一小步。随机体现在样本被shuffle,随机选样本。
10.2 Mini-batch Gradient Descent
区别于随机梯度下降算法,Mini-batch梯度下降每次使用多个样本。
不仅更快,而且向量化之后,可以借助很多计算库加速、并行化。
10.3 Online Learning
源源不断的新数据,不仅能进一步训练网络,而且可以捕捉到市场的新变化。
10.4 Map Reduce and Data Parallelism
数据量太大,可以调度多个机器计算。
11. OCR
Optical Character Recognition
- 检查文本框
- 字符分割
- 字符识别
- 单词校正
Artificial Data
人工合成新数据
- 确保生成的数据应该出现在数据集中
- 确保现在的分类器是low-bias的
Ceiling Analysis
分析pipeline中的哪个模块最值得花时间提高性能。