机器学习中的在线学习与离线学习

一直以来对这个有所疑惑,所里师姐和师兄的解释好像和论文中的在线离线有所不同。现在国内外有这么几种理解方式。

我就在这边给自己做个小笔记吧。有不对的地方望予以指正,本人必虚心改正

在线学习和离线学习(online learning and offline learning)

理解方式一:

在这一次训练中:

 在线学习:一个数据点训练完了直接更新权重(而不是一个batch),

 离线学习:一个batch训练完才更新权重,这样的话要求所有的数据必须在每一个训练操作中(batch中)都是可用的

 这种理解方式在国外论文中出现比较多,国外称为online and batch learning.离线就是对应batch learning.这两种方式各有优点,在线学习比较快,但是有比较高的残差,离线(batch)学习能降低残差。

理解方式二:

 在离线学习中,所有的训练数据在模型训练期间必须是可用的。只有训练完成了之后,模型才能被拿来用。简而言之先训练,再用模型,不训练完就不用模型

 在在线学习中,恰恰相反,在线算法按照顺序处理数据。它们产生一个模型,并在把这个模型放入实际操作中,而不需要在一开始就提供完整的的训练数据集。随着更多的实时数据到达,模型会在操作中不断地更新。

理解方式三:

 这一种是知乎一位兄弟的解释。我在实际代码中基本没见过。可能还是学习太少了。暂时收录下吧。

作者:IvonChen
 链接:https://www.zhihu.com/question/35607456/answer/150511176
 来源:知乎
 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 试答

 online training:

 你有一个样本 你把第一条带入训练 调整权重 再把这一条带进去一次 重复多次 直至误差率很小

 然后再带入下一条 直至跑完整个样本

 offline training:

 你有一个样本 你把第一条带入训练 调整权重 然后带入下一条 直至跑完整个样本 这个时候的误差率可能不让你满意 于是你 把整个样本又做了上述操作 直到误差很小

 offline其实和batch更相似

 

 假定这个样本有m条记录

 offline会训练m的整数倍次数

 online不知道会训练多少次 可能以一条记录训练了10次 第二条8次 第三条1次……

 

 分享一下伪代码:

 online:

 initialize all weights to random value

 for t in training_set:

 repeat:

 compute train_error for t

 adjust weights base on train_error

 until error rate is very small or error rate variation stops

 

 offline:

 initialize all weights to random value

 repeat:

 for t in training_set:

 compute train_error for t

 adjust weights base on train_error

 until error rate is very small or error rate variation stops

 
 

 

 

 

 

 

 

 

  • 47
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值