大概有十幾天了沒有回來更新部落格了吧,這期間遇到了大大小小各種事情,最悲傷的事應該是跟我關係最好的一個哥們的父親去世了,被酒駕的人撞了,希望叔叔在天國安好!再次告誡各位開車一定不能喝酒,不只是對自己負責,也是對他人生命的尊重,在這裡謝過大家了!
下面說一說我這些天積累的一點東西,是關於終身機器學習(Lifelong Machine Learning)的一些知識。所謂終身機器學習,就是這個模型自從創立那一天開始,就一直不斷的執行下去。說起終身機器學習,相信很多人都不理解也沒有了解過這個方向,因為確實很偏,但是在現在的大資料背景下,我相信總有一天,終身機器學習會大放異彩。雖然現在的應用可能不是很廣泛,但是我相信終身機器學習也可以對我們現在正在做的一些工作有著啟發式的作用。
終身機器學習出現的背景可以概括為以下兩個方面:第一,隨著資訊科技的進步,各種資料呈爆炸式增長。第二,傳統機器學習演算法對大資料環境下的應用問題很多已不再適用,這是因為傳統的機器學習演算法大多隻是關注於小樣本範圍內的分類等工作,對大資料環境缺乏適應能力。在這樣的背景下,終身機器學習應運而生。
上面說過,這個方向現在有些偏,做這個方向的人也很少,下面列舉三位大牛並附上他們的個人主頁連結。
1.Daniel L.Sliver:此人是先驅級的人物,早期理論的奠基人
http://plato.acadiau.ca/courses/comp/dsilver/DLSWebSIte/Welcome.html
2.楊強:此人曾在華為諾亞方舟研究所工作,從事這個方向的研究,現在在香港執教
http://www.cs.ust.hk/~qyang/
3.Eric Eaton: 新秀,提出的ELLA演算法效率極高(1000倍左右的提升)
http://www.seas.upenn.edu/~eeaton/
下面先粗略介紹一下人類的學習過程,終身機器學習就是模仿人類學習過程提出的。首先人類對外界環境保持感知,從而對感興趣的資訊保持關注;之後,在大腦的海馬系統上,新的知識在以往知識的基礎上被快速建立起來;之後經過長時間的處理,在大腦皮質區形成較難遺忘的長時記憶。
關於終身機器學習的定義,學術界尚未形成統一的結論,但經過我的總結髮現,一般都遵循以下四個要點:
1.維護可增長的知識庫 2.按照一定順序學習 3.多個任務 4.知識的正向遷移
從上面的四點還有之前的人類學習過程我們可以看出,這裡面最重要的一點就是知識的遷移,也就是舊知識如何幫助新知識的學習,知識遷移或者說遷移學習(Transfer Learning)正是終身機器學習的基礎。
下面介紹一下終身機器學習的框架:

如圖所示,終身機器學習的框架較為清晰,經過我個人的總結和參考一位博士學姐的文章,我將終身機器學習分為以下幾個部分:
1.遷移知識
作用是從知識倉庫中選擇對新模型學習有用的知識進行遷移,幫助新模型的學習。
2.知識倉庫
作用是儲存學習到的有必要長期儲存的知識同時對儲存資料有效的檢索和再現能力
3.模型學習
4.與知識倉庫進行互動,利用遷移知識使新任務完成快速學習過程,並將新任務中學習到的新知識整合進原有的知識中
5.整合知識
6.保證知識倉庫能得到不斷地更新,以使得在學習新任務時,這些知識可以得到有效的遷移
7.引導學習
求解出合理的任務學習順序從而提升系統的學習效能和效率
以上的內容對有遷移學習基礎的朋友可能會更容易理解一些,如果有朋友不是很理解,可以在下面評論,我會一一解答的。
相信各位也看出來了,在這個系統裡面比較重要的是兩個部分,遷移知識和整合知識。下面我介紹以下關於終身機器學習四種經典的演算法,按照時間先後排序,這幾個演算法裡面知識的遷移和整合往往是最重要的部分:
1.基於解釋的神經網路模型EBNN
目標:解決了純粹的歸納學習在訓練資料不足時通常會失敗的問題
解決問題的角度:將歸納學習和分析學習相結合
演算法思想:將歸納學習和分析學習相結合並增加了給定訓練導數與神經網路函式實際導數之間的一致性約束,且進一步提出採用已經學習過任務的資訊給出對訓練資料的解釋,實現不同任務間知識的遷移
貢獻點:開創了利用根據先驗知識進行演繹推導來進行終身學習的先河
2.多工人工神經網路MTLNN
目標:解決當學習新問題時,學習過的任務知識的滯留和回想問題
解決問題的角度:將學習過的任務進行重演
演算法思想:將新任務樣本輸入已學習過模型中,並將對應的輸出結果作為虛擬樣本加入新任務學習的ηMTL 網路中進行訓練,使得舊任務在學習新任務的同時也得到了鞏固
貢獻點:引入了任務重演對以前學習的任務進行鞏固
3.相關多工學習csMTL
目標:克服MTL網路的侷限性
解決問題的角度:增加任務上下文輸入集
演算法思想:增加輸入節點,每一個增加的輸入節點分別標記一個任務,但只設立一個輸出節點;直接共享任務的表示
貢獻點:避免了一次任務訓練中必須對其他任務進行任務重演的操作,同時不需要計算任務相關性。
4.高效終身機器學習ELLA
        目標:提高終身學習的效率
解決問題的角度:設立潛在任務
演算法思想:將一組潛在任務作為共享知識儲存起來,新任務到來的時候,通過這些潛在任務遷移已經學習到的知識幫助學習新任務,又通過學習到的新任務知識精煉潛在任務,可以使得先前學習的任務模型效能同樣得到提升.
貢獻點:在與MTL幾乎同樣的效能下,節省大量時間(超過1000倍),極度高效
如果各位朋友想深入瞭解這些演算法的話,可以和我聯絡,我把論文發給大家。
說過了知識的遷移和整合,我們再來看看知識倉庫。我們可能會想,知識倉庫到底應該儲存怎樣的知識呢?根據相關研究,任務間的遷移隨任務所共有的認知要素程度而變化,通過在更高的抽象層面上表徵問題可以提高遷移能力。同時Weitheimer的實驗說明,理解性學習的知識更容易遷移到新問題上。所以我們得出結論,知識倉庫應儲存知識的表示,相當於對儲存經總結壓縮後的原始資訊。
說了這麼久,我們來舉兩個應用例項吧:
1.永不停止的語言學習機,它的目的是創造一個計算機系統可以持續不斷地學習閱讀和理解網頁。
2.永不停止的影象學習機,它的目的是在最少人工參與的情況下,建立世界上最大的結構化視覺知識庫
最後,現有的終身機器學習方法還有很多不足之處,對未來的展望主要體現在以下三個方面:
1.可遷移知識表示的研究,尤其是適用於任務類別數大且不一定完全相關的情況的知識表示
2.如何處理資料多源異構問題,這裡指的是針對來自不同的資料採集源,分佈不同的
異構資料
3.結合其他先進技術,如深度學習、知識圖譜等,旨在提高特徵學習效能和隱含因素捕捉能力以及對知識的組織和利用能力
由於最近心情都不怎麼陽光,所以寫出的東西可能有些凌亂,希望大家多多批評指教。最後希望大家能夠向周圍的家人朋友多多宣傳一下千萬不要酒駕,我在這裡謝過大家了,謝謝!