Cousera - Machine Learning - 课程笔记 - Week 10

2018年11月版本

Week 10

大数据集的梯度下降

  • 大数据集在现代机器学习的应用中非常常见
  • 在使用大数据集前,应该是用一个小的数据集来验证模型是否有效,即先绘制一个小数据集在模型下的学习曲线,好的模型应该是具有高方差的(需要更多的数据)

随机梯度下降 Stochastic Gradient Descent

  • 将梯度下降算法能够有效地应用到大型数据集中
  • 经典的梯度下降算法又称为“批量梯度下降”,每下降一次都会处理完整的一次数据,当数据非常多时,收敛的耗时会变得很大
  • 随机梯度下降,每一次迭代下降只考虑一个样本
  • SGD过程:
    1. 将所有的样本数据打乱,重新排列
    2. 对所有的已重新排列的样本,即取第i个样本
      • 更新梯度,对每一个参数j,有 θ j : = θ j − α ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j-\alpha(h_{\theta}(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θjα(hθ(x(i))y(i))xj(i)
    3. 多次重复上述过程,直到收敛
  • 对SGD,其更可能是迂回着向最低点前进,并在靠近全局最小的一个区域内徘徊
  • 尽管SGD可能最终并不能停留在全局最小,其最终的逼近值也可以作为一个适当假设
  • 外循环通常只需要1次,最多10次

小批量梯度下降 Mini-batch Gradient Descent

  • 相对于批梯度下降和随机梯度下降,小批量的每一次下降是选择b个样本,这个值介于1和m之间
  • 更新梯度时,有 θ j : = θ j − α 1 b ∑ k = i k = i + b − 1 ( h θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_j:=\theta_j-\alpha\frac1b\sum\limits_{k=i}^{k=i+b-1}(h_{\theta}(x^{(k)})-y^{(k)})x_j^{(k)} θj:=θjαb1k=ik=i+b1(hθ(x(k))y(k))xj(k)
  • 相比于批梯度下降,遍历一个数据集能够迭代更多次,收敛相对更快
  • 相比于随机梯度下降,可以利用向量化的优势,提高算法效率
  • 缺点就是需要确定b的大小

SGD的收敛 Convergence

  • 定义一个函数 c o s t ( θ , ( x ( i ) , y ( i ) ) ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(\theta,(x^{(i)},y^{(i)}))=\frac12(h_\theta(x^{(i)})-y^{(i)})^2 cost(θ,(x(i),y(i)))=21(hθ(x(i))y(i))2,在更新参数前,计算一下cost函数的值,检查是否正常运行
  • 每进行1000次迭代,对上一组1000个样例的cost值取均值,将这些均值绘出,来判断SGD是否正常运行(cost持续减小)
  • cost可能是震荡的,但正常情况下应该是有持续下降的趋势的
  • 适当增大取值量(取一次值的迭代量),可能会出现“表现延迟”的情况,但是能够得到一条更加平滑的曲线,方便查看变化趋势
  • 可以设计随训练时间不断减小的学习率,即 α = c o n s t 1 # i t e r a i o n + c o n s t 2 \alpha=\frac{const1}{\#iteraion+const2} α=#iteraion+const2const1,让SGD后期能够尽可能逼近全局最小,但是两个常数是需要调整的

在线学习 Online Learning

  • 大规模的机器学习机制
  • 能够模型化问题,在拥有连续一波数据或者连续数据时,使用一个算法从中学习
  • 永远重复一个过程,即每当获得一个用户的数据对(用户的决策与否为标签) ( x , y ) (x,y) (x,y),用这个数据对来更新参数 θ \theta θ
  • 上面的过程对过去的数据不做维持处理
  • 可以对正在变化的用户偏好进行调适
  • 记x为目标特征,y为结果,θ为用户偏好,则学习目标为 p ( y = 1 ∣ x ; θ ) p(y=1|x;\theta) p(y=1x;θ)

映射约减 Map Reduce

  • 用于处理大规模的机器学习问题
  • 具体过程
    • 给定一组数据集,将这个数据集根据可用的电脑个数(在映射约减的使用场景中,数据集体量已经达到不能仅使用一台电脑完成任务了),分成多个子集,分别被这些电脑同时训练
    • 每天电脑分别计算各自数据集的分类损失代数和(实际计算直接为梯度值)
    • 最后进行函数更新时,对所有的分类损失和进行梯度下降以更新参数
  • 由于实际情况中包括网络延迟和数据汇总在内的多个因素,这种方式的提速往往略小于n倍
  • 使用映射约减的关键:所应用的算法是否是针对训练集的某个函数的求和运算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值