吴恩达机器学习笔记

机器学习

week1

Introduction

1.Supervised Learning 监督学习
给定一个数据集,并且知道其一些正确输出,能够明确知道是不是正确或者错误

  • 回归问题: 预测一个连续的值的输出
  • 分类问题: 根据输入给出一个离散的结果输出

2.Unsupervised Learning 无监督学习
只给出一个数据集,并没有给出其关系,需要我们自行寻找其结构

Model and Cost Function

  1. Model represention
    m = number of examples
    x = input
    y = output
    h = hypotheis h(x) = y 是一个预测,猜测的结构

  2. 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(θ)=2m1i=1m(h(x(i))y(i))

    目标:选择合适的h并且调整参数 θ \theta θ使得 J ( θ ) J(\theta) J(θ)最小

Parameter Learning

  1. 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αθjJ(θ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αθ0J(θ0,θ1)temp1:=θ1αθ1J(θ0,θ1)θ0:= temp 0θ1:= temp1 
    • α \alpha α为学习速率, α \alpha α越大,下降的速率越快,但是其值过大,可能会导致变换幅度过大,始终无法到达最低点,甚至导致最后结果为发散的。 α \alpha α过小则会导致,迭代速度过慢,花费时间过长。
    • 当接近局部最低点时,偏导数会变小,自动降低迭代的速度,以靠近局部最低点,直到最后停留在偏导数值为0的局部最低点。

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]x0x1xn=θ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(θ)=2m1i=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+ez1
    对于二元分类问题,满足如下性质
    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=1x;θ)=1P(y=0x;θ)P(y=0x;θ)+P(y=1x;θ)=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.5y=1hθ(x)<0.5y=0

    g ( z ) ≥ 0.5 w h e n   z ≥ 0 g(z) \geq 0.5 \\ when \ z \geq 0 g(z)0.5when z0
    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 θTx0
    所以有
    θ 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} θTx0.5y=1θTx<0.5y=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(θ)=m1i=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)=log(hθ(x))Cost(hθ(x),y)=log(1hθ(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

  1. 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))(1y)log(1hθ(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(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(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αθjJ(θ)}
向量化之后得到
θ : = θ − α 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,1n}hθ(0)(x)=P(y=0x;θ)hθ(1)(x)=P(y=1x;θ)hθ(n)(x)=P(y=nx;θ) prediction =maxi(hθ(i)(x))

The Problem of Overfitting

原因:完美拟合所有数据点,但是却得到了一条过于曲折的曲线,不能很好的进行预测。
与欠拟合相对应,后者为因为拟合的数据点过少而导致曲线无法进行预测。
解决方法:

  • 去掉多余的数据点
  • 正则化
  1. 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θ2m1i=1m(hθ(x(i))y(i))2+λj=1nθj2
  • 正则参数过大会导致欠拟合,过小则无法达到取消过度拟合的作用。
  1. 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αm1i=1m(hθ(x(i))y(i))x0(i)θj:=θjα[(m1i=1m(hθ(x(i))y(i))xj(i))+mλθj]j{1,2n}}
    可以转化为 θ 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=1m(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=0111
    正则化之后就可以解决原来的方程不可逆的问题。

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=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+2mλj=1nθ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=x0x1xnz(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

  1. 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=1mk=1K[yk(i)log((hΘ(x(i)))k)+(1yk(i))log(1(hΘ(x(i)))k)]+2mλl=1L1i=1slj=1sl+1(Θj,i(l))2
  • l l l为总层数
  • s l sl sl为每层单元数
  • K K K为输出单元数
  1. 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)) ,1tm,我们令 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),2il
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)(1a(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)(1a(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;
  1. Random Initialization
    多重神经网络如果呈现对称特性,则退化为了逻辑回归,所以需要随机设置初始值,同时需要注意,避免参数的对称性。

  2. conclusion
    进行依次神经网络学习,首先需要知道其结构,包括输入输出单元数量,隐藏层的数量和和隐藏单元数量
    然后执行如下步骤

    1. 随机初始化权重
    2. 计算前向传播
    3. 实现代价函数
    4. 计算反向传播,求偏导数
    5. 进行梯度检查
    6. 进行梯度递降算法

Week6

Evaluating a Learning Algorithm

  1. 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 
  2. Model Selection and Train/Validation/Test Sets
    在模型选择时,基于训练集选择,会导致过拟合等问题,于是需要一个交叉验证的有效集,比较不同模型的效果。一般分为3:1:1.

Bias vs. Variance

  1. Diagnosing Bias vs. Variance
    高偏差(bias)表示为欠拟合,高方差(variance)表示为过度拟合
  2. regularization
    通标准化,纠正过拟合和欠拟合时的方法,为列出 λ \lambda λ并且根据不同的多项式度数,进行学习。得到不同 λ \lambda λ Θ \Theta Θ对应代价函数的集合。
    从中选择训练代价和验证代价最小的一组,作为待选的解
  3. Learning Curves
    通过学习曲线,可以观察到训练数据量的大小,对于改进拟合效果的影响。随着m的增大,训练代价和验证代价将趋近相同,但不一定稳定在相同条件下。
    • 高偏差的情况下,增大m,更多数据也很难训练好,不会提高拟合效果
    • 高方差的情况下,增大m,是训练集贴近真实,改善过拟合的效果 JCV高
  4. Conclusion
    过拟合则减小样本集,欠拟合增大样本集
    度数低的多项式,多会出现欠拟合的状态,偏差较高
    度数高的多项式,多会出现过拟合的状态,方差较高
  • 改进高方差:得到更多数据,减少方差度数,增大惩罚参数
  • 改进高偏差: 增大特征值数量,增大幂次,减小惩罚参数

Build a spam classifer

设计一个复杂的机器学习算法需要

  1. 收集大量数据
  2. 选择合适的特征值
  3. 使用算法加速学习以及输入过程
    误差分析
  • 首先选择一个相对简单的算法
  • 画出学习曲线,分析特征值
  • 手动检验误差,并调整起始算法
    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

  1. 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=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+21i=1nθj2
  2. 大间隔分类器
    SVM常用来分离两组数据,通过SVM可以求解出间隔最大的分离线,实现最优的分离方法。
  3. 数学推导
    1. 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=u1v2+u2v1
      如果 p p p v v v u u u上的投影长度
      那么,
      u T v = p ∗ ∣ ∣ u ∣ ∣ u^Tv=p*||u|| uTv=pu
    2. 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

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σ2xl(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=1my(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))+21j=1n=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

  1. n很大,则使用逻辑回归SVM线性核函数
  2. n比较小, m的大小适中,则使用SVM的高斯核函数
  3. n很小,但是m很大,则添加更多特征来,然后使用逻辑回归或者线下核函数的SVM
  4. 神经网络适应大部分情况,但是通常速度较慢

Week8

Unsupervised Learning

Clustering

  1. Clustering
    聚类是一种常见的无监督学习,
  2. K-Means
    划分聚类的算法,数据中选择K个聚类中心,利用到聚类中心的距离,划分成K个距离的过程
    步骤:
    1. 选择K个距聚类中心,将每个数据点划分到距其最近的距离中心
    2. 将每一个聚类的所有点的平均值作为,新的聚类中心
    3. 重复上述过程
  3. 优化目标
    目标:让所有距离的平方最小 称为失真代价函数
    K均值算法的代价函数,不会增大,每次循环都能缩小代价函数。
  4. 随机初始化
    避开局部最优化现象,需要随机的初始化聚类中心。
    方法:每次随机化的从所有点中选择k个点,作为聚类中心
  5. 聚类数量
    肘部法则:在失真函数减小速度变缓的点作为聚类数量(斜率突然减小的点)

dimensionality reduction

  1. data-compression
    将拥有较多特征值的数据,压缩维度,减少特征量,降低使用的存储空间
  2. data-visualization
  3. 主成分分析算法PCA
    找到一个低维平面,使得所有数据点到该低维平面距离最短,点到平面的距离称为,投影误差。
    与线性回归的区别在于,PCA算法没有特别的y值需要去预测,所有的数据均为已知数据点。
    方法:
    1. 计算协方差矩阵
    2. 求解协方差矩阵的特征向量
  4. 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 ? m1i=1mx(i)2m1i=1mx(i)xapprox(i)20.01?

Week 9

高斯分布和异常检查算法

数据集$\left { {x{(1)},x{(2)},…x^{(m)}} \right } $ x的取值范围为 x ∈ R n x \in \mathbb{R}^{n} xRn
对于每个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)

异常检测算法步骤:

  1. 选择与异常数据相关的特征值
  2. 估计参数
    μ 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
  3. 给定一个新的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 ε的选择,也需要进行常识。

如何区分异常检测与监督学习

  1. 异常检测:

    • 正反数据有一个数量极大,另一个数量较少
    • 数据较少,掌握的异常数据类型较少
  2. 监督学习:

    • 有大量的正反数据,数量差别较小
    • 数据集较大,已经清楚掌握了异常类型

选择合适的特征值

  1. 如果数据集,不能很好的适合高斯分布时,可以使用取对数等方法,将其调整为高斯分布。或者可以同调整不同的特征值的幂次,使其能够趋向于的高斯分布。
  2. 误差分析 借助交叉验证集可以,测试异常检测算法的问题

推荐系统

对于人工智能算法,特征值的选择是重要的,很多人工智能算法可以自动化的计算好的特征值。

基于内容的推荐

  • 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)21i: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=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nuk=1n(θ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=1n(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=1nmj:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λi=1nmk=1n(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=1nmk=1n(xk(i))2+2λj=1nuk=1n(θk(j))2

算法执行的流程如下

  1. x , θ x,\theta x,θ随机初始值
  2. 利用梯度递降算法进行优化
    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))
  3. 根据预测的 x , θ x,\theta x,θ给出用户对电影评分的预测值

Week 10 Learning with Big Datasets

大数据往往能够减小学习算法的偏差值,提高算法的准取程度。

梯度递降算法

  • 批量梯度递降算法需要一次性计算所有样本的代价函数,然后再进行迭代,计算速度过慢。
  • 随机算法,将所有数据随机打乱,每次去一个数据计算代价函数,并进行梯度递降算法,最后逼近到最优值
  • 小批量梯度递降,将所有的样本进行分组,每次计算一组的代价函数,并进行梯度递降算法,能够通过并行进行优化

小批量梯度递降实际上是随机递降与批量梯度递降的折衷算法

参数选择
梯度递降算法需要选择合适的学习速率 α \alpha α,但是数据集过大和随机算法,不能确定 α \alpha α的具体值。
因此需要通过绘制学习曲线,调节 α \alpha α和分组数量的取值,得到最优的学习结果。

线上学习

通过不断的增加学习样本数量,持续的对机器学习算法进行优化

映射约减

将整个数据集分为多个小数据集,然后分别计算各小数据集的梯度,然后集中汇总

Week 10

  1. 机器流水线
    将大型工作分工合作,不同机器负责不同的部分,提高运行效率
  2. 滑动窗口算法
  3. 人工数据合成
    通过人工日案件噪声的方法,可以较为方便的得到大量的人造数据,在很多机器学习项目中,得到10倍于原始数据的人工合成数据是容易的,而且更大的数据集往往对于算法改进发挥很大作用,因此人工合成数据是有必要的。

你可能感兴趣的:(机器学习,线性代数,概率论)