如果在深度學習背後的基本技術思維, 及神經網路背後的基本技術思維已經幾十年了 為什麼它們只剛開始起飛 在這段影片中, 讓我們看一些 在這興起深度學習背後的主要動力, 因為我想這會幫助 您的組織比較能遇見最好的機會來應用這些工具 過去這幾年很多人問我 "Andrew, 為什麼深度學習突然作用得這麼好" 而每當我被問到這個問題 我通常畫這個圖給他們 假設我們畫一個圖, 在橫軸 我們畫出一件任務的資料量 然後, 在縱軸我們畫所有的學習演算法的表現 您看到我們的垃圾郵件分類器 或者我們的廣告點擊預測的正確度 或者我們神經網路的正確度 對於我們的自駕車找出其他車輛的位置 實際上如果您畫傳統的學習演算法的表現 像是支援向量機或者 羅吉斯迴歸分析當成是一個資料量的函數 您也許會得到一個曲線像這樣 他們的表現會提高了一會兒當您添加更多的資料 但一會兒過後, 表現就到了高原期 這應該是一條水平線, 我沒畫得很好 總是,好像它們不知道如何處理大量的資料 我們的社群在 過去20年也許對於很多的問題 我們從有相對比較小量的資料到 經常有相當大量的資料 很多的資料來自於 我們社群的電子化,而現在人類活動已經是數位領域 我們花很多的時間在我們的電腦, 在網站, 在行動裝置, 在電子裝置上創建資料 由於內建於手機的便宜照相機,加速度計 所有在物聯網的感測器 我們一直在蒐集更多更多的資料 過去20年來很多的應用 我們累積了很多多出來的資料原比 傳統的學習演算法能夠有效的利用 而在神經網路 實際上如果您訓練一個小型的神經網路 它的表現也許像這樣 如果您訓練大一點的神經網路 我們稱它為中型神經網路 它的表現會更好一點 如果我們訓練很大的神經網路 那它的表現通常會越來越好 所以觀察後 一是如果您想用到最高水準的表現您需要兩種東西 首先, 您需要能夠訓練 足夠大的神經網路為了利用大的資料量 第二, 您需要在 x 軸這裡 您需要大量的資料 所以我們通常說規模領導深度學習進步 規模是指一是 神經網路的大小意思是神經網路有很多的隱藏單元 很多的參數 很多的連結,二是資料的規模 實際上在今天, 最可靠的方式之一來得到比較好的表現在 神經網路通常是訓練大的神經網路或者丟更多的資料給它 但這會到一個頂點,因為最終您耗盡了資料或者 最終神經網路太大了需要訓練的時間太長 但在深度學習的世界僅提高規模已經是用了我們很長的時間 為了要讓這個圖增加一點技術上的精確度 讓我再加一些東西 我寫在 X 軸是資料量 技術上來講,這是標籤資料而 標籤資料指的是訓練例子 我們有輸入 X 跟標籤 Y, 我 想要介紹一點點我們將在這個課程中用到的符號 我們將使用小寫的字母 m 來記為我們訓練集的大小 所以訓練集大小的數量是小寫的 m, 這是在橫軸 一些其他有關這個圖的細節 在這個區域是小的訓練集 這相對的演算法排名實際上不是那麼好定義 所以如果您沒有很多的訓練集, 通常 依賴您的技術來手工打造特徵決定表現 所以這是很有可能的如果有人訓練 SVM 用心去 手工打造特徵跟有人訓練 即使大的神經網路也許在小的訓練集區域裡 SVM 做得更好 所以在這個圖形的靠左邊區域 相對的排名介於各演算法不是那麼好定義 取決於您的技巧在 手工打造特徵跟其他演算法的細節 而只是在這個大量資料區域 很大的訓練集 很大的 m 值在右邊區域我們一致的 看到深神經網路大勝其他的方法 所以如果您的朋友問您 為什麼神經網路起飛 我會鼓勵您畫這個圖讓他們了解 我會說在早期 現代深度學習的興起 是因為資料規模跟計算規模 僅僅能夠訓練很大量的資料在 CPU 或者 GPU 上就能夠讓我們有很多的進展 但是,越來越多,特別是在過去幾年我們已經 看到巨大的演算法創新 我也不想低估它們 有趣的是很多演算法的創新是 試著讓神經網路跑得更快 舉一個具體的例子 一個重大的突破在神經網路是從 長得像這樣的S型函數轉換成這樣的 ReLU 函數 我在之前得影片中簡單談過的, 長得像這樣 如果您不知道這些我將談到的細節, 不用擔心 但實際上使用S型函數的問題之一在 機器學習是有些區域像這裡這個函數的斜率 梯度將近為 0 所以學習變得非常 慢因為當您建立梯度下降時, 這梯度為0時 參數會改變得很慢學習也會很慢 而當改變稱為神經網路的啟動函數 用這個稱為 ReLU 或是線性整流函數 ReLU 這梯度為 1 對於所有正的輸入值 所以梯度不太可能逐漸變0 而這裡的梯度, 在左邊這條線的斜率是0 但實際上僅僅從S型函數換成是 ReLU 函數已經使梯度下降演算法跑得更快 所以這是一個例子,也許相對簡單的演算法創新 最終, 對於 演算法創新真的對計算非常有幫助 實際上有很多的例子像這樣 改變演算法因為他讓程式跑得更快 這能讓我們訓練 大一點的神經網路或者用合理的時間處理 即使是在大的網路或者大的資料 另一個理由是快速的計算對於 常反覆訓練的神經網路過程是很重要的 通常您有一個想法在 神經網路架構而您建立您的想法在程式上 建立您的想法然後讓您跑 一個實驗告訴您您的神經網路做得如何 看完結果後回頭改變一些您神經網路的細節 然後您在這樣的圈子一遍又一遍 當您的神經網路需要太長的時間訓練時 就會需要花很長的時間來繞一圈 這是很大的不同在於您的 生產力去建立有效率的神經網路當您 可以有一個想法試著看看它是否可行在10分鐘內或者 最多一天內對比如果您訓練 您的神經網路一個月, 有時是會發生的 因為當您在10分鐘或是一天內得到結果 您可以試很多想法而更能夠 發現非常適合您應用的一個神經網路 所以快速的計算已經幫助了 加快了你可以得到實驗結果回來的速度 而這非常幫助於神經網路的練習生 跟深度學習的研究人員 快速的反覆來更快的改進您的想法 所有這些當然 增強了整個深度學習研究社群到 已經令人難以置信的每個月發明新的演算法 所有這些已經是巨大的爆發 到整個深度學習研究社群 已經令人難以置信發明新的演算法 在這方面不間斷的進展 這一些力量增強了深度學習的興起 好消息是這些力量 還是有力的讓深度學習更好 資料, 社群依然投出更多更多的資料 計算, 在 特殊的硬體像是 GPU 更快的網路 很多種硬體 我實際上也對我們能 建立一個大型的神經網路從 共享計算的觀點很有信心會越來越好 演算法,整個深度學習研究社群 還繼續驚人的在發明演算法 因為這些,我想我們可以很樂觀 我當然很樂觀在深度學習會繼續 未來幾年會更好 讓我們到下一段影片 我們將談論更多有關您即將從這個課程學習到的