文章目录

  • 15. 第十五章 异常检测(Anomaly Detection)
    • 15.1 问题动机
    • 15.2 高斯分布(Gaussian distribution)
    • 15.3 异常检测算法
    • 15.4 开发和评估异常检测系统
    • 15.5 异常检测VS.监督学习
    • 15.6 选择要使用什么特征
    • 15.7 多元高斯分布
    • 15.8 使用多元高斯分布的异常检测
  • 16. 第十六章 推荐系统(Recommender System)
    • 16.1 问题规划
    • 16.2 基于内容的推荐算法
    • 16.3 协同过滤(Collaborative Filtering)
    • 16.4 协同过滤算法
    • 16.5 矢量化:低秩矩阵分解
    • 16.6 实现细节:均值规范化
  • 17. 第十七章 大规模机器学习
    • 17.1 大数据学习
    • 17.2 随机梯度下降(Stochastic Gradient Descent,SGD)
    • 17.3 小批量梯度下降法(Mini-batch Gradient Descent)
    • 17.4 随机梯度下降法收敛
    • 17.5 在线学习
    • 17.6 减少映射与数据并行
  • 18. 第十八章 应用示例:照片OCR
    • 18.1 问题描述与OCR流水线
    • 18.2 滑动窗口(Sliding Windows)
    • 18.3 获取大量数据:人工数据合成
    • 18.4 顶层分析:每一部分工作怎么样
  • 19. 第十九章 总结与感想

15. 第十五章 异常检测(Anomaly Detection)

15.1 问题动机

数据集:{x(1),x(2),...,x(m)}\{ {x^{(1)}},{x^{(2)}},...,{x^{(m)}}\}{x(1),x(2),...,x(m)}

现在给出xtest{x_{test}}xtest​,它是异常的吗?

异常检测样例:欺诈检测;工业制造;监控数据中心计算机

15.2 高斯分布(Gaussian distribution)

高斯分布也叫正态分布。

x∈Rx \in Rx∈R,如果xxx满足高斯分布,它的均值是uuu,方差是σ2{\sigma ^2}σ2,标准差σ{\sigma}σ,记作x∼N(u,σ2)x \sim N(u,{\sigma ^2})x∼N(u,σ2)

P(x;u,σ2)=12πσexp⁡(−(x−μ)22σ2)P(x;u,{\sigma ^2}) = {1 \over {\sqrt {2\pi } \sigma }}\exp ( - {{{{(x - \mu )}^2}} \over {2{\sigma ^2}}})P(x;u,σ2)=2π​σ1​exp(−2σ2(x−μ)2​)

参数计算:u=1m∑i=1mx(i)u = {1 \over m}\sum\limits_{i = 1}^m {{x^{(i)}}}u=m1​i=1∑m​x(i),σ2=1m∑i=1m(x(i)−u)2{\sigma ^2} = {1 \over m}\sum\limits_{i = 1}^m {{{({x^{(i)}} - u)}^2}}σ2=m1​i=1∑m​(x(i)−u)2

15.3 异常检测算法

  1. 选择你认为可能象征着异常的特征xi{x_i}xi​

  2. 计算参数:u1,...,un,σ12,...,σn2{u_1},...,{u_n},\sigma _1^2,...,\sigma _n^2u1​,...,un​,σ12​,...,σn2​

    uj=1m∑i=1mxj(i){u_j} = {1 \over m}\sum\limits_{i = 1}^m {x_j^{(i)}}uj​=m1​i=1∑m​xj(i)​,σj2=1m∑i=1m(xj(i)−uj)2\sigma _j^2 = {1 \over m}\sum\limits_{i = 1}^m {{{(x_j^{(i)} - {u_j})}^2}}σj2​=m1​i=1∑m​(xj(i)​−uj​)2

  3. 给出新的样本xxx,计算p(x;u,σ2)p(x;u,{\sigma ^2})p(x;u,σ2)
    如果p(x)<εp(x) < \varepsilonp(x)<ε,则异常

