當AI實現多工學習,它究竟能做什麼?
提到AI領域的多工學習,很多人可能一下子就想到通用人工智慧那裡了。通俗意義上的理解,就像《超能陸戰隊》裡的大白這樣一種護理機器人,既能進行醫療診斷,又能讀懂人的情緒,還能像陪伴機器人一樣完成各種複雜任務。
不過大白畢竟只是科幻電影當中的產物,現有的AI技術大多還處於單體智慧的階段,也就是一個機器智慧只能完成一項簡單任務。工業機器人中做噴漆的就只能用來噴漆,做搬運的只能用來搬運;識別人臉的智慧攝像頭只能進行人臉,一旦人類戴上口罩,那就要重新調整演算法。
當然,讓單個智慧體實現多種任務也是當前AI領域研究的熱點。最近,在強化學習和多工學習演算法上成績最好的是DeepMind公司的一款名為Agent57的智慧體,該智慧體在街機學習環境(ALE)資料集所有57個雅達利遊戲中實現了超越人類的表現。
當然,多工學習不止用在遊戲策略上。相對於現階段的AI,我們人類才是能夠進行多工學習的高手。我們既不需要學習成千上萬的資料樣本就可以認識某類事物,我們又不用針對每一類事物都從頭學起,而是可以觸類旁通地掌握相似的東西。
AI在單體智慧上面確實可以輕鬆碾壓人類,比如可以識別成千上萬的人臉;但AI在多工學習上面就要向人類的這種通用能力看齊了。
什麼是多工學習?
多工學習(Multi-Task Learning,MTL),簡單來說,就是一種讓機器模仿人類學習行為的一種方法。人類的學習方式本身就是泛化的,也就是可以從學習一種任務的知識遷移到其他的相關的任務上,而且不同的任務的知識技能可以相互幫助提升。多工學習涉及多個相關的任務同時並行學習,梯度同時反向傳播,利用包含在相關任務訓練訊號中的特定領域的資訊來改進泛化能力。
(單任務學習和多工學習的模型對比示意)
做一個形象的類比。我們知道人類不如虎豹擅跑,不如猿猴擅爬,也不如鯨豚擅遊,但是人類是唯獨可以同時做到奔跑、攀援和游泳的。用在人工智慧和人類智慧上,我們通常認為AI更擅於在單一任務上表現優異並超越人類專家,如AlphaGo一樣;而人類則可能在各種任務上都能勝任。
MTL正是要讓人工智慧來實現人類的這種能力。通過在多個任務的學習中,共享有用的資訊來幫助每個任務的學習都得到提升的一個更為準確的學習模型。
這裡需要注意的是多工學習和遷移學習的區別。遷移學習的目標是將知識從一個任務遷移到另一個任務,其目的是使用一個或多個任務來幫助另一個目標任務提高,而 MTL 則是希望多個任務之間彼此能相互幫助提升。
這裡我們就要搞清楚MTL的兩個特徵:
一、是任務具有相關性。任務的相關性是說幾種任務的完成模式是存在一定的關聯性的,比如,在人臉識別中,除了對人臉特徵的識別,還可以進行性別、年齡的估算識別,或者,在不同的幾類遊戲中識別出共通的一些規則,這種相關性會被編碼進 MTL 模型的設計當中。
二、是任務有不同的分類。MTL的任務分類主要包括監督學習任務、無監督學習任務、半監督學習任務、主動學習任務、強化學習任務、線上學習任務和多視角學習任務,因此不同的學習任務對應於不同的MTL設定。
共享表示和特徵泛化,理解MTL 優勢的兩個關鍵
為什麼在一個神經網路上同時訓練多個任務的學習效果可能會更好?
我們知道,深度學習網路是具有多個隱層的神經網路,逐層將輸入資料轉化成非線性的、更抽象的特徵表示。而各層的模型引數不是人為設定的,而是給定學習器的引數後在訓練過程中學到的,這給了多工學習施展拳腳的空間,具備足夠的能力在訓練過程中學習多個任務的共同特徵。
例如在上面的MTL的網路中,後向傳播並行地作用於4個輸出。由於4個輸出共享底部的隱層,這些隱層中用於某個任務的特徵表示也可以被其他任務利用,促使多個任務共同學習。多個任務並行訓練並共享不同任務已學到的特徵表示,這樣多工資訊就有助於共享隱層學到更好的內部表示,這成為多工學習的關鍵。
那麼MTL是如何產生效果的?
MTL的方法中引入了歸納偏置(inductive bias)。歸納偏置有兩個效果,一個是互相促進,可以把多工模型之間的關係看作是互相先驗知識,也稱歸納遷移(inductive transfer),有了對模型的先驗假設,可以更好的提升模型的效果;另外一個效果是約束作用,藉助多工間的噪聲平衡以及表徵偏置來實現更好的泛化效能。
首先,MTL的引入可以使得深度學習減少對大資料量的依賴。少量樣本的任務可以從大樣本量的任務中學習一些共享表示,以緩解任務資料的稀疏問題。
其次,多工直接的相互促進,體現在:①多個模型特性互相彌補,比如在網頁分析模型中,改善點選率預估模型也同時能促進轉化模型學習更深層的特徵;②注意力機制,MTL可以幫助訓練模型專注在重要特徵上面,不同的任務將為這種重要特徵提供額外證據;③任務特徵的“竊聽”,也就是MTL可以允許不同任務之間相互“竊聽”對方的特徵,直接通過“提示”訓練模型來預測最重要的特徵。
再次,多工的相互約束可以提高模型的泛化性。一方面多工的噪聲平衡。多工模型的不同噪聲模式可以讓多個任務模型學到一般化的表徵,避免單個任務的過度擬合,聯合學習能夠通過平均噪聲模式獲得更好的表徵;另一方面,表徵偏置。MTL的表徵偏好會造成模型偏差。但這將有助於模型在將來泛化到新任務。在任務同源的前提下,可以通過學習足夠大的假設空間,在未來某些新任務中得到更好的泛化表現。
行業場景落地,MTL如何解決現實問題
由於MTL具有減少大資料樣本依賴和提高模型泛化表現的優勢,MTL正被廣泛應用到各類卷積神經網路的模型訓練當中。
首先,多工學習可以學到多個任務的共享表示,這個共享表示具有較強的抽象能力,能夠適應多個不同但相關的目標,通常可以使主任務獲得更好的泛化能力。
其次,由於使用共享表示,多個任務同時進行預測時,減少了資料來源的數量以及整體模型引數的規模,使預測更加高效。
我們以MTL在諸如目標識別、檢測、分割等場景為主的計算機視覺的應用為例。
比如臉部特徵點檢測。因為臉部特徵可能會受到遮擋和姿勢變化等問題的影響。通過MTL能夠提高檢測健壯性,而不是把檢測任務視為單一和獨立的問題。
多工學習希望把優化臉部特徵點檢測和一些不同但細微相關的任務結合起來,比如頭部姿勢估計和臉部屬性推斷。臉部特徵點檢測不是一個獨立的問題,它的預測會被一些不同但細微相關的因素影響。比如一個正在笑的孩子會張開嘴,有效地發現和利用這個相關的臉部屬性將幫助更準確地檢測嘴角。
如上圖人臉特徵點檢測(TCDCN)模型,除了檢測特徵點任務,還有識別眼鏡、笑臉、性別和姿態這四個輔助任務,通過與其它網路的對比,可以看出輔助任務使主任務的檢測更準確。
MTL在不同領域有不同應用,其模型各不相同,解決的應用問題也不盡相同,但在各自的領域都存在著一些特點,除上面介紹的計算機視覺領域,還有像生物資訊學、健康資訊學、語音、自然語言處理、網路垃圾郵件過濾、網頁檢索和普適計算在內的很多領域,都可以使用 MTL 來提升各自的應用的效果和效能。
比如,在生物資訊學和健康資訊學中,MTL被應用於識別治療靶點反應的特徵作用機制,通過多個群體的關聯性分析來檢測因果遺傳標記,以及通過稀疏貝葉斯模型的自動相關性特徵,來預測阿爾茨海默病的神經成像測量的認知結果。
在語音處理上的應用。2015年,有研究者在國際聲學、語音與訊號處理會議(ICASSP)上分享了一篇《基於多工學習的深度神經網路語音合成》的論文,提出一種多工疊層深層神經網路。它由多個神經網路組成,前一個神經網路將其最上層的輸出作為下一個神經網路的輸入,用於語音合成,每個神經網路有兩個輸出單元,通過共享兩個任務之間的隱藏層,一個用於主任務,另一個用於輔助任務,從而更好地提升語音合成的準確度。
在網路Web應用程式中,MTL可以用於不同任務共享一個特徵表示,學習web搜尋中的排名提升;MTL可以通過可擴充套件分層多工學習演算法,用於找到廣告中轉換最大化的層次結構和結構稀疏性等問題。
總體上來說,在這些MTL的應用領域中,特徵選擇方法和深度特徵轉換方法得到研究者的普遍應用。因為前者可以降低資料維數並提供更好的可解釋性,而後者通過學習強大的特徵表示可以獲得良好的效能。
MTL正在越來越多的領域作為一種提高神經網路學習能力的手段被廣泛應用。這其實正是AI在眾多行業實際應用中的常態化場景。
我們可以最終溯源反思一下,人類之所以能夠具有多工學習的靈活應用的能力,恰恰是因為所處環境正是處在多特徵、多噪聲的狀況之下,這樣必然要求我們人類必須能夠觸類旁通地進行先驗的學習能力的遷移。而如果人工智慧僅僅停留在單體智慧上面,為每一類知識或任務都建立一套單獨的模型,最後可能仍然只是一套“人工智障”的機械系統,鬧出“白馬非馬”這類的笑話來。
當AI未來真正既能在融會貫通的方面像人類一樣熟練,又能克服人類認知頻寬和一些認知偏見,那通向AGI的前路才可能迎來一絲曙光。當然這條路還相當遙遠。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561483/viewspace-2689999/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 當催收遇上疫情,AI能做些什麼?AI
- 【揭秘】學好大資料之後究竟能做什麼?大資料
- 機器學習不能做什麼?機器學習
- 學習UI設計能做什麼UI
- Python到底能做什麼?它的優點在哪?Python
- 學python能做什麼?Python
- 地球如果流浪,大資料究竟能做什麼?大資料
- Linux運維有多難學?學完能做什麼工作?Linux運維
- 多維分析的本質計算是什麼?能做什麼又不能做什麼?
- 多工學習模型之DBMTL介紹與實現模型
- 多工學習模型之ESMM介紹與實現模型
- 【學習】介面是什麼?實現原理的是什麼?
- 究竟什麼是專案管理?它的主要內容是什麼呢?專案管理
- 學習Python自動化能做什麼?Python程式語言Python
- 央行:區塊鏈能做什麼、不能做什麼?區塊鏈
- 學好Java都能做什麼?從事什麼工作?Java
- 什麼是 AI、機器學習與深度學習?AI機器學習深度學習
- 什麼是AI、機器學習與深度學習?AI機器學習深度學習
- 淺析大資料 學習大資料後能做什麼大資料
- 為什麼都在喊資料視覺化?它究竟怎麼做?視覺化
- AI能有多汙?要看你餵它吃什麼 | 怎樣玩壞GANAI
- Nginx能做什麼Nginx
- 架構學習-多工架構
- 開發者的多媒體夢工廠: AV Pipeline Kit究竟是什麼?
- 大資料能做什麼,為什麼學大資料大資料
- 每天那麼多工作,我為什麼能做到 "不忘事" ?
- 究竟哪些人適合學習新媒體?學習後能幹什麼?
- python中機器學習和深度學習的區別究竟是什麼?Python機器學習深度學習
- 並行多工學習論文閱讀(一):多工學習速覽並行
- 廣州牽引力科技深入講解學習Java能做什麼工作?Java
- 央行工作論文:區塊鏈能做什麼、不能做什麼?區塊鏈
- 面試官問:你知道Redis能做什麼?不能做什麼?面試Redis
- Java能做什麼?學完Java可以從事什麼工作呢?Java
- 當我們談論CloudTable時究竟在談論什麼?Cloud
- Redis | 001能做什麼?Redis
- 讓AI拋棄“小作坊”,擁抱“工業化”:盤古大模型究竟是什麼?AI大模型
- 為什麼我們鍾愛動作類遊戲,它究竟有什麼樣的魅力遊戲
- 對於森林大火的肆虐,AI 能做些什麼?AI