算法工程師修仙之路:Mxnet(一)

深度學習簡介

  • 與其設計一個解決問題的程序,不如從最終的需求入手來尋找一個解決方案。事實上,這也是目前的機器學習和深度學習應用共同的核心思想:我們可以稱其爲“用數據編程”。

  • 通俗來說,機器學習是一門討論各式各樣的適用於不同問題的函數形式,以及如何使用數據來有效地獲取函數參數具體值的學科。

  • 深度學習是指機器學習中的一類函數,它們的形式通常爲多層神經網絡。近年來,仰仗着大數據集和強大的硬件,深度學習已逐漸成爲處理圖像、文本語料和聲音信號等複雜高維度數據的主要方法。

起源


  • 雖然深度學習似乎是最近幾年剛興起的名詞,但它所基於的神經網絡模型和用數據編程的核心思想已經被研究了數百年。自古以來,人類就一直渴望能從數據中分析出預知未來的竅門。實際上,數據分析正是大部分自然科學的本質,我們希望從日常的觀測中提取規則,並找尋不確定性

  • 早在17世紀,雅各比·伯努利(1655–1705)提出了描述只有兩種結果的隨機過程的伯努利分佈

  • 大約一個世紀之後,卡爾·弗里德里希·高斯(1777–1855)發明了今日仍廣泛用在從保險計算到醫學診斷等領域的最小二乘法

  • 統計學巨匠之一羅納德·費雪(1890–1962)對統計學理論和統計學在基因學中的應用功不可沒。他發明的許多算法和公式,例如線性判別分析費雪信息,仍經常被使用。即使是他在1936年發佈的 Iris 數據集,仍然偶爾被用於演示機器學習算法。

  • 克勞德·香農(1916–2001)的信息論以及阿蘭·圖靈 (1912–1954)的計算理論也對機器學習有深遠影響。圖靈在他著名的論文《計算機器與智能》中提出了“機器可以思考嗎?”這樣一個問題。在他描述的“圖靈測試”中,如果一個人在使用文本交互時不能區分他的對話對象到底是人類還是機器的話,那麼即可認爲這臺機器是有智能的

  • 另一個對深度學習有重大影響的領域是神經科學與心理學。

    • 既然人類顯然能夠展現出智能,那麼對於解釋並逆向工程人類智能機理的探究也在情理之中。
    • 最早的算法之一是由唐納德·赫布(1904–1985)正式提出的。在他開創性的著作《行爲的組織》中,他提出神經是通過正向強化來學習的,即赫布理論。
    • 赫布理論是感知機學習算法的原型,併成爲支撐今日深度學習的隨機梯度下降算法的基石:強化合意的行爲、懲罰不合意的行爲,最終獲得優良的神經網絡參數
  • 絕大多數神經網絡都包含以下的核心原則:

    • 交替使用線性處理單元與非線性處理單元,它們經常被稱爲“層”。
    • 使用鏈式法則(即反向傳播)來更新網絡的參數。