15.4 开发和评估异常检测系统

一个真实具体的数值对评估方法是重要的。

当我们开发一个学习算法时,如果我们有评估方法,我们就可以更加轻易的做决定。

假设我们现在有一些有标签的数据,y=0表示正常,y=1表示异常。

训练集:{x(1),x(2),...,x(m)}\{ {x^{(1)}},{x^{(2)}},...,{x^{(m)}}\}{x(1),x(2),...,x(m)}

交叉验证集:{(xcv(1),ycv(1)),(xcv(2),ycv(2)),...,(xcv(m),ycv(m))}\{ (x_{cv}^{(1)},y_{cv}^{(1)}),(x_{cv}^{(2)},y_{cv}^{(2)}),...,(x_{cv}^{(m)},y_{cv}^{(m)})\}{(xcv(1)​,ycv(1)​),(xcv(2)​,ycv(2)​),...,(xcv(m)​,ycv(m)​)}

测试集:{(xtest(1),ytest(1)),(xtest(2),ytest(2)),...,(xtest(m),ytest(m))}\{ (x_{test}^{(1)},y_{test}^{(1)}),(x_{test}^{(2)},y_{test}^{(2)}),...,(x_{test}^{(m)},y_{test}^{(m)})\}{(xtest(1)​,ytest(1)​),(xtest(2)​,ytest(2)​),...,(xtest(m)​,ytest(m)​)}

示例:飞机引擎示例

10000个正常样本y=0;20个异常样本y=1。

训练集:6000个正常样本

验证集:2000个正常样本y=0;10个异常样本y=1

测试集:2000个正常样本y=0;10个异常样本y=1

算法评估:

  • 在训练集{x(1),x(2),...,x(m)}\{ {x^{(1)}},{x^{(2)}},...,{x^{(m)}}\}{x(1),x(2),...,x(m)}上训练模型

  • 在验证集或者测试集上进行预测:

  • 混淆矩阵,计算F1−scoreF1-scoreF1−score

  • 根据验证集结果选择ε\varepsilon {\kern 1pt}ε

15.5 异常检测VS.监督学习

异常检测:

  • 非常少的正例样本(0~20)
  • 大量负例样本
  • 许多不同 "类型 "的异常现象。任何算法都很难从正例中学习异常现象是什么样子的。未来的异常现象可能看起来与我们目前看到的任何异常都不同

监督学习:

  • 大量的正例和反例
  • 足够多的正面例子让算法来了解正例是什么样的,未来正面的例子可能是与训练集中的例子相似

15.6 选择要使用什么特征

  1. 非高斯分布的特征:可以通过函数变换到高斯分布,log,指数等操作

  2. 异常检测的误差分析

    如果正常样本希望p(x)p(x)p(x)较大;如果异常样本希望p(x)p(x)p(x)较小

    经常遇到的问题是无论正常样本还是异常样本p(x)p(x)p(x)都较大。这样可以通过在训练集上找到这个样本,看是否能通过添加新特征将两类样本区分开来

  3. 监测数据中心的计算机:选择那些在异常情况下可能会出现异常大或异常小的特征。

15.7 多元高斯分布

在单元高斯分布中,可能认为a点和b点同样好,但是实际却并非如此。

x∈Rnx \in {R^n}x∈Rn,u∈Rnu \in {R^n}u∈Rn,Σ∈Rn×n\Sigma \in {R^{n \times n}}Σ∈Rn×n(协方差矩阵)

可以对特征空间高度相关的情况建模,Σ\SigmaΣ控制着分布

