《神經網絡與深度學習》—學習筆記

在這裏插入圖片描述
[nndl.github.io]
[神經網絡與深度學習]
[nndl-book]

深度學習基礎

深度學習是機器學習的一個分支,是指一類問題以及解決這類問題的方法。

深度學習問題是一個機器學習問題,指從有限樣例中通過算法總結出一般性的規律,並可以應用到新的未知數據上。

深度學習採用的模型一般比較複雜,指樣本的原始輸入到輸出目標之間數據流經過多個線性或非線性組件(component)。因爲每個組件都會對信息進行加工,並進而影響後續的組件,所以當最後得到輸出結果時,並不清楚其中每個組件的貢獻是多少(貢獻度分配問題 Credit Assignment Problem, CAP),貢獻度分配問題關係到如何學習每個組件中的參數。

一種可以比較好的解決貢獻度分配問題的模型是人工神經網絡(Artificial Neural Networks, ANN)。人工神經網絡(簡稱神經網絡),是一種受人腦神經系統的工作方式啓發而構造的數學模型。人腦神經系統是一個由生物神經元組成的高度複雜網絡,是一個並行的非線性信息處理系統。人腦神經系統可以將聲音、視覺等信號經過多層的編碼,從最原始的低層特徵不斷加工、抽象,最終得到原始信號的語義表示。和人腦神經網絡類似,人工神經網絡是由人工神經元以及神經元之間的連接構成,其中有兩類特殊的神經元:一類用來接收外部的信息,另一類用來輸出信息。這樣,神經網絡可以看作信息從輸入到輸出的信息處理系統。如果把神經網絡看作一組參數控制的複雜函數,並用來處理一些模式識別任務(比如語音識別、人臉識別等),神經網絡的參數可以通過機器學習的方式來從數據中學習。因爲神經網絡模型一般比較複雜,從輸入到輸出的信息傳遞路徑一般比較長,所以複雜神經網絡的學習可以看成是一種深度的機器學習,即深度學習。

神經網絡和深度學習並不等價。深度學習可以採用神經網絡模型,也可以採用其他模型(比如深度信念網絡是一種概率圖模型)。但是,由於神經網絡模型可以比較容易的解決貢獻度分配問題,因此神經網絡模型成爲深度學習中主要採用的模型。雖然深度學習一開始用來解決機器學習中的表示學習問題,但是由於其強大的能力,深度學習越來越多的用來解決一些通用人工智能問題,比如推理、決策等。

人工智能

人工智能(Artificial Intelligence, AI)就是讓機器具有人類的智能。

圖靈測試:“一個人在不接觸對方的情況下,通過一種特殊的方式和對方進行一系列的問答。如果在相當長的時間內,他無法根據這些問題判斷對方是人還是計算機,那麼就可以認爲這個計算機是智能的”。圖靈測試是促使人工智能從哲學探討到科學研究的一個重要因素,引導了人工智能的很多研究方向。因爲要使得計算機通過圖靈測試,計算機就必須具備理解語言、學習、記憶、推理、決策等能力。這就延伸出了很多不同的子學科,比如機器感知(計算機視覺、語音信息處理)、學習(模式識別、機器學習、強化學習)、語言(自然語言處理)、記憶(知識表示)、決策(規劃、數據挖掘)等。

人工智能是計算機科學的一個分支,主要研究、開發用於模擬、延伸和擴展人類智能的理論、方法、技術及應用系統等。

人工智能的定義:人工智能就是要讓機器的行爲看起來就像是人所表現出的智能行爲一樣。人工智能主要分爲:

  • 感知:模擬人的感知能力,對外部刺激信息(視覺和語音等)進行感知和加工。主要研究領域包括語音信息處理和計算機視覺等。
  • 學習:模擬人的學習能力,主要研究如何從樣例或從與環境的交互中進行學習。主要研究領域包括監督學習、無監督學習和強化學習等。
  • 認知:模擬人的認知能力,主要研究領域包括知識表示、自然語言理解、推理、規劃、決策等。

人工智能的發展歷史

  • 推理期:通過人類的經驗,基於邏輯或者事實歸納出來一些規則,然後通過編寫程序來讓計算機完成一個任務。研究者開發了一系列的智能系統,比如幾何定理證明器、語言翻譯器等。
  • 知識期:研究者意識到知識對於人工智能系統的重要性。特別是對於一些複雜任務,需要專家系統來構建知識庫。在這一時期,出現了各種各樣的專家系統(Expert System),並在特定的專業領域取得了很多成果。專家系統可以簡單的理解爲“知識庫+推理機”,是一類具有專門知識和經驗的計算機智能程序系統。專家系統一般採用知識表示和知識推理等技術來完成通常由領域專家才能解決的複雜問題,因此專家系統也被稱爲基於知識的系統。一個專家系統必須具備三要素:1)領域專家級知識;2)模擬專家思維;3)達到專家級的水平。
  • 學習期:對於人類的很多智能行爲(比如語言理解、圖像理解等),很難知道其中的原理,也無法描述這些智能行爲背後的“知識”。因此,也很難通過知識和推理的方式來實現這些行爲的智能系統。爲了解決這類問題,研究者開始將研究重點轉向讓計算機從數據中自己學習。事實上,“學習”本身也是一種智能行爲。從人工智能的萌芽時期開始,就有一些研究者嘗試讓機器自動學習,即機器學習(Machine Learning,ML)。機器學習的主要目的是設計和分析一些學習算法,讓計算機可以從數據(經驗)中自動分析並獲得規律,之後利用學習到的規律對未知數據進行預測,從而幫助人們完成一些特定任務,提高開發效率。機器學習的研究內容也十分廣泛,涉及線性代數、概率論、統計學、數學優化、計算複雜性等多門學科。在人工智能領域,機器學習從一開始就是一個重要的研究方向。
    在這裏插入圖片描述

機器學習

機器學習(Machine Learning,ML)是指從有限的觀測數據中學習(或“猜測”)出具有一般性的規律,並利用這些規律對未知數據進行預測的方法。機器學習是人工智能的一個重要分支,並逐漸成爲推動人工智能發展的關鍵因素。

傳統的機器學習主要關注如何學習一個預測模型,一般需要首先將數據表示爲一組特徵(Feature),特徵的表示形式可以是連續的數值、離散的符號或其他形式。然後將這些特徵輸入的預測模型,並輸出預測結果。這類機器學習可以看作淺層學習(Shallow Learning)。淺層學習的一個重要特點是不涉及特徵學習,其特徵主要靠人工經驗或特徵轉換方式來抽取。

用機器學習來解決實際任務時,會面對多種多樣的數據形式,比如聲音、圖像、文本等,不同的數據的特徵構造方式差異很大。因此,在實際任務中使用機器學習模型一般會包含以下幾個步驟:

  • 數據預處理:如去除噪聲等。
  • 特徵提取:從原始數據中提取一些有效的特徵,比如在圖像分類中,提取邊緣、尺度不變特徵變換(Scale Invariant Feature Transform,SIFT)特徵等。
  • 特徵轉換:對特徵進行一定的加工,比如降維和升維。降維包括特徵抽取(Feature Extraction)和特徵選擇(Feature Selection)兩種途徑。常用特徵轉換方法有主成分分析(Principal Component Analysis,PCA)、線性判別分析(Linear Discriminant Analysis,LDA)等。
  • 預測:機器學習的核心部分,學習一個函數並進行預測。
    在這裏插入圖片描述
    機器學習的流程中,每個特徵處理以及預測一般都是分開進行的。傳統的機器學習模型主要關注最後一步,即構建預測函數。但是實際操作過程中,不同預測模型的性能相差不多,而前三步中的特徵處理對最終系統的準確性有着十分關鍵的作用。特徵處理一般都需要人工干預完成,利用人類的經驗來選取好的特徵,並最終提高機器學習系統的性能。因此,機器學習系統的主要工作量都消耗在了預處理、特徵提取以及特徵轉換上。

表示學習

爲了提高機器學習系統的準確率,需要將輸入學習轉換爲有效的特徵,或者更一般性的稱爲表示(Representation)。如果有一種算法可以自動的學習出有效的特徵,並提高最終機器學習模型的性能,那麼這種學習就可以叫作表示學習(Representation Learning)。

表示學習的關鍵是解決語義鴻溝(Semantic Gap)問題。語義鴻溝問題是指輸入數據的底層特徵和高層語義信息之間的不一致性和差異性。如果一個預測模型直接建立在底層特徵之上,會導致對預測模型的能力要求過高。如果可以有一個好的表示在某種程度上能夠反映出數據的高層語義特徵,那麼就能相對容易的構建後續的機器學習模型。

要學習到一種好的高層語義表示(一般分佈式表示),通常需要從底層特徵開始,經過多步非線性轉換才能得到。深層結構的優點是可以增加特徵的重用性,從而指數級的增加表示能力。因此,表示學習的關鍵是構建具有一定深度的多層次特徵表示。

在傳統的機器學習中,也有很多有關特徵學習的方法,比如主成分分析、線性判別分析、獨立成分分析等。但是,傳統的特徵學習一般是通過人爲的設計一些準則,然後根據這些準則來選取有效的特徵。特徵的學習是和最終預測模型的學習分開進行的,因此學習到的特徵不一定可以提升最終模型的性能。

深度學習

爲了學習一種好的表示,需要構建具有一定“深度”的模型,並通過學習算法來讓模型自動學習出好的特徵表示(從底層特徵,到中層特徵,再到高層特徵),從而最終提升預測模型的準確率。所謂“深度”是指原始數據進行非線性特徵轉換的次數。如果把一個表示學習系統看作一個有向圖結構,深度也可以看作從輸入節點到輸出節點經過的最長路徑的長度。

深度學習是一種學習方法可以從數據中學習一個“深度模型”,深度學習是機器學習的一個子問題,其主要目的是從數據中自動學習到有效的特徵表示。

深度學習的數據流程,通過多層的特徵轉換,把原始數據變成更高層次、更抽象的表示。這些學習到的表示可以替代人工設計的特徵,從而避免“特徵工程”。

在這裏插入圖片描述

傳統機器學習方法需要將一個任務的輸入和輸出之間人爲的切割成很多子模塊(或多個階段),每個子模塊分開學習。端到端學習(End-to_End Learning),也稱端到端訓練,是指在學習過程中不進行分模塊或分階段訓練,直接優化任務的總體目標。在端到端學習中,一般不需要明確的給出不同模塊或階段的功能,中間過程不需要人爲干預。端到端學習的訓練數據爲“輸入-輸出”對的形式,無需提供其他額外信息。因此,端到端學習和深度學習一樣,都是要解決貢獻分配問題。目前,大部分採用神經網絡模型的深度學習也可以看作一種端到端的學習。

神經網絡

