您的位置:首頁>科技>正文

微軟亞洲研究院劉鐵岩博士:迎接深度學習的“大”挑戰(一)

雷鋒網[AI科技評論]按:本文根據劉鐵岩博士在中國人工智慧學會AIDL第二期人工智慧前沿講習班*機器學習前沿所作報告《迎接深度學習的“大”挑戰》編輯整理而來, 發文前已得到劉鐵岩博士的親自刪減校正。

劉鐵岩

劉鐵岩博士, 微軟亞洲研究院首席研究員, 美國卡內基梅隆大學(CMU)客座教授。 劉博士的研究興趣包括:人工智慧、機器學習、資訊檢索、資料採擷等。 他的先鋒性工作促進了機器學習與資訊檢索之間的融合, 被國際學術界公認為“排序學習”領域的代表人物, 他在該領域的學術論文已被引用近萬次。 近年來, 劉博士在博弈機器學習、深度學習、分散式機器學習等方面也頗有建樹, 他的研究工作多次獲得最佳論文獎、最高引用論文獎、研究突破獎, 並被廣泛應用在微軟的產品和線上服務中。 他是國際電子電氣工程師學會(IEEE)、美國電腦學會(ACM)和中國電腦學會(CCF)的高級會員,

中國電腦學會的傑出演講者和學術工委。

以下為劉鐵岩博士所做的現場演講的第一部分, 主要介紹了近年人工智慧所取得的應用成果;什麼是深度神經網路以及它所帶來的挑戰等問題。

劉鐵岩:非常榮幸今天有機會和大家分享我們的研究成果。 我知道這幾天課程安排得特別滿, 一天四場報告, 大家有點廢寢忘食的感覺, 非常辛苦。 希望大家聽了我們的報告, 能夠有所收穫。

今天我們跟大家分享的題目是:“迎接深度學習的大挑戰”。

為什麼要講這個題目呢?深度學習這幾年改變了很多行業的狀態, 今天上午張老師應該也講了很多關於神經網路的話題, 包括怎麼學習深度神經網路的結構。 今天我會從另一個角度看一看深度學習到底有哪些挑戰, 這些挑戰怎麼用學術研究的方式加以解決。

微軟亞洲研究院介紹

在此之前, 我準備了兩張PPT, 介紹一下微軟亞洲研究院。

微軟亞洲研究院成立於1998年, 有200多名全職的研究人員, 和來自於各大高校的實習生。 微軟亞洲研究院雖然隸屬於公司, 但是日常運營的形式很像大學, 有很多非常有水準的研究員做導師, 有非常高品質的學生跟我們做研究。 我本人在微軟亞洲研究院負責人工智慧和機器學習的領域, 我們有十幾位全職的研究人員從事這方面的研究,

如果大家對我們組感興趣或者想進行合作, 歡迎和我聯繫。

近年來人工智慧所取得的應用成果

接下來我們進入今天報告的正題。

我們這次整個AIDL都是關於人工智慧和機器學習的,類似的PPT應該已經出現了很多次,所以關於什麼是人工智慧,人工智慧曾經走過什麼道路,這裡我不想再重複。總之,人工智慧在過去的60年裡,幾起幾落,每一次所謂的人工智慧寒冬多半都是因為公眾和政府對人工智慧的期望值太高。因此,作為人工智慧行業的參與者,我們有必要提醒公眾、提醒政府、提醒產業,對於人工智慧技術保持冷靜,不要把它過早捧殺。

不過話說回來,回顧過去的十幾年,人工智慧確實取得了一些前所未有的成果。接下來我們就來看幾個例子。深度學習的成功最早是在類似語音圖像這些領域取得的。

首先,語音辨識,因為有了大量的訓練資料,有了Deep Learning的方案,逐步達到了人類的精度。這張PPT展示的是去年10月份我們微軟研究院對外宣佈的一個語音辨識方面的突破性進展。

