吴恩达机器学习—大规模机器学习(14)

1. 大型数据集的学习

在低方差的模型情况下增加数据集的规模可以帮助获得更好的结果。当数据集很大,是个多达100 万条记录的训练集时的应对方法。如果采用之前学习的批量梯度下降,每一次梯度下降迭代,都需要计算训练集的误差的平方和,计算代价非常大。
面对大规模训练集时,首先应该做的事是:绘制学习曲线来帮助判断去检查这么大规模的训练集是否真的必要。必须要大规模的数据时候,批量梯度下降方法不再适应,需要使用其他的方法。

2. 梯度下降

(1)随机梯度下降

随机梯度下降法每次更新 θj 只会用当前遍历的样本。迭代过程中不像批量梯度下降直接下降到最优,还是曲折波动的。
在这里插入图片描述上图反映了相较于批量梯度下降法,随机梯度下降法的曲线就显得不是那么平滑,而是很曲折了,其也倾向于找到局部最优解而不是全局最优解。因此,需要绘制调试曲线来监控随机梯度的工作过程是否正确。一般每完成 多次(1000)迭代,求取平均误差并进行绘制,得到误差随迭代次数的变化曲线。
遇到曲线波动,无明显下降的时候,并不意味着学习率出了问题,有可能是平均间隔取的太小,当发现明显上升态势的曲线,就需要减小学习率。
另外,学习率 α 还可以随着迭代次数进行优化: α = c o n s t a n t 1 i t e r a t i o n N u m b e r + c o n s t a n t 2 α=\frac {constant1}{iterationNumber+constant2} α=iterationNumber+constant2constant1这样,随着迭代次数的增多,我们的下降步调就会放缓,避免出现抖动
随机梯度下降法工作前,需要先乱序数据集,是的遍历样本的过程更加分散
迭代:
f o r i = 1 , . . . , m : for\quad i=1,...,m: fori=1,...,m
θ j = θ j − α ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) j , f o r j = 0 , . . . , n \quad \quad \quadθ_j=θj−α(hθ(x(i))−y(i))x(i)j, \quad for \quad j=0,...,n θj=θjα(hθ(x(i))y(i))x(i)j,forj=0,...,n

(2)mini-batch

Mini 批量梯度下降法是批量梯度下降法和随机梯度下降法的折中,通过参数 b 指明了每次迭代时,用于更新 θ 的样本数。假定 b=10,m=1000 ,Mini 批量梯度下降法的工作过程如下:
f o r i = 1 , 11 , 21 , . . . 991 : for \quad i=1,11,21,...991: fori=1,11,21,...991
θ j = θ j − α 1 10 ∑ k = i i + 9 ( h θ ( x Z ( i ) ) − y ( i ) ) x j ( i ) , f o r j = 0 , . . . , n \quad \quad \quadθ_j=θ_j−α\frac{1}{10}\sum_{k=i}^{i+9}(h_θ(xZ^{(i)})−y^{(i)})x^{(i)}_j,for \quad j=0,...,n θj=θjα101k=ii+9(hθ(xZ(i))y(i))xj(i)forj=0,...,n

(3)批量梯度下降、随机梯度下降和mini-batch的比较

批量梯度下降随机梯度下降mini-batch
迭代公式 θ j = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) θ_j=θ_j−α\frac1m\sum_{i=1}^m(h_θ(x^{(i)})−y^{(i)})x^{(i)}_j θj=θjαm1i=1m(hθ(x(i))y(i))xj(i), f o r j = 0 , . . . , n for \quad j=0,...,n forj=0,...,n f o r i = 1 , . . . , m : for\quad i=1,...,m:\quad \quad \quad \quad \quad \quad fori=1,...,m
θ j = θ j − α ( h θ ( x ( i ) ) − y ( i ) ) x ( i ) j θ_j=θj−α(hθ(x(i))−y(i))x(i)j θj=θjα(hθ(x(i))y(i))x(i)j,
f o r j = 0 , . . . , n for \quad j=0,...,n forj=0,...,n
其中每次迭代样本数量10,总样本1000
f o r i = 1 , 11 , 21 , . . . 991 : for \quad i=1,11,21,...991:\quad\quad \quad \quad \quad fori=1,11,21,...991
θ j = θ j − α 1 10 ∑ k = i i + 9 ( h θ ( x Z ( i ) ) − y ( i ) ) x j ( i ) θ_j=θ_j−α\frac{1}{10}\sum_{k=i}^{i+9}(h_θ(xZ^{(i)})−y^{(i)})x^{(i)}_j θj=θjα101k=ii+9(hθ(xZ(i))y(i))xj(i),
f o r j = 0 , . . . , n for \quad j=0,...,n forj=0,...,n
数据使用每次使用样本的全部数据每次使用一个样本进行迭代每次迭代部分数据(一般size是64,128,256,512,少见1024)
计算时间迭代速度慢,时间长单次迭代速度快,但是失去了所有向量化带来的加速,一次处理一个样本,效率低下每次迭代部分数据,合理的数量会快速下降
收敛情况逐渐减小,理论上能收敛于一个确定的值J-iterations曲线不是那么平滑,而是很曲折了,倾向于找到局部最优解而不是全局最优解J-iterations曲线曲折性位于批量梯度下降和随机梯度下降之间
超参数学习率α学习率α,学习率下降参数size和学习率α