15.8 使用多元高斯分布的异常检测

  1. 多元高斯分布

    参数u∈Rnu \in {R^n}u∈Rn,Σ∈Rn×n\Sigma \in {R^{n \times n}}Σ∈Rn×n

    参数计算:u=1m∑i=1mx(i)u = {1 \over m}\sum\limits_{i = 1}^m {{x^{(i)}}}u=m1​i=1∑m​x(i),Σ=1m∑i=1m(x(i)−u)(x(i)−u)T\Sigma = {1 \over m}\sum\limits_{i = 1}^m {({x^{(i)}} - u)} {({x^{(i)}} - u)^T}Σ=m1​i=1∑m​(x(i)−u)(x(i)−u)T

  2. 多元高斯分布的异常检测

    计算u=1m∑i=1mx(i)u = {1 \over m}\sum\limits_{i = 1}^m {{x^{(i)}}}u=m1​i=1∑m​x(i),Σ=1m∑i=1m(x(i)−u)(x(i)−u)T\Sigma = {1 \over m}\sum\limits_{i = 1}^m {({x^{(i)}} - u)} {({x^{(i)}} - u)^T}Σ=m1​i=1∑m​(x(i)−u)(x(i)−u)T

    计算新样本:p(x)=1(2π)n2∣Σ∣12exp⁡(−12(x−μ)TΣ−1(x−μ))p(x) = {1 \over {{{(2\pi )}^{{n \over 2}}}|\Sigma {|^{{1 \over 2}}}}}\exp ( - {1 \over 2}{(x - \mu )^T}{\Sigma ^{ - 1}}(x - \mu ))p(x)=(2π)2n​∣Σ∣21​1​exp(−21​(x−μ)TΣ−1(x−μ))

    如果p(x)<εp(x) < \varepsilonp(x)<ε,则异常

  3. 原模型与多元对比

    原模型p(x)=p(x1;u1;σ12)×p(x2;u2;σ22)×...×p(xn;un;σn2)p(x) = p({x_1};{u_1};\sigma _1^2) \times p({x_2};{u_2};\sigma _2^2) \times ... \times p({x_n};{u_n};\sigma _n^2)p(x)=p(x1​;u1​;σ12​)×p(x2​;u2​;σ22​)×...×p(xn​;un​;σn2​)相当于多个单元,是多元的特例:

    原模型:

    • 手动创建特征以捕获异常情况,采取不寻常的谷值组合
    • 计算效率高,适合n较大时
    • 训练集m较小时

    多元高斯:

    • 自动捕捉特征间的相关性
    • 计算代价更高
    • 必须保证m>n,或者是Σ\SigmaΣ可逆

16. 第十六章 推荐系统(Recommender System)

16.1 问题规划

  1. 目前,许多大公司都在尝试搭建自己的推荐系统
  2. 学习一些特征学习的思想

例如:预测电影评分:根据一些用户多某些电影的打分,预测其对其他电影的打分起到偏好推荐的作用。