這是歷史上第一次,機器達到了和人沒有區別的程度,在個人對話的場景下,取得了非常低的錯誤率(5.9%)。這個模型是用微軟認知工具包(CNTK)訓練出來的,大家如果對語音的研究有興趣,可以試用一下CNTK,它是語音辨識領域被最廣泛使用的深度學習工具包。

其次,圖像方面最近也取得了很大的進展、2015年,來自我們微軟亞洲研究院的ResNet技術,在ImageNet competition裡取得了冠軍,並且超過了人類的識別精度。像ImageNet這樣包含上千個類別的圖像資料,識別起來其實還是有難度的。即便是人,看一眼也不一定都能分辨出來。

有研究表明,人類的錯誤率大約是5.1%,而ResNet達到了將近3.5%的錯誤率。也就是說對於特定領域、特定類別的問題,機器已經超過了人的圖像識別能力。這個成功後來又延續到了圖像分割領域,圖像分割是比圖像識別更複雜的任務,不僅要告訴大家這張圖像有什麼,還要把它圈出來、把邊界找到。2016年微軟亞洲研究院的技術再次在這個更難的任務上力拔頭籌、獲得冠軍。

上面提到的人工智慧技術大多已經被微軟產業化,下面給大家放一個視頻,是介紹微軟認知服務的,之前網上幾個很出名的爆款應用,比如How old測顏齡,都是基於微軟認知服務開發出來的。

視頻中展示場景,包括了前面提到的語音辨識、圖像識別、文字識別等等。有了微軟認知服務,大家如果想做一個創新應用,就不需要對深度學習有非常深的瞭解,不需要在雲上構架一個龐大的伺服器集群來訓練模型,只要調用一下認知服務的API,就可以實現很多神奇的功能。

除了前面提到的語音和圖像以外,在文本理解、機器翻譯等方面,人工智慧技術最近也取得了很大的進展。

微軟有很多與此相關的產品,比如Skype translator、Microsoft translator,可以同時支援多人、多點語音、多語言的即時同聲傳譯。接下來給大家展示的視頻是關於Skype translator的,講的是一個外國攝影師和他的中國嚮導之間的故事。

其實這項技術早在2012年微軟亞洲研究院主辦的“21世紀計算大會”上就被展示過。當時我們的研究副總裁Rick Rashid用英文做了一個主題演講,大家聽到的是機器自動同聲傳譯出來的中文表達,聽起來就像他真的會講中文一樣。

除了上述認知方面的進展,最近人工智慧在博弈方面也取得了很大的進步。比如用人工智慧來打電子遊戲,用人工智慧來下圍棋等等。當年AlphaGo戰勝李世乭的時候街頭巷尾都在討論。而今master橫掃幾十位人類高手,又掀起了大家對人工智慧的新認識。

左邊這張圖是關於用人工智慧技術來玩Atarti game的。當使用強化學習技術不斷地嘗試玩這個遊戲,一開始機器只會學到一些基本技能,玩著玩著逐漸發現一些高級的策略,甚至獲取了超過常人的技巧,比如把小球打到磚塊上面去,通過不斷回彈實現得分。

右邊這張圖是關於圍棋的。圍棋本身的策略空間非常大,每落一子,棋盤上都有很多不同的選擇,如果再考慮到後手,則對應于一個非常龐大的搜尋樹。對這個搜尋樹進行遍歷是遠遠超過目前電腦的計算能力的,所以大家曾一度認為在圍棋這件事情上機器很難戰勝人類。但是,最新的人工智慧技術巧妙地回避了遍歷,像人一樣使用了value network來對搜尋樹進行有效的剪枝,從而在以高概率保留好棋的前提下,把計算的複雜度降低到電腦可以承受的範圍內,並且最終戰勝了人類的世界冠軍。

深度學習技術

前面回顧的所有這些人工智慧領域的大事件,背後都離不開“深度學習”技術。

深度神經網路及其優化方法簡介