人工神經網絡是爲模擬人腦神經網絡而設計的一種計算模型,它從結構、實現機理和功能上模擬人腦神經網絡。人工神經網絡與生物神經元類似,由多個節點(人工神經元)互相連接而成,可以用來對數據之間的複雜關係進行建模。不同節點之間的連接被賦予了不同的權重,每個權重代表了一個節點對另一個節點的影響大小。每個節點代表一種特定函數,來自其他節點的信息經過其相應的權重綜合計算,輸入到一個激活函數中並得到一個新的活性值(興奮或抑制)。從系統觀點看,人工神經元網絡是由大量神經元通過極其豐富和完善的連接而構成的自適應非線性動態系統。

構造一個人工神經網絡比較容易,但是如何讓人工神經網絡具有學習能力並不是一件容易的事情。感知機是最早的具有機器學習思想的神經網絡,但其學習方法無法擴展到多層的神經網絡上。反向傳播算法有效的解決了多層神經網絡的學習問題,併成爲最流行的神經網絡學習算法。

人工神經網絡誕生之初並不是用來解決機器學習問題。由於人工神經網絡可以用作一個通用的函數逼近器(一個兩層的神經網絡可以逼近任意的函數),因此可以將人工神經網絡看作一個可學習的函數,並將其應用到機器學習中。理論上,只要有足夠的訓練數據和神經元數量,人工神經網絡就可以學到很多複雜的函數。

神經網絡的發展歷史

  • 第一階段:模型提出
  • 第二階段:冰河期
  • 第三階段:反向傳播算法引起的復興
  • 第四階段:流行度降低
  • 第五階段:深度學習的崛起

知識體系

在這裏插入圖片描述

機器學習概述

機器學習是讓計算機從數據中進行自動學習,得到某種知識(或規律)。作爲一門學科,機器學習通常指一類問題以及解決這類問題的方法,即如何從觀測數據(樣本)中尋找規律,並利用學習到的規律(模型)對未知或無法觀測的數據進行預測。

機器學習的三個基本要素

  • 模型
    在這裏插入圖片描述
  • 學習準則
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 優化算法
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

線性迴歸

在這裏插入圖片描述
在這裏插入圖片描述

  • 經驗風險最小化 在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 結構風險最小化
    在這裏插入圖片描述
  • 最大似然估計
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 最大後驗估計
    在這裏插入圖片描述
    在這裏插入圖片描述

機器學習算法的類型

安裝訓練樣本提供的信息以及反饋方式的不同,將機器學習算法分爲以下幾類:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

線性模型

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

Logistic迴歸

Softmax迴歸

感知器

支持向量機

在這裏插入圖片描述

前饋神經網絡

神經元

激活函數 增強網絡的表示能力和學習能力,激活函數具備以下性質:

  • 連續並可導(允許少數點上不可導)的非線性函數。可導的激活函數可以直接利用數值優化的方法來學習網絡參數。

  • 激活函數及其導函數要儘可能的簡單,有利於提高網絡計算效率。

  • 激活函數的導函數的值域要在一個合適的區域內,不能太大也不能太小,否則會影響訓練的效率和穩定性。
    神經網絡中常用的激活函數:

  • Sigmoid型函數
    Sigmoid型函數是指一類S型曲線函數,爲兩端飽和函數,常用的Sigmoid函數有Logistic函數和Tanh函數。
    在這裏插入圖片描述

  • ReLU函數
    在這裏插入圖片描述

  • Swish函數
    在這裏插入圖片描述

  • GELU函數
    在這裏插入圖片描述

  • Maxout單元
    在這裏插入圖片描述

網絡結構

通過一定的連接方式或信息傳遞方式進行協作的神經元即神經網絡。

  • 前饋網絡
    前饋網絡中各個神經元按接收信息的先後分爲不同的組,每一組可以看作一個神經層。每一層中的神經元接收前一層神經元的輸出,並輸出到下一層神經元。整個網絡中的信息是朝一個方向傳播,沒有反向的信息傳播。前饋網絡可以看作一個函數,通過簡單非線性函數的多次複合,實現輸入空間到輸出空間的複雜映射。
  • 記憶網絡
    記憶網絡,也稱爲反饋網絡,網絡中的神經元不但可以接收其他神經元的信息,也可以接收自己的歷史信息。記憶網絡中的神經元具有記憶功能,在不同的時刻具有不同的狀態。記憶神經網絡中的信息傳播可以是單向或雙向傳播。
  • 圖網絡
    圖網絡是定義在圖結構數據上的神經網絡。圖中每個節點都由一個或一組神經元構成。節點之間的連接可以是有向的,也可以是無向的。每個節點可以收到來自相鄰節點或自身的信息。

卷積神經網絡

卷積神經網絡(Convolutional Neural Network,CNN或ConvNet)是一種具有局部連接、權重共享等特性的深層前饋神經網絡。卷積神經網絡是受生物學上感受野機制的啓發而 提出的。感受野(Receptive Field)機制主要是指聽覺、視覺等神經系統中一些神經元特性,即神經元只接受其所支配的刺激區域內的信號。

前饋神經網絡最主要是用來處理圖像信息,在用全連接前饋網絡來處理圖像時,會存在兩個問題:

  • 參數太多,如果輸入圖像大小爲100X100的彩色圖像,在全連接前饋網絡中,第一個隱藏層的每個神經元到輸入層都有100X100X3=30000個相互獨立的連接,每個連接都對應一個權重參數。隨着隱藏層神經元數量的增多,參數的規模也會急劇增加,導致整個神經網絡的訓練效率非常低,容易出現過擬合。
  • 局部不變性特徵:自然圖像中的物體都具有局部不變性特徵,比如尺度縮放、平移、旋轉等操作不影響其語義信息。而全連接前饋網絡很難提取這些局部不變性特徵,一般需要進行數據增強來提高性能。

卷積方式

  • 卷積
    實現高維特徵到低維特徵的轉換。
  • 轉置卷積
    低維特徵映射到高維特徵。
    在這裏插入圖片描述

在這裏插入圖片描述

  • 空洞卷積
    在這裏插入圖片描述
    在這裏插入圖片描述

卷積神經網絡

  • 卷積層
    卷積層的作用是提取一個局部區域的特徵,不同的卷積核相當於不同的特徵提取器。卷積層雖然可以顯著減少網絡中連接的數量,但特徵映射組中的神經元個數並沒有顯著減少。在卷積層之後加上一個匯聚層,從而降低特徵維數,避免過擬合。
  • 特徵映射(Feature Map)
    特徵映射是一幅圖像(或其他特徵映射)在經過卷積提取到的特徵,每個特徵映射可以作爲一類抽取的圖像特徵。爲了提高卷積網絡的表示能力,可以在每一層使用多個不同的特徵映射,以更好的表示圖像的特徵。在輸入層,特徵映射就是圖像本身。
  • 匯聚層(Pooling Layer)也叫子採樣層(Subsampling Layer)。其作用是進行特徵選擇,降低特徵數量,從而減少參數數量。匯聚層可以看作一個特殊的卷積層,卷積核大小爲KxK,步長爲SxS,卷積核爲max函數或mean函數。過大的採樣區會急劇減少神經元的數量,也會造成更多的信息損失。
  • 卷積網絡的整體結構
    一個典型的卷積網絡是由卷積層、匯聚層、全連接層交叉堆疊而成。目前,卷積網絡的整體結構趨向於使用更小的卷積核,以及更深的結構。此外,卷積的操作性越來越靈活,匯聚層的作用也變得越來越小,因此目前比較流行的卷積網絡中個,匯聚層的比例正在逐漸降低,趨向於全卷積網絡。

幾種典型的卷積神經網絡

  • LeNet-5
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

神經元個數=卷積核數量X輸出特徵圖寬度X輸出特徵圖高度
卷積層可訓練參數數量=卷積核數量X(卷積核寬度X卷積核高度+1)(1表示偏置)
匯聚層可訓練參數數量=卷積核數量X(1+1)(兩個1分別表示相加後的係數和偏置,有的匯聚層無參數)
連接數=卷積核數量X(卷積核寬度X卷積核高度+1)X輸出特徵圖寬度X輸出特徵圖高度(1表示偏置)
全連接層連接數=卷積核數量X(輸入特徵圖數量X卷積核寬度X卷積核高度+1)(輸出特徵圖尺寸爲1X1)

  • AlexNet
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • Inception網絡
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 殘差網絡
    在這裏插入圖片描述

循環神經網絡

循環神經網絡(Recurrent Neural Network, RNN )是一類具有短期記憶能力的神經網絡。在循環神經網絡中,神經元不但可以接受其他神經元的信息,也可以接受自身的信息,形成具有環路的網絡結構。循環神經網絡的參數學習可以通過隨時間反向傳播算法來學習。隨時間反向傳播算法即按照時間的逆序將錯誤信息一步一步的往前傳遞。當輸入序列比較長時,會存在梯度爆炸和消失問題,也稱爲長程依賴問題。爲了解決這個問題,人們對循環神經網絡進行了很多的改進,其中最有效的改進方式引入門控機制。

給網絡增加記憶能力

  • 延時神經網絡
  • 有外部輸入的非線性自迴歸模型
  • 循環神經網絡

簡單循環網絡

應用到機器學習

  • 序列到類別模式
  • 同步的序列到序列模式
  • 異步的序列到序列模式

參數學習

  • 隨時間反向傳播算法
  • 實時循環學習算法

長程依賴問題

循環神經網絡在學習過程中的主要問題是由於梯度消失或爆炸問題,很難建模長時間間隔的狀態之間的依賴關係。

  • 梯度爆炸:權重衰減或梯度截斷來避免。
  • 梯度消失:改變模型

基於門控的循環神經網絡

爲了改善循環神經網絡的長程依賴問題,一種非常好的解決方案是引入門控機制來控制信息的累積速度,包括有選擇的加入新的信息,並有選擇的遺忘之前累積的信息。

  • 長短期記憶網絡
  • LSTM網絡的各種變體
  • 門控循環單元網絡

深層循環神經網絡

  • 堆疊循環神經網絡
  • 雙向循環神經網絡

擴展到圖結構

  • 遞歸神經網絡
  • 圖神經網絡

網絡優化與正則化

雖然神經網絡具有非常強的表達能力,但是當應用神經網絡模型到機器學習依然存在一些難點問題。

  • 優化問題:
    • 深度神經網絡的損失函數是一個非凸函數,找到全局最優解通常比較困難。
    • 深度神經網絡的參數多,訓練數據多,無法使用計算代價很高的二階優化方法,一階優化方法的訓練效率非常低。
    • 深度神經網絡存在梯度消失或爆炸問題,導致梯度的優化方法經常失效。
  • 泛化問題:
    • 深度神經網絡的複雜度較高,並且擬合能力很強,很容易在訓練集上產生過擬合。訓練深度神經網絡時,同時也需要通過一定的正則化方法來改進網絡的泛化能力。

網絡優化

