《Deep Learning with Python》第一章 1.1 人工智慧、機器學習和深度學習

2021-02-13 神機喵算

第一章 什麼是深度學習?

本章涉及的知識點:

基本概念的高層次(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分享相關技術文章。

若發現以上文章有任何不妥,請聯繫我。

相關焦點

  • Deep Learning & Neural Network 免費學習資源【譯】
    ,全書共20章分3大部分:一是數學和機器學習應用基礎,講述線性回歸、概率論、機器學習基礎;二是深度網絡模型實踐,講述BP網絡、正則化、參數優化、卷積網絡、遞歸網絡等;三是深度學習研究,包括線性因子模型、自編碼器、表徵學習、Monte Carlo等更深入的內容。
  • 機器學習(Machine Learning)&深度學習(Deep Learning)資料(之一)
    《Deep Learning in Neural Networks: An Overview》 介紹:這是瑞士人工智慧實驗室Jurgen Schmidhuber寫的最新版本《神經網絡與深度學習綜述》本綜述的特點是以時間排序,從1940年開始講起,到60-80年代,80-90年代,一直講到2000年後及最近幾年的進展。涵蓋了deep learning裡各種tricks,引用非常全面.
  • 深度學習(Deep Learning) 學習資料
  • 吳恩達Deeplearning.ai課程學習全體驗:深度學習必備課程
    這些新課適合哪些人,它是否能和經典的《機器學習》課程相比呢?讓我們先看看這篇先行體驗。(選自Medium 機器之心編譯)    在全職工作與家庭瑣事之間,很多人都希望利用自己的剩餘時間學習認知科學和人工智慧的知識,如果突然出現了一套優秀的課程,那麼一切就會變得簡單起來。
  • 2018AI學習清單丨150個最好的機器學習和Python教程
    機器學習的發展可以追溯到1959年,有著豐富的歷史。這個領域也正在以前所未有的速度進化。在今年秋季,開始準備博士項目的時候,精選了一些有關機器學習和NLP的優質網絡資源。為了幫助也在經歷類似探索過程的童鞋,Robbie Allen把至今發現的最好的教程匯總了一個列表。公眾號後臺回覆:「清單」,獲取本文學習清單地址。
  • 吳恩達Deeplearning.ai課程學習全體驗:深度學習必備課程(已獲證書)
    8 月 8 日,吳恩達正式發布了 Deepleanring.ai——基於 Coursera 的系列深度學習課程,希望將人工智慧時代的基礎知識傳播到更多人身邊。一周過去後,許多人已經學完了目前開放的前三門課程。這些新課適合哪些人,它是否能和經典的《機器學習》課程相比呢?讓我們先看看這篇先行體驗。
  • 乾貨| 請收下這份2018學習清單:150個最好的機器學習,NLP和Python...
    由於這方面學習材料太豐富了,本文並未涵括所有內容。機器學習1、機器學習就是這麼好玩!(Stanford CS231n)http://cs231n.github.io/optimization-2/10、深度學習果殼裡的深度學習(nikhilbuduma.com)http://nikhilbuduma.com/2014/12/29/deep-learning-in-a-nutshell/
  • 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    我的目標是要找到最好的有關機器學習子方向和NLP的教程。 我引用了能簡潔介紹概念的基礎內容。我已經迴避包含一些大部頭書的章節,和對理解概念沒有幫助的科研論文。那為什麼不買一本書呢? 因為教程能更好地幫助你學一技之長或者打開新視野。 我把這博文分成四個部分,機器學習,NLP,Python,和數學基礎。
  • 乾貨 | 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    我的目標是要找到最好的有關機器學習子方向和NLP的教程。 我引用了能簡潔介紹概念的基礎內容。我已經迴避包含一些大部頭書的章節,和對理解概念沒有幫助的科研論文。那為什麼不買一本書呢? 因為教程能更好地幫助你學一技之長或者打開新視野。 我把這博文分成四個部分,機器學習,NLP,Python,和數學基礎。
  • 人工智慧、機器學習和深度學習之間的區別和聯繫
    在媒體描述DeepMind勝利的時候,將人工智慧(AI)、機器學習(machine learning)和深度學習(deep learning)都用上了。這三者在AlphaGo擊敗李世乭的過程中都起了作用,但它們說的並不是一回事。今天我們就用最簡單的方法——同心圓,可視化地展現出它們三者的關係和應用。
  • Python深度學習(Deep Learning with Python) 中文版+英文版+原始碼免費分享
    1.引言不得不感慨,如今這世道,有時候想找點比較好的學習資料真的不容易。
  • 資源│機器學習、深度學習、算法工程師等 AI 相關崗位面試需要知識
    本資源整理了機器學習、深度學習、算法工程師等 AI 相關崗位面試需要知識點,常見代碼實戰(分為 C/C++和 python 版本)、常見問題,簡歷模板
  • 人工智慧、機器學習和深度學習的區別?
    如上圖,人工智慧是最早出現的,也是最大、最外側的同心圓;其次是機器學習,稍晚一點;最內側,是深度學習,當今人工智慧大爆炸的核心驅動。五十年代,人工智慧曾一度被極為看好。之後,人工智慧的一些較小的子集發展了起來。先是機器學習,然後是深度學習。深度學習又是機器學習的子集。
  • 這是一份超全機器學習&深度學習資源清單(105個AI站點),請收藏!
    ): 人工智慧領域的Hacker NewsMathOverflow (https://mathoverflow.net): 數學知識問答社區Medium (https://medium.com/): 一個涵蓋人工智慧、機器學習和深度學習相關領域的自由、開放平臺專知
  • 深度學習(deep learning)發展史
    當人類第一次構思可編程計算機時,就已經在思考計算機能否變得智能 (儘管這距造出第一臺計算機還有一百多年)(Lovelace, 1842)。如今,人工智慧artificial intelligence(AI)已經成為一個具有眾多實際應用和活躍研究課題的領域,並且正在蓬勃發展。我們期望通過智能軟體自動地處理常規勞動、理解語音或圖像、幫助醫學診斷和支持基礎科學研究。
  • 《Python 機器學習》-Python Machine Learning第一版+第二版(附電子版 pdf)
    全書共16章,除了簡要介紹機器學習及Python在機器學習中的應用,還系統講述了數據分類、數據預處理、模型優化、集成學習、回歸、聚類、神經網絡、深度學習等內容。本書將機器學習背後的基本理論與應用實踐聯繫起來,通過這種方式讓讀者聚焦於如何正確地提出問題、解決問題。本書講解了如何使用Python的核心元素以及強大的機器學習庫,同時還展示了如何正確使用一系列統計模型。
  • 《Python 機器學習》-Python Machine Learning(附電子版 pdf)
    全書共16章,除了簡要介紹機器學習及Python在機器學習中的應用,還系統講述了數據分類、數據預處理、模型優化、集成學習、回歸、聚類、神經網絡、深度學習等內容。本書將機器學習背後的基本理論與應用實踐聯繫起來,通過這種方式讓讀者聚焦於如何正確地提出問題、解決問題。本書講解了如何使用Python的核心元素以及強大的機器學習庫,同時還展示了如何正確使用一系列統計模型。
  • 這是一份超全機器學習&深度學習網站資源清單(105個AI站點),請收藏!
    ): 人工智慧領域的Hacker NewsMathOverflow (https://mathoverflow.net): 數學知識問答社區Medium (https://medium.com/): 一個涵蓋人工智慧、機器學習和深度學習相關領域的自由、開放平臺專知
  • Spark與深度學習框架——H2O、deeplearning4j、SparkNet
    深度學習因其高準確率及通用性,成為機器學習中最受關注的領域。例如,深度學習算法能創建一個識別動物圖片的函數:給一張動物的圖片,它能分辨出圖片上的動物是一隻貓還是一隻狗。深度學習可以看作是組合了許多神經網絡的一種深度結構。與其他已有的機器學習算法相比,深度學習需要大量參數及訓練數據。這也是我們介紹能在Spark上運行的深度學習框架的原因。要想在企業環境中穩定地進行深度學習的訓練,必須要有一個可靠而快速的分布式引擎。
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。