深度學習領域有哪些瓶頸?

深度學習近年來成為計算機領域最耀眼的明星,衍生出許多實際的應用,主要是在推理與決策等方面取得了突破。然而深度學習如何在超越圖像、語音及自然語言處理方面做出更多成績,比如對人類情感的理解,意識和動機的模仿,會涉及到很多更深層次的問題,是目前深度學習的黑匣子無法打開的魔方。

相關問題:2018年有望解決的重大深度學習問題有哪些?


簡單說點自己的想法。在我看來,目前絕大多數深度學習模型,不管神經網路的構建如何複雜,其實都是在做同樣一件事:

用大量訓練數據去擬合一個目標函數y=f(x)。

x和y其實就是模型的輸入輸出,例如:

  • 圖像分類問題。此時x一般就是一個寬度*高度*通道數的圖像數值矩陣,y就是分類的類別。
  • 語音識別問題。x為語音採樣信號,y為語音對應的文字。
  • 機器翻譯。x就是源語言的句子,y就是目標語言的句子。

而「f」則代表深度學習中的模型,如CNN、RNN、LSTM、Encoder-Decoder、Encoder-Decoder with Attention等。不同於傳統的機器學習模型相比,深度學習中的模型通常具有兩個特點:

  • 模型容量大,參數多
  • 端到端(end-to-end)

藉助GPU計算加速,深度學習可以用端到端地優化大容量模型,從而在性能上超越傳統方法,這就是深度學習的基本方法論。

那麼,這種方法有什麼缺點呢?個人認為有以下幾點。

一、訓練f的效率還不算高

訓練的效率表現在兩方面,首先是訓練模型的時間長。眾所周知,深度學習需要藉助GPU加速訓練,但即使這樣訓練的時間也是以小時或者天為單位的。如果使用的數據量大,加上模型複雜(例如大樣本量的人臉識別、語音識別模型),訓練時間會以周甚至會以月來計算。

在訓練效率上還有一個缺點是樣本的利用率不高。舉個小小的例子:圖片鑒黃。對於人類來說,只需要看幾個「訓練樣本」,就可以學會鑒黃,判斷哪些圖片屬於「色情」是非常簡單的一件事。但是,訓練一個深度學習的鑒黃模型卻往往需要成千上萬張正例+負例的樣本,例如雅虎開源的yahoo/open_nsfw。總的來說,和人類相比,深度學習模型往往需要多得多的例子才能學會同一件事。這是由於人類已經擁有了很多該領域的「先驗知識」,但對於深度學習模型,我們卻缺乏一個統一的框架向其提供相應的先驗知識。

那麼在實際應用中,如何解決這兩個問題?對於訓練時間長的問題,解決辦法是加GPU;對於樣本利用率的問題,可以通過增加標註樣本來解決。但無論是加GPU還是加樣本,都是需要錢的,而錢往往是制約實際項目的重要因素。

二、擬合得到的f本身的不可靠性

我們知道,深度學習在性能上可以大大超越傳統方法。但這種性能指標往往是統計意義上的,並不能保證個例的正確性。例如,一個99.5%準確率的圖片分類模型,是指它在10000張測試圖片中分類正確了9950張,但是,對於一張新的圖片,就算模型輸出的分類的置信度很高,我們也無法保證結果是一定正確的。因為置信度和實際正確率本質上並不等價。另外,f的不可靠性還表現在模型的可解釋性較差,在深度模型中,我們通常很難說清楚每個參數代表的含義。

一個比較典型的例子是「對抗生成樣本」。如下所示,神經網路以60%的置信度將原始圖片識別為「熊貓」,當我們對原始圖像加入一個微小的干擾雜訊後,神經網路卻以99%的置信度將圖片識別為「長臂猿」。這說明深度學習模型並沒有想像得那麼可靠。