那麼什麼是深度學習呢?雖然早期大家提DeepLearning這個概念的時候,會聯想到很多不同的模型,但是經過多年的演化,目前最主流的深度學習模型就是所謂的深層神經網路。深層神經網路指的是一個有至少包含兩個隱層的神經網路。很多實用的深層神經網路甚至會包含成百上千個隱層。

簡單起見,我們先舉一個有三個隱層的深層神經網路作為例子。從圖中可以看到,神經網路包含很多神經元,以及它們之間的拓撲連接。每個神經元做的事情非常簡單,就是把上一層所有跟它相連的神經元的輸出放在一起,做加權求和,然後再進行非線性變換(啟動函數)。在神經元,以及神經元之間的連邊上都可以有參數,比如邊權和偏差等。

那麼有了深層神經網路以後,怎麼對它進行學習呢?常用的方法叫做經驗風險最小化,也就是最小化神經網路在訓練集裡所有樣本上的損失函數之和。為了最小化經驗風險,一個最簡單的方法是梯度下降法。但是,我們知道梯度下降法很容易陷入局部極小點,而且它的隨機版本可能不收斂,需要通過減小學習率來控制訓練過程的收斂性。為了解決這些問題,人們又提出了很多變種的優化演算法,比如SVRG等等。

兩種特殊的深度神經網路

瞭解了什麼是深度神經網路,以及如何對其進行優化,我們來介紹兩種特殊的深層神經網路。

首先是卷積神經網路,之所以稱其為卷積神經網路,是因為它的一些基本單元非常像信號處理裡的卷積操作。其實,卷積神經網路的提出,也有很多仿生學的背景在裡面。咱們回想一下自己做圖像識別的過程:

如果給你一幅很大的圖片,要在裡面識別出某個特定的人,比如張三。假定我們的腦子裡有張三的形象,但是不知道他到底在圖片的哪個部位,我們會怎麼做呢?一個很簡單的方式就是從這張圖像左上角開始掃描,每次掃描都用我們腦子裡的模式去匹配一下看有沒有張三,沒有的話往後移動一個位置,再進行下一次掃描。整個圖像掃描過程中,我們對張三識別的模式是沒有改變的,參數是固定的,只是在空間不斷平移,這其實是所謂卷積神經網路最基本的思想。

具體來講,卷積神經網路有三個特點:

一是使用卷積濾波器;

二是參數共用;

三是通過pooling操作實現平移不變性。

如果我們把卷積操作和Pooling操作級聯在一起,不斷循環往復地構建網路結構,這就會形成深層的卷積神經網路。給大家看一個例子,LeNet,它在輸入圖像的基礎上,進行了多次卷積和pooling操作,最後在實現有效的資訊抽取之後,使用全連接的網路對這些資訊進行最終的分類。

第二個特殊的深層神經網路叫做迴圈神經網路。它的提出也和仿生學有關。咱們想一下自己是如何讀書看報的。我們一般是從每段文字的第一個字開始,一邊往後看,腦子裡一邊利用之前看過的內容的記憶,對當前看到的文字進行理解。如此循環往復,最後把整個段落的意義全都弄清楚。迴圈神經網路也做了同樣的事情,它在標準神經網路的基礎上引用了一個memory unit,用來存儲和之前輸入有關的資訊,以説明我們更好地理解未來的輸入。

為了更形象地理解迴圈神經網路,我們把它展開來看。展開之後這些輸入就帶有時間標籤了,比如說這個是你看到的第一個詞X0,接下來看到第二個詞X1,不斷的往下移動。每次看到一個新輸入之後,就會對它做某種處理,產生一些對它的認識,並且放到memory裡,當看到下一個詞的時候,不僅僅針對這個詞本身進行理解,還會參照上一個詞對應的memory;這樣不斷地迴圈下去,就得到了所謂的迴圈神經網路。迴圈神經網路和卷積神經網路有點類似,也會在不同階段共用參數。

