search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

《超智能體》作者講述深層神經網路設計理念(附PPT+視頻) | 硬創公開課

人工智慧會在未來消滅很多工作,同時也會創造很多工作。它同機械、同計算機一樣,是對人類能力的一次擴展,任何人都應該可以像應用機械一樣應用人工智慧,絕不應該是大公司的專利。

而深度學習可以說是目前各項人工智慧技術的核心。因擔心工作會被人工智慧取代,越來越多的人想要入門深度學習。

然而如Ian Goodfellow所說,市面上很多教程都是大量的演算法羅列,並不專註於如何利用這些演算法來解決眼前的問題。這些教程很容易讓人們誤認為成為機器學習的專家就是知道所有演算法。

事實上深度學習仍在迅速發展,今天的技術在明天就有可能被淘汰。並且每天都有大量新網路結構被提出,無法學完所有技術的我們需要找出各類網路結構的共性,嘗試歸類的理解其背後的設計理念。

本期雷鋒網硬創公開課邀請到《超智能體》一書作者於建國,分享的內容就是理解為何「深層」比「淺層」網路要好,深度學習適用於什麼任務,並嘗試找出前饋神經網路、循環神經網路、卷及神經網路、殘差網路、預訓練、多任務學習、端到端學習、自動編碼器、遷移學習、distillation、dropout、regularization、batch-normalization等技術背後的共享,讓大家感受該如何設計符合自己任務的深層神經網路。以一種不一樣的思路切入深度學習。

內容介紹

本期公開課包含但不限於以下內容:

  • 理解什麼是學習

  • 深度學習為何高效

  • 神經網路的設計理念

  • 入門所需材料

嘉賓介紹

於建國,會津大學Human Interface實驗室博士在讀,碩士做的是利用深度學習將口型數據融於語音識別模型的訓練中,而識別時無需口型數據,從而提高識別率的研究。也因為喜歡上了研究而繼續了博士課程。希望將自己這幾年的思考和自學經驗分享給大家。可在知乎上搜索YJango找到分享的內容,或者在gitbook上查看其終身連載的關於如何機器學習,如何人腦學習的《超智能體》一書。

(本期公開課完整視頻,共82分鐘)

以下為雷鋒網對嘉賓分享內容實錄精編。關注雷鋒網旗下微信公眾號,回復「PPT」可獲取嘉賓完整PPT。

大家好,我是於建國,日本會津大學博士一年生,碩士的研究是基於深度學習結合口型的語音識別。很高興能和大家在這裡分享。其他的不多說,讓我們直接步入正題。

由於人工智慧的火熱,越來越多的人擔心自己的工作會被所取代,因而想要入門深度學習,卻發現它很「黑箱」,這次就是分享一些我個人心得,關於深層神經網路的設計理念。

智能:何謂學習

智能能夠做到的事情太多太多,實在是難以用一句話給出一個讓人信服的定義。

所以讓我們從另一個角度來切入:為什麼生命需要智能,智能的作用是什麼?

而這個答案卻是唯一的,那就是為了生存下去。

生存遊戲

所以現在假設宇宙還沒有產生生命,我們來想象一個生存遊戲。

這個生存遊戲和右上角的小遊戲差不多,也就是躲避危險從而生存下來。需要注意的是,你要清空你大腦當中的所有先驗知識。你並不知道這個遊戲怎麼玩,所有的規則都是隨機的,並不是說碰到綠柱子就會死。稍微抽象一下就可以得到左邊的這個模型。ABCD表示不同的環境,個體在接收到環境的刺激後會產生靠近或遠離的行為,結果就是死亡或者存活。這時,環境就是輸入x,個體是關聯f(可以叫它function,mapping,我在隨後都把它叫做關聯),行為是輸出y。

遊戲規則是:

  • 1. 假設環境B和C都是危險的,靠近就會死亡。也可能是A和D是危險的,這是隨機的。

  • 2. 同時個體的關聯f都是大自然隨機生成的。

如果你是大自然的造物主,你要怎麼在上述條件下,設計出可以一直自我延續下去的生命?

直接暴力的方式就是:不斷的隨機生成,總有一個個體會滿足條件。比如說這個映射就可以,用01表示B,10表示C,1代表遠離,0代表靠近,當出現B和C時,我們希望個體f會產生1這個數值。

但這時我們追加另一個規則,環境會變。就像這個小遊戲,如果規則變成沒碰到柱子就會死呢?

應該有人玩過「貓里奧」,你會用你以前玩馬里奧的方式去玩,就是各種死。所以當環境變成A和D是危險的時候,這個個體就會死亡。

所以,即便個體非常幸運的產生了能夠滿足生存的關聯f,也會在下一次環境改變之際化為無機物。如果還用隨機生成的方式,生命永遠只能在最初始的階段停留片刻,無法進入下一個階段。

因此生命想要延續,就需要一種能力,可以適應變化的能力。這也是霍金對於智能的描述:Intelligence is the ability to adapt to change.

於是,大自然利用大量的個體不斷繁殖,並且該繁殖過程並非完美複製,而是會產生變異,變異的個體就有機會適應變化后的環境而存活下來,無法適應環境的個體會被篩選掉。篩選下來的個體繼續大量繁殖,產生差異性,迎接下一次環境的篩選。篩選后的結果便是進化。進化出適合當前環境的關聯。用這種繁殖、變異、篩選的動態循環,就可以形成能相對穩定存在的生命。