網絡優化是指尋找一個神經網絡模型來使得經驗(或結構)風險最小化的過程,包括模型選擇以及參數學習等。深度神經網絡是一個高度非線性的模型。其風險函數是一個非凸函數,風險最小化是一個非凸優化問題,並且深度神經網絡還存在梯度消失問題。

  • 網絡結構多樣性
    神經網絡的種類非常多,不同參數在網絡中的作用也有很大的差異,很難找到一種通用的優化方法,不同優化方法在不同網絡結構上的表現也有比較大的差異。
  • 高維變量的非凸優化
    • 鞍點
      在高維空間中,非凸優化難點並不在於如何逃離局部最優點,而是如何逃離鞍點(Saddle Point),鞍點的梯度是0,但是在一些維度上是最高點,在另一些維度上是最低點。
    • 局部最小值
      在高維空間中,局部最小值要求在每一維度上都是最低點,這種概率非常低。大部分梯度爲0的駐點都是鞍點。基於梯度下降的優化方法會在鞍點附件接近於停滯,很難從這些鞍點找那個逃離。隨機梯度下降對於高維空間中的非凸優化問題十分重要,通過在梯度方向上引入隨機性,可以有效的逃離鞍點。
    • 平坦最小值
      深度神經網絡的參數非常多,並且有一定的冗餘性,使得每單個參數對最終損失的影響都比較小,會導致損失函數在局部最小解附近通常是一個平坦的區域,稱爲平坦最小值(Flat Minima)。在訓練神經網絡時,不需要精確地找到一個局部最小解,只要在一個局部最小解的領域內就足夠了。平坦最小值通常被認爲和模型泛化能力有一定的關係。當模型收斂到一個平坦的局部最小值時,其魯棒性會更好,即微小的參數變動不會劇烈影響模型能力;而當模型收斂到一個尖銳的局部最小值時,其魯棒性也會比較差,具備良好的泛化能力的模型通常應該是魯棒的,因此理想的局部最小值應該是平坦的。
    • 局部最小解的等價性
      在非常大的神經網絡中,大部分的局部最小解是等價的,它們在測試集上性能都比較相似。此外,局部最小解對應的訓練損失都可能非常接近於全局最小解對應的訓練損失,雖然神經網絡有一定概率收斂於比較差的局部最小值,但隨着網絡規模增加,網絡陷入比較差的局部最小值的概率會大大降低。在訓練神經網絡時,我們通常沒有必要找全局最小值,這反而可能導致過擬合。
  • 神經網絡優化的改善方法
    神經網絡優化的目標是找到更好的局部最小值和提高優化效率。
    • 使用更有效的優化算法來提高梯度下降優化方法的效率和穩定性,比如動態學習率調整、梯度估計修正等。
    • 使用更好的參數初始化方法、數據預處理方法來提高優化效率。
    • 修改網絡結構來得到更好的優化地形(Optimization Landscape),比如使用ReLU激活函數、殘差連接、逐層歸一化等。
    • 使用更好的超參數優化方法。

優化算法

目前,深度神經網絡的參數學習主要是通過梯度下降法來尋找一組可以最小化結構風險的參數。梯度下降法分爲:批量梯度下降、隨機梯度下降以及小批量梯度下降三種形式。根據不同的數據量和參數量,可以選擇一種具體的實現形式,在訓練神經網絡是優化算法大體可以分爲兩類:1)調整學習率,使得優化更穩定;2)梯度估計修正,優化訓練速度。

小批量梯度下降(Mini-Batch Gradient Descent)

影響梯度下降法的主要因素:
- 1)批量大小K;
- 2)學習率α\alpha
- 3)梯度估計
在這裏插入圖片描述

批量梯度大小選擇

批量大小不影響隨機梯度的期望,但是會影響隨機梯度的方差。批量大小越大,隨機梯度的方差越小,引入的噪聲也越小,訓練也越穩定,因此可以設置較大的學習率。而批量大小較小時,需要設置較小的學習率,否則模型會不收斂,學習率通常要隨着批量大小的增大而相應的增大。簡單有效的方法是線性縮放規則(Linear Scaling Rule):當批量大小增加m倍時,學習率也增加m倍。線性縮放規則往往在批量大小比較小時適用,當批量大小非常大時,線性縮放會使得訓練不穩定。批量大小和模型的泛化能力有一定的關係,通過實驗發現:批量越大,越有可能收斂到最小尖銳最小值;批量越小,越有可能收斂到平坦最小值。

學習率調整

  • 學習率衰減,衰減方式設置爲迭代次數進行衰減。
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 學習率預熱
    爲了提高訓練的穩定性,可以在最初幾輪迭代時,採用比較小的學習率,等梯度下降到一定程度後再恢復到初始的學習率,這種方法爲學習率預熱(Learning Rate Warmup)。
  • 週期性學習率調整
    爲了使梯度下降法能夠逃離鞍點或尖銳最小值,一種經驗性的方式是在訓練過程中週期性的增大學習率。當參數處於尖銳最小值附近時,增大學習率有助於逃離尖銳最小值;當參數處於平坦最小值附近時,增大學習率依然有可能在該偏袒最小值的吸引域(Basin of Attraction)內。因此,週期性的增大學習率雖然可能短期內損害優化過程,使得網絡收斂的穩定性變差,但從長期來看有助於找到更好的局部最優解。
    • 循環學習率(Cyclic Learning Rate)即讓學習率在一個區間週期性的增大和縮小。通常可以使用線性縮放來調整學習率,稱爲三角循環學習率(Triangular Cyclic Learning Rate)。
    • 帶熱重啓的隨即梯度(Stochastic Gradient Descent with Warm Restarts, SGDR)用熱重啓方式來替代學習率衰減的方法。學習率每間隔一定週期後重新初始化爲某個預先設定值,然後逐漸衰減,每次重啓後模型參數不是從頭開始優化,而是從重啓前的參數基礎上繼續優化。
  • AdaGrad算法
    在標準的梯度下降法中,每個參數在每次迭代時都使用相同的學習率。由於每個參數的維度上收斂速度都不相同,因此根據不同參數的收斂情況分別設置學習率。
  • RMSProp算法
    避免AdaGrad算法中學習率不斷單調下降以至於過早衰減的缺點。RMSProp算法和AdaGrad算法的區別在於梯度的計算由累積方式變成了衰減趨勢,既可以變小也可以變大。
  • AdaDelta算法
    也是AdaGrad算法的一個改進,和RMSProp算法類似,AdaDelta算法通過梯度平方的知識衰減移動平均來調整學習率。此外,AdaDelta算法還引入了每次參數更新插值的平方的指數衰減動平均。AdaDelta算法將RMSProp算法中的初始學習率改爲動態計算,在一定程度上平抑了學習率的波動。

梯度估計修正

除了調整學習率之外,還可以進行梯度估計(Gradient Estimation)的修正。在隨機(小批量)梯度下降法中,如果每次選取樣本數量比較小,損失會呈現震盪的方式下降。隨機梯度下降法中每次迭代的梯度估計和整個訓練集上的最優梯度並不一致,具有一定的隨機性。一種有效的緩解梯度隨機性的方式是通過使用最近一段時間內的平均梯度來代替當前時刻的隨機梯度來作爲參數更新的方向,從而提高優化速度。

  • 動量法(Momentum)
    模擬物理中的概念,一個物體的動量指的是該物體在它運動方向上保持運動的趨勢,是該物體的質量和速度的乘積。動量法(Momentum Method)是用之前積累動量來替代真正的梯度。每次迭代的梯度可以看作加速度。這樣,每個參數的實際更新差值取決於最近一段時間內梯度的加權平均值。當某個參數在最近一段時間內的梯度方向不一致時,其真實的參數更新幅度變小;相反,當在最近一段時間內的梯度方向都一致時,其真實的參數更新幅度變大,起到加速的作用。一般而言,在迭代初期,梯度方向都比較一致,動量法會起到加速作用,可以更快的到達最優點,在迭代後期,梯度方向會不一致,在收斂值附近震盪,動量法胡起到減速作用,增加穩定性。從某種角度來說,當前梯度疊加上部分的上次梯度一定程度上可以近似看作二階梯度。
  • Nesterov加速梯度(Nesterov Accelerated Gradient, NAG)
    是一種對動量法的改進。
  • Adam算法
    可以看作動量法和RMSProp算法的結合,不但使用動量作爲參數更新方向,而且可以自適應調整學習率。
  • 梯度截斷
    在深度神經網絡中,除了梯度消失之外,梯度爆炸也是影響學習效率的 主要因素。在基於梯度下降的優化過程中,如果梯度突然增大,用大的梯度更新參數反而導致其遠離最優點。爲了避免這種情況,當梯度的模大於一定閾值時,就對梯度進行截斷,稱爲梯度截斷(Gradient Clipping)。
    • 按值截斷
    • 按模截斷

優化算法小結

在這裏插入圖片描述

參數初始化

神經網絡的參數學習是一個非凸優化問題,當使用梯度下降法來進行優化網絡參數時,參數初始值的選取十分關鍵,關係到網絡的優化效率和泛化能力。

  • 預訓練初始化
    不同的參數初始值會收斂到不同的局部最優解。雖然這些局部最優解在訓練集上的損失比較接近,但是它們的泛化能力差異很大。一個好的初始值會使得網絡收斂到一個泛化能力高的局部最優解。一個已經在大規模數據上訓練過的模型可以提供一個好的參數初始化值,這種初始化方法稱爲預訓練初始化(Pre-trained Initialization)。
    預訓練任務可以分爲監督學習或無監督學習任務。由於無監督學習任務更容易獲取大規模的訓練數據,因此被廣泛採用。預訓練模型在目標任務上的學習過程也稱爲精調(Fine-Tuning)
  • 隨機初始化
    在線性模型的訓練(比如感知器和Logistics迴歸)中,一般將參賽全部初始化爲0。但是在神經網絡的訓練中會存在一些問題。因爲如果參數都爲0,在第一遍前向計算時,所有的隱藏層神經元的激活值都相同;在反向傳播時,所有權重的更新也都相同,這樣會導致隱藏神經元沒有區分性。這種現象也稱爲對稱權重現象。爲了打破這種平衡,比較好的方式是對每個參數都隨機初始化(Random Initialization),使得不同個神經元之間的區分性更好。
  • 固定值初始化
    對於一些特殊的參數,可以根據經驗用一個特殊的固定值來進行初始化。比如偏置通常用0來初始化,但是有時候可以設置某些經驗值以提高優化效率。

基於固定方差的參數初始化

一種最簡單的隨機初始化方法是從一個固定均值和方差的分佈中採樣來生成參數的初始值。

  • 高斯分佈初始化
  • 均勻分佈初始化

基於固定方差的隨機初始化方法中,比較關鍵的是如何設置方差,如果參數的範圍取值太小,一是會導致神經元的輸出過小,經過多層之後信號就慢慢消失了;二是還會使得sigmoid型激活函數丟失非線性的能力。以sigmoid型函數爲例,在0附近基本上是近似線性的。這樣多層神經網絡的優勢也就不存在了。如果參數範圍取的太大,會導致輸入狀態過大。對於sigmoid型激活函數來說,激活值變得飽和,梯度接近於0,從而導致梯度消失問題。
爲了降低固定方差對網絡性能以及優化效率的影響,基於固定方差的隨機初始化方法一般需要配合逐層歸一化來使用。

