【深度】機器學習進化史:從線性模型到神經網絡

2020-12-13 雷鋒網

Reza Zadeh是史丹福大學工程計算和數學研究所顧問教授,也是Databricks公司技術顧問,他主要專注於機器學習理論和應用,分布式計算,以及離散應用數學。近日,他接受了oreilly網站的採訪,嘗試談論了人工智慧的各方面。

說說你在斯坦福的工作吧

在史丹福大學,我設計並教授分布式算法和優化,此外我還教授一門離散數學和算法的課程。在離散數學課程裡,我是完全從理論角度來教算法的,這意味著我所教授的算法完全不依賴於任何程式語言或框架,我們會直接把許多理論和證明寫在白板上。

但是如果想要更實際些的話,那就得來我的分布式算法課了,我們會在Spark編程環境下工作,而我幾乎會花一半時間在Spark上面。在這個平臺上,我所教授的,設計分布式算法和機器學習的理論都可以執行,而且非常具體。

2006年我來到Google負責MapReduce編程模型,實際上之前Hadoop已經廣為人知,也非常流行了,但在Google,MapReduce已經十分成熟。當時我只有18歲,也非常看好這個項目。於是,我花了很多時間在MapReduce上構建、思考算法,甚至在離開Google之後的很長一段時間依然持續這麼做。後來有了Spark計算框架,它是開源的,大家都可以了解其核心,為其做貢獻。我感覺Spark的時代已經到來了,因為對絕大多數分布式計算來說,彈性分布式數據集是非常抽象的。

機器學習的進化

從你在Google工作,到現在Spark計算框架上工作,應該有機會看到機器學習的進化吧,因為它們和分布式計算的聯繫都非常緊密,你會如何描述這種進化呢?

從上世紀90年代開始,機器學習已經過了一些過渡時期。從1995年到2005年,很多人專注在自然語言,搜索,以及信息檢索領域。機器學習工具比如今我們使用的要更加簡單,他們包括邏輯回歸分析,SVMs(支持向量機),支持向量機內核,網頁排名等。利用這些技術,Google獲得了巨大成功,比如Google News就非常成功,還有Gmai垃圾郵件分類器,它利用易分布式算法進行排名和文本分類。到了上世紀90年代中期,這些技術已經變得十分成熟了。

大約在2005年左右,神經網絡又開始捲土重來。神經網絡其實算是上世紀80年代的技術,一些人甚至認為它起源於上世紀60年代,得益於計算機視覺的技術的最新進展,讓(卷積)神經網絡的使用顯得卓有成效。事實上,神經網絡已經開始在其他應用上「大展宏圖」,包括自然語言處理和機器翻譯等領域。

但是有一個問題:在所有提及的機器學習分布式模型中,神經網絡可能是最具挑戰性的。那些早期模型都已經訓練成功被分布。我們不需要太過麻煩,就能使用100臺機器,並訓練一個邏輯回歸或支持向量機,但是開發一個分布式神經網絡學習設置卻難的多。

那麼,猜猜看現在神經網絡這塊誰做的最成功?到目前為止,唯一的公司就是Google。他們是這一領域裡的先驅。現在就像是回到了2005年,當時Google發布了MapReduce,每個人都爭相建立同樣的基礎設施。Google實現了分布神經網絡,也得到了更多回報,如今,每個人都希望他們也能像Google一樣獲得成功,但是好事兒不會發生兩次。

為什麼一個支持向量機或邏輯回歸比神經網絡更容易實現分布?

首先,評估一個支持向量機要簡單得多。當你學習了一個支持向量機模型或邏輯回歸模型(或者任何一個線性模型)之後,實際評估就會非常快。比如說你構建一個垃圾郵件分類器,一個新電子郵件過來後,把它歸到垃圾郵件還是非垃圾郵件只需要花很短時間就能完成,因為它只是一個點積(線性代數術語)。

但是當涉及神經網絡,你的計算量將會大大增加,即便你已經學習了相關模型,但仍然要搞明白該模型的輸出。而且,這還不是最大的問題,通常一個支持向量機應對一百萬個參數還遊刃有餘,但是我所見過一個成功的最小神經網絡,涉及的參數就多達600萬個,而且這還是最小的。另一個問題是訓練算法並沒有從最優化理論中獲得太多好處。我們所使用的絕大多數線性模型基本上都有數學理論支持,並且可以確定何時完成訓練。這種模式可以確保你能發現最好的模型,但是神經網絡現有的最優化算法無法支持這樣的保證。在你訓練了一個神經網絡之後,其實無法判斷出它是否是最好的模型。一旦這樣,你就會不自覺的去想是否還會有更好的模型,因此就會不斷訓練下去。