遊戲的關鍵在於,關聯的更新速度>環境的變化速度。

所以自然界的很多生物大量繁殖這一行為並不浪費,它增大可供篩選的樣本數量,防止環境變化后,個體全部被篩選掉。

生命起源

這個是關於RNA是生命起源的視頻講解,我不做描述。感興趣的朋友可以下載我的ppt來自己觀看。

生存核心

這張圖粗略展示了幾個概念之間的關係,大量的智能關聯是依靠DNA來存儲的,而DNA的複製會產生變異,形成差異性,差異性又反映於個體,變異的個體會被環境篩選,對種群進行改造,進而對智能關聯進行篩選。

對以上的內容進行梳理,就會得到下面的幾個總結。

1. 進化的對象不是個體,也不是基因,而是智能關聯。個體的生死對種群只是起到了一次更新作用。而基因相當於硬碟,存儲在上面的智能關聯才是核心。進化的過程就是關聯被不斷篩選的過程。篩選出符合當前環境的關聯。

2. 尋找關聯f的過程也就是學習。自然選擇的動態過程就是一種以種群為單位的學習方式。

3. 智能是適應變化的能力,智能的核心部分有:

  • 學習,關聯的尋找,在低等生命中,對應的是自然選擇。

  • 延續,關聯的存儲,將學習到的關聯延續下去。別的星球可能產生過生命,但是卻沒有既能在該星球穩定存在又可以延續和自我複製的媒介。所以影片《普羅米修斯》中將DNA稱為外星人留在地球上的火種。

  • 最後是決策,關聯的應用,應用所學到的關聯產生不同的行為來躲避危險。

DNA上存儲的關聯就好比是工具的藍圖,而各式各樣的蛋白質就是根據藍圖造出的工具。藍圖是由自然選擇來繪製的。

你會發現這和你所認識的智能不一樣,似乎過於簡單。因為剛才的描述僅停留在蛋白質層面上的低等智能的階段。靠這種方式存活的生命是病毒,僅有保護性蛋白質外殼和DNA或者RNA,可以進行自我複製。但是單個蛋白質能夠完成的任務很有限。為了增強適應變化的能力,大量蛋白質組合在一起,并行的工作,就到達了細胞層面的智能,同理大量細胞會形成組織,再到器官,系統,個體,團體,國家,越往上其能夠完成的任務就越複雜。

我想用下面這段視頻讓大家感受,近幾年所推崇的互聯網思維其實始終都存在於你我的體內。只是科技讓你我的連接速度提升后才得以凸顯。我們自身就好比一個工廠,內部有大量的蛋白質在并行的完成各項生理功能。而處在互聯網時代的我們,和在體內的蛋白質本質上沒有什麼區別。你並不是單個生命。

自然界無法瞬間產生特別複雜的功能,高等智能都是由低等智能迭代生成的。雖然大量的生物,用低等智能就可以很好的生存,但是我們依然想要弄清高級智能的原理將其服務於我們自身,因為我們的環境更為複雜。

高等智能最具代表性的就是可以思考。但是思考的原理實在難以解讀。

還是用老方法,轉而問為什麼會進化出意識允許我們思考,它能夠解決什麼問題?

移動問題

因為環境的變化是隨機的,所以進化並沒有方向,但是卻有增加差異性的趨勢。還記得生存遊戲的關鍵嗎?就是關聯的更新速度要儘可能大於環境的變化速度。而增加差異性就是增加了更新的幅度。

通過自我複製的方式,能夠產生的差異性還是較弱。所以自然界慢慢的開始形成了有性繁殖,兩個不同的個體進行交配,增加子代的差異性。

但是有性繁殖帶來了一個問題,如果生命不可以移動,那麼個體只能與周圍的其他個體進行繁殖,這一區域就始終都是那幾種智能關聯,有性繁殖的差異性能力被限制。

所以為了洗牌,大範圍移動成為了必然需求。即便是植物這樣不可移動的生物,也會利用果實讓動物幫助他們傳播種子。

可大範圍移動也帶來了另一個問題,環境會隨著移動而變化,個體在上一環境中通過自然學習所學習到的關聯,在下一個環境並不適用。比如你將熱帶植物放在沙漠中,環境的不同會殺死它。

預測模型

這時需要新的學習方式,如果還用自然選擇的方式顯然不可行。

因為增加了移動,感官等能力,個體的生長周期變長。設想一下,花了好幾個月生下來的小動物,錯走一步掉坑裡摔死了。那麼幾個回合,這個物種就滅絕了。他們承擔不起自然選擇這種試錯學習方式所帶來的代價。

於是對於大範圍可移動生物而言,他們需要原有智能的基礎上增加了另一項能力:預測。

關聯f不再是簡單的應激反應,不再是從環境到行為的關聯。而是從過去事件到未來事件的關聯。生物會利用意識在大腦中模擬自己與環境的關係,通過預測下一步,甚至下幾步會發生什麼,從而進行決策。這就和下棋一樣。

神經元

神經元細胞內部大量的蛋白質可以控制電離子的進出,進而有了控制電的能力。它們用不同的頻率來表示不同的狀態,大腦中的神經網路就有了模擬環境的狀態與變化的能力。