在某些關鍵領域,如醫療領域,如果一個模型既不能保證結果的正確,又不能很好地解釋其結果,那麼就只能充當人類的「助手」,而不能得到普遍的應用。

三、f可以實現「強人工智慧」嗎

最後一個問題其實有點形而上學,並不是什麼技術上的具體問題,不過拿出來討論討論也無妨。

很多人關心人工智慧,是關心「強人工智慧」的實現。仿照深度學習的方法我們似乎可以這樣來理解人的智能:x是人的各種感官輸入,y是人的行為輸出,如說的話,做出的行為,f就代表人的智能。那麼,可以通過暴力擬合f的手段訓練出人的智慧嗎?這個問題見仁見智,我個人傾向於是不能的。人的智能可能更類似於概念的抽象、類比、思考與創造,而不是直接拿出一個黑盒子f,深度學習方法恐怕需要進一步的發展才能去模擬真正的智能。

以上只是個人的一些小想法,大家如果有興趣的話可以一起討論~


學過點皮毛,湊個熱鬧。

1、深度學習對數據量的要求很大,數據量過小就會造成嚴重過擬合。

2、深度學習在應對表格類數據的時候並沒有明顯優勢,目前比較擅長的領域是計算機視覺,自然語言處理和語音識別。在表格數據情境下,大家更願意使用xgboost等模型。

3、理論支撐薄弱,幾乎沒有人對深度學習的數學基礎做工作。大家一窩蜂地拿著模型水論文。

4、接上條,調參基本陷入了煉丹模式,深度學習調參已經是一門玄學。

5、硬體資源消耗大,GPU已經是必備,但是價格高昂,因此深度學習也稱為富人的遊戲。

6、部署落地仍然困難,特別是移動應用場景下。

7、無監督學習仍然是困難,深度學習訓練目前基本都基於梯度下降去極小化損失函數,因此需要有標籤。而對大量數據貼標籤成本很高。當然也有無監督學習網路正在迅猛發展,不過嚴格意義上說,GAN和VAE等都屬於自監督學習。

看到評論中有質疑第一條的,我發表一下自己的看法:一個比較強的學習器一般都不會擔心欠擬合的問題。神經網路擁有大量參數,只要有足夠多的訓練輪數,理論上可以完全擬合訓練集。但是這並不是我們想要的,這樣的模型泛化能力會非常差。而造成這一結果的原因就是,數據量太少,不足以代表整個數據背後的分布情況。此種情況下,神經網路幾乎是不加辨別的強行擬合上了訓練集這個數據子集的分布,導致了過擬合。



看了一些答案,感覺大家說的都很有道理,但是總覺得很多人提到的瓶頸是「機器學習」的瓶頸,而非「深度學習」的瓶頸。在下拋磚引玉強答一下。

深度學習,深是表象,不是目的。Universal approximation theorem 理論證明只需要一個隱層就可以擬合任意函數,可見重點不在深。深度學習與傳統機器學習相比:深度學習就是在學習表示。也就是說,通過精心設計的分層結構學習到數據的本質特徵(表示)。

說到瓶頸,深度學習也算是機器學習的一種,它也會有機器學習本身的瓶頸。例如對數據依賴性很強。是數據的「行為智能」而非真的有自主意識的人工智慧。這些問題上面的答案都說了不少。