基於方差縮放的參數初始化

要高效的訓練神經網絡,給參數選取一個合適的隨機初始化區間是非常重要的。一般而言,參數初始化的區間應該根據神經元的性質進行差異化的設置。如果一個神經元的輸入連接很多,它的每個輸入連接上的權重就應該小一些,以避免神經元的輸出過大(當激活函數WieReLU時)或過飽和(當激活函數爲Sigmoid函數時)。
初始化一個深度網絡時,爲了緩解梯度爆炸問題,儘可能保持每個神經元的輸入和輸出的方差一致,根據神經元的連接數量來自適應的調整初始化分佈的方差,這類方法稱爲方差縮放(Variance Scaling)。

  • Xavier初始化
    在這裏插入圖片描述
  • He初始化
    在這裏插入圖片描述

正交初始化

基於方差的初始化方法都是對權重矩陣中的每個參數進行獨立採樣,由於採樣的隨機性,採樣出來的權重矩陣依然可能存在梯度消失或梯度爆炸問題。
在這裏插入圖片描述

數據預處理

對於尺度敏感的模型,必須先對樣本進行預處理,將各個維度的特徵轉換到相同的取值區間,並且消除不同特徵之間的相關性,才能獲取比較理想的結果。從理論上,神經網絡應該具有尺度不變性,可以通過參數的調整來適應不同特徵的尺度。不同輸入特徵的尺度差異比較大時,梯度下降法的效率也會受到影響。

  • 歸一化(Normalization)方法泛指把數據特徵轉換爲相同尺度的方法。神經網絡中經常使用的歸一化方法。
    • 最小最大值歸一化(Min-Max Normalization)
    • 標準化(Standardization) 也叫Z值歸一化(Z-Score Normalization),來源與統計上的標準分數。將每一個維特徵都調整爲均值爲0,方差爲1.
    • 白化(Whiting)是一種重要的預處理方法,用來降低輸入數據特徵之間的冗餘性。輸入數據經過白化處理後,特徵之間相關性較低,並且所有特徵具有相同的方差。白化的一個主要實現方式是使用主成分分析(Principal Component Analysis, PCA)方法去除掉各個成分之間的相關性。
      在這裏插入圖片描述

逐層歸一化

逐層歸一化(Layer-wise Normalization)是將傳統機器學習中的數據歸一化方法應用到深度神經網絡中,對神經網絡中隱藏層的輸入進行歸一化,從而使得網絡更容易訓練。

逐層歸一化提高訓練效率的原因有:

  • 更好的尺度不變性:對每一個神經層的輸入進行歸一化操作,使其分佈保持穩定。把每個神經層的輸入分佈都歸一化爲標準正態分佈,可以使得每個神經層對其輸入具有更好的尺度不變性。不論低層的參數如何變化,高層的輸入保持相對穩定。另外,尺度不變性可以使得我們更加高效的進行參數初始化以及超參數選擇。

  • 更平滑的優化地形:逐層歸一化一方面可以使得大部分神經層的輸入處於不飽和區域,從而讓梯度變大,避免梯度消失問題;另一方面還可以使得神經網絡的優化地形(Optimization Landscape)更加平滑,以及使梯度變得更加穩定,從而允許使用更大的學習率,並提高收斂速度。
    常用逐層歸一化方法:

  • 批量歸一化(Batch Normalization, BN)是一種有效的逐層歸一化方法,可以對神經網絡中的任意的中間層進行歸一化操作。逐層歸一化不但可以提高優化效率,還可以作爲一種隱形的正則化方法。在訓練時,神經網絡對一個樣本的預測不僅和該樣本自身相關,也和同一批次中的其他樣本相關。由於在選取批次時具有隨機性,因此使得神經網絡不會“過擬合”到某個特定樣本,從而提高網絡的泛化能力。
    在這裏插入圖片描述

  • 層歸一化
    批量歸一化是對一箇中間層的單個神經元進行歸一化操作,因此要求小批量樣本的數量不能太小,否則難以計算單個神經元的統計信息。此外,如果一個神經元的淨輸入的分佈在神經網絡中是動態變化的,比如循環神經網絡,那麼就無法應用批量歸一化操作。
    層歸一化和批量歸一化非常類似的方法,和批量歸一化不同的是,層歸一化對一箇中間層的所有神經元進行歸一化。
    在這裏插入圖片描述

  • 權重歸一化
    在這裏插入圖片描述

  • 局部響應歸一化
    在這裏插入圖片描述

超參數優化

超參數類型:

  • 網絡結構,包括神經元之間的連接關係、層數、每層的神經元數量、激活函數的類型等。
  • 優化參數,包括優化方法、學習率、小批量的樣本數量等。
  • 正則化係數。

超參數優化困難:

  • 超參數優化是一個組合優化問題,無法像一般參數那樣通過梯度下降法來優化,也沒有一種通用有效的優化方法。
  • 評估一組超參數配置的時間代價非常高,從而導致一些優化方法在超出那是優化中難以應用。

超參數配置方法:

  • 網格搜索
    通過嘗試所有超參數的組合來尋址合適一組超參數配置方法。

  • 隨機搜索
    不同超參數對模型性能的影響有很大差異,有些超參數(比如正則化係數)對模型性能的影響有限,而另一些超參數(比如學習率)對模型影響比較大。在這種情況下,採用網格搜索會在不重要的超參數上進行不必要的嘗試。一個種 在實踐中比較有效的改進方法是對超參數進行隨機組合,然後選取一個性能最好的配置,這就是隨機搜索。隨機搜索在實踐中更容易實現,一般會比網格搜索更加有效。
    網格搜索和隨機搜索都沒有利用不同超參數組合之間的相關性,即如果模型的超參數組合比較類似,其模型性能也是比較接近的。因此這兩種搜索方式一般都比較低效。

  • 貝葉斯優化(Bayesian Optimization)
    是一種自適應的超參數優化方法,根據當前已經試驗的超參數組合,來預測下一個可能帶來最大收益的組合。

  • 動態資源分配

  • 神經架構搜索、
    通過神經網絡來自動實現架構的設計。一個神經網絡的架構可以用一個變長的字符串來描述。利用元學習的思想,神經架構搜索利用一個控制器來生成一個變長的字符串來描述。利用元學習的思想,神經架構搜索利用一個控制器來生成另一個子網絡的架構描述。控制器可以由一個循環神經網絡來實現。控制器的訓練可以通過強化學習來完成,其獎勵信號爲生成的自網絡在開發集上的準確率。

網絡正則化

正則化(Regularization)是一類通過限制模型複雜度,從而避免過擬合,提高泛化能力的方法。

在傳統的機器學習中,提高泛化能力的方法主要是限制模型複雜度,比如正則化的方式。而在訓練深度神經網絡時,特別是在過度參數化時,正則化的效果往往不如淺層機器學習模型中顯著。因此,訓練深度學習模型時,往往還會使用其他的正則化方法,比如數據增強、提前停止、丟棄法、集成法等。

  • L1和L2正則化
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 權重衰減
    在這裏插入圖片描述
  • 提前停止
    在這裏插入圖片描述
  • 丟棄法
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 數據增強
    深度神經網絡一般都需要大量的訓練數據才能獲得比較理想的效果。在數據量有限的情況下,可以通過數據增強(Data Augmentation)來增加數據量,提高模型魯棒性,避免過擬合。目前,數據增強還主要應用在圖像數據上,在文本等其他類型的數據上還沒有太好的方法。
    圖像數據的增強主要是通過算法對圖像進行轉變,引入噪聲等方法來增強數據的多樣性。增強的方法主要有幾種:
    • 旋轉(Rotation):將圖像按順時針或逆時針方向隨機旋轉一定角度。
    • 翻轉(Flip):將圖像沿水平或垂直方法隨機翻轉一定角度。
    • 縮放(Zoom In/Out):將圖像放大胡縮小一定比例。
    • 平移(Shift):將圖像沿水平或垂直方法平移一定步長。
    • 加噪聲(Noise):加入隨機噪聲。
  • 標籤平滑
    在這裏插入圖片描述
    在這裏插入圖片描述

總結

深度神經網絡的優化和正則化是既對立又統一的關係。一方面我們希望優化算法能找到一個全局最優解(或較好的局部最優解),另一方面我們又不希望模型優化到最優解,這可能陷入過擬合。優化和正則化的統一目標是期望風險最小化。今年來深度學習的快速發展在一定程度上也歸因於很多深度神經網絡的優化和正則化方法的出現,雖然這些方法往往是經驗性的,但在實踐中取得了很好的效果,使得我們可以高效地、端到端的訓練神經網絡模型。

在優化方面,訓練神經網絡時的主要難點是非凸優化以及梯度消失問題。在深度學習技術發展的初期,通常需要利用預訓練和逐層訓練等比較低的方法來輔助優化。隨着深度學習技術的發展,我們目前通常可以高效的、端到端的訓練一個深度神經網絡。這些提高訓練效率的方法通常分爲以下3個方面:

  • 修改網絡模型來得到更好的優化地形,比如使用逐層歸一化、殘差連接以及ReLU激活函數等;
  • 使用更有效的優化算法,比如動態學習率以及梯度估計修正等;
  • 使用更好的參數初始化方法。

在泛化方面,傳統的機器學習中有一些很好的理論可以幫助我們在模型的表示能力、複雜度和泛化能力之間找到比較好的平滑,但是這些理論無法解釋深度神經網絡在實際應用中的泛化能力表現。根據通用近似定理,神經網絡的表示能力十分強大。從直覺上,一個過度參數化的深度神經網絡很容易產生過擬合現象,因爲它的容量足夠記住所有訓練數據。但是實驗表明,深度神經網絡在訓練過程中依然優先記住訓練數據中的一般模式(Pattern),即具有高泛化能力的模式。但目前,深度神經網絡的泛化能力還沒有很好的理論支持。在傳統的機器學習模型中比較有效的正則化在深度神經網絡中的作用也比較有限,而一些經驗的做法(比如小的批量大小、大的學習率、提前停止、丟棄法、數據增強)會更有效。

注意力機制與外部記憶

根據通用近似定理,前饋網絡和循環網絡都有很強的能力。但由於優化算法和計算能力的限制,在實踐中很難達到通用近似的能力。特別是在處理複雜任務時,比如需要處理大量的輸入信息或者複雜的計算流程時,目前計算機的計算能力依然是限制神經網絡發展的瓶頸。

wield減少計算複雜度,通過部分借鑑生物神經網絡的一些機制,我們引入了局部連接、權重共享以及匯聚操作來簡化神經網絡結構。雖然這些機制可以有效緩解模型的複雜度和表達能力之間的矛盾,但是我們依然希望在不“過度”增加模型複雜度(主要是模型參數)的情況下來提高模型的表達能力。

神經網絡中可以存儲的信息量稱爲網絡容量(Network Capacity)。一般來講,利用一組神經元來存儲信息時,其存儲容量和神經元的數量以及網絡的複雜度成正比。要存儲的信息越多,神經元數量就要越多或者網絡要越複雜,進而導致神經網絡的參數成倍的增加。

