神經網絡的發展歷史
第一代神經網絡(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等),調整每層的權重和偏置。更新公式為:
θ = θ ? η ? ? θ L \theta = \theta - \eta \cdot \nabla_{\theta} L θ=θ?η??θ?L
其中, θ \theta θ 表示權重參數, η \eta η 為學習率, ? θ L \nabla_{\theta} L ?θ?L 為損失函數相對于參數的梯度。
- 使用梯度下降法(如隨機梯度下降SGD,Adam等),調整每層的權重和偏置。更新公式為:
卷積層的反向傳播
在卷積層中,反向傳播的具體過程與全連接層有所不同,主要包括以下幾個部分:
-
卷積核梯度計算:
- 計算損失函數關于卷積核的梯度。對于每個卷積核,梯度通過卷積操作的反向傳播計算得出。
-
輸入梯度計算:
- 計算損失函數關于輸入數據的梯度。這一步同樣通過卷積操作的反向傳播實現。
-
參數梯度累積:
- 對于每個卷積核,累積梯度并更新參數。
數學表達
對于卷積層的梯度計算,假設輸入為(X),卷積核為(W),輸出為(Y),損失函數為(L),則梯度計算公式如下:
-
損失函數關于卷積核的梯度:
? L ? W = X ? δ \frac{\partial L}{\partial W} = X \ast \delta ?W?L?=X?δ -
其中,(\ast) 表示卷積操作,(\delta) 為損失函數關于輸出的梯度。
-
損失函數關于輸入的梯度:
? L ? X = W ? δ \frac{\partial L}{\partial X} = W \ast \delta ?X?L?=W?δ
殘差網絡(Residual Network)
殘差網絡(ResNet)是解決深層神經網絡訓練難題的重要創新之一。通過引入殘差塊(Residual Block),ResNet有效地緩解了深度增加導致的梯度消失和梯度爆炸問題。
核心思想
ResNet的核心思想是引入殘差連接(skip connections),即在某一層的輸出直接傳遞到后面幾層,用于構造殘差塊。具體地,殘差塊的輸出不僅依賴于該塊的輸入經過若干層的變換,還包括一個恒等映射(identity mapping)。
殘差塊
一個典型的殘差塊由兩個卷積層組成,并添加了輸入的恒等映射,如下所示:
y = F ( x , { W i } ) + x \ y = \mathcal{F}(x, \{W_i\}) + x ?y=F(x,{Wi?})+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) ) 可以分解為:
log ? p ( x ∣ θ ) = E q ( z ∣ x ) [ log ? p ( x , z ∣ θ ) ? log ? q ( z ∣ x ) ] + K L ( q ( z ∣ x ) ∥ p ( z ∣ x , θ ) ) \ \log p(x|\theta) = \mathbb{E}_{q(z|x)}[\log p(x,z|\theta) - \log q(z|x)] + KL(q(z|x) \| p(z|x,\theta)) \ ?logp(x∣θ)=Eq(z∣x)?[logp(x,z∣θ)?logq(z∣x)]+KL(q(z∣x)∥p(z∣x,θ))?
其中,第一項是變分自由能,第二項是KL散度,用于衡量后驗分布 $\ q(z|x) $ 和真實后驗分布 $\ p(z|x,\theta) $ 之間的差異。
GAN模型分析
在傳統GAN中,生成器G固定參數時,最優的判別器D要最小化如下損失:
min ? G max ? D V ( D , G ) = E x ~ p d a t a ( x ) [ log ? D ( x ) ] + E z ~ p z ( z ) [ log ? ( 1 ? D ( G ( z ) ) ) ] \ \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))] \ ?Gmin?Dmax?V(D,G)=Ex~pdata?(x)?[logD(x)]+Ez~pz?(z)?[log(1?D(G(z)))]?
通過對判別器最優情況進行分析,生成器的損失函數為:
min ? G V ( G ) = ? E z ~ p z ( z ) [ log ? D ( G ( z ) ) ] \ \min_G V(G) = -\mathbb{E}_{z \sim p_z(z)}[\log D(G(z))] \ ?Gmin?V(G)=?Ez~pz?(z)?[logD(G(z))]?
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) ) 之間的差異時,順序不同,導致其在優化過程中有不同的表現。
具體算式推導
在深度生成模型中,通過最大似然估計來求解參數時,需要用到以下公式:
log ? p ( x ) = E q ( z ∣ x ) [ log ? p ( x ∣ z ) ] ? K L ( q ( z ∣ x ) ∥ p ( z ) ) \log p(x) = \mathbb{E}_{q(z|x)}\left[\log p(x|z)\right] - KL(q(z|x) \| p(z)) logp(x)=Eq(z∣x)?[logp(x∣z)]?KL(q(z∣x)∥p(z))
在變分自編碼器(VAE)中,通過優化以下變分下界來訓練模型:
L ( θ , ? ; x ) = E q ? ( z ∣ x ) [ log ? p θ ( x ∣ z ) ] ? K L ( q ? ( z ∣ x ) ∥ p θ ( z ) ) \mathcal{L}(\theta, \phi; x) = \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - KL(q_\phi(z|x) \| p_\theta(z)) L(θ,?;x)=Eq??(z∣x)?[logpθ?(x∣z)]?KL(q??(z∣x)∥pθ?(z))
這些推導在實際應用中,通過神經網絡和反向傳播算法進行參數更新,確保模型能夠有效地學習數據的潛在表示并生成新數據。
本文由博客一文多發平臺 OpenWrite 發布!
本文由博客一文多發平臺 OpenWrite 發布!