機器學習中的線上學習與離線學習
一直以來對這個有所疑惑,所裡師姐和師兄的解釋好像和論文中的線上離線有所不同。現在國內外有這麼幾種理解方式。
我就在這邊給自己做個小筆記吧。有不對的地方望予以指正,本人必虛心改正。
線上學習和離線學習(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
---------------------
作者:膝蓋走路JYM
來源:CSDN
原文:https://blog.csdn.net/a133521741/article/details/79221015
版權宣告:本文為博主原創文章,轉載請附上博文連結!