除此之外,它還有一些特有的瓶頸。

  1. 比如特徵結構難以改變。對於數據的格式(尺寸、長短、顏色通道、文本詞典格式等等)要求苛刻。訓練好的feature extractor不是那麼容易遷移到其他task上。
  2. 它非常的不穩定。例如在NLP的任務中,做文本生成(QA)、圖像標註之類的工作時,有時候生成的內容讓你拍案叫絕。但經常也會是匪夷所思。所以它的不可控性導致在工程應用中不是很廣泛。很多犧牲recall保precision的應用都沒法用深度學習去搞,否則容易出危險。相比之下rule based的方法要可靠得多。至少出問題了能debug一下。
  3. 它難以hotfix,出了問題基本靠重新調參訓練。在應用過程中會遇上很多潛在困難。
  4. 深度模型的優化過於依賴個人經驗。世界三大玄學:西方占星、東方周易、深度學習。
  5. 模型結構越來越複雜,不同系統之間越來越難以整合。就好像一直在培養超級士兵,但他們之間語言不通,沒法組成一個超級軍隊。
  6. 敏感信息問題。訓練模型使用的數據如果沒有脫敏,是有可能通過一些方法把敏感信息給試出來。
  7. 攻擊問題。現在已經證實對抗樣本(Adversarial Sample)的存在。創建一些對抗樣本能直接幹掉現有的演算法。不過感覺對抗樣本的生成是由於特徵抽取並沒有學習到數據的流型特徵而引發的。或者說,一定程度的overfit帶來了這個問題,
  8. 不過目前來說最大的問題還是對海量數據的需求。由於需要學習真實分布,而我們的數據僅僅是從真實分布中採樣得到的一小部分。想要讓模型真的逼近真實分布,那就要儘可能多的數據。數據量需求上來了,問題有很多:數據從哪來?數據存在哪?如何洗數據?誰來標數據?如何在大量數據上訓練?如何在成本(設備、數據)和效果之間trade off?
  9. 由第8條擴展。需要海量數據的深度學習真的就是「人工智慧」嗎?反正我是不信。人腦可以用有限的知識歸納,而非只是用認為設計的指導方針來指揮機器學習到特徵空間的分布。所以真正的人工智慧,對數據和運算的需求應該並沒有那麼大!(這條其實也是機器學習的問題)

總之還有很多因素限制它的應用。但是樂觀來看,有問題不怕,總是能解決的。


四點:

1:模型大小

2:訓練時間

3:有效數據

4:問題局限性

前三點相互制約,相同模型大小,有效數據越多效果越好,數據越多訓練時間越長,數據足夠多的話模型越大效果越好。然鵝……有效數據很多需要人工標註數量有限……模型太大難以訓練和實用,模型越大數據越多時間就越長……訓練時間的制約……

這些都導致學術界已經很成熟的技術都難以在工業界得到很好的應用……

深度神經網路語言模型組已經這麼完善了,可是考慮到速度,識別中幾乎還是用的n-gram……

更何況學術界還不能比較好解決的的問題。圍棋其實是很容易建模的簡單問題,但是狀態之多導致用到的演算法也並不是大家想像的一個深度神經網路……而是rl加搜索……dn只是當中很小的一部分。

所以更複雜的問題,比如狀態難以確定的啦,reward難以衡量啦,這些問題根本矛盾並不是dl的矛盾……

以上為個人理解,不保證全面和正確……


現在的問題還沒有到倫理這一步,能不能實現出強AI都是個未知數。

還是簡單說下深度學習,以及可能的強AI涉及到的問題吧:

深度學習能做的不錯的

  1. 大樣本下的有監督訓練
    1. CV:一些子領域:人臉識別,疾病分類,受限分類下的識別等都做的不錯
    2. NLP:文本分類、tagging、實體鏈接、翻譯等,都做的還不錯,逐漸逼近人類專家水準了(但還沒法超越)
    3. 推薦系統:沒法和人類比,但套個DL,基本效果都還看的過去
    4. 其他領域:語音,搜索引擎,廣告等

深度學習做的不算好的

  1. 大部分問題的冷啟動(仍然需要大量樣本才有效)
  2. 單領域,不同樣本表達形態的知識遷移(如文本長度不同,較為敏感)
  3. 多領域的知識遷移(文字,語音,視頻)
  4. 複雜問題的深度強化學習
    1. 如星際爭霸等
    2. 嚴謹的推導能力
  5. 總結歸納能力
    1. 文本摘要
    2. 閱讀理解
  6. 舉一反三能力
    1. GAN在刷的各個領域,只能說圖像現在做的還不錯,但還沒見有商用點

