zoukankan      html  css  js  c++  java
  • 机器学习公开课笔记(10):大规模机器学习

    批梯度下降 (Batch Gradient Descent)

    以线性回归为例,用梯度下降算法进行参数更新的公式为$$ heta_j= heta_j-alphafrac{1}{m}sumlimits_{i=1}^{m}(h_ heta(x^{(i)})-y^{(i)})x_j^{(i)}$$可以看到每次参数更新一次,都需要将整个训练集扫描一遍,所以称为批梯度下降,这种更新方式对于参数集很大的集合(例如m=100,000,000)运行速度十分慢,为了加快算法运行速度,提出了随机梯度下降。

    随机梯度下降 (Stochastic Gradient Descent)

    每次仅用一个example来更新参数$ heta$,仍以线性回归为例,随机梯度下降算法为

    1. 随机重排列整个训练集(shuffle)

    2. 重复下列过程多次(数据集较大时可以重复1~10次)

        for i = 1, ..., m {
       $ heta_j= heta_j-alpha(h_ heta(x^{(i)})-y^{(i)})x_j^{(i)}$
        }

    小批梯度下降 (Mini-Batch Gradient Descent)

    介于批梯度下降和随机梯度下降之间,批梯度处理利用全部m个example进行参数更新;随机梯度下降只用1个example进行参数更新;而Mini梯度下降使用b(1<b<m)个example进行参数更新。仍以线性回归为例,加入我们有m=1000个example,我们可以用每b=10个example进行参数更新,例如:

    Repeat {
            for i = 1, 11, 21, ..., 991 {
                    $ heta_j= heta_j-alphafrac{1}{10}sumlimits_{k=i}^{i+9}(h_ heta(x^{(k)})-y^{(k)})x_j^{(k)}$
            }
    }

    算法收敛性

    批梯度处理能够保证算法收敛到最小值(如果选择的学习速率$alpha$合适的话),可以plot代价函数$J( heta)$随迭代次数的曲线,如果曲线是总是下降的,则能够收敛,反之需要调整学习速率。

    随机梯度下降并不能保证算法收敛到最小值,最终结果可能是在最小值附近来回游走,为了观察其收敛特性,可以plot每100(1000)次迭代时100个example代价函数函数$ ext{cost}( heta,(x^{(i)}, y^{(i)}))$的平均值,如果是下降趋势,则可以收敛,否则可能需要调整增大或者减小平均的example数(将100改为1000或者10等),减小或者增大学习速率。

    在线学习 (Online Learning)

    之前的算法都是有一个固定的训练集来训练模型,当模型训练好后对未来的example进行分类、回归等。在线学习则不同,它对每个新来的example进行模型参数更新,因此不需要固定的训练集,参数更新的方式则是采用随机梯度下降。在线学习的优势是模型参数可以随用户的偏好自适应的进行调整,以logistic回归为例,在线学习方式如下:

    Repeat forever {
            1. 获取当前example (x, y)
            2. 使用(x,y)进行参数更新:$ heta_j= heta_j-alpha(h_ heta(x)-y)x_j$
    }

    MapReduce和数据并行化

    这部分内容Andrew Ng讲得不多,可以认为仅仅讲了多个机器的求和问题,比如如何求解1+2+3+...+1000?Map过程:四个机器分别计算1+2+...+250,251+252+...+500, 501+502...+750,751+752+...+1000,然后Reduce过程:将四个机器求和的结果sum1,sum2,sum3,sum4汇总到一台机器上,计算sum1+sum2+sum3+sum4。

  • 相关阅读:
    C#實現列舉DB中所有StoredProcedur
    Configure the browserJMeter
    DB 字段
    SQL Server 角色類型
    將N行數據合併成一行顯示
    性能计数器
    一千萬條以上記錄分頁數據庫優化
    SPFA静态链表优化+队列储存
    多源最短路pku1125
    图的连通性——folyd检验
  • 原文地址:https://www.cnblogs.com/python27/p/MachineLearningWeek10.html
Copyright © 2011-2022 走看看