online training 和offline training 在深度学习中什么意思?

总结: online training(在线学习)只拿部分数据训练、offline training(离线学习)拿全部数据进行训练。在线学习:一个样本训练完,直接更新权重。离线学习:一个样本进入,跑完整个样本才更新权重。

1、offline training

离线学习,通常是用来训练大的或者复杂的模型,因为训练的过程往往比较耗时,处理数据量大,无法在线完成。离线学习(offline training)中,所有的训练数据在模型训练期间必须是可用的。只有训练完成了之后,模型才能被拿来用。简而言之,先训练,再用模型,不训练完就不用模型。
(类似于批量学习,假设整个样本有m个数据,离线训练会训练m的整数倍次数,然后带入下一条,直至跑完整个样本,这个时候误差率可能不让你满意,把整个样本又做个上述操作,直至误差很小。离线学习是一个batch训练完才更新权重,因此要求所有数据必须在每一个训练训练操作中(batch)中都是可用的,这样不会因为个别数据的更新错误把网络带向极端。)

2、online training

在线学习(online learning)中, 数据可能是以流式的形式, 比如监控视频, 一直在拍, 我们根据目前看到的这部分的数据进行训练, 几秒后的数据不能用来训练. 在线算法按照顺序处理数据。它们产生一个模型,并在把这个模型放入实际操作中,而不需要在一开始就提供完整的的训练数据集。随着更多的实时数据到达,模型会在操作中不断地更新。
(通常是一次输入一条数据(而不是一个batch),训练完了直接更新权重。一个一个地按照顺序处理数据,但是每一个数据训练完后都会直接更新权重,但不知道是对是错,如果某一次权重更新错误,在这之后的权重更新可能一直都是错的,最后得到的模型可能就会逐渐走向错误方向,残差出现。在线学习先按顺序处理数据,他们产生一个模型,并把这个模型放在实际操作中,不需要一开始就提供完整的训练数据集。随着更多实时数据进入模型,模型会在操作中不断被更新)

3、举个例子

在玩俄罗斯方块的时候, 你只能看到当前的方块是什么(有可能还能看到下一个方块是什么), 你需要根据当前的方块进行决策, 这种基于当前信息的决策过程就是在线算法(online algorithm). 而当你能知道整个方块序列是什么的时候, 你可能会有不一样的决策, 比如"这个方块可以放在左边这个地方, 这样和10步以后的那个方块就能凑在一起消掉", 这种基于全局信息的决策过程就是离线算法(offline algorithm)。

4、使用

在线学习和离线学习经常是结合使用,比如离线训练一个复杂的模型,在线进行微调;还有就是离线训练好模型,在线利用训练好的模型做预测或者判别。

你可能感兴趣的:(深度学习,人工智能,机器学习)