發展


  • 互聯網的崛起、價廉物美的傳感器和低價的存儲器令我們越來越容易獲取大量數據。加之便宜的計算力,尤其是原本爲電腦遊戲設計的GPU的出現,一瞬間,原本被認爲不可能的算法和模型變得觸手可及。
    在這裏插入圖片描述

    • 很顯然,存儲容量沒能跟上數據量增長的步伐
    • 與此同時,計算力的增長又蓋過了數據量的增長
    • 這樣的趨勢使得統計模型可以在優化參數上投入更多的計算力,但同時需要提高存儲的利用效率,例如使用非線性處理單元。
    • 這也相應導致了機器學習和統計學的最優選擇從廣義線性模型及核方法變化爲深度多層神經網絡。
    • 這樣的變化正是諸如多層感知機、卷積神經網絡、長短期記憶循環神經網絡和 Q 學習等深度學習的支柱模型在過去10年從坐了數十年的冷板凳上站起來被“重新發現”的原因。
  • 深度學習長足發展的部分原因

    • 優秀的容量控制方法,如丟棄法,使大型網絡的訓練不再受制於過擬合(大型神經網絡學會記憶大部分訓練數據的行爲)。這是靠在整個網絡中注入噪聲而達到的,如訓練時隨機將權重替換爲隨機的數字。
    • 注意力機制解決了另一個困擾統計學超過一個世紀的問題:如何在不增加參數的情況下擴展一個系統的記憶容量和複雜度。注意力機制使用了一個可學習的指針結構來構建出一個精妙的解決方法。也就是說,與其在像機器翻譯這樣的任務中記憶整個句子,不如記憶指向翻譯的中間狀態的指針。由於生成譯文前不需要再存儲整句原文的信息,這樣的結構使準確翻譯長句變得可能。
    • 記憶網絡和神經編碼器—解釋器這樣的多階設計使得針對推理過程的迭代建模方法變得可能。這些模型允許重複修改深度網絡的內部狀態,這樣就能模擬出推理鏈條上的各個步驟,就好像處理器在計算過程中修改內存一樣。
    • 另一個重大發展是生成對抗網絡的發明。傳統上,用在概率分佈估計和生成模型上的統計方法更多地關注於找尋正確的概率分佈,以及正確的採樣算法。生成對抗網絡的關鍵創新在於將採樣部分替換成了任意的含有可微分參數的算法。這些參數將被訓練到使辨別器不能再分辨真實的和生成的樣本。生成對抗網絡可使用任意算法來生成輸出的這一特性爲許多技巧打開了新的大門。
    • 許多情況下單個 GPU 已經不能滿足在大型數據集上進行訓練的需要。過去10年內我們構建分佈式並行訓練算法的能力已經有了極大的提升設計可擴展算法的最大瓶頸在於深度學習優化算法的核心:隨機梯度下降需要相對更小的批量。與此同時,更小的批量也會降低 GPU 的效率。如果使用1,024個 GPU,每個 GPU 的批量大小爲32個樣本,那麼單步訓練的批量大小將是32,000個以上。
    • 並行計算的能力也爲至少在可以採用模擬情況下的強化學習的發展貢獻了力量。並行計算幫助計算機在圍棋、雅達利遊戲、星際爭霸和物理模擬上達到了超過人類的水準。

成功案例


  • 長期以來機器學習總能完成其他方法難以完成的目標。
    • 例如,自20世紀90年代起,郵件的分揀就開始使用光學字符識別。實際上這正是知名的MNIST和USPS手寫數字數據集的來源。
    • 機器學習也是電子支付系統的支柱,可以用於讀取銀行支票、進行授信評分以及防止金融欺詐。
    • 機器學習算法在網絡上被用來提供搜索結果、個性化推薦和網頁排序。
    • 智能助手的出現或許可以作爲人工智能開始影響我們生活的標誌。
      • 蘋果公司的 Siri、亞馬遜的 Alexa 和谷歌助手一類的智能助手能以可觀的準確率回答口頭提出的問題,甚至包括從簡單的開關燈具(對殘疾羣體幫助很大)到提供語音對話幫助。
      • 智能助手的關鍵是需要能夠精確識別語音,而這類系統在某些應用上的精確度已經漸漸增長到可以與人類比肩。
    • 物體識別也經歷了漫長的發展過程。
      • 在2010年從圖像中識別出物體的類別仍是一個相當有挑戰性的任務。
      • 當年日本電氣、伊利諾伊大學香檳分校和羅格斯大學團隊在 ImageNet 基準測試上取得了28%的前五錯誤率。到2017年,這個數字降低到了2.25%。
      • 研究人員在鳥類識別和皮膚癌診斷上,也取得了同樣驚世駭俗的成績。
    • 遊戲曾被認爲是人類智能最後的堡壘。
      • 自使用時間差分強化學習玩雙陸棋的 TD-Gammon 開始,算法和算力的發展催生了一系列在遊戲上使用的新算法。
      • 與雙陸棋不同,國際象棋有更復雜的狀態空間和更多的可選動作。
      • “深藍”用大量的並行、專用硬件和遊戲樹的高效搜索打敗了加里·卡斯帕羅夫。
      • 圍棋因其龐大的狀態空間被認爲是更難的遊戲,AlphaGo 在2016年用結合深度學習與蒙特卡洛樹採樣的方法達到了人類水準。
      • 對德州撲克遊戲而言,除了巨大的狀態空間之外,更大的挑戰是遊戲的信息並不完全可見,例如看不到對手的牌。而“冷撲大師”用高效的策略體系超越了人類玩家的表現。
      • 以上的例子都體現出了先進的算法是人工智能在遊戲上的表現提升的重要原因。
    • 機器學習進步的另一個標誌是自動駕駛汽車的發展。
      • 儘管距離完全的自主駕駛還有很長的路要走,但諸如 Tesla、NVIDIA、 MobilEye 和 Waymo 這樣的公司發佈的具有部分自主駕駛功能的產品展示出了這個領域巨大的進步。
      • 完全自主駕駛的難點在於它需要將感知、思考和規則整合在同一個系統中
      • 目前,深度學習主要被應用在計算機視覺的部分,剩餘的部分還是需要工程師們的大量調試。