我們人腦的生物神經網絡同樣存在網絡容量問題,人腦中的工作記憶大概只要幾秒鐘的時間,類似於循環神經網絡中的隱狀態。而人腦每個時刻接收的外界輸入信息非常多,包括來自於視覺、聽覺、觸覺的各種各樣的信息。單就視覺來說,眼睛每秒鐘都會發送千萬比特的信息給視覺神經系統。人腦在有限的資源下,並不能同時處理這些過載的輸入信息。大腦神經系統由兩個重要機制可以解決信息過載問題:注意力機制和記憶機制。

我們可以借鑑人腦解決信息過載的機制,從兩方面來提高神經網絡處理信息的能力。一方面是注意力,通過自上而下的信息選擇機制來過濾掉大量的無關信息;另一方面是引入額外的外部記憶,優化神經網絡的記憶結構來提高神經網絡存儲信息的容量。

認知神經學中的注意力

注意力是一種人類不可或缺的複雜認知功能,指人可以在關注一些信息的同時忽略另一些信息的選擇能力。在日常生活中,我們通過視覺、聽覺、觸覺等方式接收大量的感覺輸入。但是人腦還能在這些外界的信息轟炸中有條不紊的工作,是因爲人腦可以有意或無意的從這些大量輸入信息中選擇小部分的有用信息來重點處理,並忽略其他信息。這種能力就叫作注意力(Attention)。注意力可以作用在外部的刺激(聽覺、視覺、味覺等),也可以作用在內部的意識(思考、回憶等)。
注意力一般分爲兩種:

  • 自上而下的有意識的注意力,稱爲聚焦式注意力(Focus Attention)。也常稱爲選擇性注意力(Selective Attention )。聚焦式注意力是指有預定目的、依賴任務的,主動有意識的聚焦於某一對象的注意力。
  • 自下而上的無意識的注意力,稱爲基於顯著性的注意力(Saliency-Based Attention)。基於顯著性的注意力是由外界刺激驅動的注意,不需要主動干預,也和任務無關。如果一個對象的刺激信息不同於其周圍信息,一種無意識的“贏者通喫”(Winner-Take-All)或者門控(Gating)機制就可以把注意力轉向這個對象。不管這些注意力是有意還是無意,大部分的人呢腦活動都需要依賴注意力,比如記憶信息、閱讀或思考等。

注意力機制

在計算能力有限的情況下,注意力機制(Attention Mechanism)作爲一種資源配置方案,將有限的計算資源用來處理更重要的信息,是解決信息超載問題的主要手段。
當用神經網絡來處理大量的輸入信息時,也可以借鑑人腦的注意力機制,只選擇一些關鍵的信息輸入進行處理,來提高神經網絡的效率。

在目前的神經網絡模型中,我們可以將最大匯聚(Max Pooling)、門控(Gating)機制近似的看做自上而下的基於顯著性的注意力機制。除此之外,自上而下的聚焦式注意力也是一種有效的信息選擇方式。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

注意力機制的變體

  • 硬性注意力
    在這裏插入圖片描述
  • 鍵值對注意力
    在這裏插入圖片描述
  • 多頭注意力
    在這裏插入圖片描述
  • 結構化注意力
    在這裏插入圖片描述
  • 指針網絡
    在這裏插入圖片描述

自注意力模型

當使用神經網絡來處理一個邊長的向量序列時,我們通常可以使用卷積網絡或循環網絡進行編碼來得到一個相同長度的輸出向量序列。
在這裏插入圖片描述
基於卷積或循環網絡的序列編碼都是一種局部的編碼方式,只建模了輸入信息的局部依賴關係。雖然循環網絡理論上可以建立長距離依賴關係,但是由於信息傳遞的容量以及梯度消失的問題,實際上也只能建立短距離依賴關係。

如果要建立輸入序列之間的長距離依賴關係,可以使用以下兩種方法:一種方法是增加網絡的層數,通過一個深層網絡來獲取遠距離的信息交互;另一種方法是使用全連接網絡。全連接網絡是一種非常直接的建模遠距離依賴的模型,但是無法處理變長的輸入序列。不同的輸入長度,其連接權重的大小也是不同的。這時我們可以利用注意力機制來“動態”的生成不同連接的權重,這就是自注意力模型(Self-Attention Model)。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

人腦中的記憶

在生物神經網絡中,記憶是外界信息在人腦中的存儲機制。大腦記憶毫無疑問是通過生物神經網絡實現的。雖然其機理目前還無法解釋,但直觀上記憶機制和神經網絡的連接形態以及神經元的活動相關。生理學家發現信息是作爲一種整體效應(Collective Effect)存儲在大腦組織中。當大腦皮層的不同部位損傷時,其導致的不同行爲表現似乎取決於損傷的程度而不是損傷的確切位置。大腦組織的每個部分似乎都攜帶一些導致相似行爲的信息。也就是說大腦皮層是分佈式存儲的,而不是存儲於某個局部區域。

人腦中的記憶具有周期性和聯想性。

  • 記憶週期
    雖然我們不清楚人腦記憶的存儲機制,但是已經大概可以確定不同腦區參與了記憶形成的幾個階段。人腦記憶的一個特點是,記憶一般分爲長期記憶和短期記憶。長期記憶(Long-Term Memory),也稱爲結構記憶或知識(Knowledge),體現爲神經元之間的連接形態,其更新速度比較慢。短期記憶(Short-Term Memory)體現爲神經元的活動,更新較快,維持時間爲幾秒至幾分鐘。短期記憶是神經連接的暫時性強化,通過不斷鞏固、強化可形成長期記憶。短期記憶、長期記憶的動態更新過程稱爲演化(Evolution)過程。
    因此,長期記憶可以類比於人工神經網絡中的權重參數,而短期記憶可以類比於人工神經網絡中的隱狀態。

  • 工作記憶
    除了長期記憶和短期記憶,人腦中還會存在一個“緩存”,稱爲工作記憶(Working Memory)。在執行某個認知行爲(比如記下電話號碼,做算術運算)時,工作記憶是一個記憶的臨時存儲和處理系統,維持時間通常爲幾秒鐘。從時間上看,工作記憶也是一種短期的記憶,但和短期記憶的內涵不同。短期記憶一般指外界的輸入信息在人腦中的表示和短期存儲,不關心這些記憶如何被使用;而工作記憶是一個和任務相關的“容器”,可以臨時存放和某項任務相關的短期記憶和其相關的內在記憶。工作記憶的容量比較小,一般可以容納4組項目。

  • 聯想記憶
    大腦記憶的一個主要特點是通過聯想來進行檢索的。聯想記憶(Associative Memory)是指一種學習和記住不同對象之間關係的能力。
    聯想記憶是指一種可以通過內容匹配的方法進行尋址的信息存儲方式,也稱爲基於內容尋址的存儲(Content-Addressable Memory, CAM)。作爲對比,現代計算機的存儲方式是根據地址來進行存儲的,稱爲隨機訪問存儲(Random Access Memory, RAM)。

借鑑人腦中工作記憶,可以在神經網絡中引入一個外部記憶單元來提高網絡容量。外部記憶的實現途徑有兩種:一種是結構化的記憶,這種記憶和計算機中的信息存儲方法比較類似,可以分爲多個記憶片段,並按照一定的結構來存儲;另一種基於神經動力學的聯想記憶,這種記憶方式具有更好的生物學解釋性。

記憶增強神經網絡

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  • 端到端的記憶網絡
    端到端記憶網絡(End-to-End Memory Network,MemN2N)採用一種可微的網絡結構,可以多次從外部記憶中讀取信息。在端到記憶網絡中,外部記憶單元是隻讀的。
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 神經圖靈機
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

記憶神經動力學的聯想記憶

在這裏插入圖片描述

  • Hopfield網絡
    神經完了除了作爲一種機器學習模型的輸入-輸出映射函數,其參數學習方法是通過梯度下降方法來最小化損失函數。除了作爲機器學習模型外,神經網絡還可以作爲一種記憶的存儲和檢索模型。

Hopfield網絡是一種循環神經網絡模型,由一組互相連接的神經元組成。Hopfield網絡也可以認爲是所有神經元都相互連接的不分層的神經網絡。每個神經元既是輸入單元,又是輸出單元,沒有隱藏神經元。一個神經元好自身沒有反饋相連,不同神經元之間連接權重是對稱的。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  • 使用聯想記憶增加網絡容量
    在這裏插入圖片描述

總結

注意力機制是一種受人類神經系統啓發的信息處理機制。比如人視覺神經系統並不會一次性的處理所有接收到視覺信息,而是有選擇性的處理部分信息,從而提高其工作效率。

無監督學習

無監督學習(Unsupervised Learning, UL)是指從無標籤的數據中學習出一些有用的模式。無監督學習算法一般直接從原始數據中學習,不借助於任何人工給出標籤或者反饋等指導信息。如果監督學習是建立輸入-輸出之間的映射關係,那麼無監督學習就是發現隱藏的數據中的有價值信息,包括有效的特徵、類別、結構以及概率分佈等。

在這裏插入圖片描述

和監督學習一樣,無監督學習方法也包含三個基本要素:模型、學習準則和優化算法。無監督學習的準則非常多,比如最大似然估計、最小重構錯誤等。在無監督學習中,經常使用的準則爲最小化重構錯誤,同時也經常對特徵進行一些約束,比如獨立性、非負性或稀釋性等。而在密度估計中,經常採用最大似然估計進行學習。

無監督特徵學習

無監督特徵學習是指從無標註的數據中自動學習有效的數據表示,從而能夠幫助後續的機器學習模型更快速的達到更好的性能。無監督特徵學習主要方法有主成分分析、稀疏編碼、自編碼等。

  • 主成分分析
    主成分分析(Principal Component Analysis,PCA)是一種最常用的數據降維方法,使得在轉換後的空間中總數據的方差最大。
    主成分分析是一種無監督學習方法,可以作爲監督學習的數據預處理方法,用來去除噪聲並減少特徵之間的相關性,但是它並不能保證投影后數據的類別可分性更好。提高兩類可分性的方法一般爲監督學習方法,比如線性判別分析(Linear Discriminant Analysis,LDA)。
  • 稀疏編碼
    在這裏插入圖片描述
    • 訓練方法
      在這裏插入圖片描述
    • 稀疏編碼的優點
      在這裏插入圖片描述
  • 自編碼器
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 稀疏自編碼器
    在這裏插入圖片描述
  • 堆疊自編碼器
    在這裏插入圖片描述
  • 降噪自編碼器
    在這裏插入圖片描述

概率密度估計

概率密度估計(Probabilistic Density Estimation),簡稱密度估計(Density Estimation),是基於一些觀測樣本來估計一個隨機變量的概率密度函數。

參數密度估計

在這裏插入圖片描述

  • 正態分佈
    在這裏插入圖片描述
  • 多項式分佈
    在這裏插入圖片描述
    在這裏插入圖片描述

非參數密度估計