實現強人工智慧要做什麼?從現在看,其實就是上面說的幾點:

  1. 記憶:能夠學習互聯網上的知識,並加以有效的存儲
  2. 總結:能夠總結歸納互聯網上的知識,得出一般性規律
  3. 生成:能夠通過知識或規律舉一反三,生成更多的類似的知識、規律
  4. 推導:能夠通過知識或規律得到更深入的、符合目標的知識或規律

這四點就是核心難點,比較抽象,也沒那麼容易,每一點估計都要N年來解決

它們都可以用上深度學習,但肯定都不是簡單設計個graph就可以搞定的


個人提一些不成熟的猜想,比較業餘,多多指教。

1、(目前的)深度學習無法解決小批量數據的學習問題,換句話說,無法具備「舉一反三」的能力。單說圖像識別的例子就可以看到,用GANs隨便加點雜訊,訓練好的模型就全亂了。一個人如果只見過黃橘貓兒沒見過波斯貓,第一眼看到波斯貓估計也能看出那是一隻「貓」,但是深度學習的模型很難講。

2、深度學習是模擬人腦的(理論上來說),所以「可能」不會比人工在識別率上好太多。而目前深度學習雖然在某些領域達到了比人工更好的識別率,但是首先 (a) 深度學習沒有比人工好太多 (b)很難說人工準確率下降是由於人真的從能力上無法識別,還是由於疲倦而造成了誤差。所以,我猜測深度學習在目前的框架下是存在天花板的,將來可能僅僅是提高了效率,而非真正的準確度。

所以我猜測,如果要真正超越人工識別,應該會有其他不同於深度學習的理論,只是我們還沒有發現出來。當然這是一個偽命題,因為人真的需要一個在準確率上能大幅度超越人類的人工智慧么?


在最近在灣區召開的一次人工智慧大會上,Google的人工智慧研究人員FrancoisChollet強調了深度學習的重要性,它比一般的數據統計和機器學習方法都要更高級,是一款非常強大的模式辨別工具。但是,不可否認它是存在著嚴重局限性的,至少目前來說是這樣。

深度學習的成果是建立在極其苛刻的前提條件之上

不管是「監督學習」(supervisedpercepTIon),亦或者是「強化學習」(reinforcementlearning),它們都需要大量的數據進行支撐,而且在提前計划上面表現的非常差,只能做某些最簡單直接的模式辨認工作。

相比之下,人就能夠從極少數的例子上學到有價值的信息,並且善於在時間跨度很長的計劃,在針對某個情境上有能力自己建造一個抽象模型,並利用這樣的模型來做站在最高處的歸納總結。

事實上,隨便在街邊上走著的一個路人所能做到的最為稀鬆平常的事,對於深度學習演算法來說都是難如登天。還是舉個例子好了:現在比如說我們要讓機器來學會如何在路上走的時候避免被車撞到。

如果你是採用的「監督學習路徑」,那麼你需要從汽車駕駛的情境中提取海量的數據,而且還要以明確標示出來的「動作標籤」進行分類挑揀,比如「停止」、「站住」等等。再接下來,你還需要訓練一個神經網路,使得它能夠從眼下的情景和所與之相對應的行動之間構建因果聯繫;

如果你是採用的「強化學習路徑」,那麼你應該給演算法一個目標,讓它能夠獨立地判斷當下最優解(也就是最理想的行動)是什麼,電腦在不同的情境之下,為了實現避免撞車的這個動作,它估計要宕機上幾千次;

Choliet總結道:「你不可能就以今時今日的技術研發成果作為基礎,就能實現某種一般意義上的智能。」

而人則不一樣,你需要告訴他一次:你需要躲避車子走。然後我們的大腦就有能力從少數的例子中提取經驗,有能力在大腦中想像出來被車碾壓後的凄慘場景(在計算機那裡被稱之為「建模」),為了避免喪生或者缺胳膊少腿,絕大多數人都能快速地學習到不被車撞到的要領。