16.2 基于内容的推荐算法

  1. 基于内容的推荐系统

    nu{n_u}nu​表示用户数量;nm{n_m}nm​表示电影数量;r(i,j)=1r(i,j) = 1r(i,j)=1表示用户jjj已经对电影iii打过分;y(i,j){y^{(i,j)}}y(i,j)表示用户jjj已经对电影iii打的分数(仅在r(i,j)=1r(i,j) = 1r(i,j)=1时有意义)

    对于每个用户jjj,学习参数θ(j)∈R3{\theta ^{(j)}} \in {R^3}θ(j)∈R3,预测用户jjj对电影iii的打分(θ(j))Tx(i){({\theta ^{(j)}})^T}{x^{(i)}}(θ(j))Tx(i)

  2. 问题规划

    r(i,j)=1r(i,j) = 1r(i,j)=1表示用户jjj已经对电影iii打过分

    y(i,j){y^{(i,j)}}y(i,j)表示用户jjj已经对电影iii打的分数(仅在r(i,j)=1r(i,j) = 1r(i,j)=1时有意义)

    θ(j){\theta ^{(j)}}θ(j)表示用户jjj的参数向量

    x(i){x^{(i)}}x(i)表示电影iii的特征向量

    预测用户jjj对电影iii的分数(θ(j))Tx(i){({\theta ^{(j)}})^T}{x^{(i)}}(θ(j))Tx(i)

    m(j){m^{(j)}}m(j)表示用户jjj打过分的电影数量

    为了学习θ(j){\theta ^{(j)}}θ(j):min⁡θj12∑i:r(i,j)=1m((θ(j))Tx(i)−y(i,j))2+λ2∑k=1n(θk(j))2\mathop {\min }\limits_{{\theta ^j}} {1 \over 2}\sum\limits_{i:r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2} + {\lambda \over 2}\sum\limits_{k = 1}^n {{{(\theta _k^{(j)})}^2}} }θjmin​21​i:r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))2+2λ​k=1∑n​(θk(j)​)2

    为了学习θ(1),θ(2),...,θ(nu){\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}θ(1),θ(2),...,θ(nu​):J(θ(1),θ(2),...,θ(nu))=min⁡θ(1),θ(2),...,θ(nu)12∑j=1nu∑i:r(i,j)=1m((θ(j))Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1n(θk(j))2J({\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}) = \mathop {\min }\limits_{{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}} {1 \over 2}\sum\limits_{j = 1}^{{n_u}} {\sum\limits_{i:r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2}} } + {\lambda \over 2}\sum\limits_{j = 1}^{{n_u}} {\sum\limits_{k = 1}^n {{{(\theta _k^{(j)})}^2}} }J(θ(1),θ(2),...,θ(nu​))=θ(1),θ(2),...,θ(nu​)min​21​j=1∑nu​​i:r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

    梯度下降更新:

    θk(j):=θk(j)−α∑i:r(i,j)=1m((θ(j))Tx(i)−y(i,j))xk(i)fork=0\theta _k^{(j)}: = \theta _k^{(j)} - \alpha \sum\limits_{i:r(i,j) = 1}^m {({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})x_k^{(i)}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} for{\kern 1pt} {\kern 1pt} k = 0}θk(j)​:=θk(j)​−αi:r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))xk(i)​fork=0

    θk(j):=θk(j)−α(∑i:r(i,j)=1m((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j))fork≠0\theta _k^{(j)}: = \theta _k^{(j)} - \alpha (\sum\limits_{i:r(i,j) = 1}^m {({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})x_k^{(i)}{\kern 1pt} + \lambda \theta _k^{(j)}){\kern 1pt} {\kern 1pt} {\kern 1pt} for{\kern 1pt} {\kern 1pt} k \ne 0}θk(j)​:=θk(j)​−α(i:r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))xk(i)​+λθk(j)​)fork​=0

16.3 协同过滤(Collaborative Filtering)

在基于内容的推荐算法中,我们需要x1,x2{x_1},{x_2}x1​,x2​特征分别表示电影爱情,电影动作的程度,不过这通常是较难获取的。