理論上,迴圈神經網路可以展開成無限深的網路,但是這會帶來學習的麻煩。實踐中,我們通常進行有限深度的展開,也就是所謂的BPTT技術。展開之後就可以把它當成標準的神經網路用梯度下降的方法來進行參數學習了。

深度神經網路所帶來的挑戰

到此為止,我們做了一個快速的神經網路簡介:我們介紹了什麼是神經網路,兩個特殊的網路結構,以及如何學習它們的參數。不管是全連接的網路、卷積網路還是迴圈網路,實際中常常會用到很深的層次,比如成百上千層,那麼當深度增加的時候,有什麼好處,又是否會帶來一些新的挑戰呢?

前面我們提到過神經網路的universal approximation theorem, 它似乎告訴我們只要有一個隱層,神經網路已經可以具備幾乎無限的表達能力了。那為什麼還要使用那麼多的隱層呢?近幾年有很多的理論研究表明,當層數增加時,想要取得同樣的表達能力,對隱節點總數的要求會變小很多,因此也就會帶來更高的學習效率和更小的學習難度。

反過來看,當隱節點的個數相同的時候,深層網路的表達能力會比淺層網路更強,因此學習能力也就更強。當然,天下沒有免費的午餐,深層網路的好處是有代價的,當網路很深的時候,用梯度下降來進行學習時,常常會遇到一些技術難題。接下來這張PPT就展示了兩個常見的麻煩。

第一個麻煩是Overfitting

第二個麻煩叫Gradient vanishing

為了更好地解釋這種現象,我給大家舉一個例子。這是一個細長型的深度神經網路。網路參數包括邊權w和偏差b。我們以b1這個參數為例,損失函數對它求導的結果如圖所示。在這個連乘式裡,sigma‘是啟動函數的導數,每經過一個隱層,就會出現一項sigma‘。

這裡畫了一個常見的sigmoid function的導數,它的最高點是在輸入為0的時候取得的,最高點取值是0.25,如果你的輸入不是0,其取值會更小。大家知道,當我們把一長串很小的數連乘起來,它的結果會很快衰減到接近0,而在當前的參數上加上一個幾乎為0 的梯度,對模型是不會有什麼改變的,這就解釋了為什麼深層網路經常訓練不充分。

為了解決這兩個典型的麻煩,人們提出了一系列的技術手段。比如:

DropOut/DropConnect,其基本思想是在訓練過程中引入一些隨機因素,讓神經網路模型不會那麼狠地擬合到訓練集上去。為此,可以在訓練過程中隨機刪除一些神經元節點,或者隨機刪除一些連邊。有人證明瞭,通過DropOut,可以有效降低神經網路的容量(Rademacher Average),從而避免過擬合,取得更好的泛化能力。

另外一個技術是Batch Normalization,也可以有效緩解overfitting和Gradient vanishing的問題。它其實是受到早期人們對神經網路的輸入進行白化處理的啟發。不同點在於它對深層神經網路的每一層都進行白化處理,而且是參數化的白化。也就是在一個mini batch裡計算均值和方差,然後對信號進行0均值、標準方差的變換。這樣做的好處是可以去除不同mini batch之間的差異,使得資料變得更加統一,提高泛化性能;同時,由於啟動函數的輸入被0均值化,也會提高其導數的幅度,從某種程度上減緩gradient vanishing的問題。

近年來人工智慧所取得的應用成果

接下來我們進入今天報告的正題。

我們這次整個AIDL都是關於人工智慧和機器學習的,類似的PPT應該已經出現了很多次,所以關於什麼是人工智慧,人工智慧曾經走過什麼道路,這裡我不想再重複。總之,人工智慧在過去的60年裡,幾起幾落,每一次所謂的人工智慧寒冬多半都是因為公眾和政府對人工智慧的期望值太高。因此,作為人工智慧行業的參與者,我們有必要提醒公眾、提醒政府、提醒產業,對於人工智慧技術保持冷靜,不要把它過早捧殺。