在這裏插入圖片描述
在這裏插入圖片描述

  • 直方圖方法
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 核方法
    在這裏插入圖片描述
    在這裏插入圖片描述
  • K近鄰方法
    在這裏插入圖片描述

模型獨立的學習方式

集成學習

集成學習(Ensemble Learning)就是同構某種策略將多個模型集成起來,通過羣體決策來提高決策準確率。集成學習首要的問題是如何集成多個模型。比較常用的集成策略有直接平均、加權平均等。
在這裏插入圖片描述

自訓練和協同訓練

監督學習往往需要大量的標註數據,而標註數據的成本比較高。因此,利用大量的無標註數據來提高監督學習的效果有着十分重要的意義。這種利用少量標註數據和大量無標註數據進行學習的方式稱爲半監督學習(Semi-Supervised Learning,SSL)。半監督學習算法:自訓練和協同訓練。

  • 自訓練
    在這裏插入圖片描述
  • 協同訓練
    協同訓練(Co-Training)是自訓練的一種改進方法,通過兩個基於不同視角(view)的分類器來互相促進。
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

多任務學習

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

遷移學習

在這裏插入圖片描述

  • 歸納遷移學習
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 轉導遷移學習
    在這裏插入圖片描述

終身學習

在這裏插入圖片描述

元學習

在面對不同的任務時,人腦的學習機制並不相同。即使面對一個新的任務,人們往往也可以很快找到其學習方式。這種可以動態調整學習方式的能力,稱爲元學習(Meta-Learning),也稱爲學習的學習(Learning to Learn)。

元學習的目的是從已有任務中學習一種學習方法或元知識,可以加速新任務的學習。從這個角度來說,元學習十分類似於歸納遷移學習,但元學習更側重從多種不同(甚至不相關)的任務中歸納出一種學習方法。

和元學習比較相關的另一個機器學習問題是小樣本學習(Flow-shot Learning),即在小樣本上的快速學習能力。每個類別只有K個標註樣本,K非常小。如果K=1,稱爲單樣本學習(One-shot Learning);如果K=0,稱爲零樣本學習(Zero-shot Learning)。

  • 基於優化器的元學習
    在這裏插入圖片描述
  • 模型無關的元學習
    在這裏插入圖片描述

概率圖模型

概率圖模型(Probabilistic Graphical Model, PGM)簡稱圖模型(Graphical Model, GM),是指一種用途結構來描述多元隨機變量之間條件獨立關係的概率模型,從而給研究高維空間中的概率模型帶來了很大的便捷性。
在這裏插入圖片描述

模型表示

圖由一組節點和節點之間的邊組成。在概率圖模型中,每個節點都表示一個隨機變量(或一組隨機變量),邊表示這些隨機變量之間的概率依賴關係。
在這裏插入圖片描述

  • 有向圖模型
    有向圖模型(Directed Graphical Model),也稱爲貝葉斯網絡(Bayesian Network)或信念網絡(Belief Network,BN),是一類用有向圖來描述隨機向量概率分佈的模型。
    條件獨立性 ,在貝葉斯網絡中,如果兩個節點是直接連接的,它們肯定是非條件獨立的,是直接因果關係。父節點是“因”,子節點是“果”。
    局部馬爾可夫性質,對一個更一般的貝葉斯網絡,其局部馬爾可夫性質爲:每個隨機變量在給定父節點的情況下,條件獨立於它的非後代節點。
  • 常見的有向圖模型
    • Sigmoid信念網絡
      爲了減少模型參數,可以使用參數化模型來建模有向圖模型中的條件概率分佈。一種簡單的參數化模型爲Sigmoid信念網絡。
      在這裏插入圖片描述
    • 樸素貝葉斯分類器
      在這裏插入圖片描述
      在這裏插入圖片描述
    • 隱馬爾科夫模型
      在這裏插入圖片描述
  • 無向圖模型
    無向圖模型,也稱爲馬爾可夫隨機場(Markov Random Field,MRF)或馬爾可夫網絡(Markov Network),是一類用無向圖來描述一組具有局部馬爾可夫性質的隨機向量的聯合概率分佈的模型。
  • 無向圖模型的概率分解

    • 在這裏插入圖片描述
      在這裏插入圖片描述
    • 因子分解
      無向圖中的聯合概率可以分解爲一系列定義在最大團上的非負函數的乘積形式。
    • 吉布斯分佈
      吉布斯分佈一定滿足馬爾可夫隨機場的條件獨立性質,並且馬爾可夫隨機場的概率分佈一定可以表示成吉布斯分佈。
  • 常見的無向圖模型
    • 對數線性模型
    • 條件隨機場
  • 有向圖和無向圖之間的轉換
    有向圖和無向圖可以相互轉換,但將無向圖轉爲有向圖通常比較困難。在實際應用中,將有向圖轉爲無向圖更加重要,這樣可以利用無向圖上的精確推斷算法,比如聯合樹算法。無向圖模型可以表示有向圖模型無法表示的一些依賴關係,比如循環依賴;但它不能表示有向圖模型能夠表示的某些關係,比如因果關係。

學習

圖模型的學習可以分爲兩部分:一是網絡結構學習,即尋找最優的網絡結構;二是網絡參數估計,即已知網絡機構,估計每個條件概率分佈的參數。

  • 不含隱變量的參數估計
    如果圖模型中不包含隱變量,即所有變量都是可觀測的,那麼網絡參數一般可以直接通過最大似然來進行估計。無向圖模型的參數估計要比有向圖更爲複雜。在有向圖中,每個局部條件概率的參數是獨立的;而在無向圖中,所有的參數都是相關的,無法分解。
  • 含隱變量的參數估計
    如果圖模型中包含隱變量,即有部分變量是不可觀測的,就需要用EM算法進行參數估計。
    • EM算法
      EM算法是含隱變量圖模型的常用參數估計方法,通過迭代的方法來最大化邊際似然。EM算法具體分爲兩個步驟:E步和M步。這兩步不斷重複,直到收斂到某個局部最優解。
    • 高斯混合模型
      高斯混合模型(Gaussian Mixture Model,GMM)是由多個高斯分佈組成的模型,其總體密度函數Wie多個高斯密度函數的加權組合。如果一個連續隨機變量後連續隨機向量的分佈比較複雜,那麼我們通常可以用高斯混合模型來估計其分佈情況。

推斷

在這裏插入圖片描述

  • 精確推斷
    精確推斷(Exact Inference)算法是指可以計算出條件概率的精確解的算法。
    • 變量消除法
      利用動態規劃的思想,每次消除一個變量,來減少計算邊際分佈的計算複雜度,稱爲變量消除法(Variable Elimination Algorithm)。隨着圖模型規模的增長,變量消除法的收益越大。變量消除法可以按照不同的順序來消除變量。但是在計算多個邊際分佈時存在很多重複的計算。
    • 信念傳播算法
      信念傳播(Belief Propagation, BP)算法,也稱爲和積(Sum-Product)算法或消息傳遞(Message Passsing)算法,是將變量消除法中的和積操作看作消息,並保存起來,這樣可以節省大量的計算資源。
      在這裏插入圖片描述
  • 近似推斷
    在實際應用中精確推斷一般用於結構比較簡單的推斷問題。當圖模型的結構比較複雜時,精確推斷的計算開銷會比較大。此外,如果圖模型中的變量是連續的,並且其積分函數沒有閉式(Closed-Form)解,那麼也無法使用精確推斷。因此,在很多情況下也常常採用近似的方法來進行推斷。
    在這裏插入圖片描述

變分推斷

變分法(Calculus Of Variations)主要研究變分問題,即泛函的極值問題。

在這裏插入圖片描述
在這裏插入圖片描述

基於採樣法的近似推斷

在這裏插入圖片描述

  • 採樣法
    採樣法(Sampling Method)也稱爲蒙特卡羅方法(Monte Carlo Method)或統計模擬方法,是通過隨機採樣來近似估計一些計算問題數值解的方法。隨機採樣指從給定概率密度函數中抽取出符合其概率分佈的樣本。採樣法的難點是如何進行隨機採樣,即如何讓計算機生成滿足概率密度函數的樣本。如果要隨機生成服從某個非均勻分佈的樣本,就需要一些間接的採樣方法。
  • 拒絕採樣
    拒絕採樣(Rejection Sampling)是一種間接採樣方法,也稱爲接受-拒絕採樣(Acceptance-Rejection Sampling)。假設原始分佈難以直接採樣,可以直接引入一個容易採樣的分佈,稱爲提議分佈,然後以某個標準來拒絕一部分的樣本使得最終採集的樣本服從原始分佈。
    判斷一個拒絕採樣方法的好壞就是看其採樣效率,即總體的接受率,如果提議分佈函數遠大於原始分佈函數,拒絕率會比較高,採樣效率會非常不理想。但是要找到一個和原始分佈比較接近的提議分佈往往比較困難,特別是在高維空間中,其採樣率會非常低,導致很難應用到實際問題中。
  • 重要性採樣
    如果採樣的目的是計算分佈函數的期望,那麼實際上抽取的樣本不需要嚴格服從原始分佈,可以直接通過提議分佈,直接採樣並估計期望。重要採樣是通過引入重要性權重,將原始分佈下的期望變爲提議分佈下期望的近似計算。
  • 馬爾科夫鏈蒙特卡羅方法
    在這裏插入圖片描述
    • Metropolis-Hastings算法
      在這裏插入圖片描述
    • Metropolis算法
      在這裏插入圖片描述
    • 吉布斯採樣
      在這裏插入圖片描述

總結

在這裏插入圖片描述
概率圖模型中最基本的假設是條件獨立性。圖形化表示直觀地描述了隨機變量之間的條件獨立性,有利於將複雜的概率模型分解爲簡單模型的組合,並更好的理解概率模型的表示、推斷、學習等方法。

圖模型與神經網絡有這類似的網絡結構,但兩者也有很大的不同。圖模型的節點是隨機變量,其圖結構的主要功能是描述變量之間的依賴關係,一般是係數連接。使用圖模型的好處是可以有效的進行統計推斷。而神經網絡中的節點是神經元,是一個計算節點。圖模型中的每個變量一般有着明確的解釋,變量之間依賴關係一般是人工來定義。而神經網絡中的單個神經元則沒有直觀的解釋。如果將神經網絡中每個神經元看作一個二值隨機變量,那神經網絡就變成一個Sigmoid信念網絡。

神經網絡是判別模型,直接用來分類。而圖模型不但可以是判別模型,也可以是生成模型。生成模型不但可以用來生成樣本,也可以通過貝葉斯公式用來做分類。圖模型的參數學習的目標函數爲似然函數或條件似然函數,若包含隱變量則通常通過EM算法來求解。而神經網絡參數學習的目標函數爲交叉熵或平方誤差等損失函數。

目前,神經網絡和概率圖模型的結合越來越緊密。一方面可以利用神經網絡強大的表示能力和擬合能力來建模圖模型中的推斷問題,生成問題,或勢能函數;另一方面可以利用圖模型的算法來解決複雜結構神經網絡中的學習和推斷問題。

深度信念網絡