可以允許生命以個體為單位學習任意兩個空間的關聯。不再是自然選擇這種以種群為單位的學習方式。

視覺感知

而決策需要依據,就需要生命有感知能力,感知周圍的信息。我們以深度學習擅長的畫面識別為例,我們來看看它到底在做什麼,同時也來進一步理解「建立兩個空間的關聯」這一概念。

這裡列出來了四個生物的視覺和人類的視覺的差異。而這就引出了一點知識,人眼看到的並非世界的原貌,而是適合自己生存的一種感知方式。

因為蛇的獵物一般是夜間行動,所以它就進化出了一種可以在夜間也能很好觀察的感知系統。感熱。

任何視覺系統都是將反光與「腦中」所看到的概念進行關聯。相同的反光,經過不同的視覺系統會得到不同的感知。

所以畫面識別實際上並不是識別這個東西本身是什麼,而是學找人類的視覺關聯方式,並再次應用。如果我們不是人類,而是蛇類,那麼畫面識別所尋找的f就和現在的不一樣。

當x代表的是畫面,而y代表的是畫面在大腦中的概念時,神經網路所完成的就是畫面識別。當x代表說過的話,而y代表將要說的話,那麼神經網路所完成的就是語言模型,當x代表英語,而y代表中文,神經網路所完成的就是機器翻譯。

神經網路的就是從很多輸入到輸出的例子中,尋找解釋這兩個空間的關聯。就像y=ax+b這個線性方程,給你兩個例子,讓你確定a和b一樣。確定后就可以在以後的活動中利用所建立的關聯,通過輸入特定的x得到我們想要的y。但自然界的關聯可不像線性方程那麼簡單。

意識的作用

而代表著高等智能的意識允許我們在腦中預先模擬接下來會發生什麼?從而決定下一步的行動。

一個人的一生就是在不斷建立自己所處環境中各式各樣的預測模型,形成一個世界模型。你可以叫它世界觀。

茶杯墜落會發生什麼,如果有槍聲會怎樣。人站在高處,會預測自己墜落的後果,所以害怕。

隨著環境的變化,所建立的預測模型需要跟著更新。比如我們現在生存的環境就和古人不同,有投資項目,未來幾個月的股票、房價、匯率的變化等。

所以你就可以看見,我們作為一個生命體,始終都在適應著這個時刻變化的世界。

智能的內容是關聯,核心在於學習。但卻不僅限於此,它還有圍繞關聯和學習的其他能力。

智能除了建立關聯外還有何時搜集數據,因為我們是從歷史經驗中學習。

還有何時更新已建立的模型,何時使用哪個模型。這些都屬於智能。

比如說,人腦的預測實際上是雙向的,會時時刻刻預測即將發生的事情,並將實際發生的事情與自己的預測進行比較。通常這一過程不會得到你的意識的注意。只有那些與自己預測不符合的事件才會得到注意。例如你不會注意你每天都走的樓梯,但是當某個階梯突然高出3厘米時,你卻很容易察覺。這種與自己所建立的模型衝突的事件會更容易被記住並且作為訓練數據搜集起來,用於以後的學習,為了讓你更好的預測,更好的生存。所以思考的目的就是在於預測。

而人的一生始終都需要學習,因為世界不斷變化。並不存在小孩子比成人學習能力強這麼一說。之所以造成這種現象的原因是人們依賴自己的世界模型。孩子並沒有構造出完整世界模型,所以DNA中進化出的本性讓我們小時候充滿好奇心,會什麼都好奇,什麼都學習。而成人已經建立的較為完善的世界模型,需要有一種保護機制,防止被人忽悠。如果你還是像小孩子一樣,什麼都學習,什麼都更新,那麼你就很容易被洗腦。

但成人也會更新已建立的模型。比如說服一個成人,較好的做法是描述一個事件,這時他會不由自主的預測結果。但當你告訴他,他的預測是錯誤的時候,他就得到了「原來自己已有的模型並不可靠的信號」,關閉抵制學習的保護機制來更新已有模型。

智能始終都是并行執行的,唯獨意識不可以同一時間出現在兩個地方,原因之一在於意識必須要在某個時刻決定應用哪個關聯。我們的四肢有各種各樣的關聯,有騎車的,有跑步的,意識會起到調控作用。

我們現在的人工智慧還沒有達到意識的層面,僅僅是建立兩個空間的關聯,所以畫面識別,語音識別都可以完成的很好。但我們會在這個基礎上逐步的邁向意識。

預備知識

人工智慧

智能的三個核心部分,學習,存儲,應用,在自然界中有自然界的實現方式。

而人工智慧就是想要將這種能力在機器上實現。比如我們不靠蛋白質,而靠機器來應用關聯;不靠DNA,而靠電腦來存儲已經學到的關聯;不靠自然選擇,而靠機器學習演算法來建立關聯。大家的目的都是為了做出決策,更好的生存。

那麼實現這一目標需要哪些知識?

世界是不斷變化的,會從一個狀態變化到另一種狀態。這裡牽扯到兩個概念:狀態與變化。

那麼如何準確的描述狀態和變化?

