優拓 Paper Note ep.17: Few-Shot Learning (Part II)
註:以下的圖皆截自 《Optimization as a Model for Few-Shot Learning》
上回我們提到用 Siamese Kernel SVM 來做分類,是對每次的 Few-Shot Task 獨立的。假如我們現在鬆綁這個限制,使得不同的 Few-Shot Task 可以互相幫助?
Adam, Adagrad 等方法對於大量資料的 SGD 有不錯的效果,但沒有實驗證明他們在小量資料也會有同樣的效果。雖然有標記的資料不多,但讓過去類似的 Few Shot Task 來讓模型學習「如何做 Few-Shot Learning」,也許會有不錯的效果。而這樣「Learning how to Learn」便是另一個很夯的領域:Meta Learning 的核心。
這篇 ICLR 2017 的論文利用了 Meta Learning ,讓一個 Meta-Learner 學習如何指導模型對 Few-Shot Task 做 Gradient Update。
他們發現一般 SGD 的參數更新和 LSTM 的狀態更新 hen 像:
SGD 參數更新
LSTM 狀態更新
在 LSTM 的狀態更新裡,前一個狀態和狀態的改變,兩者之間的比例是可以調控的。模型的參數更新也可以利用這個方法來做:
這個的直覺在於,模型是否要梯度還是原本的值,應該要考慮當下觀察到的 Loss、Gradient 的大小等等的值。假如 Loss 小但 Gradient 大,那也許 Learning Rate 可以小一點;Loss 大但 Gradient 小,Learning Rate 就可以大一點。
根據這個概念,對 Meta Learner 來講,一筆 Data 就是一個 Few Shot Task 的一輪更新,這一輪更新要做幾次參數更新,就是 Meta Learner 的 Forward Step 數量:
而訓練 Meta Learner 的 Pseudo Code 就寫成:
優拓資訊 (Yoctol Info Inc.)
At YOCTOL, We AI Your Business by Bot.
優拓為新銳 AI 團隊,利用自行研發的機器人框架、自然語意理解、網路爬蟲、推薦引擎,為企業提供全方位的商務機器人解決方案,不僅可以即時回應顧客的客服需求,也能主動推播個人化商品推薦,提昇企業經營效能。
若您有相關業務需求或是任何建議、疑問,都歡迎寄信至 service@yoctol.com,我們將盡速與您聯繫,期待您的來信!