机器学习
week1
Introduction
1.Supervised Learning 监督学习
给定一个数据集,并且知道其一些正确输出,能够明确知道是不是正确或者错误
- 回归问题: 预测一个连续的值的输出
- 分类问题: 根据输入给出一个离散的结果输出
2.Unsupervised Learning 无监督学习
只给出一个数据集,并没有给出其关系,需要我们自行寻找其结构
Model and Cost Function
-
Model represention
m = number of examples
x = input
y = output
h = hypotheis h(x) = y 是一个预测,猜测的结构 -
Cost Function
代价函数(平方误差函数): J ( θ ) = 1 2 m ⋅ ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) J(\theta)=\frac{1}{2m}\cdot\sum^{m}_{i=1}(h(x^{(i)})-y^{(i)}) J(θ)=2m1⋅∑i=1m(h(x(i))−y(i))
目标:选择合适的h并且调整参数 θ \theta θ使得 J ( θ ) J(\theta) J(θ)最小
Parameter Learning
- Gradient Descent
目标:将代价函数J最小化
通过初始化不同的起点,每次都贪心找到的一个局部最低点
当对于 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)The gradient descent algorithm is:
repeat until convergence:
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) \theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1) θj:=θj−α∂θj∂J(θ0,θ1)
需要注意的- 是
θ
0
,
θ
1
\theta_0,\theta_1
θ0,θ1的赋值是同时进行的,即
temp 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) temp 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) θ 0 : = temp 0 θ 1 : = temp1 \begin{array}{l} \operatorname{temp} 0:=\theta_{0}-\alpha \frac{\partial}{\partial \theta_{0}} J\left(\theta_{0}, \theta_{1}\right) \\ \operatorname{temp} 1:=\theta_{1}-\alpha \frac{\partial}{\partial \theta_{1}} J\left(\theta_{0}, \theta_{1}\right) \\ \theta_{0}:=\text { temp } 0 \\ \theta_{1}:=\text { temp1 } \end{array} temp0:=θ0−α∂θ0∂J(θ0,θ1)temp1:=θ1−α∂θ1∂J(θ0,θ1)θ0:= temp 0θ1:= temp1 - α \alpha α为学习速率, α \alpha α越大,下降的速率越快,但是其值过大,可能会导致变换幅度过大,始终无法到达最低点,甚至导致最后结果为发散的。 α \alpha α过小则会导致,迭代速度过慢,花费时间过长。
- 当接近局部最低点时,偏导数会变小,自动降低迭代的速度,以靠近局部最低点,直到最后停留在偏导数值为0的局部最低点。
- 是
θ
0
,
θ
1
\theta_0,\theta_1
θ0,θ1的赋值是同时进行的,即
week2
Multivariate Linear Regression
1.Multiple features
含有多特征量的线性回归,通过矩阵乘法进行表示,通过向量的内积构造代价函数。n个特征量往往通过n+1维向量进行优化,第零维度表示初始值。回归方程如下所示
h
θ
(
x
)
=
[
θ
0
θ
1
…
θ
n
]
[
x
0
x
1
⋮
x
n
]
=
θ
T
x
h_{\theta}(x)=\left[\begin{array}{llll} \theta_{0} & \theta_{1} & \ldots & \theta_{n} \end{array}\right]\left[\begin{array}{c} x_{0} \\ x_{1} \\ \vdots \\ x_{n} \end{array}\right]=\theta^{T} x
hθ(x)=[θ0θ1…θn]⎣⎢⎢⎢⎡x0x1⋮xn⎦⎥⎥⎥⎤=θTx
2.Gridient descent for Multiple Variables
代价函数的定义仍为:
J ( θ ) = 1 2 m ⋅ ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) J(\theta)=\frac{1}{2m}\cdot\sum^{m}_{i=1}(h(x^{(i)})-y^{(i)}) J(θ)=2m1⋅∑i=1m(h(x(i))−y(i))
同样梯度递减算法,也没有发生变化,区别仅在于需要在更多维度上执行该算法。
为了更快找到最优点,可以通过调整特征值的统计特性,
- feature scaling 特征缩放
将特征值约束在-1到1之间,减少一些多余的充分过程,实际值,除以极差 s i s_i si - mean normalizzation 均值统一化
将不同不同均值的特征进行调整,利用 x − μ x-\mu x−μ
效果 x i : = x i − μ i s i x_i:=\frac{x_i-\mu_i}{s_i} xi:=sixi−μi
J
(
θ
)
J(\theta)
J(θ)应该随着迭代更新次数增加,逐渐下降。但是
α
\alpha
α的大小会影响其效果,过小更新过慢,过大则可能导致,不稳定的结果。
3.Features and Polynomial Regression
通过多项式的预测函数,可以拟合更为复杂的特征,构造的二次函数或者三次函数,也可以看作不同的变量,用线性回归方法,构造函数。
一个预测函数示例 h ( θ ) = θ 0 + θ 1 x + θ 2 x 2 h(\theta)= \theta_0 + \theta_1 x + \theta_2 x^2 h(θ)=θ0+θ1x+θ2x2
另外 特征缩放的方法在多项式回归中,要注意不同幂次函数的极差不同。
Computing Parameters Analytically
1.Normal equation
目标:给出一种利用解析式一次性求出最优解的方法
主要时间耗费在计算矩阵上,如果特征过多,会导致计算较慢
定义: θ = ( X T X ) − 1 X y \theta=(X^TX)^{-1}Xy θ=(XTX)−1Xy
其中x为特征矩阵m*(N+1)维,在原矩阵的基础上增加一个列全为
2.noninvertibilty
如果
X
T
X
X^TX
XTX不可逆,有两种可能,
- 存在两个不同的特征高度相关
- 特征值过多
week3
classification and representation
1.Classification
有若干个类和阈值,相互离散,根据阈值判断归属
2.Hypothesis Representation
- 假设函数 根据输入计算最后的预测值
- 逻辑函数 根据输入值进行逻辑计算
h θ ( x ) = g ( θ T x ) z = θ T x g ( z ) = 1 1 + e − z \begin{array}{l} h_{\theta}(x)=g\left(\theta^{T} x\right) \\ z=\theta^{T} x \\ g(z)=\frac{1}{1+e^{-z}} \end{array} hθ(x)=g(θTx)z=θTxg(z)=1+e−z1
对于二元分类问题,满足如下性质
h θ ( x ) = P ( y = 1 ∣ x ; θ ) = 1 − P ( y = 0 ∣ x ; θ ) P ( y = 0 ∣ x ; θ ) + P ( y = 1 ∣ x ; θ ) = 1 \begin{array}{l} h_{\theta}(x)=P(y=1 \mid x ; \theta)=1-P(y=0 \mid x ; \theta) \\ P(y=0 \mid x ; \theta)+P(y=1 \mid x ; \theta)=1 \end{array} hθ(x)=P(y=1∣x;θ)=1−P(y=0∣x;θ)P(y=0∣x;θ)+P(y=1∣x;θ)=1
3.Decision Boundary
逻辑函数的输出值,与边界进行比较,确定最后的输出值
决策边界不一定为线性,同样可能为线性或者非线性等等。
h θ ( x ) ≥ 0.5 → y = 1 h θ ( x ) < 0.5 → y = 0 \begin{array}{l} h_{\theta}(x) \geq 0.5 \rightarrow y=1 \\ h_{\theta}(x)<0.5 \rightarrow y=0 \end{array} hθ(x)≥0.5→y=1hθ(x)<0.5→y=0
即
g ( z ) ≥ 0.5 w h e n z ≥ 0 g(z) \geq 0.5 \\ when \ z \geq 0 g(z)≥0.5when z≥0
当 z = θ T X z=\theta^TX z=θTX时,
h θ ( x ) = g ( θ T x ) ≥ 0.5 when θ T x ≥ 0 \begin{array}{l} h_{\theta}(x)=g\left(\theta^{T} x\right) \geq 0.5 \\ \text { when } \theta^{T} x \geq 0 \end{array} hθ(x)=g(θTx)≥0.5 when θTx≥0
所以有
θ T x ≥ 0.5 → y = 1 θ T x < 0.5 → y = 0 \begin{array}{l} \theta^{T} x \geq 0.5 \rightarrow y=1 \\ \theta^{T} x <0.5 \rightarrow y=0 \end{array} θTx≥0.5→y=1θTx<0.5→y=0
Logistic Regression Model
1.Cost Function
逻辑回归代价函数定义
J ( θ ) = 1 m ∑ i = 1 m Cost ( h θ ( x ( i ) ) , y ( i ) ) Cost ( h θ ( x ) , y ) = − log ( h θ ( x ) ) if y = 1 Cost ( h θ ( x ) , y ) = − log ( 1 − h θ ( x ) ) if y = 0 \begin{array}{ll} J(\theta)=\frac{1}{m} \sum_{i=1}^{m} \operatorname{Cost}\left(h_{\theta}\left(x^{(i)}\right), y^{(i)}\right) & \\ \operatorname{Cost}\left(h_{\theta}(x), y\right)=-\log \left(h_{\theta}(x)\right) & \text { if } \mathrm{y}=1 \\ \operatorname{Cost}\left(h_{\theta}(x), y\right)=-\log \left(1-h_{\theta}(x)\right) & \text { if } \mathrm{y}=0 \end{array} J(θ)=m1∑i=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)=−log(hθ(x))Cost(hθ(x),y)=−log(1−hθ(x)) if y=1 if y=0
根据定义易得
Cost
(
h
θ
(
x
)
,
y
)
=
0
if
h
θ
(
x
)
=
y
Cost
(
h
θ
(
x
)
,
y
)
→
∞
if
y
=
0
and
h
θ
(
x
)
→
1
Cost
(
h
θ
(
x
)
,
y
)
→
∞
if
y
=
1
and
h
θ
(
x
)
→
0
\begin{aligned} \operatorname{Cost}\left(h_{\theta}(x), y\right) &=0 \text { if } h_{\theta}(x)=y \\ \operatorname{Cost}\left(h_{\theta}(x), y\right) & \rightarrow \infty \text { if } y=0 \text { and } h_{\theta}(x) \rightarrow 1 \\ \operatorname{Cost}\left(h_{\theta}(x), y\right) & \rightarrow \infty \text { if } y=1 \text { and } h_{\theta}(x) \rightarrow 0 \end{aligned}
Cost(hθ(x),y)Cost(hθ(x),y)Cost(hθ(x),y)=0 if hθ(x)=y→∞ if y=0 and hθ(x)→1→∞ if y=1 and hθ(x)→0
- Simplified Cost Function and Gradient Descent
两个cost函数,定义梯度递降函数,比较困难,因此需要将代价函数进行简化,得到结果如下
简化后端的代价函数
Cost ( h θ ( x ) , y ) = − y log ( h θ ( x ) ) − ( 1 − y ) log ( 1 − h θ ( x ) ) \operatorname{Cost}\left(h_{\theta}(x), y\right)=-y \log \left(h_{\theta}(x)\right)-(1-y) \log \left(1-h_{\theta}(x)\right) Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
所以代价函数为
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right] J(θ)=−m1∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
统一代价函数后,就可以设置合数的梯度递降算法
Repeat
{
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
)
}
\begin{array}{l} \text { Repeat }\{\\ \theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}} J(\theta)\\ \} \end{array}
Repeat {θj:=θj−α∂θj∂J(θ)}
向量化之后得到
θ
:
=
θ
−
α
m
X
T
(
g
(
X
θ
)
−
y
⃗
)
\theta:=\theta-\frac{\alpha}{m} X^{T}(g(X \theta)-\vec{y})
θ:=θ−mαXT(g(Xθ)−y)
3. Advanced Optimization
function [jVal, gradient] = costFunction(theta)
jVal = [...code to compute J(theta)...];
gradient = [...code to compute derivative of J(theta)...];
end
通过调用库函数,应用更为高级的优化算法。
Multiclass Classification
构造分类器,每次从所有数据中分离一类,最后就可以完成整体的分类过程。
y
∈
{
0
,
1
…
n
}
h
θ
(
0
)
(
x
)
=
P
(
y
=
0
∣
x
;
θ
)
h
θ
(
1
)
(
x
)
=
P
(
y
=
1
∣
x
;
θ
)
…
h
θ
(
n
)
(
x
)
=
P
(
y
=
n
∣
x
;
θ
)
prediction
=
max
i
(
h
θ
(
i
)
(
x
)
)
\begin{array}{l} y \in\{0,1 \ldots n\} \\ h_{\theta}^{(0)}(x)=P(y=0 \mid x ; \theta) \\ h_{\theta}^{(1)}(x)=P(y=1 \mid x ; \theta) \\ \ldots \\ h_{\theta}^{(n)}(x)=P(y=n \mid x ; \theta) \\ \text { prediction }=\max _{i}\left(h_{\theta}^{(i)}(x)\right) \end{array}
y∈{0,1…n}hθ(0)(x)=P(y=0∣x;θ)hθ(1)(x)=P(y=1∣x;θ)…hθ(n)(x)=P(y=n∣x;θ) prediction =maxi(hθ(i)(x))
The Problem of Overfitting
原因:完美拟合所有数据点,但是却得到了一条过于曲折的曲线,不能很好的进行预测。
与欠拟合相对应,后者为因为拟合的数据点过少而导致曲线无法进行预测。
解决方法:
- 去掉多余的数据点
- 正则化
- regularization
方法: 通过给不需要的特征值对于的参数,加上较大的代价值,在优化时,就会将该特征值忽略。
实际使用中:往往对所有的参数进行正则化,因为参数值越小,其得到曲线越平滑也越接近一条直线。好处是,不用手动选择需要进行惩罚的特征量。
引入的代价值即为正则化参数 λ \lambda λ
正则化之后的代价函数为
J ( θ ) = min θ 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n θ j 2 J(\theta )=\min _{\theta} \frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+\lambda \sum_{j=1}^{n} \theta_{j}^{2} J(θ)=minθ2m1∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2
- 正则参数过大会导致欠拟合,过小则无法达到取消过度拟合的作用。
- Regularized Linear Regression
梯度递降算法的修正如下:
Repeat { θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) θ j : = θ j − α [ ( 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ) + λ m θ j ] j ∈ { 1 , 2 … n } } \begin{array}{l} \text { Repeat }\{\\ \begin{array}{l} \theta_{0}:=\theta_{0}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{0}^{(i)} \\ \theta_{j}:=\theta_{j}-\alpha\left[\left(\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}\right)+\frac{\lambda}{m} \theta_{j}\right] \quad j \in\{1,2 \ldots n\} \end{array}\\ \} \end{array} Repeat {θ0:=θ0−αm1∑i=1m(hθ(x(i))−y(i))x0(i)θj:=θj−α[(m1∑i=1m(hθ(x(i))−y(i))xj(i))+mλθj]j∈{1,2…n}}
可以转化为 θ j : = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_{j}:=\theta_{j}\left(1-\alpha \frac{\lambda}{m}\right)-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)} θj:=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
其中 1 − α λ m 1-\alpha\frac{\lambda}{m} 1−αmλ总是小于1,就可以在每次梯度递降时减小 θ \theta θ的值
正规方程将 λ \lambda λ引入的方法如下:
θ = ( X T X + λ ⋅ L ) − 1 X T y where L = [ 0 1 1 ⋱ 1 ] \begin{array}{l} \theta=\left(X^{T} X+\lambda \cdot L\right)^{-1} X^{T} y \\ \text { where } L=\left[\begin{array}{lllll} 0 & & & & \\ & 1 & & & \\ & & 1 & & \\ & & & \ddots & \\ & & & &1 \end{array}\right] \end{array} θ=(XTX+λ⋅L)−1XTy where L=⎣⎢⎢⎢⎢⎡011⋱1⎦⎥⎥⎥⎥⎤
正则化之后就可以解决原来的方程不可逆的问题。
3.Regularized Logistic Regression
正则化的代价函数如下。
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
+
λ
2
m
∑
j
=
1
n
θ
j
2
J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right]+\frac{\lambda}{2 m} \sum_{j=1}^{n} \theta_{j}^{2}
J(θ)=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
week4
motivation about Neural Network
1.non-liner hypotheses
常规的多项式方法建立的假设函数,随着特征值的增加,面临项数过多,以及过拟合的问题,
2.Neorons ans the Brain
Neural Network
类似大脑,利用不同的层将不同的特征值组合起来,形成一张网络,就是神经网络。
简化的表示为
[
x
0
x
1
x
2
]
→
[
]
→
h
θ
(
x
)
[x_0x_1x_2] \to [\ ] \to h_\theta(x)
[x0x1x2]→[ ]→hθ(x)
包括输入层输出层和隐藏层
第一层也被称为输入层
最后一层为输出层
其余的为隐藏层
- 第 j j j层的第 i i i个单元的动作(activation)表示为 a i ( j ) a_i^{(j)} ai(j)
- 权重矩阵中用来控制第 j j j层到第 j + 1 j+1 j+1层的值为 Θ ( j ) \Theta^{(j)} Θ(j)
- 每一层都有自己的权重矩阵,用来计算动作。
- 如果第 j j j层有 s j s_j sj个动作而第 j + 1 j+1 j+1层有 s j + 1 s_{j+1} sj+1个动作,那么 Θ ( j ) \Theta^{(j)} Θ(j)有 s j + 1 × ( s j + 1 ) s_{j+1} \times (s_j + 1) sj+1×(sj+1)维。
举个栗子
当一个神经网络只有一个隐藏层时,其可以表示为
[ x 0 x 1 x 2 ] → [ a 1 ( 2 ) a 2 ( 2 ) a 3 ( 2 ) ] → h θ ( x ) [x_0x_1x_2] \to [ a_1^{(2)}a_2^{(2)}a_3^{(2)}] \to h_\theta(x) [x0x1x2]→[a1(2)a2(2)a3(2)]→hθ(x)
每一个动作的描述为
a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) h Θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) \begin{array}{r} a_{1}^{(2)}=g\left(\Theta_{10}^{(1)} x_{0}+\Theta_{11}^{(1)} x_{1}+\Theta_{12}^{(1)} x_{2}+\Theta_{13}^{(1)} x_{3}\right) \\ a_{2}^{(2)}=g\left(\Theta_{20}^{(1)} x_{0}+\Theta_{21}^{(1)} x_{1}+\Theta_{22}^{(1)} x_{2}+\Theta_{23}^{(1)} x_{3}\right) \\ a_{3}^{(2)}=g\left(\Theta_{30}^{(1)} x_{0}+\Theta_{31}^{(1)} x_{1}+\Theta_{32}^{(1)} x_{2}+\Theta_{33}^{(1)} x_{3}\right) \\ h_{\Theta}(x)=a_{1}^{(3)}=g\left(\Theta_{10}^{(2)} a_{0}^{(2)}+\Theta_{11}^{(2)} a_{1}^{(2)}+\Theta_{12}^{(2)} a_{2}^{(2)}+\Theta_{13}^{(2)} a_{3}^{(2)}\right) \end{array} a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))
定义变量z使得
a
1
(
2
)
=
g
(
z
1
(
2
)
)
a
2
(
2
)
=
g
(
z
2
(
2
)
)
a
3
(
2
)
=
g
(
z
3
(
2
)
)
\begin{array}{l} a_{1}^{(2)}=g\left(z_{1}^{(2)}\right) \\ a_{2}^{(2)}=g\left(z_{2}^{(2)}\right) \\ a_{3}^{(2)}=g\left(z_{3}^{(2)}\right) \end{array}
a1(2)=g(z1(2))a2(2)=g(z2(2))a3(2)=g(z3(2))
所以有
z
k
(
2
)
=
Θ
k
,
0
(
1
)
x
0
+
Θ
k
,
1
(
1
)
x
1
+
⋯
+
Θ
k
,
n
(
1
)
x
n
z_{k}^{(2)}=\Theta_{k, 0}^{(1)} x_{0}+\Theta_{k, 1}^{(1)} x_{1}+\cdots+\Theta_{k, n}^{(1)} x_{n}
zk(2)=Θk,0(1)x0+Θk,1(1)x1+⋯+Θk,n(1)xn
向量化为
x
=
[
x
0
x
1
⋯
x
n
]
z
(
j
)
=
[
z
1
(
j
)
z
2
(
j
)
⋯
z
n
(
j
)
]
x=\left[\begin{array}{c} x_{0} \\ x_{1} \\ \cdots \\ x_{n} \end{array}\right] z^{(j)}=\left[\begin{array}{c} z_{1}^{(j)} \\ z_{2}^{(j)} \\ \cdots \\ z_{n}^{(j)} \end{array}\right]
x=⎣⎢⎢⎡x0x1⋯xn⎦⎥⎥⎤z(j)=⎣⎢⎢⎢⎡z1(j)z2(j)⋯zn(j)⎦⎥⎥⎥⎤
进而有
z
(
j
+
1
)
=
Θ
(
j
)
a
(
j
)
z^{(j+1)}=\Theta^{(j)} a^{(j)}
z(j+1)=Θ(j)a(j)
可以转化为
h
Θ
(
x
)
=
a
(
j
+
1
)
=
g
(
z
(
j
+
1
)
)
h_{\Theta}(x)=a^{(j+1)}=g\left(z^{(j+1)}\right)
hΘ(x)=a(j+1)=g(z(j+1))
Application
1.与运算、或运算
通过取值模拟与和或运算
假设函数如下
A N D : h Θ = g ( − 30 + 20 x 1 + 20 x 2 ) O R : h Θ = g ( − 10 + 20 x 1 + 20 x 2 ) AND:h_{\Theta}=g(-30+20x_1+20x_2) \\ OR\ :h_{\Theta}=g(-10+20x_1+20x_2) AND:hΘ=g(−30+20x1+20x2)OR :hΘ=g(−10+20x1+20x2)
2.异或函数
无法用一层神经网络模拟,所以引入了第二层神经网络。
利用真值表就可以算出简单计算得到如果设计神经网络
3.Multiclass Classification
Week5 Neural network Learning
Cost function and backpropgation
- cost function
神经网络的代价函数,每一层为一个逻辑回归代价函数,将一层逻辑回归的代价函数进行推广,即可得到神经网络的代价函数。
J ( Θ ) = − 1 m ∑ i = 1 m ∑ k = 1 K [ y k ( i ) log ( ( h Θ ( x ( i ) ) ) k ) + ( 1 − y k ( i ) ) log ( 1 − ( h Θ ( x ( i ) ) ) k ) ] + λ 2 m ∑ l = 1 L − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( Θ j , i ( l ) ) 2 J(\Theta)=-\frac{1}{m} \sum_{i=1}^{m} \sum_{k=1}^{K}\left[y_{k}^{(i)} \log \left(\left(h_{\Theta}\left(x^{(i)}\right)\right)_{k}\right)+\left(1-y_{k}^{(i)}\right) \log \left(1-\left(h_{\Theta}\left(x^{(i)}\right)\right)_{k}\right)\right]\\ +\frac{\lambda}{2 m} \sum_{l=1}^{L-1} \sum_{i=1}^{s l} \sum_{j=1}^{s l+1}\left(\Theta_{j, i}^{(l)}\right)^{2} J(Θ)=−m1i=1∑mk=1∑K[yk(i)log((hΘ(x(i)))k)+(1−yk(i))log(1−(hΘ(x(i)))k)]+2mλl=1∑L−1i=1∑slj=1∑sl+1(Θj,i(l))2
- l l l为总层数
- s l sl sl为每层单元数
- K K K为输出单元数
- Backpropagation Algorithm
反向传播算法是神经网络最小化代价函数的算法,就像梯度递降算法一样,我们需要计算代价函数在某个位置的偏导数值,反向传播算法,利用结果和导数的定义进行计算,进而优化代价函数。
算法步骤:
1.给定数据集 { ( x ( 1 ) , y ( 1 ) ) ⋯ ( x ( m ) , y ( m ) ) } \left\{\left(x^{(1)}, y^{(1)}\right) \cdots\left(x^{(m)}, y^{(m)}\right)\right\} {(x(1),y(1))⋯(x(m),y(m))},
2.对于所有的 ( i , j , l ) (i,j,l) (i,j,l),设 Δ i , j ( l ) : = 0 \Delta_{i, j}^{(l)}:=0 Δi,j(l):=0
3.对于每一个数据 ( s ( t ) , y ( t ) ) , 1 ≤ t ≤ m (s^{(t)},y^{(t)})\ ,1\leq t \leq m (s(t),y(t)) ,1≤t≤m,我们令 a ( 1 ) = x ( t ) a^{(1)}=x^{(t)} a(1)=x(t),使用前向反馈算法计算所有的 a ( i ) , 2 ≤ i ≤ l a^{(i)},2\leq i \leq l a(i),2≤i≤l
4.用 y ( t ) y^{(t)} y(t),计算 δ ( L ) = a ( L ) − y ( t ) \delta^{(L)}=a^{(L)}-y^{(t)} δ(L)=a(L)−y(t),其中L为神经网络层数
5. 利用 δ ( l ) = ( ( Θ ( l ) ) T δ ( l + 1 ) ) ⋅ ∗ a ( l ) ⋅ ∗ ( 1 − a ( l ) ) \delta^{(l)}=\left(\left(\Theta^{(l)}\right)^{T} \delta^{(l+1)}\right) \cdot * a^{(l)} \cdot *\left(1-a^{(l)}\right) δ(l)=((Θ(l))Tδ(l+1))⋅∗a(l)⋅∗(1−a(l))依次计算$\delta^{(L-1)}, \delta^{(L-2)}, \ldots, \delta^{(2)} $
定义: g ′ ( z ( l ) ) = a ( l ) ⋅ ∗ ( 1 − a ( l ) ) g^{\prime}\left(z^{(l)}\right)=a^{(l)} \cdot *\left(1-a^{(l)}\right) g′(z(l))=a(l)⋅∗(1−a(l))
6.计算$\Delta_{i, j}^{(l)}:=\Delta_{i, j}{(l)}+a_{j}{(l)} \delta_{i}^{(l+1)} $
向量化并行表示为 Δ ( l ) : = Δ ( l ) + δ ( l + 1 ) ( a ( l ) ) T \Delta^{(l)}:=\Delta^{(l)}+\delta^{(l+1)}\left(a^{(l)}\right)^{T} Δ(l):=Δ(l)+δ(l+1)(a(l))T
更新 Δ \Delta Δ矩阵, D i , j ( l ) : = 1 m ( Δ i , j ( l ) + λ Θ i , j ( l ) ) , if j ≠ 0. D i , j ( l ) : = 1 m Δ i , j ( l ) If j = 0 \begin{array}{l} D_{i, j}^{(l)}:=\frac{1}{m}\left(\Delta_{i, j}^{(l)}+\lambda \Theta_{i, j}^{(l)}\right), \text { if } j \neq 0 . \\ D_{i, j}^{(l)}:=\frac{1}{m} \Delta_{i, j}^{(l)} \text { If } j=0 \end{array} Di,j(l):=m1(Δi,j(l)+λΘi,j(l)), if j=0.Di,j(l):=m1Δi,j(l) If j=0
7.得到了最后的偏导数值 ∂ ∂ Θ i j ( l ) J ( Θ ) = D i j ( l ) \frac{\partial}{\partial \Theta_{i j}^{(l)}} J(\Theta)=D_{i j}^{(l)} ∂Θij(l)∂J(Θ)=Dij(l)
每一个
δ
\delta
δ可以通过下一层所有的的
δ
\delta
δ反向计算得到,
例如:当第三层只有两个单元时,就可以得到
δ
2
(
2
)
=
Θ
12
(
2
)
δ
1
(
3
)
+
Θ
22
(
2
)
δ
2
(
3
)
\delta_{2}^{(2)}=\Theta_{12}^{(2)} \delta_{1}^{(3)}+\Theta_{22}^{(2)} \delta_{2}^{(3)}
δ2(2)=Θ12(2)δ1(3)+Θ22(2)δ2(3)
backpropgation application
1.gradient checking
检查算法错误,所带来的结果的误差
方法:利用导数的定义,近似计算某个点的导数值,观察两者是否相等,判断计算是否正确。
epsilon = 1e-4;
for i = 1:n,
thetaPlus = theta;
thetaPlus(i) += epsilon;
thetaMinus = theta;
thetaMinus(i) -= epsilon;
gradApprox(i) = (J(thetaPlus) - J(thetaMinus))/(2*epsilon)
end;
-
Random Initialization
多重神经网络如果呈现对称特性,则退化为了逻辑回归,所以需要随机设置初始值,同时需要注意,避免参数的对称性。 -
conclusion
进行依次神经网络学习,首先需要知道其结构,包括输入输出单元数量,隐藏层的数量和和隐藏单元数量
然后执行如下步骤- 随机初始化权重
- 计算前向传播
- 实现代价函数
- 计算反向传播,求偏导数
- 进行梯度检查
- 进行梯度递降算法
Week6
Evaluating a Learning Algorithm
- Hypotheis
目的:避免过拟合和欠拟合的问题
方法:将数据分为训练数据集和测试数据集两类,我们对于训练集进行学习,并通过测试集计算偏差值,评估假设的优劣。
err ( h Θ ( x ) , y ) = 1 if h Θ ( x ) ≥ 0.5 and y = 0 or h Θ ( x ) < 0.5 and y = 1 0 otherwise \operatorname{err}\left(h_{\Theta}(x), y\right)=\begin{array}{cc} 1 & \text { if } h_{\Theta}(x) \geq 0.5 \text { and } y=0 \text { or } h_{\Theta}(x)<0.5 \text { and } y=1 \\ 0 & \text { otherwise } \end{array} err(hΘ(x),y)=10 if hΘ(x)≥0.5 and y=0 or hΘ(x)<0.5 and y=1 otherwise - Model Selection and Train/Validation/Test Sets
在模型选择时,基于训练集选择,会导致过拟合等问题,于是需要一个交叉验证的有效集,比较不同模型的效果。一般分为3:1:1.
Bias vs. Variance
- Diagnosing Bias vs. Variance
高偏差(bias)表示为欠拟合,高方差(variance)表示为过度拟合 - regularization
通标准化,纠正过拟合和欠拟合时的方法,为列出 λ \lambda λ并且根据不同的多项式度数,进行学习。得到不同 λ \lambda λ和 Θ \Theta Θ对应代价函数的集合。
从中选择训练代价和验证代价最小的一组,作为待选的解 - Learning Curves
通过学习曲线,可以观察到训练数据量的大小,对于改进拟合效果的影响。随着m的增大,训练代价和验证代价将趋近相同,但不一定稳定在相同条件下。- 高偏差的情况下,增大m,更多数据也很难训练好,不会提高拟合效果
- 高方差的情况下,增大m,是训练集贴近真实,改善过拟合的效果 JCV高
- Conclusion
过拟合则减小样本集,欠拟合增大样本集
度数低的多项式,多会出现欠拟合的状态,偏差较高
度数高的多项式,多会出现过拟合的状态,方差较高
- 改进高方差:得到更多数据,减少方差度数,增大惩罚参数
- 改进高偏差: 增大特征值数量,增大幂次,减小惩罚参数
Build a spam classifer
设计一个复杂的机器学习算法需要
- 收集大量数据
- 选择合适的特征值
- 使用算法加速学习以及输入过程
误差分析
- 首先选择一个相对简单的算法
- 画出学习曲线,分析特征值
- 手动检验误差,并调整起始算法
Skewed Data
通过根据预测结果与实际结果,分析召回率准确率等信息。
P=预测 A=实际 (P,A)表示一次预测
A=1 | A=0 | |
---|---|---|
P=1 | True Possitive | Flase Possitive |
P=0 | Flase Negative | True Negative |
召回率(Recall)=(P=1,A=1)/(P=1,A=1)+(P=0,A=1)
查准率(Prediction)=(P=1,A=1)/(P=1,A=1)+(P=1,A=0)
综合评价方法 Fscore=
2
P
R
P
+
R
2\frac{PR}{P+R}
2P+RPR
Week7 Support Vector Machine
Large Margin Classification
- SVM(支持向量机) 可以学习更为复杂的非线性方程
从逻辑回归逐步改进得到SVM的假设函数如下所示
min θ C ∑ i = 1 m [ y ( i ) cost 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) cost 0 ( θ T x ( i ) ) ] + 1 2 ∑ i = 1 n θ j 2 \min _{\theta} C \sum_{i=1}^{m}\left[y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} x^{(i)}\right)+\left(1-y^{(i)}\right) \operatorname{cost}_{0}\left(\theta^{T} x^{(i)}\right)\right]+\frac{1}{2} \sum_{i=1}^{n} \theta_{j}^{2} θminCi=1∑m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21i=1∑nθj2 - 大间隔分类器
SVM常用来分离两组数据,通过SVM可以求解出间隔最大的分离线,实现最优的分离方法。 - 数学推导
- Inner product
u = [ u 1 u 2 ] T v = [ v 1 v 2 ] T u=[u_1\ u_2]^T\ v=[v_1\ v_2]^T u=[u1 u2]T v=[v1 v2]T
$\left | \left | u \right | \right | = \text{length of u} = \sqrt{ u_12+u_22} $
所以,
u T v = u 1 ∗ v 2 + u 2 ∗ v 1 u^Tv=u_1*v_2+u_2*v_1 uTv=u1∗v2+u2∗v1
如果 p p p是 v v v在 u u u上的投影长度
那么,
u T v = p ∗ ∣ ∣ u ∣ ∣ u^Tv=p*||u|| uTv=p∗∣∣u∣∣ - SVM Decision Boundary
m i n 1 2 Σ j = 1 n θ j 2 min\frac{1}{2} \Sigma^{n}_{j=1} \theta_j^2 min21Σj=1nθj2
- Inner product
Kernal function
当对非线性的类进行区分时,需要引入不同的区预测方程。
h
θ
=
θ
T
f
(
x
)
h_{\theta}=\theta^Tf(x)
hθ=θTf(x)
则不同的
f
(
x
)
f(x)
f(x)成为核函数,利用不同的核函数可以区分不同的类。
其中高斯核函数为
f
(
x
)
=
e
x
p
(
−
∣
∣
x
−
l
(
i
)
∣
∣
2
σ
2
)
f(x)=exp(-\frac{||x-l^{(i)}||}{2\sigma^2})
f(x)=exp(−2σ2∣∣x−l(i)∣∣)
其中,
l
(
i
)
l^{(i)}
l(i)为已知的点
支持向量回归
利用支持向量机构造的回归函数
min
θ
C
∑
i
=
1
m
y
(
i
)
cost
1
(
θ
T
f
(
i
)
)
+
(
1
−
y
(
i
)
)
cos
t
0
(
θ
T
f
(
i
)
)
+
1
2
∑
j
=
1
n
=
m
θ
j
2
\min _{\theta} C \sum_{i=1}^{m} y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} f^{(i)}\right)+\left(1-y^{(i)}\right) \cos t_{0}(\theta^{T} f^{(i)})+\frac{1}{2} \sum_{j=1}^{n=m} \theta_{j}^{2}
θminCi=1∑my(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))+21j=1∑n=mθj2
其中,
C
=
1
λ
C=\frac{1}{\lambda}
C=λ1,C越大方差越小,偏差越大,C越小方差越大,偏差越小
对于高斯核函数,
σ
2
\sigma^2
σ2越大,曲线越平滑,方差越大,偏差越小,
σ
2
\sigma^2
σ2越小,曲线越陡峭,方差越小,偏差越大
How to use
- 选择参数C
- 选择核函数
- 选择核函数的参数,例如高斯核函数的 σ 2 \sigma^2 σ2
逻辑回归 vs. SVM
- n很大,则使用逻辑回归SVM线性核函数
- n比较小, m的大小适中,则使用SVM的高斯核函数
- n很小,但是m很大,则添加更多特征来,然后使用逻辑回归或者线下核函数的SVM
- 神经网络适应大部分情况,但是通常速度较慢
Week8
Unsupervised Learning
Clustering
- Clustering
聚类是一种常见的无监督学习, - K-Means
划分聚类的算法,数据中选择K个聚类中心,利用到聚类中心的距离,划分成K个距离的过程
步骤:- 选择K个距聚类中心,将每个数据点划分到距其最近的距离中心
- 将每一个聚类的所有点的平均值作为,新的聚类中心
- 重复上述过程
- 优化目标
目标:让所有距离的平方最小 称为失真代价函数
K均值算法的代价函数,不会增大,每次循环都能缩小代价函数。 - 随机初始化
避开局部最优化现象,需要随机的初始化聚类中心。
方法:每次随机化的从所有点中选择k个点,作为聚类中心 - 聚类数量
肘部法则:在失真函数减小速度变缓的点作为聚类数量(斜率突然减小的点)
dimensionality reduction
- data-compression
将拥有较多特征值的数据,压缩维度,减少特征量,降低使用的存储空间 - data-visualization
- 主成分分析算法PCA
找到一个低维平面,使得所有数据点到该低维平面距离最短,点到平面的距离称为,投影误差。
与线性回归的区别在于,PCA算法没有特别的y值需要去预测,所有的数据均为已知数据点。
方法:- 计算协方差矩阵
- 求解协方差矩阵的特征向量
- Applying
- k 平方误差/数据总偏差 ≤ 0.01 \leq 0.01 ≤0.01
- 1 m ∑ i = 1 m ∥ x ( i ) − x a p p r o x ( i ) ∥ 2 1 m ∑ i = 1 m ∥ x ( i ) ∥ 2 ≤ 0.01 ? \frac{\frac{1}{m} \sum_{i=1}^{m}\left\|x^{(i)}-x_{a p p r o x}^{(i)}\right\|^{2}}{\frac{1}{m} \sum_{i=1}^{m}\left\|x^{(i)}\right\|^{2}} \leq 0.01 ? m1∑i=1m∥x(i)∥2m1∑i=1m∥x(i)−xapprox(i)∥2≤0.01?
Week 9
高斯分布和异常检查算法
数据集$\left { {x{(1)},x{(2)},…x^{(m)}} \right } $ x的取值范围为
x
∈
R
n
x \in \mathbb{R}^{n}
x∈Rn
对于每个x的出现的概率
p
(
x
)
=
∏
j
=
1
n
p
(
x
j
;
μ
j
,
σ
j
2
)
p(x)=\prod_{j=1}^{n} p(x_j ; \mu_j,\sigma _j^2 )
p(x)=∏j=1np(xj;μj,σj2)
异常检测算法步骤:
- 选择与异常数据相关的特征值
- 估计参数
μ j = 1 m Σ u = 1 m x j ( i ) \mu_j=\frac{1}{m}\Sigma ^{m}_{u=1}x_j^{(i)} μj=m1Σu=1mxj(i)
σ j 2 = 1 m Σ i = 1 m ( x j ( i ) − μ j ) 2 \sigma_j^2=\frac{1}{m}\Sigma^{m}_{i=1}(x_j^{(i)}-\mu_j)^2 σj2=m1Σi=1m(xj(i)−μj)2 - 给定一个新的x,计算
p
(
x
)
p(x)
p(x)
p ( x ) = ∏ j = 1 n p ( x j ; u j , σ j 2 ) = ∏ j = 1 n 1 2 π σ j e x p ( − ( x j − μ j ) 2 2 σ j 2 ) p(x)=\prod^{n}_{j=1}p(x_j;u_j,\sigma_j^2)=\prod_{j=1}^{n}\frac{1}{\sqrt{2\pi}\sigma_j}exp(-\frac{(x_j-\mu_j)^2}{2\sigma_j^2}) p(x)=∏j=1np(xj;uj,σj2)=∏j=1n2πσj1exp(−2σj2(xj−μj)2)
如果$p(x)<\varepsilon $则为异常数据
设立一个异常检测系统
假设:无标签训练集均为正常数据,交叉验证集,测试集出现异常样本
注意:在异常检测系统中,一部分异常数据可能同时出现在交叉验证集和测试集中
如果直接使用异常检测算法,可能会存在正确率与召回率均高的情况,所以应该求出所有偏斜集合的比率。
同时,
ε
\varepsilon
ε的选择,也需要进行常识。
如何区分异常检测与监督学习
-
异常检测:
- 正反数据有一个数量极大,另一个数量较少
- 数据较少,掌握的异常数据类型较少
-
监督学习:
- 有大量的正反数据,数量差别较小
- 数据集较大,已经清楚掌握了异常类型
选择合适的特征值
- 如果数据集,不能很好的适合高斯分布时,可以使用取对数等方法,将其调整为高斯分布。或者可以同调整不同的特征值的幂次,使其能够趋向于的高斯分布。
- 误差分析 借助交叉验证集可以,测试异常检测算法的问题
推荐系统
对于人工智能算法,特征值的选择是重要的,很多人工智能算法可以自动化的计算好的特征值。
基于内容的推荐
- r ( i , j ) r(i,j) r(i,j) 用户 j j j是否进行评分
- y ( i , j ) y^{(i,j)} y(i,j) 用户 j j j对电影 i i i 的评分
- θ ( j ) \theta^{(j)} θ(j) 用户的参数向量
- x ( i ) x^{(i)} x(i) 电影的特征向量
- 预测用户的评分 ( θ ( j ) ) T ( x ( i ) ) (\theta^{(j)})^T(x^{(i)}) (θ(j))T(x(i))
对于
θ
(
j
)
\theta^{(j)}
θ(j)的代价函数为
min
θ
(
j
)
1
2
∑
i
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
k
=
1
n
(
θ
k
(
j
)
)
2
\min _{\theta^{(j)}} \frac{1}{2} \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2}
minθ(j)21∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+2λ∑k=1n(θk(j))2
对于所有用户的向量的代价函数为
min
θ
(
1
)
,
…
,
θ
(
n
u
)
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
\min _{\theta(1), \ldots, \theta^{\left(n_{u}\right)}} \frac{1}{2} \sum_{j=1}^{n_{u}} \sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{j=1}^{n_{u}} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2}
θ(1),…,θ(nu)min21j=1∑nui:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λj=1∑nuk=1∑n(θk(j))2
梯度递降算法公式为
KaTeX parse error: Got function '\sum' with no arguments as argument to '\stackrel' at position 72: …ackrel{\alpha} \̲s̲u̲m̲_{i: r(i, j)=1}…
协同过滤算法
通过不同用户的
θ
\theta
θ 预测电影的属性值。
通过
θ
(
1
)
,
θ
(
2
)
,
.
.
.
,
θ
n
u
\theta^{(1)},\theta^{(2)},...,\theta^{n_u}
θ(1),θ(2),...,θnu 学习
x
(
i
)
x^{(i)}
x(i)
min
x
(
i
)
1
2
∑
j
:
r
(
i
,
j
)
=
1
(
(
θ
(
j
)
)
T
x
(
i
)
−
y
(
i
,
j
)
)
2
+
λ
2
∑
k
=
1
n
(
x
k
(
i
)
)
2
\min _{x^{(i)}} \frac{1}{2} \sum_{j: r(i, j)=1}(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)})^{2}+\frac{\lambda}{2} \sum_{k=1}^{n}\left(x_{k}^{(i)}\right)^{2}
x(i)min21j:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λk=1∑n(xk(i))2
如果要一次学习所有x的值
min
x
(
1
)
,
…
,
x
(
n
m
)
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
(
i
)
)
2
\min _{\left.x^{(1)}, \ldots, x^{\left(n_{m}\right.}\right)} \frac{1}{2} \sum_{i=1}^{n_{m}} \sum_{j: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{i=1}^{n_{m}} \sum_{k=1}^{n}\left(x_{k}^{(i)}\right)^{2}
x(1),…,x(nm)min21i=1∑nmj:r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(xk(i))2
将基于x学习
θ
\theta
θ的代价函数,和基于
θ
\theta
θ学习
x
x
x的代价函数结合,就可以得到能够自动选择特征值的代价函数,协同过滤
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
∑
i
=
1
n
m
∑
k
=
1
n
(
x
k
(
i
)
)
2
+
λ
2
∑
j
=
1
n
u
∑
k
=
1
n
(
θ
k
(
j
)
)
2
J\left(x^{(1)}, \ldots, x^{\left(n_{m}\right)}\right., \theta^{(1)}, \ldots, \theta^{(n_{u})})\\=\frac{1}{2} \sum_{(i, j): r(i, j)=1}(\left(\theta^{(j)})^{T} x^{(i)}-y^{(i, j)}\right)^{2}+\frac{\lambda}{2} \sum_{i=1}^{n_{m}} \sum_{k=1}^{n}\left(x_{k}^{(i)}\right)^{2}+\frac{\lambda}{2} \sum_{j=1}^{n_{u}} \sum_{k=1}^{n}\left(\theta_{k}^{(j)}\right)^{2}
J(x(1),…,x(nm),θ(1),…,θ(nu))=21(i,j):r(i,j)=1∑((θ(j))Tx(i)−y(i,j))2+2λi=1∑nmk=1∑n(xk(i))2+2λj=1∑nuk=1∑n(θk(j))2
算法执行的流程如下
- 给 x , θ x,\theta x,θ随机初始值
- 利用梯度递降算法进行优化
x k ( i ) : = x k ( i ) − α ( ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) θ k ( j ) + λ x k ( i ) ) θ k ( j ) : = θ k ( j ) − α ( ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ k ( j ) ) \begin{array}{l} x_{k}^{(i)}:=x_{k}^{(i)}-\alpha\left(\sum_{j: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right) \theta_{k}^{(j)}+\lambda x_{k}^{(i)}\right)\\ \theta_{k}^{(j)}:=\theta_{k}^{(j)}-\alpha\left(\sum_{i: r(i, j)=1}\left(\left(\theta^{(j)}\right)^{T} x^{(i)}-y^{(i, j)}\right) x_{k}^{(i)}+\lambda \theta_{k}^{(j)}\right) \end{array} xk(i):=xk(i)−α(∑j:r(i,j)=1((θ(j))Tx(i)−y(i,j))θk(j)+λxk(i))θk(j):=θk(j)−α(∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j)) - 根据预测的 x , θ x,\theta x,θ给出用户对电影评分的预测值
Week 10 Learning with Big Datasets
大数据往往能够减小学习算法的偏差值,提高算法的准取程度。
梯度递降算法
- 批量梯度递降算法需要一次性计算所有样本的代价函数,然后再进行迭代,计算速度过慢。
- 随机算法,将所有数据随机打乱,每次去一个数据计算代价函数,并进行梯度递降算法,最后逼近到最优值
- 小批量梯度递降,将所有的样本进行分组,每次计算一组的代价函数,并进行梯度递降算法,能够通过并行进行优化
小批量梯度递降实际上是随机递降与批量梯度递降的折衷算法
参数选择
梯度递降算法需要选择合适的学习速率
α
\alpha
α,但是数据集过大和随机算法,不能确定
α
\alpha
α的具体值。
因此需要通过绘制学习曲线,调节
α
\alpha
α和分组数量的取值,得到最优的学习结果。
线上学习
通过不断的增加学习样本数量,持续的对机器学习算法进行优化
映射约减
将整个数据集分为多个小数据集,然后分别计算各小数据集的梯度,然后集中汇总
Week 10
- 机器流水线
将大型工作分工合作,不同机器负责不同的部分,提高运行效率 - 滑动窗口算法
- 人工数据合成
通过人工日案件噪声的方法,可以较为方便的得到大量的人造数据,在很多机器学习项目中,得到10倍于原始数据的人工合成数据是容易的,而且更大的数据集往往对于算法改进发挥很大作用,因此人工合成数据是有必要的。