進化出能感知三維空間的我們習慣在三維空間下描述物體。然而除了長寬高,世界上還有很多決定事物狀態的因素。如決定股票價錢的因素,決定天氣的因素就不只是三個。

甚至我們生存的世界可能並非三維,僅僅是因為三維的空間感知已經足夠讓我們可以很好的生存。我們並沒有進化出更高維度的感知能力。

但這些高維度的狀態與變化又該如何合理的描述?

線性代數就是用來描述任意維度空間下狀態和變化的學科,而線性代數中的矩陣是存儲狀態和變化信息的媒介。

通過線性代數,我們知道了該如何描述事物的狀態及其變化。可遺憾的是,對一個微小的生物而言,很多時候信息是缺失的,我們沒有辦法百分之百確定事物在變化後會到達哪種狀態。甚至世界的底層都是建立在純隨機下的。因此我們需要概率來在該種情況下幫助我們,預測未來狀態從而做出合理的決策。

同時既然我們想要在計算機上實現智能,就需要懂得如何將自己的想法在計算機上實現。但你不需要什麼都懂,你特別需要明白的是如何在計算機上控制存儲著狀態與變化的矩陣。

深層:為何高效

學習的難點

知道了什麼是學習后,我們再來看看學習到底難在哪裡。

這一部分的理解決定了你對神經網路的設計理念。學習是需要從歷史經驗中訓練出一個關聯f,希望可以用這個關聯f解決新的問題。就拿聯考來說,我們通過做歷年的真題來訓練自己的解題方法f。訓練的方式是不斷的做題,並且對照正確答案。等到聯考,當看到新題目x時,希望可以利用自己所訓練的關聯f,來得到正確答案y。我們真正關心的並不是已經做過的歷年真題,而是聯考。

學習的難點在於:需要在未見過的任務上表現良好。

極端情況

我們考慮一個極端的情況。假如說,聯考只有4道判斷題,那麼只需要記住4道題的對錯,聯考就可以拿滿分了。可是實際的情況是,聯考所能出的題是無限的。而我們可以訓練的歷年真題卻是有限的。又比如要識別貓的圖片,貓會有各種各樣的形態、表情、顏色、大小,各式各樣的變體。而我們無法窮舉所有的貓,該如何從有限的圖片樣本中訓練出能較好判斷一張圖片是否是貓的關聯f。

學習就是需要從有限的例子中找到合理的關聯f。一個方向也就是訓練更多的數據,看到更多的情況。比如有的同學就用題海戰術。這就是這些年大數據對人工智慧所起到的作用。

然而單靠大數據是不足夠的。另一個方向的例子就是那些只做一兩道題就可以抓住問題核心的學霸們,而這個實際上才是深度學習在自然界的任務中超越其他機器學習演算法的關鍵。也就是加入先驗知識,調整假設孔空間。

當然學習是數據越多越好,但為了了解為什麼光靠大數據不夠,我們需要明白三個問題。

第一:維度詛咒。

上面提到學習的第一個方向就是見到更多的例子。可是當維度越高,其情況就越多,就越無法見到所有的情況。

只考慮離散的簡單任務,1維的時候有10種情況,2維的時候100種,3維的時候有1000種。維度越高,我們越無法見到所有的情況。現在一個普通的任務就有上百維度,並且是連續的數據。

那麼那些沒見過的數據該如何預測?傳統的方式依賴於一個假設,那就是數據是平滑的,一個數值和它左右的數值差不太多。所以當遇到沒見過的數據時,就取左右兩個遇見過的數據的平均值,但是在高維情況下,這種做法非常不可靠,因為它不符合這個假設,數據並不平滑,而是有激烈的凹凸。

那麼想要預測的可靠就需要更多的數據,並且是不一樣的樣本數據,這在現實中即便是大數據也難以實現。玩過爐石傳說的朋友可以想想如果純粹靠買卡牌包,想要將所有卡片都搜集齊全需要投入多少資金?

第二:關聯f的尋找。

我們是靠歷史數據來訓練關聯f,但是能夠解釋歷史數據的關聯f並非唯一。比如我想要兩個數字相加等於1,我可以讓其中一個數字為1,另一個數字為0;也可以讓其中一個數字為-299,另一個數字為300。都能完成任務。這就會造成,我們尋找的關聯f或許可以完美的解釋訓練數據。但是卻無法保證在新的預測中依然完美預測。

比如這兩張圖,左邊學習到的關聯f可以完美的預測訓練集。但是實際應用在測試集上,紅色的部分卻預測錯了。我們實際是想要一個非常規整的螺旋形狀。

又比如聯考,能夠解題的方法有很多種。有的非常巧妙,但是這些巧妙的解題方式可能只適用於個別題目。其他題目就不再適用。學生可能找到了一個可以解除所有他做過的題的解題方式,但卻無法保證該解題方式在聯考時同樣有效。

第三:無免費午餐。

這同時引出了無免費午餐定理。既然關聯f是無限的,那麼尋找關聯f好比是大海撈針。不同的機器學習演算法只是更擅長在某個海域打撈而已。如果重點打撈某個區域,那麼其他的區域就會被忽略。

所以如果想要打撈的關聯f可以存在於大海的任何地方,那麼深度學習並不會比其他的機器學習演算法更優秀。這種情況下,任何兩個機器學習演算法都是等價的。

