記者 | 賈維娣
7月23日,由中國人工智慧學會、阿里巴巴集團 & 螞蟻金服主辦,CSDN、中國科學院自動化研究所承辦的第三屆中國人工智慧大會(CCAI 2017)在杭州國際會議中心盛大開幕。大會第一天上午,香港科技大學計算機與工程系主任、AAAI Fellow楊強教授發表了《深度學習的遷移模型》主題報告。
楊強從深度學習模型的共性問題談起,深度剖析如何使深度學習模型變得更加可靠,在資料變化的情況下,模型持續可用。
報告談到,遷移學習有小資料、可靠性、個性化等優點,雖然深度學習模型已在語音、影象、推薦等眾多領域非常有影響力,但是在如醫療、教育等領域還無法運用,究其原因,主要存在這樣三點:
我們遇到的資料往往都是小資料,而不是大資料;
深度學習模型非常脆弱,稍微移動、離開現有場景,其效果便會大打折扣;
再有就是應用問題。
由此,楊強教授與學生一起,將遷移學習與深度學習相結合進行了探索實踐,在現場通過解決大額消費金融的困境、跨領域輿情分析、網際網路汽車分類問題等多個實際應用案例多角度地展示了遷移學習的深度模型所帶來的優點。
以下內容根據楊強教授主題演講編寫,略微有所刪減。
大家好!今天很高興跟大家分享我和研究生同學在研究當中的一些心得,總結起來叫深度學習的遷移模型。
首先講一下我們的出發點,我們知道AlphaGo很厲害,但是它還有哪些點不夠呢?它不會舉一反三。你讓它下一盤棋,它不會利用前面的知識來幫助自己很快地學習新的棋藝,更不會利用下棋的知識做一些其他事,比如說自動駕駛。我們人是有這個能力的,如何能夠賦予計算機做這件事,這就是我們研究的一條主線。
由此引入我們的研究方向就是遷移學習(Transfer Learning),我們知道人能很自然地做這件事,從自行車遷移到摩托車,生活中還有很多的例子。這也從某種程度上解釋了我們看到小孩子在學習中並不需要上千萬的正例和負例幫助他學習,他往往用很少的例子就能學會一個很複雜的概念。同時學術界、工業界現在也認為遷移學習是下一個研究和應用的重點。去年Andrew Ng(前百度公司首席科學家 吳恩達)就講了遷移學習下一步將被大量應用。
一、遷移學習的三大優點
為什麼我們做遷移學習?我總結了三條原因:
小資料。我們生活當中大量遇見的是小資料而不是大資料,當資料很稀疏,看到不同的類別我們還是能在當中做出很靠譜的模型。這並不是空穴來風,而是之前我們有過很多大資料的經驗可以去借鑑,站在大資料的巨人肩膀上,所以人工智慧大量地應用,遷移學習這種模式是必不可少的。
可靠性。即使我們有一個大資料模型,我們也很關心它的可靠性。把一個模型遷移到不同的領域,就會發現它的準確率會大量下降,如何防止這一點,我們就需要模型本身具有自適應的能力,能夠自帶遷移能力。
個性化。我們整個的社會,我們的應用在向一個個性化的方向發展,有了雲端,有了各種各樣的終端,終端的操作者都是我們個性化的人。那麼我們讓一個模型、一個服務來適應我們每個人的特性,遷移學習是必不可少的。
遷移學習的難點在於找出不變數
遷移學習又是很難的。教育學有一個概念叫“學習遷移”,就是說如果一個學生學到了很靠譜的知識,怎樣檢測呢,就是看看他有沒有能力遷移到未來的場景,再學一門新課他就發現學得容易,但是這種學習遷移能力的傳輸又非常難。
我們來看看怎樣找出不變數。在國內和世界很多地方,駕駛員都是坐在左邊,但是去香港駕駛員就是在右邊,很多人不會開車了,就會出現危險,但是用遷移學習教你一招馬上可以開,而且很安全,就是找出一個不變數。這個不變數就是司機的位置總是靠路中間最近的,你就保持司機的位置離中線最近就可以了。
找出不變數很難,但是在其他的領域已經大量出現。最近Yann LeCun提出一個問題:機器學習的熱力學模型是什麼?我的回答是遷移學習,把一個領域裡面的知識、也就是“能量”,轉化到另外一個領域,這和熱力學把兩個物質放在一起,然後研究熱是如何能量是如何在物質間傳播的,是類似的概念。區別是,在我們這裡的知識比物理裡的能量複雜很多倍。所以這個問題在科學上也是有深遠意義的。
二、如何實現遷移學習:深度學習+遷移學習
今天我講的是如何實現遷移學習中的一個方面。從單層次來看一個東西,把一個領域裡的模型和知識通過層次分解,就好比杭州有雷鋒塔,我們可以從一個古典的建築發展到像雷鋒塔這樣有層次的建築,一層一層分析,深度學習恰恰為我們提供了分層和層次。
下面我就仔細地描述一下,深度學習如果是從左到右,從輸入到輸出的變化過程,中間是有很多非線性地轉化,我們可以忽略不計,但是這些層次我們要遷移到新的領域的話,知識的遷移就相當於引數的遷移,這些引數就是權重。
在這個裡面我們可以看知識到底有多少可以從藍色到橘色的,從源領域到目標領域,產生這樣的遷移,我們可以看到中間層有很多層引數可以共享。另外層次越高的話,可能它關心的高層的概念離得越遠。我們關心的是領域之間的距離,我們能否把領域之間的距離刻畫出來,在深度學習的初創期,有很多啟發式的做法,其實很多概念是和遷移學習不謀而合的。
下面我們看看這樣一種分層的研究對遷移學習到底產生了什麼樣的作用呢?我的學生魏穎就把最近的遷移學習和深度學習共同的工作畫了表,這裡面的名詞像CNN、DDC都是最近發表的文章裡面的系統名。橫軸是年代,從2011年到最近,縱軸是準確率。左邊是我一些學生做的工作,把遷移學習在不同領域裡面的子空間,它們共享的知識找到,但是沒有用到深度學習的概念,大概是2010年、2011年做的工作,叫TCA。
右邊上面角是DAN,是深度學習加上遷移學習。我們看到深度學習加上遷移學習準確率大大提高,這不僅僅對理論有幫助,對工程的效率也是有幫助的。這裡面用一個距離的表述,使用MMD發現兩個領域兩個資料集之間的距離,這個距離是在網路的上層,從左到右,從下到上,更重要的是發現並且儘量減少這樣的距離。
大家可以看到固定住,從一個領域遷移到另外一個領域,在下層比較容易遷移,在上層我們就關心領域之間的距離。
也有人把這個工作系統地進行了比較,我們可以看到代表遷移能力的紅色是逐層下降的,從左到右逐層加深,如果是以深度學習的模型,下層在影象上比較容易遷移,在上層就不容易。我們在當中也可以做各種各樣的演算和變化,比如說我們可以讓遷移過來的引數,讓它在之後的領域裡面再得到重新的訓練,這樣就會得到上面的這條線,我們這個線放得越寬遷移能力就會變得越強,如果兩個領域之間相差太大了,那麼這個遷移是沒辦法進行的,就像下面的這條藍線直線下降,這個能力就不行。
關於模型遷移,我們關心兩點。
一是不同模型裡面的一個層次,它的遷移量化。
二是兩個領域的距離有沒有一個很好的衡量,這也為我們的研究提供了一個很好的指引方向,像這裡幾條線就是更進一步地說明我剛才表明的觀點,第一個是細微的調參,就是目標領域幫助我們繼續調參是有幫助的。
另外從上層到下層是通用到個體的一種演化,大家看這些曲線是下降的。另外我們關心兩個領域之間的距離。
下面我們就可以利用這個觀點,對於不同的知識遷移的場景進行總結。
第一個是說我們在兩個領域完全都沒有標註的,目標和源資料都沒有標註,這個時候我們就可以利用剛才的知識把下層固定住,直接遷移。在比較靠上層就可以放開,利用的方法是可以來減少兩個領域之間的距離,這個距離雖然我們沒有標註,我們還是可以把它衡量出來的,就像用剛才MMD的方法。
還有一個方法是就用一個Loss描述,這也有所不同,比如說兩個領域之間的直接衡量,還有我們同時做兩件事,第一件事是說利用兩個領域之間的距離,我們要把這個距離儘量減少,同時我們讓每個領域自己能夠更好地表達它自己。
三、3種不同的遷移方法
將這些概念加起來,就可以總結出三個不同的遷移方法。
基於差異的方法
在哪裡做遷移的轉換、自適應。可以在某個層次來做,也可以在多個層次來做,如何來衡量兩個領域之間的距離,可以用鮮豔的這種概率、模型,也可以用聯合概率、模型,另外還可以將源領域的資訊加進來,建立一個更準確的Loss。這都是影象領域獲得的知識,那自然語言會不會有類似的方式呢?
下面一篇描述NLP的文章也證明了這一點,假設我們把自然語言的深度處理分成三個層次,即E、H、O,如果我們鎖定不變,而其他的層次有可能變化,也有可能不變化,這樣可以發現,先遷移後微調的效果最好。
還有,在目標領域我們能夠讓它的再生後期做自適應的學習,就是開鎖的這種,效果是最好的。
這個模型也可以發展到多模態,上面的源領域是影象,下面的可以是文字,可以讓他們之間有一些層次可以分享。最後得到的系統就是既可以理解一個源領域,比如說影象可以轉化為文字,又可以把文字轉化成影象。另外還可以加入正則化,我們可以變化各種各樣的正則,使得靠上層的層次之間互相靠攏。
傳遞式遷移學習
有了剛才的這些層次概念,可以將遷移學習進一步地發展,過去的遷移學習都是給一個源領域,一個目標領域,從源到遷移目標,現在我們可以多步遷移,從A到B,然後從B到C,就像石頭過河一樣的,這是我們最近做的工作,傳遞式的遷移學習。
傳遞式的遷移學習也可以利用深度學習的分層這個概念進行。我們右邊這裡有三類資料,有一個是源領域的資料,比如影象,有一個是目標領域的資料,比如說文字,中間有很多文字和影象混雜在一起的領域。我們一個做法就是在中間領域挑一些樣本,讓它更好地幫助源領域遷移到目標領域,這些就像中間石頭過河一樣的。
如何得到這個,在訓練目標模型的時候我們就有兩個資料,一個是不斷地檢測在目標領域的分類效果,另外一個是不斷地嘗試新的樣本,這些樣本來自於中間領域和源領域,最後使整個不同的資料集之間形成一個新的資料集。
這樣的一個理念在應用當中也非常有用,這是史丹佛大學最近做的一項工作,是從一個影象到衛星影象區分在非洲大陸上的貧困情況,最後就發現這種傳遞式的遷移方法效果確實和人為地去取樣、標註效果差不多,一個是0.776,一個是0.761,而它中間人為的參與大大減少,因為它用了傳遞的過程。
生成對抗網路GAN
還有一種最近比較火的思想就是叫生成對抗網路GAN,它的思想來自兩個模型互動,一個是生成模型,可以生成樣板,就是右邊的G模組,它一開始是非常粗糙的。還有是D模型,比較生成和真實的樣本,它可以告訴你有沒有被發現,你生成模型生成的樣本夠不夠好,經過他們兩者之間的博弈,最後就產生了學習的躍進,使得G和D兩者都得到了改進。
很多學者也用這個方法來做遷移學習,比如說給兩個資料集,我們一開始並沒有一個資料,並不知道這個包對應這個鞋,系統通過深度網路,可以把這個Alignment模型生成出來,根據這個模型找到一個最匹配的鞋的模型,而且是完全生成的,在原資料,鞋的資料集是沒有的,就像右邊這裡展示的。這種也是遷移學習的概念。
Cycle GAN的思想也非常有趣,一個源領域可以遷移到一個目標領域的話,我們同樣也應該讓一個目標領域的資料、知識遷移到源領域。如果是回來的話,如果還能返回原來的樣本,那麼就是說明遷移已經學得靠譜了。就像我們拿一首唐詩到機器翻譯的軟體翻譯成英文,然後再拿同樣的軟體再翻譯回中文,我們大家知道往往得到像亂碼一樣的東西,完全回不到原來的一首詩,如果能夠回到原來的詩,那翻譯就靠譜了,概念也是類似的。
GAN的模型確實帶來了遷移的新意,讓兩個領域同時做兩件事,這個圖表示做的兩件事。綠色部分是兩者共享的深度學習的層次空間。我們如何找到這樣的層次呢?就依靠第二件事,就是我們儘量地找到一個區分領域的模型,我們有源領域A和目標領域B,如果有一天模型發展到我們區分不了資料來自於哪個模型,那就說明共享的模型靠譜了,它就是抓住了兩個領域之間的不變數,那就回到了左右開車的場景,那個不變數就找到了,這就可以用這部分做遷移了。最後得到的領域,準確率最高的就是通過剛才的模型得到的。
四、遷移學習應用案例
下面說一下我和我學生一起做的遷移學習的工作,尤其是跟深度學習結合。
一個叫戴文淵的學生,在第四正規化這個公司做的工作就很有意義,他們為銀行做一個大額產品的營銷,比如說車貸,比較貴的車貸的樣本非常少,少於一百個,這麼少的資料是沒辦法建模型的,怎麼辦?去借助小微貸款的資料,比如說上億的客戶的交流,然後發現兩個領域,一個是小微貸款,一個是大額貸款,他們之間的共性,把這個模型遷移過來,這就使得它的響應率提高了2倍以上。
另外是我們要去發表的一篇文章,做輿情分析。我們知道輿情分析是非常有用的,不管是在商業上還是在政府的服務上,大家都希望瞭解那麼多的留言,是正向還是負向的?為什麼是這樣的?對哪些產品有興趣?大家對哪個服務滿意等。我這裡給出兩個不同的領域,如果我們在一個領域已經有像最左邊這裡給出的標註,比如說Great,這就是一個贊,說這個是Owful book,就給出一個差。我們的問題是能否藉助相同領域的資料來減少我們的分量,使得我們建立一個靠譜的模型,在新的領域、目標領域。這是一個非常好的遷移學習的場景。
但是過去做遷移工作的時候,需要有一個概念叫Pivot,兩個領域之間共享的關鍵詞,這兩個關鍵詞對於指出這個是正向和負向也是非常有用的,像Great這個詞,Boring和Awful,以前完全是靠人找到這兩個詞,我們知道這是不靠譜的。
我們通過遷移學習把這個詞找出來,在這裡用的工具是Adversarial模型,在一堆摹本里面找出關注量比較大的詞和片語,有了這一Adversarial模型,我們就可以自動打分,我們打的分數是否靠譜,可以用另外一個Domain Label的詞告訴我們,什麼樣的詞才有這樣的特性呢?首先兩個領域共享,能夠幫助我們在新領域共同地指出輿情的趨向。同時希望模型越少越好,就是這三件事翻譯成目標函式裡面,就能建立模型。左邊是輿情的Classifier,右邊是領域的,我們同時希望領域的混淆度越大越好,同時我們希望Sentiment(輿情)的準確率越高越好,這兩個之間形成博弈,就形成了GAN(生成網路)的概念,另外是多工學習,就是兩個任務共同進行,共同有一些共享。
最後我們在正確設定了一些距離函式和Loss以後,就可以學出來,效果非常好。
最後一個應用是和上海汽車做的研究,汽車在跑的時候能否根據它的路況分析車到底做什麼?是共享還是私用的?我們很榮幸得到了一些資料,在這些資料裡面我們可以同時進行兩種分析,一種是影象分析,雖然我們本領域沒有太多的標註資料,但是可以借用計程車來學習。左邊的是同時做兩個任務的學習,第一個是根據現在計程車的資料,來幫助我們標註網際網路汽車的資料,但是這個當中可能會有錯誤,所以我們在本領域可以用一些影象分析來矯正這些錯誤,校正完再拿回來擴充這樣的一個樣本集。在這兩個之間進行多次往返以後,我們就會得到一個很靠譜的模型,最後這樣的一個演算法我們就可以得到一個很不錯的遷移效果。
最後總結一下,遷移學習和深度學習可以非常有機地結合,兩個是可以互補的,深度學習幫助我們分非常細地層次,每一層我們可以進行量化的分析,遷移學習可以幫助深度學習變得更加靠譜,得到的一個結果就是深度學習的遷移模型,同時也應該說是遷移學習的一個深度模型。