神經網路的發展歷史
第一代神經網路(1958~1969)
- MCP模型(1943年):麥卡洛克和皮茨提出了第一個人工神經元模型,簡化為輸入訊號線性加權、求和、非線性啟用(閾值法)。
- 感知器(1958年):羅森布拉特發明了感知器,這是第一種用於模式識別的人工神經網路。
- 異或問題(1969年):馬文·明斯基指出感知器無法解決非線性可分問題,如異或問題,這導致了神經網路研究的第一次低潮。
第二代神經網路(1986~1998)
- BP演算法(1986年):Hinton發明了反向傳播演算法(Backpropagation),適用於多層感知器(MLP),有效解決了非線性分類和學習問題。
- 萬能逼近定理(1989年):Robert Hecht-Nielsen證明了MLP可以以任意精度逼近任何連續函式。
- 卷積神經網路(1989年):LeCun發明了LeNet,用於數字識別,取得了較好的成績,但未引起足夠關注。
- 硬體限制:由於計算機硬體水平有限,神經網路規模增大時會出現“梯度消失”問題,限制了BP演算法的發展。
- 淺層機器學習的興起:90年代中期,以支援向量機(SVM)為代表的淺層機器學習演算法取得了很好的效果,人工神經網路的發展再次進入瓶頸期。
第三代神經網路(2006年至今)
- 深度學習的突破(2006年):機器學習領域取得突破性進展,深度學習演算法被提出,用於處理抽象概念。
- 深度信念網路:Hinton提出了一種快速學習演算法,用於深度信念網路。
- 降維方法:Hinton等人提出了用神經網路進行資料降維的方法。
- 標誌性成果:
- AlphaGo(2016年):DeepMind的AlphaGo擊敗圍棋九段李世石。
- AlphaGo Zero(2017年):不需要任何資料,自學圍棋規則,短時間內擊敗AlphaGo。
- AlphaFold(2020年):DeepMind的AI系統成功預測蛋白質三維結構,達到與實驗技術相當的準確性。
- ChatGPT(2022年):OpenAI釋出的大型語言模型,能夠生成自然語言處理任務的回答。
神經網路的發展經歷了從簡單的線性模型到複雜的多層網路的演變,不斷克服技術和硬體限制,實現了從理論研究到實際應用的飛躍。
機器學習三要素總結
1. 模型(Model)
模型是用來表示資料規律的數學結構或演算法。選擇合適的模型是機器學習的第一步。
- 線性模型:如線性迴歸,其中模型的輸出是輸入特徵的線性組合。
- 廣義線性模型:如果特徵函式是可學習的非線性基函式,模型可以擴充套件為神經網路。
2. 學習準則(Learning Criterion)
學習準則是評估模型好壞的標準,通常透過損失函式來定義。
- 損失函式:如平方損失函式和0-1損失函式。損失函式衡量預測結果與真實值之間的差距。
- 經驗風險最小化:在訓練資料上最小化損失函式以近似期望風險。
- 結構風險最小化:透過引入正則化項來防止過擬合。
3. 最佳化方法(Optimization Method)
最佳化方法是透過調整模型引數以最小化損失函式的方法。
- 梯度下降法:包括批次梯度下降法和隨機梯度下降法,用於迭代地調整引數以減少損失。
- 正則化技術:如L1和L2正則化,透過增加約束條件來降低模型複雜度,防止過擬合。
過擬合與泛化能力
- 過擬合:模型在訓練資料上表現良好但在測試資料上表現不佳。
- 泛化錯誤:模型在未見資料上的預測誤差,期望風險與經驗風險之間的差異。
- 正則化方法:包括權重衰減、資料增強、提前停止等,透過干擾最佳化過程來減少泛化錯誤。
機器學習中的幾個關鍵概念
- 機率:涉及機率分佈、隨機變數、條件機率等基本概念。
- 最大似然估計與最大後驗估計:用於引數估計的方法,分別基於資料的似然函式和先驗機率。
總結來說,機器學習的核心是透過構建合適的模型、定義合理的學習準則,並透過最佳化方法來調整模型引數,使得模型在新資料上的預測儘可能準確。正則化和最佳化技術在提高模型的泛化能力上起著關鍵作用。
神經網路結構、通用近似定理和反向傳播演算法總結
神經網路結構
-
1、基本組成:
- 神經元:神經網路的基本單位,透過啟用函式將輸入對映到輸出。
- 層級結構:包括輸入層、隱藏層和輸出層。每層由若干神經元組成。
-
2、前饋神經網路:
- 全連線網路:相鄰層之間的神經元全部連線,層內無連線。
- 無反饋結構:訊號僅從輸入層單向傳遞到輸出層,可用有向無環圖表示。
-
3、啟用函式:
- 非線性對映:常用啟用函式包括ReLU、Tanh、Sigmoid等,具有不同的性質和適用場景。
- 導數性質:啟用函式的導數在訓練過程中起關鍵作用,影響梯度計算和引數更新。
通用近似定理
-
1、定義:
- 函式逼近能力:前饋神經網路具有逼近任何從實數空間中定義的有界閉集到實數空間的連續函式的能力,只要隱藏層的神經元數量足夠多。
-
2、條件:
- 線性輸出層:網路的輸出層需要是線性的。
- 非線性啟用函式:隱藏層需要使用具有“擠壓”性質的啟用函式,如Sigmoid或Tanh。
-
3、意義:
- 廣泛應用:該定理保證了前饋神經網路在理論上可以處理各種複雜的函式對映任務,為其在機器學習中的廣泛應用提供了理論基礎。
反向傳播演算法
-
1、目的:
- 引數更新:透過計算損失函式對網路各引數的梯度,實現網路引數的最佳化和學習。
-
2、步驟:
- 前向傳播:計算每一層的輸出,直到輸出層,得到預測結果。
- 計算損失:根據預測結果和實際值計算損失函式。
- 反向傳播:從輸出層開始,逐層計算損失函式對每個引數的偏導數,使用鏈式法則。
- 梯度更新:利用梯度下降法,根據計算得到的梯度更新網路引數。
-
3、計算圖與自動微分:
- 計算圖:將前向計算過程表示為有向圖,每個節點代表一個操作或變數。
- 自動微分:透過計算圖自動計算梯度,分為前向模式和反向模式。反向模式(即反向傳播)用於高效計算複雜函式的梯度。
總結
- 神經網路結構決定了資訊如何在網路中流動和處理,前饋神經網路結構簡單且功能強大。
- 通用近似定理保證了前饋神經網路的函式逼近能力,為其廣泛應用提供了理論支援。
- 反向傳播演算法是神經網路訓練的核心方法,透過梯度計算和引數更新實現網路的學習和最佳化。
卷積神經網路中的反向傳播演算法
概述
卷積神經網路(CNN)透過卷積層、池化層和全連線層的堆疊來處理影像資料。在訓練CNN時,反向傳播演算法(Backpropagation)是關鍵的最佳化方法,用於調整網路的權重以最小化損失函式。
反向傳播的步驟
反向傳播演算法可以分為以下幾個主要步驟:
-
前向傳播(Forward Pass):
- 輸入資料透過網路各層進行前向計算,直到產生最終輸出。
- 記錄每一層的輸入、輸出和中間結果(如啟用值),以備後續計算梯度使用。
-
計算損失(Loss Calculation):
- 使用輸出結果與實際標籤計算損失值。常用的損失函式包括均方誤差(MSE)和交叉熵損失(Cross-Entropy Loss)。
-
反向傳播(Backward Pass):
- 輸出層反向傳播:計算損失函式關於輸出層每個神經元輸入的偏導數。
- 隱藏層反向傳播:逐層向前計算每層的梯度。利用鏈式法則,將後層的梯度傳播到前層。
-
引數更新(Parameter Update):
- 使用梯度下降法(如隨機梯度下降SGD,Adam等),調整每層的權重和偏置。更新公式為:
\[ \theta = \theta - \eta \cdot \nabla_{\theta} L \]其中,(\theta) 表示權重引數,(\eta) 為學習率,(\nabla_{\theta} L) 為損失函式相對於引數的梯度。
卷積層的反向傳播
在卷積層中,反向傳播的具體過程與全連線層有所不同,主要包括以下幾個部分:
-
卷積核梯度計算:
- 計算損失函式關於卷積核的梯度。對於每個卷積核,梯度透過卷積操作的反向傳播計算得出。
-
輸入梯度計算:
- 計算損失函式關於輸入資料的梯度。這一步同樣透過卷積操作的反向傳播實現。
-
引數梯度累積:
- 對於每個卷積核,累積梯度並更新引數。
數學表達
對於卷積層的梯度計算,假設輸入為(X),卷積核為(W),輸出為(Y),損失函式為(L),則梯度計算公式如下:
- 損失函式關於卷積核的梯度:
-
其中,(\ast) 表示卷積操作,(\delta) 為損失函式關於輸出的梯度。
-
損失函式關於輸入的梯度:
殘差網路(Residual Network)
殘差網路(ResNet)是解決深層神經網路訓練難題的重要創新之一。透過引入殘差塊(Residual Block),ResNet有效地緩解了深度增加導致的梯度消失和梯度爆炸問題。
核心思想
ResNet的核心思想是引入殘差連線(skip connections),即在某一層的輸出直接傳遞到後面幾層,用於構造殘差塊。具體地,殘差塊的輸出不僅依賴於該塊的輸入經過若干層的變換,還包括一個恆等對映(identity mapping)。
殘差塊
一個典型的殘差塊由兩個卷積層組成,並新增了輸入的恆等對映,如下所示:
[ y = \mathcal{F}(x, {W_i}) + x ]
其中,( \mathcal{F}(x, {W_i}) ) 表示卷積層的變換,( x ) 為輸入,( y ) 為輸出。這樣,透過恆等對映,殘差塊的輸入直接加到輸出上,有助於梯度更好地反向傳播。
網路結構
ResNet由多個殘差塊堆疊而成,可以構建非常深的網路結構,如ResNet-50、ResNet-101和ResNet-152等。每個殘差塊的基本結構如下:
- 卷積層:帶有Batch Normalization和ReLU啟用函式。
- 恆等對映:直接將輸入傳遞到後續層。
訓練優勢
殘差網路透過恆等對映有效地解決了深層網路的梯度消失問題,使得非常深的網路能夠順利訓練。這一改進使得ResNet在各種影像識別任務中取得了顯著的效能提升。
實踐應用
- 影像識別:ResNet在ImageNet比賽中取得了優異的成績,大幅度提升了影像分類的準確率。
- 遷移學習:由於其強大的特徵提取能力,ResNet被廣泛用於遷移學習任務中,作為預訓練模型的基礎網路。
- 其他領域:包括目標檢測、影像分割和自然語言處理等領域,ResNet的殘差連線思想被廣泛應用。
總結
殘差網路透過引入殘差連線,有效解決了深層神經網路的訓練難題,使得構建和訓練非常深的網路成為可能。這一創新在計算機視覺和其他領域帶來了巨大的效能提升和廣泛的應用。
自注意力機制
定義與特點
- 自注意力(Self-Attention):透過對輸入序列中的每一個元素進行加權計算,捕捉序列中不同位置間的依賴關係。其主要優勢在於能夠平行計算並捕捉長距離依賴。
- QKV模式:自注意力機制通常採用Query、Key、Value三元組(QKV模式),透過這些向量計算注意力權重,生成新的表示向量。
計算過程
- 對於輸入序列 (X = [x_1, ..., x_N] \in \mathbb{R}^{D \times N}),首先生成三個向量序列(Query、Key、Value)。
- 利用縮放點積作為注意力打分函式,輸出向量序列可以簡寫為一種形式,即多頭自注意力模型,透過多個注意力頭平行計算,提高模型的表達能力。
應用領域
- 自注意力機制被廣泛應用於自然語言處理(NLP)、語音識別、影像處理等領域。例如,BERT和Transformer模型都採用了自注意力機制。
Transformer
架構概述
- Encoder-Decoder結構:Transformer模型包含編碼器(Encoder)和解碼器(Decoder)兩部分。編碼器將輸入序列轉換為隱藏表示,解碼器則將隱藏表示轉換為輸出序列。
- 多頭自注意力:Transformer中的核心元件,多頭自注意力機制允許模型在不同的表示子空間中並行地關注不同位置的資訊。
位置編碼
- 由於自注意力機制本身不包含位置資訊,Transformer透過位置編碼(Positional Encoding)為每個位置新增唯一的向量,使模型能夠捕捉序列中的位置資訊。
優勢
- 平行計算:與RNN不同,Transformer可以並行處理整個序列,從而提高計算效率。
- 處理長距離依賴:自注意力機制使得Transformer能夠有效處理序列中的長距離依賴關係。
應用場景
- 機器翻譯:透過序列到序列(seq2seq)學習,Transformer在輸入序列和輸出序列之間建立對映關係,是機器翻譯任務中的一種有效模型。
- 語音翻譯和語音識別:Transformer模型也被應用於語音處理任務,透過自注意力機制處理長時間的語音序列。
綜上,自注意力機制和Transformer模型透過平行計算和有效處理長距離依賴,廣泛應用於各種序列建模任務,如自然語言處理、語音識別和機器翻譯等領域。這些技術的核心在於自注意力機制的高效計算和Transformer架構的靈活應用。
改進自編碼模型的思想
自編碼模型主要是透過學習資料的有效表示來進行重構,常見的改進自編碼模型的思想包括稀疏自編碼器和降噪自編碼器。
稀疏自編碼器
- 概念:透過給自編碼器的隱藏層單元增加稀疏性限制,促使自編碼器學習資料中一些有用的結構。
- 優點:稀疏自編碼器具有高可解釋性,並能隱式地進行特徵選擇。這意味著它能選擇與輸入樣本相關的最少特徵,從而更好地表示輸入樣本,降低噪聲並減輕過擬合。
降噪自編碼器
- 概念:透過向輸入向量加入噪聲,使自編碼器在重構時必須學習到資料的本質特徵,從而增加編碼的魯棒性。具體方法是將輸入向量的一些維度值隨機設定為0,得到一個被損壞的向量,然後將其輸入自編碼器進行重構。
- 目的:這種方法的核心在於透過引入噪聲來提升模型對資料本質特徵的提取能力,使得模型對原始無損資料的重構能力更強。
模型獨立學習的思想
模型獨立學習方法不依賴於特定的模型架構,而是透過各種學習策略來提升模型的效能,主要包括整合學習、元學習等。
整合學習
- 概念:整合學習透過組合多個基模型來提升整體模型的效能。常見的方法包括Bagging和Boosting
- 具體方法:
- 隨機森林:透過構建多個決策樹並對其結果進行平均或投票,從而提升模型的泛化能力。隨機森林中的每個基模型都是一棵決策樹,每棵樹透過隨機選擇特徵和樣本來訓練,以增加基模型之間的獨立性
- AdaBoost:一種Boosting演算法,透過迭代訓練多個弱分類器,每次訓練時增加前序分類器分錯樣本的權重,從而使後續分類器更關注難分類的樣本,最終提升整體模型的準確率
元學習
- 概念:元學習(Meta-learning)旨在使模型具備快速學習新任務的能力。與傳統的機器學習需要大量資料從頭開始訓練不同,元學習透過先訓練超引數,再進行具體任務的微調,使模型能夠高效地學習新任務
- 方法:在元學習中,訓練單位是任務而非樣本資料。透過多個訓練任務來學習較好的超引數,然後在特定任務上進行測試,以提升模型的學習能力
遷移學習
- 概念:遷移學習透過在大規模資料上訓練模型,然後在具體任務中進行微調,來提升模型的效能。根據特徵空間和標籤空間的不同,遷移學習可以分為異構遷移學習和同構遷移學習
總結,改進自編碼模型的核心在於透過稀疏性和噪聲引入來提升模型的特徵提取和重構能力;而模型獨立的學習思想則透過整合學習、元學習和遷移學習等方法,不依賴於特定的模型架構,來提高模型的泛化能力和學習效率。
機率圖模型
機率圖模型(Probabilistic Graphical Models)是利用圖結構表示隨機變數及其條件依賴關係的機率模型。它們結合了圖論和機率論,廣泛應用於機器學習和統計學中。本文件主要討論深度生成模型及其相關概念。
深度生成模型
深度生成模型是利用神經網路構建生成模型的框架,包括變分自編碼器(Variational Autoencoder, VAE)和生成對抗網路(Generative Adversarial Network, GAN);。
變分自編碼器(VAE)
-
基本原理:VAE透過學習資料的潛在表示,生成具有相似特徵的新資料樣本。其訓練過程包括以下步驟:
- 將資料輸入推斷網路(編碼器),得到潛在表示。
- 從潛在表示中取樣,得到隨機噪聲。
- 將隨機噪聲輸入生成網路(解碼器),生成重建資料。
- 計算重建損失和KL散度,並將兩者相加作為總損失。
- 使用反向傳播演算法更新網路引數,以最小化總損失。
- 重複以上步驟直到模型收斂。
-
模型結構:VAE包含兩個主要部分:推斷網路和生成網路​
生成對抗網路(GAN)
-
基本原理:GAN由生成網路和判別網路組成,透過對抗訓練,生成網路不斷改進生成資料的質量,判別網路不斷提升區分生成資料和真實資料的能力
-
訓練過程:
- 生成網路從隱空間中隨機取樣作為輸入,生成模擬樣本。
- 判別網路接收生成樣本和真實樣本,嘗試將它們區分開。
- 生成網路和判別網路透過對抗訓練,不斷最佳化各自引數。
-
對抗過程:生成網路的目標是欺騙判別網路,使其無法區分生成樣本和真實樣本;判別網路的目標是儘可能準確地區分這兩者
顯式密度模型和隱式密度模型
- 顯式密度模型:明確構建樣本的密度函式,透過最大似然估計求解引數。例如高斯混合模型和機率圖模型
- 隱式密度模型:不直接估計資料分佈的密度函式,而是透過生成樣本來間接反映資料分佈,例如變分自編碼器和生成對抗網路
含隱變數的機率圖模型
機率圖模型中隱變數的引入使得模型能夠更好地表示資料生成過程
- 根據隱變數的先驗分佈進行取樣,得到樣本。
- 根據條件分佈進行取樣,生成觀測資料。
EM演算法
EM演算法主要用於估計含有隱變數的機率模型引數
- E步(期望步):計算聯合分佈的條件機率期望,即隱變數的後驗機率分佈。
- M步(極大步):使用E步驟中計算得到的隱變數後驗機率,重新估計模型引數。
Wasserstein GAN
Wasserstein GAN (WGAN)引入Wasserstein距離來衡量兩個分佈之間的距離,相比於KL散度和JS散度,Wasserstein距離在分佈重疊較少的情況下仍能有效反映分佈的遠近;。這解決了生成對抗網路中可能出現的梯度消失問題,提升了模型訓練的穩定性和效果。
其他改進模型
- 條件生成模型:根據特定條件生成資料,提高生成資料的控制性和多樣性
- InfoGAN:引入資訊理論的概念,透過最大化生成資料和條件變數之間的互資訊,增強生成資料的解釋性
- BiGAN:在生成網路和判別網路之外增加編碼器,透過編碼器和生成網路的交替訓練,提高生成資料的質量和一致性
算式推導總結
生成模型的對數邊際似然分解
給定一個樣本 ( x ),其對數邊際似然 ( \log p(x|\theta) ) 可以分解為:
其中,第一項是變分自由能,第二項是KL散度,用於衡量後驗分佈 $\ q(z|x) $ 和真實後驗分佈 $\ p(z|x,\theta) $ 之間的差異。
GAN模型分析
在傳統GAN中,生成器G固定引數時,最優的判別器D要最小化如下損失:
透過對判別器最優情況進行分析,生成器的損失函式為:
KL散度
前向KL散度和逆向KL散度的定義分別為:
- 前向KL散度:$ KL(p | q) = \int p(x) \log \frac{p(x)}{q(x)} dx $
- 逆向KL散度:$ KL(q | p) = \int q(x) \log \frac{q(x)}{p(x)} dx $
這兩種散度在計算真實分佈 ( p_r(x) ) 和模型分佈 ( p_\theta(x) ) 之間的差異時,順序不同,導致其在最佳化過程中有不同的表現。
具體算式推導
在深度生成模型中,透過最大似然估計來求解引數時,需要用到以下公式:
在變分自編碼器(VAE)中,透過最佳化以下變分下界來訓練模型:
這些推導在實際應用中,透過神經網路和反向傳播演算法進行引數更新,確保模型能夠有效地學習資料的潛在表示並生成新資料。
本文由部落格一文多發平臺 OpenWrite 釋出!