這是不是意味著深度學習並不優秀呢?並非如此。因為自然界中的很多任務,其關聯f並非像我之前可以出現在大海當中的任何位置,而是會集中在特定海域,那些符合自然物理現象的特定海域。而深度學習就是擅長打撈該海域的機器學習演算法。

深度學習就是我先前所說的學習的第二個方向,加入先驗知識,調整假設空間。

那如何理解加入先驗知識?比如說你讓你的朋友猜你腦中所想的一個事物,這個難度是相當大的。因為你可以想任何事物。而你的朋友通常會要求你,給他一個範圍。比如食物,也可以進一步把範圍縮小到水果。那麼他就不需要在所有的事物當中亂猜,會更容易猜中。

在二戰時德軍的Enigma(依尼格瑪)密碼機,可以生成成千上萬密碼,來傳輸作戰信息。英軍僱用包括人工智慧之父圖靈在內的數學家來直接破譯它的加密原理。並不是假設這些數據是平滑的。機器學習也應該使用相同的思路,直接去思考數據是如何生成的。而我們所面臨的很多任務,是由自然界的密碼生成器所生成的。當時圖靈等人是靠任何原文和密文之間不會相同字母這一特點來破解密碼。

那麼自然界的數據又有什麼特點呢?

分散式表達

這就引入了第一個自然界的先驗知識:并行組合。也就是深度學習中分散式表達distributed representation的思想。假設我們有8個不同的蘋果,用一般的學習方式,我們需要看到8種不同情況才可以完美的學習。但是如果告訴你這些不同的蘋果是由顏色、大小、形狀,這三個因素組合形成呢。假如每個因素有兩種情況,那麼我們只需要學習好這六種情況即可。不需要見到8種變體。你會發現,加入了變體是由不同的因素組合形成的這一個先驗知識后,我們降低了學習所需要的數據量。而橢圓其實也有變體,什麼樣的形狀是橢圓?我們可以依照同樣的思路繼續分解下去,進一步降低訓練所需要的數據量。

神經網路

拿人臉識別為例,各種各樣的人臉是由五官組合而成的,而各種各樣的五官,又是由不同的形狀組合而成,各種各樣的形狀又是由像素點所組合而成。我們可以這樣拆分下去來降低訓練數據所需要的樣本數量。

但是這樣的拆分方式是有前提的。我們知道這個世界的事物是通過組合形成的,一個碳原子+兩個氧原子形成二氧化碳,三個氧原子形成臭氧。同時又不是線性組合,所以我們來看神經網路最基本的變化公式,每一層都是將x內部的因素進行組合,再加入非線性變換得出一個y,仿照著自然界數據的生成規律。而訓練神經網路就是給大量的x與對應的y,學習其中的W和b。就像線性方程y=ax+b,給你兩個例子,讓你求解a和b一樣。在第一部分中我們也提到了人體也是由這種組合方式形成的,所以神經網路非常適合去做畫面識別,語音識別。

如果在一個完全不同的物理規律的世界中,事物和我們的人體可能就不是以這種組合的方式形成,那麼以這種拆分方式所學習到的關聯f就無法很好的完成生成數據的工作。所得到的預測也不會可靠。

但是到目前為止,所講的僅僅還是淺層神經網路為什麼優秀的原因。具有一個隱藏層的神經網路只要有足夠的隱藏節點,就可以擬合任意的訓練數據。

但是,為什麼深層學習比淺層學習要優秀。這其實在橢圓的位置就已經可以感受到了,就是將拆分后的因素再次拆分,可以進一步降低訓練所需要的數據量。

然而,這裡實際上已經增加了第二條先驗知識:那就是迭代變換。

我們知道原子會形成分子,而事物是在原子所形成的分子的基礎上,進一步迭代形成的,並非再從原子開始重新生成。飛機是由原子到分子再到各式各樣的零件組合形成的。坦克同樣也利用到了相同的分子層。雖然作為圖片,坦克和飛機是不同的樣本,但是他們都共享著相同的分子層。這意味著當你用深層神經網路時,訓練飛機樣本會間接的對坦克進行了訓練,降低了訓練所需要的數據量。

以右邊的兩個圖為例,每個圖的左邊是神經網路連接圖,而右邊是不同變體之間的關係圖。鏈接在一起的圓圈表示一個節點可以取的不同數值,分開的圓圈就是不同的節點。

如果像上半部分那樣用一個隱藏層的神經網路來學習,那麼每個變體只被拆成了服務於它自己的獨立因素,並不會對其他的樣本起到作用。

但如果用深層網路,像下邊這個圖,就容易在a b c這三個因素的部分形成共享。那麼在訓練(3,0)這個樣本的時候,就會對所有共享a b c的其他樣本起到了間接的訓練作用。

再拿編程做比較,我們不會去直接一步到位的編程,而是會分成很多個小模塊。這些小模塊可以在不同的需求下都適用,也就是共享。這樣,就不需要每遇到一個細微變化就重新編寫一次。

目前描述的網路叫做深層前饋神經網路,feedforward neural network。變換隻會一層接著一層進行,不同層之間不會有跳躍,並且組合也是在同一層內的因素間進行的。

想象如果一個網路中的某個節點可以和其他的任何節點連接,那麼這樣的網路就沒有任何的側重。好比在你找人時被告知,他無處不在和他在哪都不在。這就相當於沒有加入先驗知識,沒有縮小尋找關聯f的海域。

