1. 程式人生 > >機器學習中的線上學習與離線學習

機器學習中的線上學習與離線學習

一直以來對這個有所疑惑,所裡師姐和師兄的解釋好像和論文中的線上離線有所不同。現在國內外有這麼幾種理解方式。
我就在這邊給自己做個小筆記吧。有不對的地方望予以指正,本人必虛心改正。


線上學習和離線學習(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 
版權宣告:本文為博主原創文章,轉載請附上博文連結!