當神經網絡變得越來越強大,你會不會看到他們越來越多地被歸入到過去曾是線性的工作方法類別之中呢?

是的,我是這樣認為的。事實上,這種狀況現在就正在發生。總有一些線性模型問題,僅能靠線性來辨別。為了讓非線性參與,你不得不增加或改變一些功能,因此就會涉及到大量工作。舉個例子,計算機視覺科學家花了十年時間開發、調試一種名為SIFT的功能,可以支持圖像分類和其他使用線性方法的視覺任務。但之後,神經網絡出現了,篩選功能變得不再必要,作為訓練的一部分,神經網絡的解決方法是讓這些功能自動化。

但是我認為,現在說神經網絡可以去到所有功能建設技術似乎還為時過早。而且,我也不認為會發生這種情況,線性模型和優秀的人為驅動功能引擎總會有它的一席之地。就像這次參加神經信息處理系統進展大會的研究人員,他們絕大多數已經開始評估自己應用程式的神經網絡。大家都在測試他們的應用程式是否能夠從神經網絡的非線性模式中獲益。

這絕不是說我們之前就沒有過非線性模式,實際上,我們有許多非線性模式。但問題是,神經網絡碰巧出現,而且異常強大,在一些應用程式上,它更奏效,因此才會值得嘗試。這也是很多人正在做的事情。目前為止,在語音識別,計算機視覺,以及機器翻譯上神經網絡的應用都非常成功。它還可以應用在許多難度更大的任務上,因此未來還是十分令人興奮的。

神經網絡的關鍵是什麼?

相對於傳統的線性和非線性方法,為什麼神經網絡會如此強大?

當你有一個線性模型,每一個功能要麼對你有幫助,要麼對你有傷害,這種假設是線性模型中固有的。因此線性模型要麼功能異常強大,用類1表示;要麼則毫無用處,用類2表示。所有的解決方案,要麼導致該功能獲得巨大的價值;要麼價值變得微不足道。你永遠不會有這麼一個狀態說,在這個區間,該功能就是代表類1;但是在另一個區間,它代表類2。

線性和非線性方法局限性很大。也就是說,如果你分析圖片,舉個例子,尋找狗狗的照片,它很可能會進入到一個特定的子集裡面,比如只顯示有一隻狗的照片,或是顯示某一像素和其他類型的圖片。在線性模式裡面,你無法確定複雜的關係集。相比於線性模型,非線性模型可能會顯得更強大一些,但是這種模式同樣難以訓練。我們會再一次進入到所謂最優化理論的問題之中,這也是我們在很長一段時間裡認為神經網絡還不是足夠好的原因之一,因為他們會「過擬合」,通俗的說,就是太過強大。我們無法做預測,也無法確保最優化方案。或許,這可能就是為什麼神經網絡從當下暫時消失的原因吧。

在神經網絡理論中,機器學習有很多分支和方法,你能總結一些關鍵方法嗎?

到目前為止,最成功的方法是監督學習方法,它使用了一個比較老的算法,稱為反向傳播,構建了一個擁有許多不同輸出的神經網絡。

讓我們看下一個神經網絡構建,這個網絡已經非常流行了,叫做卷積神經網絡。這個理念是機器學習研究人員構建了一個多層架構的模型,每一層都可以用不同的方法處理之前一層的連接。

在第一層,你有一個窗口,上面會給圖像分配權值,它也變成了該層的輸入。由於權值「卷積」,該層也被稱為卷積層,它會自我重疊。接著後面會有若干個不同類型的層,每層都有不同的屬性,絕大多數都是非線性的。

最後一層會有1萬個潛在神經元輸入,那些激活的神經輸出,每一個都對應了一個特殊的標籤,可以用來識別圖像。第一類可能是一隻貓,第二類可能是一輛車,以此推到所有一萬個類,這樣一張「圖像網」就出來了。如果第一個神經元(一隻貓)與1萬個神經元中絕大多數都匹配,那麼這張圖像就能被識別出來,是一張貓的圖像。

這種監督學習方法的缺點是,在訓練的時候,你必須要在圖像上應用標籤,這是一輛車,這是一個動物園等。

沒錯,那麼無監督學習方法呢?