现在假设x1,x2{x_1},{x_2}x1​,x2​未知,而转去向用户获取θ\thetaθ,即对爱情或者动作电影的喜爱程度,提供偏好。

  1. 优化算法

    给出θ(1),θ(2),...,θ(nu){\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}θ(1),θ(2),...,θ(nu​),去学习x(i){x^{(i)}}x(i):min⁡x(i)12∑j:r(i,j)=1m((θ(j))Tx(i)−y(i,j))2+λ2∑k=1n(xk(i))2\mathop {\min }\limits_{{x^{(i)}}} {1 \over 2}\sum\limits_{j:r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2} + {\lambda \over 2}\sum\limits_{k = 1}^n {{{(x_k^{(i)})}^2}} }x(i)min​21​j:r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))2+2λ​k=1∑n​(xk(i)​)2

    给出θ(1),θ(2),...,θ(nu){\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}θ(1),θ(2),...,θ(nu​),去学习x(1),x(2),...,x(nm){x^{(1)}},{x^{(2)}},...,{x^{({n_m})}}x(1),x(2),...,x(nm​):min⁡x(1),x(2),...,x(nm)12∑i=1nm∑j:r(i,j)=1m((θ(j))Tx(i)−y(i,j))2+λ2∑i=1nm∑k=1n(xk(i))2\mathop {\min }\limits_{{x^{(1)}},{x^{(2)}},...,{x^{({n_m})}}} {1 \over 2}\sum\limits_{i = 1}^{{n_m}} {\sum\limits_{j:r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2}} } + {\lambda \over 2}\sum\limits_{i = 1}^{{n_m}} {\sum\limits_{k = 1}^n {{{(x_k^{(i)})}^2}} }x(1),x(2),...,x(nm​)min​21​i=1∑nm​​j:r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))2+2λ​i=1∑nm​​k=1∑n​(xk(i)​)2

  2. 协同过滤

    给出x(1),x(2),...,x(nm){x^{(1)}},{x^{(2)}},...,{x^{({n_m})}}x(1),x(2),...,x(nm​),可以计算θ(1),θ(2),...,θ(nu){\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}θ(1),θ(2),...,θ(nu​)

    给出θ(1),θ(2),...,θ(nu){\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}θ(1),θ(2),...,θ(nu​),可以计算x(1),x(2),...,x(nm){x^{(1)}},{x^{(2)}},...,{x^{({n_m})}}x(1),x(2),...,x(nm​)

    那么是先有鸡还是先有蛋呢?

    可以猜想出一个初始θ\thetaθ,然后按照θ→x→θ→x→θ→x→θ→...\theta \to x \to \theta \to x \to \theta \to x \to \theta \to ...θ→x→θ→x→θ→x→θ→...的顺序更新。这样更新下去的条件是:每位用户都对数个电影进行了评价,并且每部电影都被数个用户评价过。

    协同过滤算法是指:当你执行算法时,要观察大量的用户,观察这些用户的实际行动来协同地得到更佳的每个人对电影的评分。每位用户都在帮助算法更好地进行特征学习。

