学习范式

在线学习(online learning)

/ ON-line LER-ning /

想象一位店主,每做成一笔生意就把价格微调一点,从每个进门的顾客身上学,而不是关店一个月去钻研一本巨大的账本。在线学习就是机器版的这种风格:数据一到,模型就一次一个例子(或一小批)地更新自己,而不是在一份固定数据集上训练一回、之后就僵在那里。

把它和惯常的「批量」做法对照一下:批量做法是先攒齐一整份数据集,在全部数据上训练,再部署那个成品模型。而在线学习里,数据是一条永不停歇的流,模型则随着每一份新数据不断微推自己的参数。这适合那些数据源源不断到来的问题(传感器读数、股价、新闻、用户点击),或是世界一直在变、去年训的模型如今已经过时的场景。它对内存也很友好,因为你不必把整份数据一次性都攥在手里。

它的长处是与时俱进,它的危险是不稳定。由于它对近期数据有反应,一阵噪声或一次蓄意攻击就可能把它带偏;它还会患上「灾难性遗忘」——在追逐最新趋势的同时,把仍然有用的旧知识给覆盖掉了。所以好的在线系统会控制自己变化的快慢,并防范坏的或对抗性的输入。在线学习关乎的是「何时、多频繁地更新」,这与「你需要多少个例子」是两个不同的问题。

一个新闻网站按预测点击量给标题排序。口味每小时都在变,所以它不在夜里拿全部数据重训一遍,而是在每一批点击之后更新自己的排序模型。当某条报道突然走红,模型几分钟内就能跟上——但工程师会给它的摆动速度设个上限,免得一次偶然的爆红就把整套排序搞砸。

随数据流持续更新——但要给摆动速度封顶。

在线学习是用稳定性换时效性:它可能被噪声或对抗性输入带偏,也可能遗忘旧知识。这里的「在线」指的是随数据流式到来而更新——与互联网毫无关系。

又称
incremental learningstreaming learning在线学习線上學習增量学习