第一章 什麼是深度學習?
本章涉及的知識點:
基本概念的高層次(High-level)定義
機器學習的發展歷程
深度學習興起背後的關鍵因素以及未來的展望
過去幾十年,人工智慧(artificial intelligence,AI)一直是媒體強烈炒作的主題。機器學習、深度學習和人工智慧也經常出現在無數非技術刊物上。人們構想將來智能聊天機器人、自動駕駛汽車和虛擬助理的工作生活的畫面——在昏暗的燈光下,人類的工作很少,而大部分經濟活動都有機器人或者AI智能實體。對於當前或者未來機器學習的從業者來講,需要從吹捧過度的新聞中意識到改變世界的新產品。你們的將來將承擔重要的任務:讀完本書後,你將會成為開發AI智能實體的開發者。接著解決這幾個問題:目前深度學習能實現什麼?深度學習的意義如何?人類下一步該如何做?你相信關於人工智慧的宣傳嗎?
本章介紹人工智慧、機器學習和深度學習相關知識。
1.1 人工智慧、機器學習和深度學習首先,當人們討論AI時要清楚談論的是什麼?什麼是人工智慧、機器學習和深度學習(見圖1.1)?它們之間又有什麼關係呢?
圖1.1 人工智慧、機器學習和深度學習
1.1.1 人工智慧人工智慧誕生於1950年代,當時少數計算機科學的先行者開始探討計算機是否能夠像人類一樣「思考」——這個問題到現在還在探索。其簡明的定義如下:像人類一樣自動化完成智力任務。比如,AI通常認為包括機器學習和深度學習的領域,但是也包含許多非學習的方法。例如,早期的棋類程序只涉及程序設定的硬編碼規則,沒用到機器學習。在相當長一段時期內,許多專家相信:程序處理足夠大的基於知識的顯式規則集合能達到人類水平的智能。這種方法稱之為符號型AI(symbolic AI),它是1950年代到1980年代主流的AI,並在1980年代專家系統方面快速達到巔峰。
雖然符號型AI能解決定義明確的、邏輯性的問題,比如棋類問題,但是卻不能解決更複雜、模糊類的問題,比如,圖像分類、語音識別和語言翻譯。隨之而來的是機器學習這種新方法取代了符號型AI。
1.1.2 機器學習在英國維多利亞時代,埃達·洛夫萊斯伯爵夫人(Ada Lovelace)是查爾斯·巴貝奇(Charles Babbage)的好友和合作者。巴貝奇是分析機(Analytical Engine)的發明者。該分析機是公認的第一個機械式通用電腦。雖然預言性的遠見超越了當時的時代,但是,在1830年代到1840年代設計的分析機並不是真正意義上的通用電腦。因為通用計算機的概念那時尚未出現,它僅僅是一種自動的數學計算分析,因此命名為分析機。在1843年,埃達註記分析機,「分析機談不上能創造什麼東西。但是能做我們命令它做的任何工作…...它的職責是幫助我們去實現已知的事情。」
在1950年,AI先行者阿蘭·圖靈(Alan Turing)在他的著作《計算機器和智能》中引用這個註記作為「洛夫萊斯伯爵夫人的異議」,並提出圖靈測試(Turing test)的概念。圖靈思考通用計算機是否有學習和創造的能力,並得出下面的結論:
機器學習起因於以下問題:對於計算機來說,除「我們命令它做的任務」之外,它能自我學習完成特定任務嗎?計算機能做的工作會讓我們感到意外嗎?除了程式設計師人為制定規則的數據處理外,計算機從數據中能自我學習出規則嗎?
上述問題打開了新編程範式的大門。在經典編程中,即符號型AI範式,人們輸入規則(即為程序)和數據,根據這些規則處理數據,輸出答案(見圖1.2);在機器學習中,人們輸入數據和該數據對應的答案,輸出的是程序規則。這些學習來的規則能應用到新的數據上,並產生原創性的答案。
圖1.2 機器學習:新的編程範式
機器學習系統是訓練得到的,而不是用顯式的編制。給機器學習一個任務相關的許多例子,它能發現這些例子的統計性的結構,並形成規則自動完成任務。例如,如果想給假期照片自動化打標籤,你需要提出一個機器學習系統,輸入許多打好標籤的照片,該系統學習統計性規則並為指定的照片打標籤。
雖然機器學習在1990年代才開始繁榮,但是由於硬體性能和數據大小的提升,機器學習很快變得非常流行,並成為AI最成功的子領域。機器學習與數學統計緊密相關,但是它在許多方面又有別於統計學。不像統計學,機器學習試圖處理海量、複雜的數據集(比如,數百萬張圖片,包含數以萬計的像素),然而經典統計分析(比如貝葉斯分析)將對此無能為力。因此,機器學習,特別是深度學習,展現相對較少的數學理論,更多的是工程化導向。
1.1.3 數據的特徵學習為了定義深度學習,以及理解深度學習和其它機器學習方法的不同,首先,需要知道機器學習算法在做什麼。這裡僅僅講述機器學習在給定期望的數據例子下發現規則,執行數據處理的任務。所以為了實現機器學習,需要知道下面三件事:
輸入數據點(Input data points):例如,如果是語音識別的任務,這些數據點應該是語音文件。如果是圖標標註的任務,數據點應該是圖片;
期望的輸出樣例(Examples of the expected output):語音識別的任務中,期望的輸出樣例是語音的手寫文本;圖像標註的任務中,期望的輸出樣例是「狗」,「貓」等等的標籤;
算法的評估標準:算法的評估標準是為了判斷當前算法的輸出值與期望的輸出值之間的距離。評估標準可以反饋調節算法的工作,這個調節的步驟經常成為學習(learning)。
機器學習模型將輸入數據集轉化成有意義的輸出,這個過程是從已有的輸入和輸出對的例子中學習到的。因此,機器學習和深度學習的中心問題是可讀性的轉化數據(transform data):換句話說,學習輸入數據的有用的表徵(representations)。數據表徵使得數據更接近期望的輸出。
那什麼是數據的表徵?其核心是數據的表現形式——表示(represent)或者編碼(encode)數據。例如,彩色圖片可以編碼為RGB格式(紅-綠-藍)或者HSV格式(色相,飽和度,色調)。機器學習模型就是為了找到輸入數據的合適表徵——數據的轉換是為了任務的更容易處理,比如,分類任務。
下面舉一個例子。假設有x軸,y軸和一些數據點坐標(x,y),見圖1.3:
圖1.3 樣本數據點
正如你所見,有一些白色的數據點,一些黑色的數據點。本例假設想實現一個算法:輸入數據點的坐標(x,y),輸出該數據點是黑色還是白色的。在本例中,
輸入是數據點的坐標;
期望輸出是數據點的顏色;
算法評估標準:判斷正確的數據點的百分比
此處的首要任務是數據集的新表徵,該數據表徵需要能清晰分離白色的點和黑色的點。本例使用的數據轉換是坐標變換,見圖1.4:
圖1.4 坐標變換
在新的坐標系統中,數據點的坐標可以看成是數據集的一個新表徵。並且效果非常棒!使用了數據集的新表徵,黑/白分類問題就可以用很簡單的規則解決了:「黑色數據點的x > 0,或者」白色數據點的x < 「0。」這個新表徵方法基本解決了分類問題。
在本例中,人工定義了坐標變換。但是,如果嘗試系統性地搜索所有不同的可能的坐標變換,並將正確分類數據點的百分比作為反饋,那就是在做機器學習。機器學習中的「學習」,是描述自動搜索更優的數據表徵的過程。
所有機器學習算法都包含自動化尋找這麼一個轉換:該轉換能根據給定的任務將數據集轉化成有用的特徵表示。這個操作可能是坐標變換,如前所見,或者線性投影(線性投影可能損失有用的信息),翻譯,非線性操作(比如,當x > 0時,選中所有數據點),等等。機器學習算法通常不能創造性地搜索到這些轉換;它們僅僅通過預定義的操作集合進行搜索,此過程也稱為超參數空間(hypothesis space)。
那究什麼是竟機器學習呢?從技術上來講,在預定義的參數空間內,自動搜索輸入數據集有效的表徵,並以反饋信號做引導。這個簡單的理念可以解決廣大的人工職能任務,從語音識別到自動駕駛。
現在理解完機器學習的學習,下面開始探索是什麼讓深度學習比較特別。
1.1.4 何為深度學習的「深度」深度學習是機器學習的一個特定子領域,其數據集的學習表徵強調學習一系列連續的表徵層,這些逐層的表徵層不斷地增加了有效的數據表徵。深度學習的「深度」並不涉及更深度的學習方法;而是表示一系列連續的特徵層的理念。數據模型的層數稱為模型的深度(depth)。深度學習的其它叫法有,分層表徵學習和多級表徵學習。當前的深度學習經常涉及十層甚至上百層的連續特徵表示層,它們都是從訓練數據集自動學習的。其它機器學習的方法一般傾向於從訓練數據學習一層或者兩層的表徵,因此,這種機器學習也稱為淺層學習(shallow learning)。
在深度學習中,這些表徵層通常是通過多層神經網絡(neural network)模型學習得到的。神經網絡來源於生物科學,深度學習的核心概念啟發自對人類大腦的理解,但是深度學習模型並不是大腦的模型。沒有證據表明大腦實現的學習機制被用在了當前的深度學習模型。你可能偶然發現某些頂級科學文章宣稱深度學習像大腦一樣工作或者模擬大腦,但是實際情況不是這樣的。這可能對該領域的新人在理解深度學習上帶來疑惑和困擾。你不需要搞得像大腦一樣神秘,只管忘掉看到的關於深度學習和生物相關的假設。深度學習是一個從訓練數據學習表徵的數學框架。
深度學習算法到底如何進行表徵學習呢?下面看一個幾層深度網絡的例子,其轉換數字圖片來識別圖片中的數字,見圖1.5:
圖1.5 圖片識別數字的分類神經網絡
如圖1.6所示,神經網絡將數字圖片轉換為學習特徵,對原始圖片進行圖像增強,從而識別出最終的結果。你可以認為神經網絡經過多層連續的過濾器進行信息提取,最後得到結果。
圖1.6 數字分類模型的深度學習表徵
所以,什麼是深度學習呢?從技術性上講,深度學習是多級數據集表徵學習。就這麼簡單的機制,經過足夠多層的擴展,能夠魔術般的解決問題。
1.1.5 三張圖理解深度學習工作原理此時,你已經知道機器學習是通過觀察樣本數據集的輸入和目標,進而學習將輸入(比如,圖片)和目標(比如,「cat」標籤)映射。你也知道深度神經網絡是從樣本數據集中學習數據轉換(也即學習表徵),通過多層數據轉換層實現輸入和目標的映射。下面看下這個學習過程具體是如何工作的?
layer處理輸入數據的規範要求存儲在layer的權重(weights)中,這些權重其實是一堆數值。從技術術語上講,layer通過權重參數化實現了數據轉換(權重有時也稱layer的參數),見圖1.7。本文中,學習(learning)意味著尋找神經網絡中所有layer的權重值的集合,比如正確地將樣本數據集的輸入和相關的目標映射。這裡需要注意的是,一個神經網絡可能包含成千上萬個參數。修改某個參數可能會影響其它所有的參數,那找到所有參數的正確值看似是個相當艱巨的任務。
圖1.7 權重參數化的神經網絡
為了控制神經網絡的輸出,需要度量模型輸出和期望值之間的距離。這部分是神經網絡模型的損失函數(loss function)的工作,有時也稱觀察函數(objective function)。損失函數輸入神經網絡模型的預測值和實際目標(期望輸出),計算兩者之間的距離值,評估神經網絡在訓練模型上的效果,見圖1.8。
圖1.8 度量神經網絡模型輸出的損失函數
深度學習的主要訣竅是,使用損失函數值作為反饋信號微調權重值,降低訓練數據在某個方向上的損失值,見圖1.9。前面的調節過程是神經網絡的優化器(optimizer)的工作。優化器是由後向傳播算法(Backpropagation)實現的,其是深度學習的核心算法,下一章惠詳細講解向傳播算法是如何工作的。
圖1.9 損失函數值調節權重值
一般神經網絡權重值先隨機初始化,這時神經網絡完成的看起來僅僅是些隨機數據轉換,它輸出的結果自然地遠離理想值,損失函數值也相應很高。但是隨著神經網絡數據處理的推進,權重值也在正確的方向上逐步微調,損失值也在降低。前面描述的過程稱為迭代訓練(training loop)。重複迭代足夠的訓練次數後得到的權重值會最小化損失函數值。具有最小化損失值的神經網絡模型輸出與期望的目標值幾乎相同。
1.16 深度學習的應用場景雖然深度學習是機器學習中早期的子領域,但是其也就在2010年代才稍微興盛起來。過去幾十年,深度學習沒什麼進展,只在感知學習問題上有點成績。
深度學習當前已經在機器學習難以出成績的領域有了以下突破:
人們仍在探索深度學習更廣泛的領域,如果成功的話,深度學習可能在科學、軟體開發等方面幫助人類開闢新世紀。
未完待續。。。
Enjoy!
翻譯本書系列的初衷是,覺得其中把深度學習講解的通俗易懂。不光有實例,也包含作者多年實踐對深度學習概念、原理的深度理解。最後說不重要的一點,François Chollet是Keras作者。聲明本資料僅供個人學習交流、研究,禁止用於其他目的。如果喜歡,請購買英文原版。
俠天,專注於大數據、機器學習和數學相關的內容,並有個人公眾號:bigdata_ny分享相關技術文章。
若發現以上文章有任何不妥,請聯繫我。