所以前饋神經網路的這種連接方式,很好的縮小了訓練所用的數據量。因為這種組合方式比較符合自然界的物理形成規律。

所以深層學習並不會在所有任務當中都強大,但是在很多自然形成的數據當中超越其他機器學習演算法。

深層神經網路

這時再回過頭來思考生命與環境的關係,環境會變得越來越複雜,但是複雜是在原有因素的基礎上增加依照物理規律形成的各種變體。比如原本只有n個因素,但是每個因素可以有兩種不同的狀態,那麼可以形成的變體就會有2的n次方。

而生物學習就是將這些變體再次拆分成因素,並且從中學到一個關聯方式,而這個關聯方式就是知識。

我們目前所講到的深層前饋神經網路引入了自然界中兩個固有的先驗知識:

  • 并行:新狀態是由若干舊狀態并行組合形成。

  • 迭代:新狀態可由已形成的狀態再次迭代形成。

前饋神經網路可以適用於幾乎所有的任務,但它非常一般性,所提供的先驗知識的針對性很低。

先驗知識不夠針對,那麼訓練所需要的數據量就會變大,並且過深之後會將那些噪音的形成規則也學習到模型當中,而這些規律並不是我們想要的。

而神經網路的其他變體,比如循環神經網路,卷積神經網路就提供了更多十分具有針對性的先驗知識,可以縮小搜索的海域面積,排除掉那些噪音規律所帶來的額外干擾。

不同的神經網路變體,就在於你向其中加入了不同的先驗知識。

那我希望用這個影片來讓大家感受,自然界中,并行組合和迭代變換這兩個先驗知識的。

應用:設計理念

鋪墊了這麼多,終於到了核心的部分。知道了深度學習為什麼高效后,對於如何設計網路也有了相應的指導。

基本理念

首先要明確兩點:

  • 深度學習並非萬能,使用深度學習的前提是你的數據可以使用這樣的先驗知識。不然就像是用解英語題的巧妙方式去解數學題。

  • 其次,深度學習沒有固定形式,不要認為循環神經網路就是循環神經網路,卷積神經網路就是卷積神經網路。如果你以這樣的方式去學習神經網路,你這輩子都學習不完。因為網路的鏈接方式是無限的。你需要抓住至少兩個核心。拆分因素和因素共享。

每層內的節點表示的是因素,這些因素共同描述事物的一種狀態。這些狀態可以逐層發展,發展后的狀態又可以進行拆分和合併,來進行下一個狀態的轉變。

你可以把一個方框視為神經網路,並且神經網路可以繼續與其他神經網路形成更深的神經網路。比如卷積層處理完的輸出可以接著再進行循環層的處理。

如右圖,第二個階段的因素就是由三個神經網路提供的,不同神經網路的因素之間可以進行相加,也可以合併成更高維度的狀態。

設計神經網路更像是玩樂高積木,但是玩的規則在於如何拆分因素,如何使不同的樣本之間形成因素共享。所以在看到很多新的網路結構時,請務必考慮,他們的結構是如何考慮因素拆分和因素共享的。

雖然大家習慣叫做循環神經網路,卷積神經網路,但請以「層」去理解它們。層是指從一個狀態到另一個狀態的變化。那個變化才是層。

神經網路變體

下面就看看循環層和卷積層是如何利用因素共享這個先驗知識來降低訓練所需數據量和排除噪音規律的干擾的。

另外記住,卷積層並不是只針對畫面識別,循環層也不是只針對時序信號。關鍵在於時間共享和空間共享。

如果用前饋層處理時序信號,需要將前後所發生事物狀態並成一個更大的向量。這樣每一個維度的權重都需要學習,即使很多維度都是無關緊要的。並且這樣的方式只能處理固定長度的時序信號,長度不足時需要補零。

但如果告訴你,不同的時刻的狀態都是由相同的規則進行處理的,那麼一個時序序列中,每個時刻的狀態都可以為權重的學習提供幫助。比如在前饋層中,三個時刻只能對Wxh進行一次學習;但是在循環層中,三個時刻能對Wxh和Whh進行三次學習。

不同時刻的狀態都是由相同規則進行處理的,就是循環層加入的一條可以降低訓練數據量同時排除噪音規律干擾的先驗知識。應用這種處理方式的原因是因為世界上很多的數據都符合時間共享的規律。比如你在演奏音樂,每個樂器的物理特性在時間維度上是不變的,並不會這個時刻是笛子的物理特性,而下一時刻變成了二胡的物理特性。

同時需要注意的是,循環層中有兩個因素流,一個是從輸入流得到的。另一個信息流是從上一個時刻的狀態得到的,都是時間共享。所以你可以看到循環層有兩個權重Whh和Wxh。

用前饋層做時序預測,相當於徒手捏陶瓷,耗時耗力不說,又無法保證各個角度都相同。而用循環層做時序預測,相當於使用轉盤,擺出一個手型后,每個角度都是以這種手型去捏制的。

人們常說循環神經網路,比前饋神經網路要好的原因在於可以考慮更長的歷史信息。但我曾經做過實驗,使用相同長度的歷史信息,將二者進行比較后。循環神經網路依然比前饋網路效果要好。一定程度上驗證了共享的作用。