對於一個複雜的數據分佈,我們往往只能觀測到有限的局部特徵,並且這些特徵通常會包含一定的噪聲。如果要對這些數據分佈進行建模,就需要挖掘出可觀測變量之間複雜的依賴關係,以及可觀測變量背後隱藏的內部表示。

深度信念網絡中包含很多層的隱變量,可以有效的學習數據的內部特徵表示,也可以作爲一種有效的非線性降維方法。這些學習到的內部特徵表示包含了數據的更高級的、有價值的信息,因此十分有助於後續的分類和迴歸等任務。

玻爾茲曼機和深度信念網絡都是生成模型,藉助隱變量來描述複雜的數據分佈,作爲概率圖模型,玻爾茲曼機和深度信念網絡的共同問題是推斷和學習問題。

玻爾茲曼機

在這裏插入圖片描述
玻爾茲曼機可以用來解決兩類問題。一類是搜索問題:當給定變量之間的連接權重時,需要找到一組二值向量,使得整個網絡的能力最低。另一類是學習問題:當給定變量的多組觀測值時,學習網絡的最優權重。

  • 生成模型
  • 能量最小化與模擬退火
  • 參數學習

受限玻爾茲曼機

在這裏插入圖片描述

  • 生成模型
  • 參數學習
    • 對比散度學習算法
  • 受限玻爾茲曼機的類型

深度信念網絡

在這裏插入圖片描述

  • 生成模型
  • 參數學習
    • 逐層預訓練
    • 精調

深度生成模型

在這裏插入圖片描述
在這裏插入圖片描述

概率生成模型

  • 密度估計
    在這裏插入圖片描述
  • 生成樣本
    在這裏插入圖片描述
  • 應用於監督學習
    在這裏插入圖片描述

變分自編碼器

  • 含隱變量的生成模型
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 推斷網絡
    在這裏插入圖片描述
  • 生成網絡
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 模型彙總
    在這裏插入圖片描述
  • 再參數化
    在這裏插入圖片描述
  • 訓練
    通過再參數化,變分自編碼器可以通過梯度下降法來學習參數,從而提高變分自編碼器的訓練效率。

生成對抗網絡

  • 顯示密度模型和隱式密度模型
    在這裏插入圖片描述
  • 網絡分解
    在這裏插入圖片描述
    在這裏插入圖片描述
    • 判別網絡
      在這裏插入圖片描述
    • 生成網絡
      在這裏插入圖片描述
  • 訓練
    對抗網絡的訓練比較難,需要平衡兩個網絡的能力。對於判別網絡來說,一開始的判別能力不能太強,否則難以提升生成網絡的能力。但是,判別網絡的判別能力也不能太弱,否則針對它訓練的生成網絡也不會太好。在訓練時需要使用一些技巧,使得在每次迭代中,判別網絡比生成網絡的能力強一些,但又不能強太多。每次迭代時,判別網絡更新K次而生成網絡更新一次,即首先要保證判別網絡足夠強才能開始訓練生成網絡。實踐中K是一個超參數,其取值一般取決於具體任務。
  • 一個生成對抗網絡的具體實現:DCGAN
    生成對抗網絡是指一類採用對抗訓練方式來進行學習的深度生成模型,其包含的判別網絡和生成網絡都可以根據不同的生成任務使用不同的網絡結構。深度卷積生成對抗網絡(Deep Convolutional Generative Adversarial Network, DCGAN)的判別網絡是一個傳統的深度卷積網絡,但使用了帶步長的卷積來實現下采樣操作,不用最大匯聚操作;生成網絡使用了一個特殊的深度卷積網絡來實現,使用微步卷積來生成64x64大小的圖像,第一層是全連接層,輸入是從均勻分佈中隨機採樣的100維向量,輸出是4x4x1024的向量,重塑爲4x4x1024的張量;然後是四層的微步卷積,沒有匯聚層。
    在這裏插入圖片描述
    DCGAN的主要優點是通過一些經驗性的網絡結構設計使得對抗網絡訓練更加穩定。1)使用帶步長的卷積(在判別網絡中)和微步卷積(在生成網絡中)來代替匯聚操作,以免損失信息;2)使用批量歸一化;3)去除卷積層之後的全連接層;4)在生成網絡中,除了最後一層使用Tanh激活函數外,其餘層都使用ReLU函數;5)在判別網絡中,都使用LeakyReLU激活函數。
  • 模型分析
    在生產對抗網絡中,當判別網絡爲最優時,生成網絡的優化目標是最小化真實分佈和模型分佈之間的JS散度。
    • 訓練穩定性
      在實際訓練生成對抗網絡時,一般不會將判別網絡訓練到最優,只進行行一步或多步梯度下降,使得生成網絡的梯度依然存在。另外,判別網絡也不能太差,否則生成網絡的梯度爲錯誤的梯度。但是,如何在梯度消失和梯度錯誤之間取得平衡並不是一件容易的事,這個問題使得生成對抗網絡在訓練時穩定性比較差。
    • 模型坍塌
      JS散度爲有界函數,因此生成網絡的目標更多的是受逆向KL散度影響,使得生成網絡更傾向於生成一些更“安全”的樣本,從而造成模型坍塌(Model Collapse)問題。
  • 改進模型
    在生成對抗網絡中,JS散度不適合衡量生成數據分佈和真實數據分佈的距離。由於通過優化交叉熵(JS散度)訓練生成對抗網絡會導致訓練穩定性和模型坍塌問題,因此要改進生成對抗網絡,就需要改變其損失函數。W-GAN是一種通過用Wasserstein距離替代JS散度來優化訓練的生成對抗網絡。

總結

深度生成模型是一種有機融合神經網絡和概率圖模型的生成模型,將神經網絡作爲一個概率分佈的逼近器,可以擬合非常複雜的數據分佈。
變分自編碼器是一個非常典型的深度生成模型,利用神經網絡的擬合能力來有效的解決隱變量的概率模型中後驗概率分佈難以估計的問題。
生成對抗網絡是一個具有開創意義的深度生成模型,突破了以往的概率模型必須通過最大似然估計來學習參數的限制。然而,生成對抗網絡的訓練通常比較困難。DCGAN是一個生成對抗網絡的成功實現,可以生成十分逼真的自然圖像。對抗生成網絡的訓練不穩定問題的一種有效解決方法是W-GAN,通過Wasserstein距離替代JS散度來進行訓練。
雖然深度生成模型取得了巨大的成功,但是作爲一種無監督模型,其主要的缺點是缺乏有效的客觀評價,很難客觀衡量不同模型之間的優劣。

強化學習

強化學習(Reinforcement Learning, RL),也叫增強學習,是指一類從(與環境)交互中不斷學習的問題以及解決這類問題的方法。強化學習問題可以描述爲一個智能體從與環境的交互中不斷學習以完成特定目標(比如獲取最大獎勵值)。和深度學習類似,強化學習中的關鍵問題也是貢獻度匹配問題, 每一個動作並不能直接得到監督信息,需要通過整個模型的最終監督信息(獎勵)得到,並且喲一定的延時性。
強化學習也是機器學習中的一個重要分支。強化學習和監督學習的不同在於,強化學習問題不需要給出“正確”策略作爲監督信息,只需要給出策略的(延遲)回報,並通過調整策略來取得最大化的期望回報。

強化學習問題

  • 典型例子
    • 多臂賭博機問題
    • 懸崖行走問題
  • 強化學習定義
    在強化學習中,喲兩個可以及進行交互的對象:智能體和環境。
    (1)智能體(Agent)可以感知外界環境的狀態(State)和反饋的獎勵(Reward),並進行學習和決策。智能體的決策功能是指根據外界環境的狀態來做出不同的動作(Action),而學習功能是指根據外界環境的獎勵來調整策略。
    (2)環境(Environment)是智能體外部的所有事物,並受智能體動作的影響而改變其狀態,並反饋給智能體相應的獎勵。
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 馬爾科夫決策過程
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 強化學習的目標函數
    • 總回報
      在這裏插入圖片描述
    • 目標函數
      在這裏插入圖片描述
  • 值函數
    • 狀態值函數
    • 狀態-動作值函數
    • 值函數的作用
      在這裏插入圖片描述
  • 深度強化學習
    深度強化學習(Deep Reinforcement Learning)是將強化學習和深度學習結合在一起,用強化學習來定義問題和優化目標,用深度學習來解決策略和值函數的建模問題,然後使用誤差反向傳播算法來優化目標函數。深度強化學習在一定程度上具備解決複雜問題的通用智能,並在很多任務上都取得了很大的成功。

基於值函數的學習方法

值函數是對策略的評估,如果策略有限(即狀態數和動作數都有限),可以對所有的策略進行評估並選出最優策略。但是這種方式在實踐中很難實現,一種可行的方式是通過迭代的方法不斷優化策略,直到選出最優策略。先隨機初始化一個策略,計算該策略的值函數,並根據值函數來設置新的策略,然後一直反覆迭代直到收斂。

  • 動態規劃算法
    • 策略迭代算法
      • 策略評估(Policy Evaluation),計算當前策略下每個狀態的值函數。
      • 策略改進(Policy Improvement) ,根據值函數來更新策略。
    • 值迭代算法
      策略迭代算法中的策略評估和策略改進是交替輪流進行,其中策略評估也是通過一個內部迭代來進行計算,其計算量比較大。事實上,我們不需要每次都計算出每次策略對應的精確的值函數,也就是說內部迭代不需要執行到完全收斂。
      值迭代算法將策略評估和策略改進兩個過程合併,來直接計算出最優策略。最優策略對應的值函數稱爲最優值函數,其中包括:最優狀態值函數和最優狀態-動作值函數。
  • 蒙特卡羅方法
    在很多應用場景中,我們一般需要智能體和環境進行交互並收集一些樣本,然後根據這些樣本來求解馬爾可夫決策過程最優策略。這種模型未知,基於採樣的學習算法也稱爲模型無關的強化學習(Model-Free Reinforcement Learning)算法。如果模型未知,Q函數(狀態-動作值函數)可以通過採樣進行計算,這就是蒙特卡羅方法。在近似估計出Q函數後,可以進行策略改進,然後在新的策略下重新通過採樣來估計Q函數,並不斷重複,直至收斂。
    • 利用和搜索
    • 同策略
    • 異策略
  • 時序差分學習方法
    蒙特卡羅方法一般需要拿到完整的軌跡,才能對策略進行評估並更新模型,因此效率比較低,時序差分學習(Temporal-Difference Learning)方法是蒙特卡羅方法的一種改進,通過引入動態規劃算法來提高學習效率,時序差分學習方法是模擬一段軌跡,每行動一步(或者幾步),即利用貝爾曼方程來評估行動前狀態的價值。
  • 深度Q網絡
    深度Q網絡採取兩個措施來解決目標不穩定,參數學習的目標依賴於參數本身和樣本之間有很強的相關性。一是目標網絡凍結,即在一個時間段內固定目標中的參數,來穩定學習目標;二是經驗回收,即構建一個經驗池來去除數據相關性。經驗池是由智能體最近的經歷組成的數據集。
    訓練時,隨機從經驗池中抽取樣本來代替當前的樣本用來進行訓練。這樣就打破了和相鄰訓練樣本的相似性,避免模型陷入局部最優。經驗回放在一定程度上類似於監督學習。先收集樣本,然後在這些樣本上進行訓練。