不過話說回來,回顧過去的十幾年,人工智慧確實取得了一些前所未有的成果。接下來我們就來看幾個例子。深度學習的成功最早是在類似語音圖像這些領域取得的。

首先,語音辨識,因為有了大量的訓練資料,有了Deep Learning的方案,逐步達到了人類的精度。這張PPT展示的是去年10月份我們微軟研究院對外宣佈的一個語音辨識方面的突破性進展。

這是歷史上第一次,機器達到了和人沒有區別的程度,在個人對話的場景下,取得了非常低的錯誤率(5.9%)。這個模型是用微軟認知工具包(CNTK)訓練出來的,大家如果對語音的研究有興趣,可以試用一下CNTK,它是語音辨識領域被最廣泛使用的深度學習工具包。

其次,圖像方面最近也取得了很大的進展、2015年,來自我們微軟亞洲研究院的ResNet技術,在ImageNet competition裡取得了冠軍,並且超過了人類的識別精度。像ImageNet這樣包含上千個類別的圖像資料,識別起來其實還是有難度的。即便是人,看一眼也不一定都能分辨出來。

有研究表明,人類的錯誤率大約是5.1%,而ResNet達到了將近3.5%的錯誤率。也就是說對於特定領域、特定類別的問題,機器已經超過了人的圖像識別能力。這個成功後來又延續到了圖像分割領域,圖像分割是比圖像識別更複雜的任務,不僅要告訴大家這張圖像有什麼,還要把它圈出來、把邊界找到。2016年微軟亞洲研究院的技術再次在這個更難的任務上力拔頭籌、獲得冠軍。

上面提到的人工智慧技術大多已經被微軟產業化,下面給大家放一個視頻,是介紹微軟認知服務的,之前網上幾個很出名的爆款應用,比如How old測顏齡,都是基於微軟認知服務開發出來的。

視頻中展示場景,包括了前面提到的語音辨識、圖像識別、文字識別等等。有了微軟認知服務,大家如果想做一個創新應用,就不需要對深度學習有非常深的瞭解,不需要在雲上構架一個龐大的伺服器集群來訓練模型,只要調用一下認知服務的API,就可以實現很多神奇的功能。

除了前面提到的語音和圖像以外,在文本理解、機器翻譯等方面,人工智慧技術最近也取得了很大的進展。

微軟有很多與此相關的產品,比如Skype translator、Microsoft translator,可以同時支援多人、多點語音、多語言的即時同聲傳譯。接下來給大家展示的視頻是關於Skype translator的,講的是一個外國攝影師和他的中國嚮導之間的故事。

其實這項技術早在2012年微軟亞洲研究院主辦的“21世紀計算大會”上就被展示過。當時我們的研究副總裁Rick Rashid用英文做了一個主題演講,大家聽到的是機器自動同聲傳譯出來的中文表達,聽起來就像他真的會講中文一樣。

除了上述認知方面的進展,最近人工智慧在博弈方面也取得了很大的進步。比如用人工智慧來打電子遊戲,用人工智慧來下圍棋等等。當年AlphaGo戰勝李世乭的時候街頭巷尾都在討論。而今master橫掃幾十位人類高手,又掀起了大家對人工智慧的新認識。

左邊這張圖是關於用人工智慧技術來玩Atarti game的。當使用強化學習技術不斷地嘗試玩這個遊戲,一開始機器只會學到一些基本技能,玩著玩著逐漸發現一些高級的策略,甚至獲取了超過常人的技巧,比如把小球打到磚塊上面去,通過不斷回彈實現得分。