另外雙向循環神經網路是兩個循環層的堆疊,而堆疊後有兩種合併方法,一種是相加,一種是合成並更長的向量。我做過的所有實驗中,相加的效果都比合併要好。可能也是因為第二個方向起到了限制作用。只有那些既可以在正向產生此種規律,又可以在反向產生另一種規律的關聯f才會被我們採用。

上述提到的是時間共享,還有空間共享的卷積層。前饋層同樣可以進行畫面識別,但如果用前饋層,那麼在這個例子中,就需要學習81個權重,而如果知道這些權重在空間下是共享的,那麼可能只需要學習9個權重。

我們眼睛在觀察時並非將整個圖片全部收入眼帘。而是一個區域,一個區域掃描。每個區域掃描的規則是共享的,你的眼球不會在掃描這個區域時是人眼,而在掃描下個區域時卻成了貓的眼睛。

調整假設空間

設計神經網路實質上就是在對假設空間進行調整。也就是選擇在哪些片海域尋找你的關聯f。

這裡我總結了四條設計原則。

  • 增加共享,降低確定關聯f所需要的數據量。如果你知道它大致在大海的哪個範圍后,就可以使用更少的漁網,更快的打撈上來。

  • 增加懲罰,我們可能會事先知道關聯f不滿足哪些特點。那麼一旦這種特點的關聯f在訓練中被找到時,我們就對結果進行懲罰,起到篩選作用。用打魚做比喻的話,那些不符合條件的小魚會被大孔漁網篩選掉。

  • 優化起點,我們優先從哪片海域先開始尋找,找不到再找其它的海域。

  • 降低變體數,變體數量越多,我們就需要見到越多的數據。所以我們可以預處理數據,將變體數量在學習之前就降低下去。比如將數據減去平均值,除以均差。

設計自己的神經網路

神經網路其實並不黑箱,黑箱的是你要學習的任務。就像聯考的難點在於你不知道等待你的是什麼題目。

神經網路也像是料理,並不是一種方式適用於所有的食材,你要根據你的食材特點選擇合理的烹飪方式。

接下來我們再來看看應用這些設計原則的各項技術。

遷移學習

遷移學習是利用知識共享這一特點,將一個任務中已經學到的關聯應用到其他任務當中去。比如在畫面識別中,我們用大量的反光x到概念y來學習我們的視覺系統。

畫面識別的前幾層其實就可以想象成是人類的眼球是如何將反光關聯到視網膜上的,而後幾層可以想象成視網膜上的成像又是如何逐層變成抽象的圖形概念的。

那麼將已經訓練好的,用於識別動物的神經網路的前幾層這個f1拿出來,在識別植物的神經網路中,額外加兩層再做輕微訓練,同樣適用,畢竟大家都是人眼,這部分的f1很大程度上是共享的。

多任務學習

多任務學習其實和遷移學習使用的是相同的先驗知識。只是利用方式有些許不同。遷移學習是將已學到的知識用在另一個共享著相同知識的其他任務上。

而多任務學習,是在訓練的時候用共享著相同底層知識的其他任務的數據來幫助一起訓練。可以起到擴充訓練數據量的作用。

同時尋找到的關聯f更加優秀。因為三個不同的任務對底層的知識同時進行了約束。只有同時滿足三個不同任務的關聯f才會被採用,這就排除掉那些只符合單個任務的關聯f。

跨層組合

這是另一條先驗知識,我們知道前饋神經網路是不允許跨層組合的。

但現實中是否有跨層組合的現象? 比如說我們在判斷一個人的時候,很多時候我們並不是觀察它的全部,或者給你的圖片本身就是殘缺的。這時我們會靠單個五官,外加這個人的著裝,再加他的身形來綜合判斷這個人。這樣,即便圖片本身是殘缺的也可以很好的判斷它是什麼。這和前饋神經網路的先驗知識不同,它允許不同層級之間的因素進行組合。

殘差網路就是擁有這種特點的神經網路。大家喜歡用機器學習的方式去解釋為什麼殘差網路更優秀。

這裡我只是提供了一個以先驗知識的角度去理解的方式。

需要注意的是每一層並不會像我這裡所展示的那樣,會形成明確的五官層,只是有這樣的組合趨勢,實際無法保證神經網路到底學到了什麼內容。

蒸餾模型

其本質仍然屬於遷移學習,但是將知識以不同的方式遷移。一般的遷移學習是將學到的權重直接用在新的模型當中,遷移的是權重。而蒸餾模型所遷移的是標籤。

比如這張圖中,有兩個模型,完成的任務是相同的,但是叫做老師的這個模型擁有更好的特徵(輸入),而叫做學生的這個模型由於實際應用的約束,無法使用這樣的特徵。

蒸餾模型的做法是先訓練老師模型,用老師模型的預測值作為一種額外的標籤,在訓練學生模型的時候和學生模型自己的標籤一同使用,幫助學生模型尋找到更好的關聯f。而這種幫助過程只發生在訓練階段,實際的使用中,只用學生模型。這就好比一個學生在做題的時候,他既有參考答案,又有一個家教的指導。雖然家教無法代替學生去考試。因為有家教的輔導,這個學生會比沒有家教輔導的學生更容易學習。雖然作為叛逆學生的我不喜歡承認這一點。