3. 在线学习

用户登录了某提供货运服务的网站,输入了货运的发件地址和收件地址,该网站给出了货运报价,用户决定是购买该服务( y=1 )或者是放弃购买该服务( y=0 )。
特征向量 x 包括了收发地址,报价信息,我们想要学习 p(y=1|x;θ) 来最优化报价:
获得关于该用户的样本 ( x , y ) (x,y) (x,y),使用该样本更新 θ : θ j = θ j − α ( h θ ( x ) − y ) x j , f o r j = 0 , . . , n θ:θ_j=θ_j−α(h_θ(x)−y)x_j, for\quad j=0,..,n θθj=θjα(hθ(x)y)xj,forj=0,..,n
在线学习并不需要一个固定的样本集进行学习,而是不断接收样本,不断通过接收到的样本进行学习。

4. 映射化简和数据并行

Mini 批量梯度下降法时,假定 b = 400 , m = 400 , 000 , 000 b=400,m=400,000,000 b=400,m=400,000,000 ,对 θ θ θ 的优化为: θ j = θ j − α 1 400 ∑ i = 1 400 ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) θ_j=θ_j−α\frac1{400}∑_{i=1}^{400}(h_θ(x^{(i)})−y^{(i)})x^{(i)}_j θj=θjα4001i=1400(hθ(x(i))y(i))xj(i)
假定有 4 个机器(Machine),首先通过 Map (映射)过程来并行计算式中的求和项,每个机器被分配到 100 个样本进行计算:
t e m p j ( 1 ) = ∑ i = 1 100 ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) temp^{(1)}_j=∑_{i=1}^{100}(h_θ(x^{(i)})−y^{(i)})x^{(i)}_j tempj(1)=i=1100(hθ(x(i))y(i))xj(i) t e m p j ( 2 ) = ∑ i = 101 200 ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) temp^{(2)}_j=∑_{i=101}^{200}(h_θ(x^{(i)})−y^{(i)})x^{(i)}_j tempj(2)=i=101200(hθ(x(i))y(i))xj(i) t e m p j ( 3 ) = ∑ i = 201 300 ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) temp^{(3)}_j=∑_{i=201}^{300}(h_θ(x^{(i)})−y^{(i)})x^{(i)}_j tempj(3)=i=201300(hθ(x(i))y(i))xj(i) t e m p j ( 4 ) = ∑ i = 301 400 ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) temp^{(4)}_j=∑_{i=301}^{400}(h_θ(x^{(i)})−y^{(i)})x^{(i)}_j tempj(4)=i=301400(hθ(x(i))y(i))xj(i)最后,通过 Reduce(规约)操作进行求和: θ j = θ j − α 1 400 ( t e m p j ( 1 ) + t e m p j ( 2 ) + t e m p j ( 3 ) + t e m p j ( 4 ) ) θ_j=θ_j−α\frac1{400}(temp^{(1)}_j+temp^{(2)}_j+temp^{(3)}_j+temp^{(4)}_j) θj=θjα4001(tempj(1)+tempj(2)+tempj(3)+tempj(4))可以使用多台机器进行 MapReduce,此时,Map 任务被分配到多个机器完成;也可以使用单机多核心进行 MapReduce,此时,Map 任务被分配到多个 CPU 核心完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值