特點


  • 機器學習研究如何使計算機系統利用經驗改善性能

    • 它是人工智能領域的分支,也是實現人工智能的一種手段。
    • 在機器學習的衆多研究方向中,表徵學習關注如何自動找出表示數據的合適方式,以便更好地將輸入變換爲正確的輸出,深度學習是具有多級表示的表徵學習方法
    • 在每一級(從原始數據開始),深度學習通過簡單的函數將該級的表示變換爲更高級的表示。
    • 因此,深度學習模型也可以看作是由許多簡單函數複合而成的函數。
    • 當這些複合的函數足夠多時,深度學習模型就可以表達非常複雜的變換。
  • 深度學習可以逐級表示越來越抽象的概念或模式。

    • 以圖像爲例,它的輸入是一堆原始像素值。
      • 深度學習模型中,圖像可以逐級表示爲特定位置和角度的邊緣、由邊緣組合得出的花紋、由多種花紋進一步匯合得到的特定部位的模式等。
      • 最終,模型能夠較容易根據更高級的表示完成給定的任務,如識別圖像中的物體。
      • 值得一提的是,作爲表徵學習的一種,深度學習將自動找出每一級表示數據的合適方式
      • 因此,深度學習的一個外在特點是端到端的訓練
      • 也就是說,並不是將單獨調試的部分拼湊起來組成一個系統,而是將整個系統組建好之後一起訓練
    • 相似地,在自然語言處理領域,詞袋模型多年來都被認爲是不二之選。
      • 詞袋模型是將一個句子映射到一個詞頻向量的模型,但這樣的做法完全忽視了單詞的排列順序或者句中的標點符號。
      • 不幸的是,我們也沒有能力來手工抽取更好的特徵。
      • 但是自動化的算法反而可以從所有可能的特徵中搜尋最好的那個,這也帶來了極大的進步。
      • 例如,語義相關的詞嵌入能夠在向量空間中完成如下推理:“柏林 - 德國 + 中國 = 北京”。
      • 可以看出,這些都是端到端訓練整個系統帶來的效果。
    • 除端到端的訓練以外,我們也正在經歷從含參數統計模型轉向完全無參數的模型。
      • 當數據非常稀缺時,我們需要通過簡化對現實的假設來得到實用的模型
      • 當數據充足時,我們就可以用能更好地擬合現實的無參數模型來替代這些含參數模型,這也使我們可以得到更精確的模型,儘管需要犧牲一些可解釋性
    • 相對其它經典的機器學習方法而言,深度學習的不同在於:對非最優解的包容、對非凸非線性優化的使用,以及勇於嘗試沒有被證明過的方法

小結


  • 機器學習研究如何使計算機系統利用經驗改善性能,它是人工智能領域的分支,也是實現人工智能的一種手段。

  • 作爲機器學習的一類,表徵學習關注如何自動找出表示數據的合適方式。

  • 深度學習是具有多級表示的表徵學習方法。它可以逐級表示越來越抽象的概念或模式。

  • 深度學習所基於的神經網絡模型和用數據編程的核心思想實際上已經被研究了數百年。

  • 深度學習已經逐漸演變成一個工程師和科學家皆可使用的普適工具。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章