因為不需要使用老師模型,這種技術也用於壓縮深層神經網路的大小。同時也應用於那些只有訓練時才可以獲得,而實際應用時無法獲得的額外信息。

我的碩士研究,結合口型的語音識別就是這種特點的任務。我不能在識別的時候在人的嘴裡加一個用於測量口型移動的機器。口型數據只可以在訓練的時候作為額外信息幫助我訓練出更好的模型。

自動編碼器

自動編碼器是利用并行與迭代的這兩個先驗知識,來操控變體的一種技術。

當它用作生成模型時,它就可以仿造自然界的變體生成方式來生成出各種不同的變體。比如我輸入7這個數字,他就可以利用自然界的變體生成方式來生成各種7的變體。

當它用作特徵工程時,實際上就是disentangle the factors of variation不斷的拆分變體的因素,達到減少變體數量的作用,所以會逐層減少節點,再以對稱的方式將其變換到原來的輸入,最後取變體數量最少的中間層作為特徵表達。降低變體數量后,就可以降低學習所需要的數據量。

Batch normalization

一般我們會在輸入和輸出進行預處理,減去均值和標準差,降低變體數量。這個思路一樣可以在隱藏層實施。因為輸入和輸出是事物的狀態,有變體,隱藏層同樣是發展的中間狀態,也有變體。

端到端

這張圖描述了機器學習歷史。我們逐漸的減少人類知識在學習中的作用,而是讓機器自己去學習知識。

假設我們的輸入x是細胞層面,而輸出的器官層面。如果使用傳統的機器學習方式,我們會儘可能的,人工的去學習如何將細胞層面的輸入x轉換到一個線性可分的空間下去,然後再讓機器來學習知識。但這需要一個專家用一生去學習細胞層是如何到達組織層的,並且還難以照顧到潛在細節。

而端到端的思想就是直接消除人工預處理和後續處理,儘可能讓模型利用自然界的先驗知識從輸入自己形成到達輸出的規則,增加模型的整體契合度。

抑制過擬合

過擬合是指你在學習時,過分擬合訓練集的數據了。

拿右圖舉例,中間的是擬合的剛剛好。而左邊的情況是欠擬合,而右邊的情況是過分擬合訓練數據了。

神經網路抑制過擬合有以下常用的幾點,而這幾點在人們日常學習中同樣適用。拿歷年真題為訓練集,聯考為測試集來說。

dropout(遺忘),訓練神經網路是若干個樣本,逐步送到神經網路中訓練。這些樣本當中不可能只包含一種規律,那些小細節也能形成規律。如果連續送入網路的幾個樣本都具有相同的細節規律,那麼就會影響我們真正想要學習的規律。而使用dropout后,每次學習都會遺忘一些規律。這樣,即使有幾個擁有相同細節規律的樣本很偶然的被連續的送入網路中訓練,也會被忘掉。只有所有樣本中都有的大規律才會被記住。

shuffle(亂序),訓練的樣本不要有固定順序,而要隨機打亂。和dropout的原因是一樣的,防止擁有相同細節規律的樣本連續被送入網路。比如我們不要一直從abandon,放棄,遺棄開始背英語單詞一樣。

L2 regularization(保持最簡化),解決的方案不要過於複雜。不然只能顧及特例而失去普遍性。 就是老師提倡你在聯考使用最普遍的解題方式一樣。

mini-batch(多題一起做),相互比較后得出結論。比如同時看兩本描述不同的書可以得到更好地理解。

noisy layer(加噪音),題目加入一些干擾項、改變考前環境、教室、平時狀態等,增加魯棒性。噪音會對我們的結果造成影響,改變數據的分佈。而神經網路是乾脆直接將噪音也一起建模在網路當中,將正常因素和噪音因素形成的組合作為最後的結果。

人工智慧對我們的影響

機器,計算機,人工智慧,這些都是人類自身能力的延伸,這些技術可以應用在任何行業之中。

曾經我們是靠鋤頭耕地,現在靠機器;曾經我們靠算盤算賬,現在靠計算機。但是機械也好,計算機也好,所更換的僅僅是工具,不是工作內容。我們始終需要耕地,需要算賬。

同樣的人工智慧僅僅幫助我們建立關聯。有了合理的關聯f,我們就可以根據特定情況產生相應的行為。 人工智慧和機械以及計算機一樣,都是工具,並不會改變我們想要完成的任務。而未來的所有任務都可以依靠這一項新工具來實現。

最後,所有的這些內容你在其他的材料基本不會看到。

因為很少有像我這麼不務正業的學生,這也好奇,那也好奇,這摳一點,那摳一點。

這些內容都是我個人的思考,相當非主流。但是我將他們寫在了我終身連載的《超智能體》當中。一個關於如何用人腦學習,如何機器學習的書。我希望這些內容可以給人們理解生命,理解智能的另一個視角。

同時我也以我自己所理解的方式寫了一些深度學習的教程。這些教程的側重點不一樣,我希望讀者可以理解其背後的道理,而不是單純的搭建一個神經網路,完成某個特定的任務,在想要使用新任務時卻無從下手。

最後呢,雖然我叫於建國,但是我不是國慶節出生的,我是非常倔強的白羊座。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