zoukankan      html  css  js  c++  java
  • 梯度下降_机器学习-李宏毅

    梯度下降

    调整学习率learning rate

    • 学习率过大,发生震荡。学习率过小,学习效率低
    • 较好的方法是在较平坦的地方步子迈大些,陡峭的地方步子迈小些

    自适应学习率

    • 随着迭代次数的增加,通过因子来减小学习率
    • 刚开始,初始点距离最低点远,使用大的学习率
    • 迭代若干次数后靠近最低点,采用小的学习率

    Adagrad算法

    一般梯度下降:

    [L=sum_n( ilde{y}^n - (b+sum w_ix_i^n))^2 \ w^{t+1}gets w^t-eta^tg^t\ eta^t=frac{eta}{sqrt{t+1}} ]

    Adagrad:

    [w^{t+1}gets w^t-frac{eta^t}{sigma}g^t\ g^t=frac{partial L( heta^t)}{partial w}\ eta^t = frac{eta}{sqrt{t+1}}\ sigma^t=sqrt{frac{1}{t=1}sum^t_{i=0}(g^i)^2} ]

    化简:

    [w^{t+1}gets w^t-frac{eta}{sqrt{sum^t_{i=0}(g^i)^2}}g^t\ ]

    随机梯度下降 Stochastic Gradient Descent

    • 常规梯度下降是将 所有训练集数据处理后才开始更新参数
    • 随机梯度下降是计算一个例子的损失函数 (L) 后就开始更新梯度
    • 更新既可以按顺序更新,也可以随机挑选数据更新

    特征缩放

    • 两个输入数据分布的范围不一样,差别较大,建议进行缩放处理,使得数据分布的范围一样

    • 数据不进行处理,会导致特征间的影响程度差异大,对于同一个学习率,更新数据偏差大

    • 实际上就是将数据分布由椭圆进行坐标变换,化为同心圆。

    • 常规做法:$$x_i^r gets frac{x_i^r - ar{x}}{sigma _i},ar{x}是平均值,sigma_i是标准差$$

    泰勒展开式

    如果(h(x)在x=x_0) 点的某个领域内有无限阶导数,则有泰勒级数:

    [egin{split} h(x)&=sum^infty_{k=0}frac{h^k(x_0)}{k!}(x-x_0)^k\ &=h(x_0)+h'(x_0)(x-x_0)+frac{h''(x_0)}{!}(x-x_0)^2+... end{split} ]

    二元泰勒:

    [h(x,y)=h(x_0,y_0)+frac{partial h(x_0,y_0)}{partial x}(x-x_0)+frac{partial h(x_0,y_0)}{partial y}(y-y_0)+... ]

    梯度下降理论基础

    在小范围的圆里面找到最小值,然后不断递归,直到找到全局最小值。

    基于泰勒展开式,化简:

    两个向量内积如何最小,一定是反向180°即可。因此有:

    最后有:

    梯度下降法的局限

    • 陷入局部最小值
    • 掉入鞍点
    • 陷入一个平原地区
  • 相关阅读:
    HTK(V3.1)基础指南中文版(转载)
    声纹识别公司Neurotechnology
    微软亚洲研究院语音组的研究成果
    Matlab P文件——加快Matlab程序,保护你的算法
    Intel嵌入式事业部的4条线
    语音增强国外牛人
    NHibernate Linq 的 join (联合查询) 的例子
    NHibernate HQL 函数例子
    使用TQ作在线客服系统
    ADI的SHARC系列处理器的内核PLL管理(4.2)
  • 原文地址:https://www.cnblogs.com/niubidexiebiao/p/10446453.html
Copyright © 2011-2022 走看看