雖然現在已經有了比較大的進展,一些神經網路可以從數據層面,在相當大的樣本數量上給出一個驚人的成果,但是它們如果單獨拿出一個出來,都是不可靠的,所犯的錯誤是人一輩子都不可能犯的,比如說錯把牙刷當作籃筐。

數據質量的不穩定性帶來的是:不可靠、不準確,以及不公平。

而且,你的結果,還得取決於輸入的數據質量如何。神經網路中如果輸入的數據是不準確的,不完整的,那麼結果也會錯的離譜,有些時候不僅造成損失,而且還會很尷尬。就比如說Google圖片錯把非裔美國人當作了猩猩;而微軟曾經試著把一個人工智慧放在Twitter上進行學習,幾個小時之後,它就變得充滿惡意,滿口髒話,帶有嚴重種族歧視。

也許推特上的這個例子有些極端,但不可否認,我們輸入的數據本身就存在著某種程度的偏見和歧視,這種帶有主觀性的,潛移默化的觀念或者暗示,有時我們甚至自己都無法察覺。就比如說:word2vec是google推出的做詞嵌入(wordembedding)的開源工具,從GoogleNews里提取了300萬個詞。這組數據傳遞出來的信息包括了「爸爸是醫生,媽媽是護士。」這明顯就帶有性別上的歧視。

這種歧視不僅僅是被原封不動地搬運到了數字世界,而且還會得到放大。如果「醫生」這個詞更多的指向「男人」而非「女人」,那麼演算法在面對一份公開的醫生職位篩選的時候,它會將男性放在女性前面優先考慮。

除了不準確、不公平,還存在著最大的風險:不安全。

以上就是深度學習所存在著的種種瓶頸,目前它要發揮作用所需要的前置條件太過苛刻,輸入的數據對其最終的結果有著決定性的影響,另外,它存在著很多漏洞,安全性也無法得到保證。如果我們要駛向理想中的人工智慧未來,這些瓶頸還有待於人們的進一步的突破與挑戰。

上述文字摘自網路


深度學習的理論目前可以說是幾乎一片空白。已有的那點基本都屬於忽悠著玩。


我覺得深度學習最大的瓶頸也是其最大的優點,既

1.end-to-end training

2.universal approximation

其優點在於有極強的擬合能力。

缺點是對其中間擬合過程我們幾乎沒有任何control,所有我們想讓其學習到的東西只能通過大量的數據,更複雜的網路(inception module, more layers),限定更多constraint(dropout, regularization),期望它最後學習到了等同於我們認知的判斷。

舉個具體的例子,我們想判斷一直圖像是不是人臉。

其中一個籠統的判斷標準是,這張圖像上是否涵蓋2隻眼睛,1個鼻子,1個嘴巴,以及他們之間的位置信息是否符合幾何邏輯。這也正是傳統dpm的思路,雖然以上每一步(subtask)都有可能出錯,致使overall performance不會特別好。但是相對來講每一個subtask都只需要較少的訓練數據,中間結果都會比較直觀,最後的結果符合我們人類的判斷標準。

但是這件事由深度學習來做,你除了少數幾個「認知」(prior knowledge)可以通過網路結構來定義(例如cnn實際上是默認feature的local coherent+position invariant的特性),其他的認知只能通過大量的數據來讓網路自己去學習。一些簡單的元素如臉的大小,位置,旋轉你還可以通過data augmentation來模擬,但對於膚色,背景圖案,頭髮的因素,就要靠找額外數據開擴充網路對問題的認知了。但即使是這樣,我們也無法確定網路總結了哪些高層次的知識,當我拿給他一張訓練數據里沒有的二郎神的圖像,它會做出怎樣的判斷。