16.4 协同过滤算法

  1. 将上一节两个优化目标结合

    同时最小化θ(1),θ(2),...,θ(nu){\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}θ(1),θ(2),...,θ(nu​)和x(1),x(2),...,x(nm){x^{(1)}},{x^{(2)}},...,{x^{({n_m})}}x(1),x(2),...,x(nm​):

    J(x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu))=12∑(i,j):r(i,j)=1m((θ(j))Tx(i)−y(i,j))2+λ2∑i=1nm∑k=1n(xk(i))2+λ2∑j=1nu∑k=1n(θk(j))2J({x^{(1)}},{x^{(2)}},...,{x^{({n_m})}},{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}) = {1 \over 2}\sum\limits_{(i,j):r(i,j) = 1}^m {{{({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})}^2} + {\lambda \over 2}\sum\limits_{i = 1}^{{n_m}} {\sum\limits_{k = 1}^n {{{(x_k^{(i)})}^2}} } + {\lambda \over 2}\sum\limits_{j = 1}^{{n_u}} {\sum\limits_{k = 1}^n {{{(\theta _k^{(j)})}^2}} } }J(x(1),x(2),...,x(nm​),θ(1),θ(2),...,θ(nu​))=21​(i,j):r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))2+2λ​i=1∑nm​​k=1∑n​(xk(i)​)2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

    这时x∈Rn,θ∈Rnx \in {R^n},\theta \in {R^n}x∈Rn,θ∈Rn舍弃x0{x_0}x0​,更加灵活

    min⁡x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu)J(x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu))\mathop {\min }\limits_{{x^{(1)}},{x^{(2)}},...,{x^{({n_m})}},{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}} J({x^{(1)}},{x^{(2)}},...,{x^{({n_m})}},{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}})x(1),x(2),...,x(nm​),θ(1),θ(2),...,θ(nu​)min​J(x(1),x(2),...,x(nm​),θ(1),θ(2),...,θ(nu​))

  2. 协同过滤算法

  • 随机初始化θ(1),θ(2),...,θ(nu){\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}}θ(1),θ(2),...,θ(nu​)和x(1),x(2),...,x(nm){x^{(1)}},{x^{(2)}},...,{x^{({n_m})}}x(1),x(2),...,x(nm​)

  • 使用梯度下降或者其他高级优化算法最小化J(x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu))J({x^{(1)}},{x^{(2)}},...,{x^{({n_m})}},{\theta ^{(1)}},{\theta ^{(2)}},...,{\theta ^{({n_u})}})J(x(1),x(2),...,x(nm​),θ(1),θ(2),...,θ(nu​))

    xk(i):=xk(i)−α(∑j:r(i,j)=1m((θ(j))Tx(i)−y(i,j))θk(j)+λxk(i))x_k^{(i)}: = x_k^{(i)} - \alpha (\sum\limits_{j:r(i,j) = 1}^m {({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})\theta _k^{(j)}{\kern 1pt} + \lambda x_k^{(i)}){\kern 1pt} {\kern 1pt} }xk(i)​:=xk(i)​−α(j:r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))θk(j)​+λxk(i)​)

    θk(j):=θk(j)−α(∑i:r(i,j)=1m((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j))fork≠0\theta _k^{(j)}: = \theta _k^{(j)} - \alpha (\sum\limits_{i:r(i,j) = 1}^m {({{({\theta ^{(j)}})}^T}{x^{(i)}} - {y^{(i,j)}})x_k^{(i)}{\kern 1pt} + \lambda \theta _k^{(j)}){\kern 1pt} {\kern 1pt} {\kern 1pt} for{\kern 1pt} {\kern 1pt} k \ne 0}θk(j)​:=θk(j)​−α(i:r(i,j)=1∑m​((θ(j))Tx(i)−y(i,j))xk(i)​+λθk(j)​)fork​=0

  • 预测用户jjj对电影iii的打分(θ(j))Tx(i){({\theta ^{(j)}})^T}{x^{(i)}}(θ(j))Tx(i)

16.5 矢量化:低秩矩阵分解

找到相关的电影:
对于每个电影iii,我们学习x(i)∈Rn{x^{(i)}} \in {R^n}x(i)∈Rn

如何找到与电影iii相关的电影jjj呢?

用∥x(i)−x(j)∥\parallel {x^{(i)}} - {x^{(j)}}\parallel∥x(i)−x(j)∥衡量两个电影的相似程度。

16.6 实现细节:均值规范化

问题:假设有一个用户没有对任何电影进行评价,那么通过上述算法得出的θ\thetaθ为全零向量,无法向该用户进行推荐。

17. 第十七章 大规模机器学习

17.1 大数据学习

“不是谁有最好的算法就能获胜。而是谁拥有最多的数据”。

“It’s not who has the best algorithm that wins. It’s who has the most data." ——[Banko and Brill, 2001]

17.2 随机梯度下降(Stochastic Gradient Descent,SGD)

问题:当数据量很大时,我们采用批量梯度下降法梯度更新会很慢。

批量梯度下降法:使用全体样本计算梯度

随机梯度下降法:每次只使用一个样本计算梯度

小批量梯度下降法:每次使用一小部分样本计算梯度

随机梯度下降法通常比批量梯度下降法收敛更快!

17.3 小批量梯度下降法(Mini-batch Gradient Descent)

随机梯度下降法无法利用一些并行化的操作,小批量梯度下降法通常更快!

17.4 随机梯度下降法收敛

检查是否收敛:

  • 批量梯度下降法

    绘制Jtrain(θ){J_{train}}(\theta )Jtrain​(θ)关于迭代次数的函数图像,Jtrain(θ)=12mtrain∑i=1mtrain(hθ(xtrain(i))−ytrain(i))2{J_{train}}(\theta ) = {1 \over {2{m_{train}}}}\sum\limits_{i = 1}^{{m_{train}}} {{{({h_\theta }({x_{train}}^{(i)}) - {y_{train}}^{(i)})}^2}}Jtrain​(θ)=2mtrain​1​i=1∑mtrain​​(hθ​(xtrain​(i))−ytrain​(i))2,mmm很大,不好计算

  • 随机梯度下降法

    • cos⁡t(θ,(x(i),y(i)))=12m(hθ(x(i))−y(i))2\cos t(\theta ,({x^{(i)}},{y^{(i)}})) = {1 \over {2m}}{({h_\theta }({x^{(i)}}) - {y^{(i)}})^2}cost(θ,(x(i),y(i)))=2m1​(hθ​(x(i))−y(i))2
    • 学习期间,每次更新θ\thetaθ之前使用(x(i),y(i))({x^{(i)}},{y^{(i)}})(x(i),y(i))计算cos⁡t(θ,(x(i),y(i)))\cos t(\theta ,({x^{(i)}},{y^{(i)}}))cost(θ,(x(i),y(i)))
    • 每1000次迭代绘制过去1000次cos⁡t(θ,(x(i),y(i)))\cos t(\theta ,({x^{(i)}},{y^{(i)}}))cost(θ,(x(i),y(i)))平均值的图像

对于随机梯度下降法,如果图像波动过大,可增大迭代次数取平均;如果上升趋势,调小学习率;如果下降,良好;如果平直,出错。

学习率可以缓慢下降。

17.5 在线学习

适合大量数据流下,每次使用一个数据,用过即弃。

能够实时跟随用户偏好,例如CTR学习。

不使用固定数据集,而是连续的数据集。

17.6 减少映射与数据并行

Hadoop开源平台

18. 第十八章 应用示例:照片OCR

18.1 问题描述与OCR流水线

照片光学字符识别(Photo Optical Character Recognition)

OCR流程

18.2 滑动窗口(Sliding Windows)

  1. 文本识别

    首先训练好一个可以对小图片中是否有字符进行分类的分类器,然后用窗口滑动框出原始图片的小区域,进行分类,最后将相邻很近且都有文字的地方连接成大矩阵(二维滑动,监督学习)。

  2. 再用一维滑动窗口分割出每个字符

  3. 字符分类(监督学习,多分类)

18.3 获取大量数据:人工数据合成

  1. 从零开始自行生成

    对于OCR任务,可以获取不同的字库,将字体放到不同的背景上,然后用模糊算子或者仿射变换得到数据集。

  2. 通过引入失真来合成数据

    例如:拉伸压缩变换

    引入的失真应该代表测试集中的噪声/失真类型。

    通常情况下,向你的数据添加纯粹的随机/无意义的噪音是没有帮助的。

  3. 讨论得到更多数据

    在花费精力之前,请确保你有一个低偏差的分类器(绘制学习曲线)。例如,不断增加神经网络中的特征数/隐藏单元数,直到你有一个低偏差的分类器。

    要获得10倍于我们目前所拥有的数据,会有多少工作?

    • 人工合成数据
    • 自己收集
    • 众包(亚马逊众包平台)

18.4 顶层分析:每一部分工作怎么样

估算每个组成部分造成的误差(上限分析)。

核心思想:假设一个模快是完美的,看看它对提升整个系统的性能的增益是多少?值不值得花费大量的时间,避免浪费时间。木桶效应。不要凭直觉决定要干什么!!!

19. 第十九章 总结与感想

总结主要章节:

  • 监督学习

    • 线性回归;逻辑回归;神经网络,SVM
  • 无监督学习
    • k-means;PCA;异常检测
  • 具体应用
    • 推荐系统;大规模机器学习
  • 构建机器学习系统的利器
    • 偏差方差分析;正则化;决定下一步做什么;评估学习算法;学习曲线;误差分析;上限分析

有朝一日能够造福其他人的生活!!!

机器学习吴恩达课程总结(五)相关推荐

  1. 机器学习吴恩达课程总结(一)

    文章目录 1. 第一章 简介 1.1 机器学习(Machine Learning) 1.2 有监督学习(Supervised Learning) 1.3 无监督学习(Unsupervised Lear ...

  2. Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Support Vector Machines)

    Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Support Vector Machines) 文章目录 Ex6_机器学习_吴恩达课程作业(Python):SVM支持向量机(Su ...

  3. 机器学习-吴恩达网易云课堂笔记

    机器学习-吴恩达网易云课堂笔记 Machine Learning: A computer program is said to learn from experience E with respect ...

  4. Residual Networks(吴恩达课程)

    Residual Networks(吴恩达课程) # UNQ_C1 # GRADED FUNCTION: identity_blockdef identity_block(X, f, filters, ...

  5. Deep Learning Art: Neural Style Transfer(吴恩达课程)

    Deep Learning & Art: Neural Style Transfer(吴恩达课程) # UNQ_C1 # GRADED FUNCTION: compute_content_co ...

  6. Image Segmentation with U-Net(吴恩达课程)

    Image Segmentation with U-Net(吴恩达课程) # UNQ_C1 # GRADED FUNCTION: conv_block def conv_block(inputs=No ...

  7. Transfer Learning with MobileNetV2(吴恩达课程)

    Transfer Learning with MobileNetV2(吴恩达课程) # UNQ_C1 # GRADED FUNCTION: data_augmenter def data_augmen ...

  8. coursera-斯坦福-机器学习-吴恩达-第9周笔记(下)-推荐系统

    coursera-斯坦福-机器学习-吴恩达-第9周笔记(下)-推荐系统 coursera-斯坦福-机器学习-吴恩达-第9周笔记下-推荐系统 1预测电影等级 1任务设想 2基于内容的推荐 2协同过滤 1 ...

  9. Autonomous Driving - Car Detection(吴恩达课程)

    Autonomous Driving - Car Detection(吴恩达课程) # UNQ_C1 (UNIQUE CELL IDENTIFIER, DO NOT EDIT) # GRADED FU ...

最新文章

  1. 应力循环次数60ant_中国航发:金属粉末循环使用导致的成分及打印件性能变化...
  2. Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
  3. android开发中,可能会导致内存泄露的问题
  4. java策略模式 if else_Java如何利用策略模式替代if/else语句
  5. 什么是用户账户?-联科教育
  6. 自己动手架设linux下Web服务器(图)6
  7. Gym 101915J(并查集)
  8. Unity2020.1新功能探路:脚本开发相关更新
  9. 为什么有的工人喜欢午餐和晚餐配着一瓶啤酒?
  10. Cent 6.5中安装NFS、Rpcbind 实现共享主机文档。
  11. 运用jmeter做接口与性能测试
  12. [高通SDM450][Android9.0]CTA认证--去掉通话记录功能
  13. 医院新手入门(一)--医保知识
  14. 史上最全!数据分析进阶教程,看这一篇就够了!
  15. 论文笔记:3D-CVF(ECCV 2020)
  16. [柒穆雨] 2020平面设计的发展趋势
  17. Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 15
  18. 淘宝商家开通淘金币可以提高商品转化率吗?
  19. nvidia驱动卸载与安装
  20. 每秒处理10万高并发订单支付系统架构

热门文章

  1. The First Paper
  2. 根域名服务器都在国外,中国安全吗?安全
  3. python单选按钮控件_Tkinter 单选按钮
  4. HTML+CSS网页设计期末课程大作——绿色精美全民健身网站(10页) dreamweaver作业静态HTML网页设计模板
  5. 漂亮的后台界面PSD下载
  6. 我的博客搬家至blogbus.com
  7. 宅男福利!我50行Python代码让小姐姐给你读Pdf
  8. 简单几行命令让pip升级
  9. 长期在电脑面前喝什么茶好
  10. maven settings.xml文件