轉自 吳恩達deeplearningai
機器學習(machine learning)是無數重要應用的基礎,其包含網路搜尋、垃圾郵件檢測、語音識別以及產品推薦等內容。假如你和你的團隊正在研發一項機器學習應用,並且想要取得較為快速的進展,本書的一些內容將會有所幫助。
假設你正在建立一家初創公司,該公司將為貓咪愛好者們提供不計其數的貓咪圖片。與此同時,你決定使用神經網路(neural network)技術來構建一套計算機視覺系統,用來識別圖片中的貓。
你的團隊有許多的改進方案,例如:
-
獲取更多的資料,即收集更多貓的圖片
-
收集更加多樣化的訓練資料集,比如處於不常見位置的貓的圖片,顏色奇異的貓的圖片,以及使用不同相機引數拍攝的貓的圖片
-
通過增加梯度下降(gradient descent)的迭代次數,使演算法訓練得久一些
-
嘗試一個擁有更多層(layer)/更多隱藏元(hidden units)/更多引數(parameters)的,規模更大的神經網路
-
嘗試加入正則化(例如 L2 正則化)
-
改變神經網路的架構(啟用函式,隱藏元數量等等)
-
…
如果你能夠在以上可能的方向中做出正確的選擇,那麼你將建立起一個領先的貓咪圖片識別平臺,並帶領你的公司獲得成功。但如果你選擇了一個糟糕的方向,則可能因此浪費掉幾個月甚至數年的開發時間。
監督學習(supervised learning)是指使用已標記(labeled)的訓練樣本 來學習一個從 對映到 的函式。監督學習演算法主要包括線性迴歸(linear regression)、對數機率迴歸(logistic regression,又譯作邏輯迴歸)和神經網路(neural network)。雖然機器學習的形式有許多種,但當前具備實用價值的大部分機器學習演算法都來自於監督學習。
我將經常提及神經網路(和“深度學習”中所提到的一致),但你只需對此有基礎的瞭解就可以閱讀後面的內容。
如果對上文提到的一些概念你還不是很熟悉,可以在 Coursera 觀看《機器學習》前三週的課程內容。(課程地址:http://ml-class.org)
不少關於深度學習(神經網路)的想法已經存在了數十年,而這些想法為什麼現在才流行起來了呢?
有兩個主要因素推動著近期的發展:
-
資料可用性(data availability):如今人們在數字裝置(膝上型電腦、移動裝置等)上花費的時間越來越多,數字化行為與活動產生了海量的資料,而這些資料都可以提供給我們的學習演算法用來訓練。
-
計算規模(computational scale):在近些年前,我們才開始能夠使用現有的海量資料集來訓練規模足夠大的神經網路。
具體而言,即使你積累了更多的資料,但應用在類似於對數機率迴歸(logistic regression)這樣的舊學習演算法上,其效能表現(performance)也將趨於”平穩“。這意味著演算法的學習曲線將”變得平緩“,即使提供更多的資料,演算法的效能也將停止提升。
舊的學習演算法似乎並不知道要如何來處理如今這個規模量級的資料。
如果你在相同的監督學習任務上選擇訓練出一個小型的神經網路(neutral network, NN),則可能會獲得較好的效能表現.
因此,為了獲得最佳的效能表現,你可以這樣做:
(i) 訓練大型的神經網路,效果如同上圖的綠色曲線;
(ii) 擁有海量的資料。
在演算法訓練時,許多其它的細節也同等重要,例如神經網路的架構。但目前來說,提升演算法效能的更加可靠的方法仍然是訓練更大的網路以及獲取更多的資料。
完成 (i) 和 (ii) 的過程異常複雜,本書將對其中的細節作進一步的討論。我們將從傳統學習演算法與神經網路中都起作用的通用策略入手,循序漸進地講解至最前沿的構建深度學習系統的策略。