右邊這張圖是關於圍棋的。圍棋本身的策略空間非常大,每落一子,棋盤上都有很多不同的選擇,如果再考慮到後手,則對應于一個非常龐大的搜尋樹。對這個搜尋樹進行遍歷是遠遠超過目前電腦的計算能力的,所以大家曾一度認為在圍棋這件事情上機器很難戰勝人類。但是,最新的人工智慧技術巧妙地回避了遍歷,像人一樣使用了value network來對搜尋樹進行有效的剪枝,從而在以高概率保留好棋的前提下,把計算的複雜度降低到電腦可以承受的範圍內,並且最終戰勝了人類的世界冠軍。

深度學習技術

前面回顧的所有這些人工智慧領域的大事件,背後都離不開“深度學習”技術。

深度神經網路及其優化方法簡介

那麼什麼是深度學習呢?雖然早期大家提DeepLearning這個概念的時候,會聯想到很多不同的模型,但是經過多年的演化,目前最主流的深度學習模型就是所謂的深層神經網路。深層神經網路指的是一個有至少包含兩個隱層的神經網路。很多實用的深層神經網路甚至會包含成百上千個隱層。

簡單起見,我們先舉一個有三個隱層的深層神經網路作為例子。從圖中可以看到,神經網路包含很多神經元,以及它們之間的拓撲連接。每個神經元做的事情非常簡單,就是把上一層所有跟它相連的神經元的輸出放在一起,做加權求和,然後再進行非線性變換(啟動函數)。在神經元,以及神經元之間的連邊上都可以有參數,比如邊權和偏差等。

那麼有了深層神經網路以後,怎麼對它進行學習呢?常用的方法叫做經驗風險最小化,也就是最小化神經網路在訓練集裡所有樣本上的損失函數之和。為了最小化經驗風險,一個最簡單的方法是梯度下降法。但是,我們知道梯度下降法很容易陷入局部極小點,而且它的隨機版本可能不收斂,需要通過減小學習率來控制訓練過程的收斂性。為了解決這些問題,人們又提出了很多變種的優化演算法,比如SVRG等等。

兩種特殊的深度神經網路

瞭解了什麼是深度神經網路,以及如何對其進行優化,我們來介紹兩種特殊的深層神經網路。

首先是卷積神經網路,之所以稱其為卷積神經網路,是因為它的一些基本單元非常像信號處理裡的卷積操作。其實,卷積神經網路的提出,也有很多仿生學的背景在裡面。咱們回想一下自己做圖像識別的過程:

如果給你一幅很大的圖片,要在裡面識別出某個特定的人,比如張三。假定我們的腦子裡有張三的形象,但是不知道他到底在圖片的哪個部位,我們會怎麼做呢?一個很簡單的方式就是從這張圖像左上角開始掃描,每次掃描都用我們腦子裡的模式去匹配一下看有沒有張三,沒有的話往後移動一個位置,再進行下一次掃描。整個圖像掃描過程中,我們對張三識別的模式是沒有改變的,參數是固定的,只是在空間不斷平移,這其實是所謂卷積神經網路最基本的思想。

具體來講,卷積神經網路有三個特點:

一是使用卷積濾波器;

二是參數共用;

三是通過pooling操作實現平移不變性。

如果我們把卷積操作和Pooling操作級聯在一起,不斷循環往復地構建網路結構,這就會形成深層的卷積神經網路。給大家看一個例子,LeNet,它在輸入圖像的基礎上,進行了多次卷積和pooling操作,最後在實現有效的資訊抽取之後,使用全連接的網路對這些資訊進行最終的分類。

第二個特殊的深層神經網路叫做迴圈神經網路。它的提出也和仿生學有關。咱們想一下自己是如何讀書看報的。我們一般是從每段文字的第一個字開始,一邊往後看,腦子裡一邊利用之前看過的內容的記憶,對當前看到的文字進行理解。如此循環往復,最後把整個段落的意義全都弄清楚。迴圈神經網路也做了同樣的事情,它在標準神經網路的基礎上引用了一個memory unit,用來存儲和之前輸入有關的資訊,以説明我們更好地理解未來的輸入。