無監督學習方法還不是那麼受歡迎,它涉及到「自編碼器」。這種神經網絡不會用來分類圖像,但是可以壓縮圖像。同我剛才提及的方法來讀取圖像,識別一個權值,並在一個卷積層內用像素填滿。其他若干層也這樣,包括相比於其它層小的多的中間層。這樣做的話,相關的神經元會變得很少,基本上,你讀取圖像時會進入到一個瓶頸,之後從另一邊走出來,並嘗試重新構建該圖像。

在無監督學習訓練下,不需要打標籤,因為你所做的就是把圖像放入到神經網絡的兩端,然後訓練網絡適應圖像,特別是訓練中間層。一旦你這麼做了,那麼就擁有了一個知道如何壓縮圖像的神經網絡。無監督學習方法可以給你提供能應用在其他分類器的功能,因此如果你有哪怕一點點標籤訓練數據,沒問題,它一樣可以為你提供大量圖像。你可以把這些圖像看做是無標籤訓練數據,並使用這些圖像構建一個「自編輯器」,然後從這個自編輯器中導出一些功能,這些功能適合使用一些訓練數據,以此找到對特殊模型敏感的自動編碼神經網絡中的神經元。

是什麼讓你投身Spark?你覺得它是領先的技術集合嗎?

之前我就認識Spark的創造者Matei Zaharia,我們都是滑鐵盧大學的校友。實際上,我們還是Google的同屆實習生,他當時負責開發者生產力工具,與大數據一點兒關係都沒有。Matei Zaharia在Google工作期間根本沒有接觸過MapReduce,那是我專注的領域,但最後由他負責收尾的確讓人覺得有趣。

之後Matei跳槽去了Facebook,在那裡他負責Hadoop,並獲得了成功。在那段時間裡,我不斷思考分布式機器學習,但什麼計算框架都沒有想出來,包括Hadoop在內,而此時Spark計算框架映入了我的眼帘,我感到非常興奮。

能跟我們談談Spark究竟是什麼嗎?它是如何運作的,為什麼對分布式機器學習來說,Spark非常有用?

Spark是一種集群計算環境,可以為你提供分布式矢量,這種矢量與我們在獨立機器上編程所使用的矢量非常相似。在常規矢量下,有很多事情是做不到的,舉個例子,僅通過目錄,你無法做到隨機訪問,但是如果有兩個矢量交集就能做到這一點,你可以併集,也可以分類,還可以做很多常規矢量無法做到的事情。

Spark讓機器學習變得簡單,其中一個原因是它可以儘可能多的在內存中保存數據的重要部分,而且無需寫入磁碟。在一個分布式環境下,獲取故障恢復的常規方法是進行磁碟寫入,在網絡中使用分布式文件系統對一個磁碟複製三次。

Spark之所以非常適合機器學習,是因為數據進入到內存之後,就可以保存其中。如果它不適合內存,也沒關係,有需要時它就會離開磁碟。但關鍵是,它能夠適應內存,對於任何一個需要處理多次數據的進程來說,比如機器學習,都非常棒。幾乎每個機器學習算法都需要處理海量數據,而且是十倍,百倍的數據。

你覺得Spark和MapReduce比較呢?是否有一處可以讓它們兩者能夠處理不同的工作負荷或職責?

我必須要明確表達一下,在很長一段時間裡,Hadoop都是作為一個生態系統在茁壯成長。我不認為Hadoop生態系統的MapReduce組件也會這樣。

如果要回答你的問題的話,我的答案是不,我不認為他們能夠處理不同的工作負荷或職責。老實說,我認為如果你啟動一項新工作,除非你已經有了需要維護的代碼群,否則使用MapReduce一點兒意義都沒有。如果現在還用MapReduce的話,似乎顯得有點二了,換而言之,如果你能寫C++代碼,寫集合代碼是毫無意義的。

Spark未來會朝何處發展?

RZ:目前來說,Spark本身是非常穩定的。目前,或許也是未來幾年可能會發生的最大變化,或者說最大提升吧,就是Spark的代碼庫。機器學習代碼庫,圖像處理代碼庫,SQL代碼庫,以及流媒體代碼庫,所有這些都在快速發展,至少在未來兩年內,它每一個變化都令人興奮。Spark所有的功能都是我想要的,而且很高興看到它執行起來也非常便捷。同時,對於社區驅動的貢獻我也感到由衷的高興,如今在網站上開發者社區對Spark進行支持,這樣對長尾用戶來說是非常有幫助的。

隨著時間的溝渠,我認為Spark會成為一個真正的分布式引擎,幫助我們大規模構建機器學習算法。