這也正是為什麼數據是深度學習里最重要的一項。當你數據不夠多樣的時候,它可能只學習到一些比較hacky的trivial solution;但是當數據足夠全面的時候,它更有可能總結出比單純鼻子眼睛更有表達力的特徵,只是我們無法理解而已。


深度學習的理論基礎是概率統計,題主說的推理和決策是基於歷史數據的歸納推理和歸納決策,並不是因果邏輯性質的推理和決策。理論基礎決定了這種工程方法的適用範圍、優點和缺點、以及可能到達的高度。

以目前最火的無人駕駛汽車來說,目前深度學習的工程方法,只能是用近似窮舉場景的方式來無限逼近解決方案。但是沒有人能說100%解決問題,因為場景是無限的,無法窮舉的。當然,並不是說無人駕駛汽車不會成功,當歸納的完備度足夠高,總會超過人的駕駛,在實際中是有工程意義和商業價值的。

工程化過程中的瓶頸,直接來源於這種工程技術對數據量和計算量的極度高要求,高維海量數據處理,有些還要求實時。例如地平線想做的嵌入式晶元,就是為了解決類似工程化過程中遇到的計算問題。隨著時間的推移,大公司和大量炮灰公司持續的投入,工程瓶頸問題會隨著逐步解決,或有妥協方案。最終的瓶頸,就是數據歸納能解決的問題的邊界。

————————————

非該領域吃瓜群眾留


在我看來,深度學習的局限性在於雖然智能卻不是真正的人類智能。

有人說其局限性是f的不準確。

舉這麼個例子,image caption的數據集英文最好的應該是mscoco,但是這樣的數據集也只有8萬多張圖片,每張圖片有5個caption,而總共有4萬多個單詞量。通過訓練,準確率再高,給張新的圖片,比如一隻長江里的中華鱘,識別成了一條魚。但是當我們的數據集盡善盡全時,幾乎能肯定是能創造出一個識別各種各樣各式各類精細到品種,紋路的網路。

但這樣帶來的肯定是巨大的運算量和巨大的人工成本,但這些都不是事,遲早都能解決。

不能解決的是神經網路畢竟是模擬大腦神經網路,不能成為大腦。


難道不是有一個參數或者規則感覺寫的挺好的,但是加上之後命中率就是變低了幾個百分點。去掉之後就是變好了。

無法解釋,不好debug,反正這是我遇到的最大瓶頸。


個人理解,從理論和工程實踐兩方面來看

理論上的瓶頸主要是尋求在1 樣本數量較少 2 無標籤數據 的條件下性能較好的演算法或改進演算法

工程實踐上瓶頸主要是諸如1 演算法部署成本太高,2 演算法本身體量太大,儲存空間動輒上G,本地化,移動化會有困難等。


簡單來說,數據量、計算量是很重要的問題,深一點的問題在於其行為及可行的邊界解釋不清楚,哪怕是訓練完成後,所以其穩定性難以保證

但問題的實質在於深度學習或者說神經網路就是一個模式匹配的過程,很多問題例如人臉識別可以用模式匹配完美的解決,但也有很多問題不是模式匹配,例如時間序列的趨勢提取及預測,在這種問題上深度學習很難派上用場


我覺得無法接近確定解(或者說不存在)的情況下效果會非常差,比如前幾天炒股的那個。

拋磚引玉,坐等大神解答。


其實最大的也是永久瓶頸是人類智慧本身,無論什麼模型都是人類智慧(或者集體智慧)的投影。


鄙人也是從事晶元研發的工程師,同樣有這樣的困惑,呼喚大神。


推薦閱讀:

搞架構和搞演算法,哪個更牛一些?
用「機器學習」做「股票預測」能做到什麼程度?
人工智慧是不是只是一場鬧劇?
目前各大互聯網公司中,哪些AI團隊值得加入?
如何量化評估推薦系統的推薦結果?

TAG:機器學習 | 深度學習DeepLearning |