為了更形象地理解迴圈神經網路,我們把它展開來看。展開之後這些輸入就帶有時間標籤了,比如說這個是你看到的第一個詞X0,接下來看到第二個詞X1,不斷的往下移動。每次看到一個新輸入之後,就會對它做某種處理,產生一些對它的認識,並且放到memory裡,當看到下一個詞的時候,不僅僅針對這個詞本身進行理解,還會參照上一個詞對應的memory;這樣不斷地迴圈下去,就得到了所謂的迴圈神經網路。迴圈神經網路和卷積神經網路有點類似,也會在不同階段共用參數。

理論上,迴圈神經網路可以展開成無限深的網路,但是這會帶來學習的麻煩。實踐中,我們通常進行有限深度的展開,也就是所謂的BPTT技術。展開之後就可以把它當成標準的神經網路用梯度下降的方法來進行參數學習了。

深度神經網路所帶來的挑戰

到此為止,我們做了一個快速的神經網路簡介:我們介紹了什麼是神經網路,兩個特殊的網路結構,以及如何學習它們的參數。不管是全連接的網路、卷積網路還是迴圈網路,實際中常常會用到很深的層次,比如成百上千層,那麼當深度增加的時候,有什麼好處,又是否會帶來一些新的挑戰呢?

前面我們提到過神經網路的universal approximation theorem, 它似乎告訴我們只要有一個隱層,神經網路已經可以具備幾乎無限的表達能力了。那為什麼還要使用那麼多的隱層呢?近幾年有很多的理論研究表明,當層數增加時,想要取得同樣的表達能力,對隱節點總數的要求會變小很多,因此也就會帶來更高的學習效率和更小的學習難度。

反過來看,當隱節點的個數相同的時候,深層網路的表達能力會比淺層網路更強,因此學習能力也就更強。當然,天下沒有免費的午餐,深層網路的好處是有代價的,當網路很深的時候,用梯度下降來進行學習時,常常會遇到一些技術難題。接下來這張PPT就展示了兩個常見的麻煩。

第一個麻煩是Overfitting

第二個麻煩叫Gradient vanishing

為了更好地解釋這種現象,我給大家舉一個例子。這是一個細長型的深度神經網路。網路參數包括邊權w和偏差b。我們以b1這個參數為例,損失函數對它求導的結果如圖所示。在這個連乘式裡,sigma‘是啟動函數的導數,每經過一個隱層,就會出現一項sigma‘。

這裡畫了一個常見的sigmoid function的導數,它的最高點是在輸入為0的時候取得的,最高點取值是0.25,如果你的輸入不是0,其取值會更小。大家知道,當我們把一長串很小的數連乘起來,它的結果會很快衰減到接近0,而在當前的參數上加上一個幾乎為0 的梯度,對模型是不會有什麼改變的,這就解釋了為什麼深層網路經常訓練不充分。

為了解決這兩個典型的麻煩,人們提出了一系列的技術手段。比如:

DropOut/DropConnect,其基本思想是在訓練過程中引入一些隨機因素,讓神經網路模型不會那麼狠地擬合到訓練集上去。為此,可以在訓練過程中隨機刪除一些神經元節點,或者隨機刪除一些連邊。有人證明瞭,通過DropOut,可以有效降低神經網路的容量(Rademacher Average),從而避免過擬合,取得更好的泛化能力。

另外一個技術是Batch Normalization,也可以有效緩解overfitting和Gradient vanishing的問題。它其實是受到早期人們對神經網路的輸入進行白化處理的啟發。不同點在於它對深層神經網路的每一層都進行白化處理,而且是參數化的白化。也就是在一個mini batch裡計算均值和方差,然後對信號進行0均值、標準方差的變換。這樣做的好處是可以去除不同mini batch之間的差異,使得資料變得更加統一,提高泛化性能;同時,由於啟動函數的輸入被0均值化,也會提高其導數的幅度,從某種程度上減緩gradient vanishing的問題。

Next Article
喜欢就按个赞吧!!!
点击关闭提示