via radar

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 神經網絡與深度學習
    隱藏層使得感知機能夠發展為擬合萬物的神經網絡模型,而反向傳播算法則是整個神經網絡訓練的核心要義。要學習深度學習,恐怕不得不先溫習一下機器學習,搞清楚二者之間的關係。簡單來說,機器學習就是從歷史數據中探索和訓練出數據的普遍規律,將其歸納為相應的數學模型,並對未知的數據進行預測的過程。
  • 機器學習必知的8大神經網絡架構和原理
    什麼是神經網絡?神經網絡是一種通用機器學習模型,是一套特定的算法集,在機器學習領域掀起了一場變革,本身就是普通函數的逼近,可以應用到任何機器學習輸入到輸出的複雜映射問題。一般來說,神經網絡架構可分為3類:前饋神經網絡:是最常見的類型,第一層為輸入,最後一層為輸出。
  • 機器學習算法匯總:人工神經網絡、深度學習及其它
    算法類似性根據算法的功能和形式的類似性,我們可以把算法分類,比如說基於樹的算法,基於神經網絡的算法等等。當然,機器學習的範圍非常龐大,有些算法很難明確歸類到某一類。而對於有些分類來說,同一分類的算法可以針對不同類型的問題。這裡,我們儘量把常用的算法按照最容易理解的方式進行分類。
  • 基於神經進化的深度學習模型研究綜述
    摘要 深度學習研究發展至今已可以勝任各類識別、分類、生成任務,但是對於不同的任務,神經網絡的結構或參數不可能只是微小的變化,依然需要專家進行調整
  • 基於深度神經網絡構建風電機組性能模型的超參數選擇
    風電機組性能評估依賴於建立風電機組性能模型,即建立風電機組輸出功率與風電機組各關鍵參數( 如風速、槳距角、偏航角等) 之間的函數關係,這屬於典型的非線性回歸問題;在機器學習領域,深度神經網絡是解決該問題的經典手段,因此,利用其構建風電機組性能模型自然得到了行業內研究者的廣泛嘗試。
  • (圖解)類神經網絡的復興:深度學習簡史
    人工智慧「現代鍊金術」的惡名,一直到1980年代開始才又復興。此時科學家不再使用傳統的邏輯推理方法,取而代之的是結合機率學、統計學等大量統計理論,讓計算機能透過資料自行學會一套技能,並根據新給的數據、自行更正預測錯誤的地方、不斷地優化該項技能,稱為「機器學習」。機器學習方法有許多種不同的數學模型,包括隨機森林、類神經網絡、感知器…族繁不及備載。
  • CICC科普欄目|從感知機到深度神經網絡,帶你入坑深度學習
    除此之外,也希望這篇博客可以幫助到那些有意入坑的朋友。言歸正傳。在我正式介紹深度學習是什麼東西之前,我想先引入一個簡單的例子,藉以幫助我們理解為什麼需要深度神經網絡。同時,本文附有使用深度神經網絡模型求解異或(XOR)問題的代碼,發布在 GitHub 上。異或問題何為異或問題?
  • 深度學習背後的基礎-神經網絡揭秘
    最近, 深度學習三傑獲得了計算機界最重要的圖靈獎, 它們的貢獻都集中在對深度學習的根據神經網絡的理論突破。 今天我們看到的所有和人工智慧有關的偉大成就, 從阿法狗到自動駕駛, 從海量人臉識別到對話機器人, 都可以歸功於人工神經網絡的迅速崛起。那麼對於不了解神經網絡的同學如何入門? 神經網絡的技術為什麼偉大, 又是什麼讓它們這麼多年才姍姍走來?
  • 深度神經網絡中的對抗樣本與學習7篇文章
    上圖是一個犰狳!下面圖像更容易看清,是0到9之間某個數字的五幅不同圖像。事實上,攻擊不僅適用於DNN目標,而且還涉及到附加的機器學習模型(線性回歸、SVM、決策樹和最近鄰域)。為了防止這種擾動,必須通過網絡更好地泛化訓練數據集以外的樣本來平滑訓練過程中學到的模型。DNN對對抗樣本的「魯棒性」與給定樣本鄰域相一致地分類輸入相關。為了實現這種平滑,蒸餾防禦首先按照正常的方式訓練分類網絡,然後用從第一個模型學到的概率向量訓練另外一個完全相同架構的新模型。
  • 深度學習筆記4:深度神經網絡的正則化
    作者:魯偉 一個數據科學踐行者的學習日記。
  • 有監督學習:從過去到現在的模型流行度(深度翻譯好文)!
    在分析中包括以下13種監督方法:神經網絡,深度學習,SVM,隨機森林,決策樹,線性回歸,邏輯回歸,泊松回歸,嶺回歸,套索回歸,k近鄰,線性判別分析和對數線性模型。其中,對於套索回歸,搜索時考慮了搜索套索回歸和套索模型。
  • 【乾貨】最新深度學習課程,多倫多大學「神經網絡與機器學習導論(2018年Spring)(附課件下載)
    【導讀】多倫多大學計算機系助理教授Roger Grosse 開設的《神經網絡與機器學習導論》課程涵蓋了從機器學習基礎知識到深度學習、強化學習等高階內容
  • 多倫多大學「神經網絡與機器學習導論(2018年春季)
    《神經網絡與機器學習導論》課程涵蓋了從機器學習基礎知識到深度學習、強化學習等高階內容,是AI從業者最佳的學習上手材料之一。▌概述機器學習是一套強大的技術,它允許計算機從數據中學習,而不是讓人類專家手工編程行為。神經網絡是一類最初受大腦啟發的機器學習算法,但最近在實際應用中取得了很多成功。
  • 什麼是深度學習? - 45分鐘理解深度神經網絡和深度學習
    深度神經網絡:多隱層神經網絡將上述的神經網絡的隱層進一步推廣到多層,即可得到多隱層的神經網絡,即深度神經網絡(深度的意思就是多層)。其網絡結構如圖15所示。由於每相鄰的兩層的節點都是全部連接的,因此在機器學習領域,也叫做全連接神經網絡或多層感知機(Multi-Layer Perceptron, MLP)。圖15隻是顯示了
  • 深度學習與機器學習:了解差異
    -------機器學習和深度學習都可以發現數據模式,但是它們涉及截然不同的技術機器學習和深度學習都是人工智慧的形式。準確地說,深度學習是機器學習的一種特定形式。機器學習和深度學習都從訓練和測試模型開始,並經過優化找到一個權重使模型效果更好。
  • 【讓調參全部自動化】自動機器學習,神經網絡自主編程(代碼與訣竅)
    KDnuggets 的主編 Matthew Mayo 寫了一篇文章介紹了 AutoML 的概念,以及為什麼要做自動機器學習。本文後附 AI 軟體工程師 Thibault Neveu 發表在 Medium 的文章,介紹他如何訓練神經網絡自動編程。在過去幾年,自動機器學習(AutoML)成了一個研究的熱點。
  • 多倫多大學2021《機器學習》課程,講述深度學習理論中的神經網絡訓練動力學
    畢竟,深度學習優化是非凸的、高度非線性的、高維的,那麼我們為什麼能夠訓練這些網絡呢?在許多情況下,它們擁有的參數遠遠多於記憶數據所需的參數,那麼為什麼它們能夠很好地推廣呢?儘管這些主題已經佔據了機器學習研究領域的大部分注意力,但當涉及到更簡單的模型時,神經網絡領域的原則是先數據訓練再說。顯然,這招奏效了。
  • 深度神經網絡的灰色區域:可解釋性問題
    【編者按】在解決視覺、聽覺問題方面表現出色的深度學習系統中,分類器和特徵模塊都是自動學習的,神經網絡可解釋性問題就成了一個灰色區域,思考這個問題對神經網絡效率的保證是有必要的。在這篇博客文章中,機器學習PhD、軟體架構師Adnan Masood針對這個問題進行了多方面的反思。
  • 神經網絡和深度學習簡史(第一部分):從感知機到BP算法
    這一部分,我們會介紹1958年感知機神經網絡的誕生,70年代人工智慧寒冬以及1986年BP算法讓神經網絡再度流行起來。深度學習掀起海嘯如今,深度學習浪潮拍打計算機語言的海岸已有好幾年,但是,2015年似乎才是這場海嘯全力衝擊自然語言處理(NLP)會議的一年。——Dr. Christopher D.
  • 神經進化:一種不一樣的深度學習
    神經進化是人工智慧和機器學習領域的一個分支,它能夠改進了人工神經網絡,並且試圖通過進化算法去尋找最優神經網絡。具體而言,就像大自然通過突變、交叉或移除一些潛在的遺傳密碼來提高大腦的功能一樣,人工神經網絡通過進化算法能夠產生越來越好的拓撲、權重和超參數。簡單的說就是將進化的思想使用到神經網絡參數優化的更迭中。神經進化神經進化是一種機器學習技術,它使用基於群體的優化方法能夠不斷提高群體中每個神經網絡的質量,從而根據其要解決的問題生成越來越好的神經網絡。