基於策略函數的學習方法

強化學習的目標是學習到一個策略來最大化期望回報。一種直接的方法是在策略空間中直接搜索來得到最佳策略,稱爲策略搜索。策略搜索本質是一個優化問題,可以分爲基於梯度的優化和無梯度優化。策略搜索和基於值函數的方法相比,策略搜索可以不需要值函數,直接優化策略。參數化的策略能夠處理連續狀態和動作,可以直接學出隨機性策略。

  • REINFORCE算法
  • 帶基準線的REINFORCE算法

演員-評論員算法

在REINFORCE算法中,每次需要根據一個策略採集一條完整的軌跡,並計算這條軌跡上的回報。這種方式的方差比較大,學習效率也比較低。我們可以借鑑時序差分學習的思想,使用動態規劃方法來提高採樣的效率,即從狀態開始的總回報可以通過當前動作的即時獎勵和下一個狀態的值函數來近似估計。
演員-評論員算法(Actor-Critic Algorithm)是一種結合策略梯度和時序差分學習的強化學習方法。其中演員(Actor)是指策略函數,即學習一個策略來得到儘量高的回報,評論員(Critic)是指值函數,對當前策略的值函數進行估計,即評估演員的好壞。藉助於值函數,演員-評論員算法可以進行單步更新參數,不需要等到回合結束才進行更新。在演員-評論員算法中的策略函數和值函數都是待學習的函數,需要在訓練過程中同時學習。

總結

強化學習是一種十分吸引人的機器學習方法,通過智能體不斷與環境僅交互,並根據經驗調整其策略來最大化其長遠的所有獎勵的累積值。相比其他機器學習方法,強化學習更接近生物學習的本質,可以應用多種複雜的場景,從而更接近通用人工智能系統的目標。
強化學習和監督學習的區別在於:

  • 強化學習的樣本通過不斷與環境進行交互產生,即試錯學習,而監督學習的樣本由人工收集並標註;
  • 強化學習的反饋信息只有獎勵,並且是延遲的,而監督學習需要明確的指導信息(每一個狀態對應的動作)。
    強化學習可以追溯到兩個來源:
  • 一個是心理學中的行爲主義理論,即有機體如何在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣行爲;
  • 另一個是控制論領域的最優控制問題,即在滿足一定約束條件下,尋求最優控制策略,使得性能指標取極大值或極小值。
    強化學習的算法非常多,大體上可以分爲基於值函數的方法(包括動態規劃、時序差分學習等)、基於策略函數的方法(包括策略梯度等)以及融合兩者的方法。
    在這裏插入圖片描述
    一般而言,基於值函數的方法在策略更新時可能會導致值函數的改變比較大,對收斂性有一定影響,而基於策略函數的方法在策略更新時更加平穩些。但後者因爲策略函數的解空間比較大,難以進行充分的採樣,導致方差較大,並容易收斂到局部最優解。演員-評論員算法通過融合兩種方法,取長補短,有着更好的收斂性。
    在這裏插入圖片描述

序列生成模型

序列概率模型

序列數據的特點:

  • 樣本是變長的
  • 樣本空間非常大

N元統計模型

深度序列模型

  • 模型結構
    • 嵌入層
    • 特徵層
    • 輸出層
  • 參數學習

評價方法

  • 困惑度
  • BLEU算法
  • ROUGE算法

序列生成模型中的學習問題

  • 曝光偏差問題
  • 訓練目標不一致問題
  • 計算效率問題

序列到序列模型

  • 基於循環神經網絡的序列到序列模型
  • 基於注意力的序列到序列模型
  • 基於自注意力的序列到序列模型

數學基礎

線性代數

線性代數主要包含向量、向量空間(或稱線性空間)以及向量的線性變換和有限維的線性方程組。

向量和向量空間

  • 向量
    在這裏插入圖片描述

  • 向量空間
    在這裏插入圖片描述

    • 歐式空間
      在這裏插入圖片描述
    • 線性子空間
      在這裏插入圖片描述
    • 線性無關
      在這裏插入圖片描述
    • 基向量
      在這裏插入圖片描述
    • 內積
      在這裏插入圖片描述
    • 正交
      在這裏插入圖片描述
  • 範數
    在這裏插入圖片描述
    在這裏插入圖片描述

  • 常見的向量
    在這裏插入圖片描述

矩陣

  • 線性映射
    在這裏插入圖片描述
  • 仿射變換
    在這裏插入圖片描述
  • 矩陣操作

    • 在這裏插入圖片描述
    • 乘積
      在這裏插入圖片描述
    • 轉置
      在這裏插入圖片描述
    • Hadamard積
      在這裏插入圖片描述
    • Kronecker積
      在這裏插入圖片描述
    • 外積
      在這裏插入圖片描述
    • 向量化
      在這裏插入圖片描述

    • 在這裏插入圖片描述
    • 行列式
      在這裏插入圖片描述

    • 在這裏插入圖片描述
    • 範數
      在這裏插入圖片描述
  • 矩陣類型
    • 對稱矩陣
      在這裏插入圖片描述
    • 對角矩陣
      在這裏插入圖片描述
    • 單位矩陣
      在這裏插入圖片描述
    • 逆矩陣
      在這裏插入圖片描述
    • 正定矩陣
      在這裏插入圖片描述
    • 正交矩陣
      在這裏插入圖片描述
    • Cram矩陣
      在這裏插入圖片描述
  • 特徵值與特徵向量
    在這裏插入圖片描述
  • 矩陣分解
    一個矩陣通常可以用一些比較簡單的矩陣來表示,稱爲矩陣分解(Matrix Decomposition,or Matrix Factorization)。
    • 特徵分解
      在這裏插入圖片描述
    • 奇異值分解
      在這裏插入圖片描述
      在這裏插入圖片描述

微積分

微積分(Calculus)是研究函數的微分(Differentiation)、積分(Integration)及其相關應用的數學分支。

微分

  • 導數
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 微分
    在這裏插入圖片描述
  • 泰勒公式
    在這裏插入圖片描述

積分

在這裏插入圖片描述

矩陣微積分

矩陣微積分(Matrix Calculus)是多元微積分的一種表達方式,即使用矩陣和向量來表示因變量每個成分關於自變量每個成分的偏導數。矩陣微積分的表示通常有兩種符號約定:分子佈局(Numerator Layout)和分母佈局(Denominator Layout)。兩者的區別是一個標量關於一個向量的導數是寫成列向量還是行向量。

  • 標量關於向量的偏導數
    在這裏插入圖片描述
  • 向量關於標量的偏導數
    在這裏插入圖片描述
  • 向量關於向量的偏導數
    在這裏插入圖片描述
  • 導數法則
    • 加(減)法則
      在這裏插入圖片描述
    • 乘法法則
      在這裏插入圖片描述
    • 鏈式法則
      在這裏插入圖片描述

常見函數的導數

  • 向量函數及其導數
    在這裏插入圖片描述
  • 按位計算的向量函數及其導數
    在這裏插入圖片描述
    • Logistic函數
      在這裏插入圖片描述
      在這裏插入圖片描述
    • Softmax函數
      在這裏插入圖片描述
      在這裏插入圖片描述

數學優化

在這裏插入圖片描述

數學優化的類型

  • 離散優化和連續優化
    根據輸入變量X的值域是否爲實數域,數學優化問題可以分爲離散優化問題和連續優化問題。
    • 離散優化問題
      在這裏插入圖片描述
    • 連續優化問題
      在這裏插入圖片描述
  • 無約束優化和約束優化
    在這裏插入圖片描述
  • 線性優化和非線性優化
    在這裏插入圖片描述

優化算法

在這裏插入圖片描述

  • 全局最小解和局部最小解
    在這裏插入圖片描述
  • 梯度下降法
    在這裏插入圖片描述
    在這裏插入圖片描述

拉格朗日乘數法與KKT條件

在這裏插入圖片描述

  • 等式約束優化問題
    在這裏插入圖片描述
  • 不等式約束優化問題
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

概率論

概率論主要研究大量隨機現象中的數量規律,其應用十分廣泛,幾乎遍及各個領域。

樣本空間

樣本空間是一個隨機試驗所有可能結果的集合。隨機試驗中的每個可能結果稱爲樣本點。有些試驗有兩個或多個可能的樣本空間,這時樣本空間可以通過構建上述兩個樣本空間的笛卡爾乘積來得到。
在這裏插入圖片描述

事件和概率

隨機事件(或簡稱事件)指的是一個被賦予概率的事物集合,也就是樣本空間中的一個子集。概率(Probability)表示一個隨機事件發生的可能性大小,爲0到1之間的實數。

  • 隨機變量
    在隨機試驗中,試驗的結果可以用一個數X來表示,這個數X是隨着試驗結果的不同而變化的,是樣本點的一個函數。我們把這種數稱爲隨機變量(Random Variable)。
    • 離散隨機變量
      在這裏插入圖片描述
      在這裏插入圖片描述
    • 連續隨機變量
      在這裏插入圖片描述
      在這裏插入圖片描述
    • 累積分佈函數
      在這裏插入圖片描述
  • 隨機向量
    在這裏插入圖片描述
    • 離散隨機向量
      在這裏插入圖片描述
      在這裏插入圖片描述
    • 連續隨機向量
      在這裏插入圖片描述
      在這裏插入圖片描述
  • 邊際分佈
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 條件概率分佈
    在這裏插入圖片描述
  • 貝葉斯定理
    在這裏插入圖片描述
  • 獨立與條件獨立
    在這裏插入圖片描述
  • 期望和方差
    在這裏插入圖片描述
    在這裏插入圖片描述
    • Jensen不等式
      在這裏插入圖片描述
    • 大數定律
      在這裏插入圖片描述

隨機過程

在這裏插入圖片描述

  • 馬爾可夫過程
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 高斯過程
    在這裏插入圖片描述

信息論

信息論(Information Theory)是數學、物理、統計、計算機科學等多個學科的交叉領域。主要研究信息的量化、存儲和通信等方法。“信息”是指一組消息的激活。假設在一個噪聲通道上發送消息,我們需要考慮如何對每一個信息進行編碼、傳輸以及解碼,使得接收者可以儘可能準確的重構出消息。在機器學習相關領域,信息論也有着大量的應用。比如特徵抽取、統計推斷、自然語言理解等。

  • 自信息和熵
    在這裏插入圖片描述
  • 熵編碼
    在這裏插入圖片描述
  • 聯合熵和條件熵
    在這裏插入圖片描述

互信息

在這裏插入圖片描述

交叉熵和散度

  • 交叉熵
    在這裏插入圖片描述
  • KL散度
    在這裏插入圖片描述
  • JS散度
    在這裏插入圖片描述
  • Wasserstein距離
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章