你軟絕世好課,實際上照搬浙大吳飛老師(慕課)&臺大李宏毅老師(B站or油管)的PPT……
上課聽不進去可以直接去聽這兩位老師的課。
期末複習自用筆記,有誤歡迎指正。
緒論
機器學習及有監督學習
機器學習基本概念
機器學習:就是從資料中學習知識,找到函式f(x)=y。
按問題分類可分為:
- 迴歸問題(如預測PM2.5),輸出為數值
- 分類問題(如垃圾郵件過濾),給定選項,輸出一個正確選項。
按資料標註情況可分為:
監督學習
監督學習的要素:
- 標識資料:標識了類別資訊的資料
- 學習模型:定義對映模型型別
- 損失函式:對對映結果進行度量
- 最佳化方法:對對映模型進行學習
訓練集一共有n個標註資料,第i個標註資料記為(xi,yi)。
-
訓練對映函式(模型)f,使得f(xi)的預測結果儘量等於yi。
-
損失函式Loss就是用來計算xi真值yi與預測值f(xi)之間差值的函式。
-
典型的損失函式:
-
在訓練過程中希望最佳化對映函式,使得在訓練資料集上得到“損失”之和最小,即\(min\sum_{i=1}^{n}Loss(f(x_i),y_i)\)
-
如何評價一個模型的好壞?
-
經驗風險:訓練集中資料產生的損失。經驗風險越小說明學習模型對訓練資料擬合程度越好。
-
期望風險:當測試集中存在無窮多資料時產生的損失。期望風險越小,學習所得模型越好。
-
過學習與欠學習:
-
限制模型複雜度→避免過學習
-
結構風險最小化:在最小化經驗風險與降低模型複雜度之間尋找平衡。
-
監督學習兩種方法:判別模型與生成模型。
- 判別模型直接學習判別函式或條件機率分佈作為預測的模型;關心在給定輸入資料下,預測該資料的輸出是什麼。
- 生成模型從資料中學習聯合機率分佈P(X,Y),透過\(P(Y|X)=\frac{P(X,Y)}{P(X)}\)或\(P(Y|X)=\frac{P(X|Y)×P(Y)}{P(X)}\),典型方法包括貝葉斯方法,隱馬爾科夫鏈。
線性迴歸
迴歸分析:分析不同變數之間存在的關係。
一旦確定了迴歸模型,就可以進行預測等分析工作。
- 訓練資料:\(D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}\)
- 學習模型:\(f(x_i)=wx_i+b\)
- 損失函式:\(L(w,b)=\sum_{i=1}^n{loss(x_i,y_i)}=\sum^n_{i=1}(y_i-(wx_i+b))^2\)
- 最佳化方法:最小二乘法
- 對損失函式\(L(w,b)\)的引數w和b分別求偏導,令其導數值為0,再求w和b的取值。
- 對b求偏導,得到\(b=\overline{y}-w\overline{x}\)
- 再利用上式對w求偏導,得到
- 代入訓練資料,解得w和b的值,獲得一元線性迴歸模型。
多元線性迴歸:(影響y的有多個因素x,也就有多個w)
-
資料向量的維度D:影響y的因素個數。
多元線性迴歸中,假設資料向量的維度為D,那麼多元線性迴歸模型的引數量為D+1。
-
最後獲得向量w(共D+1維度,w0即為b):
線性分類
線性迴歸的模型顯然是不能直接拿來做線性分類的。
於是引入了對數機率迴歸(logistic regression)。
Logistic迴歸模型可如下所示:
這裡的\(\frac{1}{1+e^{-z}}\)是sigmoid函式,D維向量x是輸入資料,D維向量w和b是迴歸函式的引數。
函式影像:
特點:
- sigmoid函式是單調遞增的,其輸出可以作為機率值;
- 資料特徵加權累加:對輸入z取值範圍沒有限制。
- 非線性變化:z=0附近變化大,但大於/小於一定數值後y無限趨近於1/0。
實際預測時,可以計算函式\(z=w^Tx+b\)的取值是否大於0來判斷資料x的類別歸屬。
由圖可知:z=0的分界點正好是y=0.5的分界點。
線性判別分析Fisher
基於監督學習的分類/降維方法,也稱Fisher線性判別分析(LDA,FDA)。
對於一組具有標籤資訊的高維資料樣本,利用其類別資訊,將其線性投影到一個低維空間,在低維空間中同一類別樣本儘可能靠近,不同類樣本儘可能遠離。
步驟:
- 計算資料樣本集中每個類別樣本的均值
- 計算類內散度矩陣Sw和類間散度矩陣Sb
- 求解\(S_w^{-1}S_b W=λW\)來求解\(S_w^{-1}S_b\)所對應的前\(r\)個最大特徵值所對應的特徵向量,構成矩陣W。
- 透過矩陣W將每個樣本對映到低維空間,實現特徵降維或分類器學習。
支援向量機SVM
線性可分:有一條直線能將兩部分分割開
三維:有一個平面能將兩部分分隔開。
更高維度同理。
支援向量機的基本形式就是最大化分類間隔,即在滿足約束的條件下找到引數w和b,使得γ最大。
還可以透過拉格朗日對偶性變換到對偶向量的最佳化問題,引入拉格朗日乘子α:
線性不可分的情況:
選擇一個核函式,透過將資料對映在高維空間,來解決在原始空間中線性不可分的情況。
低維不可分,但一定存在一個高維特徵空間使樣本可分。
決策樹
三種依據的公式要會背&會算。
透過樹形結構來進行分類。
- 內部節點代表一個屬性或特徵
- 葉節點代表一種類別
- 分支代表一個判斷預測輸出
衡量樣本集合“純度”的指標:資訊熵。資訊熵越大,說明該集合的不確定性越大,純度越低。選擇屬性劃分樣本前後資訊熵的減少量被稱為資訊增益。
建立決策樹的關鍵:尋找最優劃分方式,使得每個結點的純度越來越高。
-
資訊(經驗)熵:\(H(Y)=-\sum^K_{k=1}P(Y=y_k)log_2P(Y=y_k)\)
-
條件熵:在a給定條件下,Y的條件機率分佈的熵對a的數學期望
條件熵\(H(Y|a)=-\sum_{v=1}^V(a=a^v)\sum^K_{k=1}P(Y=y_k|a=a^v)log_2P(Y=y_k|a=a^v)\)
-
資訊增益:\(IG(D,a)=H(Y)-H(Y|a)\)
(劃分前的資訊熵-劃分後的條件熵)
兩個條件a相比,誰帶來的資訊增益越大,越傾向於選擇誰進行劃分。
資訊增益的缺陷:變數較多的屬性更容易被選擇。
為了避免這種情況,通常先找出資訊增益較高的屬性,再從中選擇增益率最高的。
-
資訊增益率:
-
基尼係數:反映了從資料集D中隨機抽取兩個樣本,其類別標記不一致的機率。越小越好。
基尼值:\(Gint(D)=\sum_{k=1}^{K}\sum_{k'≠k}p_kp_{k'}=1-\sum_{k=1}^{K}p_k^2\)
屬性a的基尼指數:
\(Gini\_index(D,a)=\sum_{v=1}^{V}P(a=a^v)Gini(a=a^v)\)
決策樹訓練流程
-
從空決策樹開始
-
選擇下一個最佳屬性進行劃分,選擇依據:
-
迭代
劃分選擇與剪枝
劃分選擇的各種準則雖然對決策樹的尺寸有較大影響,但對泛化效能的影響很有限。
簡直方法和程度對決策樹的泛化效能的影響更為顯著。
剪枝是決策樹應對“過擬合”的主要手段
剪枝的基本策略:
- 預剪枝:提前終止某些分支的生長
- 後剪枝:生成一棵完全樹,再回頭剪枝。
剪枝方法:剪掉某節點為根節點的子樹;將該節點設定為葉節點。
整合學習Ada Boost
整合學習透過構建並結合多個學習器來提升效能。
整合的個體應該:好而不同。
Ada Boost迭代演算法步驟:
- 初始化訓練樣本的權值分佈,每個樣本具有相同權重。(權重和為1)
- 訓練若分類器,如果樣本分類正確,則在下一個訓練樣本集中降低它(這個樣本)的權值;反之提高。用更新過的樣本集去訓練下一個分類器。
- 將所有的弱分類器組合成強分類器。各個弱分離器的訓練過程結束後,加大分類誤差率小的弱分類器的權重,降低分類誤差率大的弱分類器的權重。
某個分類器的錯誤率:\(err_m=\sum w_{i,m}I(樣本i分類錯誤)\)
弱分類器權重:\(a_m=\frac{1}{2}ln\frac{1-err_m}{err_m}\)。\(a_m\)之和不一定\(=1\)。
迭代後樣本權重:
其中\(Z_m\)是歸一化因子,保證權重和為\(1\)。
強分類器\(G(x)=sign(\sum_{m=1}^Ma_m G_m(x))\)
深度學習
深度學習與傳統機器學習的區別:
-
深度學習適合處理大資料,機器學習演算法更適用於小資料。
-
機器學習需要手動進行特徵構造,深度學習能透過多層神經網路自動學習特徵
-
深度學習需要大量計算資源,比如GPU。
-
深度學習通常利用“端到端”的方式構造模型,機器學習通常將問題分為幾個步驟,每個步驟逐一解決,然後將結果組合。
線性迴歸與梯度下降
w的增大/縮小程度:\(η\)為學習率(自己設定)
不斷調整,當到達區域性最低點時會暫停,不一定能找到全域性最低點。
最佳化:求\(L\)對不同引數的偏導,不斷最佳化各種引數。
深度學習的訓練過程:
- 定義帶有未知引數的函式
- 從訓練資料中定義損失函式
- 最佳化
梯度下降公式:
\(w^1=w^0-η▽L(w)\)
梯度反方向是函式值下降最快方向。
其中\(η\)為給定的學習率(步長),\(▽L(w)\)梯度函式。
詳情參考機器學習-梯度下降演算法原理及公式推導
梯度
前饋神經網路FC
線性模型的擴充套件:
分段線性函式。可以用分段線性模型擬合連續曲線。
對於Sigmoid函式\(y=c\times sigmoid(b+wx)\)
更改\(w,b,c\)可以獲得許多sigmoid函式,將這些函式組合起來:
在這裡sigmode叫做啟用函式,sigmode也可以換成其他函式,比如ReLU。
然後將這3段(或更多段)組成一個新的函式\(y\)
這是一個隱藏層(hidden layer)。可以新增更多層隱藏層。
這就是新的model了。
位置函式包括:b,c,b,W(加粗為向量)
最佳化:梯度下降方法,依然是求L對所有引數θ的偏導,迭代更新所有引數。
- 前饋神經網路由輸入層、輸出層和至少一層的隱藏層組成。網路中各個隱藏層中神經元可接受相鄰前序隱藏層中所有神經元傳遞而來的資訊,經過加工處理由將資訊輸出給後續相鄰隱藏層中所有神經元。
- 各個神經元接受前一級的輸入,並輸出到下一層,模型中沒有反饋
- 層與層之間透過全連線進行連結:兩個相鄰層之間的神經元完全成對連線,但層內的神經元不相互連線。
- 也被稱為全連線網路,或多層感知機。
卷積神經網路CNN
例:用於影像分類。
對於計算機來說,一張圖片是一個三維的tensor,包括圖片的寬、高、3個通道channel(rgb)。
寬高100*100,channels有三個,分類特徵1000類,則一層全連線網路需要引數3*107個。太多了!
實際上識別影像並不需要全覆蓋,只要找到某幾個特定的patten(模式)即可實現識別。
名詞:
- 感受野:3*3*3,彼此之間可以重疊
- 卷積核:高與寬,3*3。
簡化1
覆蓋3個chennels,卷積核大小一般為3*3;
每個感受野覆蓋一組神經元;
每個感受野之間有一定重疊,平移的量為stride(自己設定)。
超出整個影像範圍則對超出部分(padding)補0。
感受野覆蓋全圖。
簡化2
同一感受野的不同神經元不共享引數;
不同感受野的神經元共享引數。
下圖中顏色一樣代表引數共享。
卷積層的優勢
- 通常pattern會遠小於整圖大小
- 同樣的pattern會出現在圖上不同區域。
卷積層的另一種解釋
上一層的filter個數→下一層的channels個數→下一層filter高度
池化
對圖片做降取樣,不會對結果有影響。
池化有很多版本,這裡介紹最大池化:
獲得一個特徵圖後將其分成若干組,每組中取最大的留下:
在很多次卷積和池化交替後,最後需要一次Flatten:把所有向量拉直,透過啟用函式獲得最終的分類結果。
CNN的問題和不足
CNN中的卷積操作不滿足尺度和旋轉不變性,需要資料增廣。
序列資料模型
之前討論的都是向量輸入。
當輸入非常複雜、為一個向量集時:
輸出形式有一對一輸出、多對一輸出、多對多輸出;這裡介紹一對一輸出(輸入與輸出數目一樣多)。
如果使用全連線(前饋神經網路,FC),會導致無法注意到如前後文等資訊。
自注意力機制self-attention
所有pattern都是在考慮整個sequence的資訊後才得出的。
可以交替使用自注意力和全連線。
自注意力機制的運作原理
每一個b都是在考慮所有a後才產生的。
對於單獨一個b(如b1):需要考慮a2、a3、a4分別與a1的關聯度α。
計算α的方式:
第一種:
第二種理解視角:
然後計算出b1、b2、b3、b4:
整個過程:(矩陣形式)
其中,只有Wq Wk Wv是需要學習得來的。
這一部分主要考矩陣計算。
位置編碼
self-attention中缺失了位置資訊(例如單詞順序)
可以給每個位置賦予一個唯一的位置編碼向量,它可以是手工設計的,也可以是從資料中學習的。
自注意力機制 vs CNN
CNN是簡化版的self–attention。
self-attention彈性較大,需要的訓練資料比較多;CNN則相反。
自注意力機制 vs RNN
RNN:迴圈神經網路
RNN無法平行處理所有資料,但self–attention可以,所以後者在運算上更有效率。
模型訓練策略
深度學習應用
seq2seq
輸入一個sequence,輸出一個sequence。
不知道輸出的長度,需要機器自己來決定。例如語音識別、翻譯、語音傳譯。
Transformer
self-attention的應用。
Encoder
給一排向量,輸出一排向量。
可以用CNN、RNN、self–attention等方式。
Decoder
會把自己前一時刻的輸出當成現在時刻的輸入。
NAT的好處:可以控制decoder的長度,可以並行
AT:NAT 通常效果比AT差
BERT
self-attention的應用,“填空題”。
屬於自監督學習。
BERT的功能和Transformer的Encoder功能一樣。
掩碼輸入:隨機覆蓋一些tokens。可以使用特殊字元,或隨機替換成其他字元。
BERT的學習目標:成功預測出被掩蓋的文字(屬於的類別)。
下一句預測:輸入時在兩個句子中新增分隔符號;輸出Yes/No,判斷兩個句子是否相接。
但是BERT可以被用在更多的下游任務上,不限於以上兩種訓練任務。
在用於下游任務時,需要少量的標註引數。
GPT
沒考,鴿了
無監督學習
K均值聚類演算法
目標:將n個資料聚類到k個集合。
兩個m維資料之間的歐氏距離為:\(d(x_i,x_j)=\sqrt{(x_{i1}-x_{j1})^2+(x_{i2}-x_{j2})^2+...+(x_{im}-x_{jm})^2}\)
步驟:
-
初始化聚類質心
初始化k個聚類的質心,質心ci可以從n個資料中取樣獲得。每個聚類的集合記為Gj。
-
將每個待聚類資料放入一個聚類集合中
計算待聚類資料xi與質心cj之間的歐式距離;將xi放入與之距離最近的聚類集合中。
-
更新聚類質心
根據每個聚類集合中包含的資料,更新該聚類的質心值。
-
迴圈迭代,直到:達到迭代次數上限,或前後兩次迭代中聚類質心基本不變。
不足:
- 需要事先確定聚類數目
- 需要初始化聚類質心,且對結果有較大影響
- 演算法迭代執行,時間開銷大
- 歐式距離假設每個維度之間的重要性是一樣的。
主成分分析PCA
網課P88,unsupervise
目標:實現特徵降維,去除原始資料之間的冗餘性。即有一個向量x,要將它轉化為維度更低的向量z。z=Wx,要找出W。
如上圖這種,需要找一個方向(W),將二維降成一維。
為了儲存資料所蘊含的資訊,降維投影時應該儘可能將資料向方差更大的方向投影。
即希望對映後的資料z1的方差儘可能大。
推導過程:
其中,Var(z)表示z的方差;
Cov(x)表示協方差,用S表示。
問題轉化為:找一個w1使得藍框中的式子最大。
當然w1不能直接取無窮大……所以新增了限制條件:\(||w^1||_2=(w^1)^TW^1=1\)
(跳過計算過程,直接上結論……)
w1是協方差矩陣S的一個特徵向量,對應於最大特徵值λ1;
w2是協方差矩陣S的一個特徵向量,對應於第二大特徵值λ2
綜上,主成分分析的步驟:
- 資料預處理
- 計算協方差矩陣 \(\sum = \frac{1}{n-1}X^TX\)
- 求得協方差矩陣\(\sum\)的特徵向量和特徵根
- 取前\(l\)個最大特徵根所對應的特徵向量組成對映矩陣W。
- 給定一個樣本xi,可以將其從d維空間下降到\(l\)維空間。
- 將所有降維後資料用Y表示,有\(\overline Y=\overline X \overline W\)
PCA的缺點:
-
因為PCA是無監督的,可能會把兩組資料混在一起處理。
-
PCA是線性的,無法處理曲面資料。
PCA與Fisher的異同
其他常用降維方法:
- 非負矩陣分解NMF
- 多維尺度法MDS
- 流形學習:區域性線性嵌入LLE
- PCA、NMF、MDS都屬於線性降維方法,LLE則是非線性降維方法。
生成式人工智慧
自編碼器
隨機從某個分佈取樣向量作為輸入,會導致輸出可能根本不是影像。
因為實際上影像的類別是有限的。
去噪自編碼器
將原來輸入給自編碼器encoder的影像加入雜訊後再輸入,要求去噪並輸出原來的影像。
思想和BERT很相似。
從自編碼器到生成模型
網課P55。
之前所學到的network都是一個函式,輸入x→得到y。
現在,我們要把network當做一個生成器來使用。
這種情況,可以把x和z兩個向量連線、相加……等等操作後輸入。
z的特別之處在於它是不固定的,每次使用network時z都會從簡單分佈中被隨機取樣出來。
為什麼要訓練生成器?
小精靈影片生成的問題。應該讓機器的輸出不是單一的,而是有機率的。
當我們需要一些“創造力”——需要很多種不同的輸出時,就需要使用生成器。
例如繪圖、對話,等等。
按李老師講課順序這裡應該緊接是生成對抗網路GAN但你航要改我也沒辦法
變分自編碼器VAE
VAE詳細原理
或B站P62,Unsupervise
向Encoder輸入一張圖片,輸出一個向量;
把這個向量輸入給Decoder,輸出一張圖片。
目標是讓兩張圖片儘可能相似。
原理:
VAE和自編碼器一樣有一個Encoder,一個Decoder。
不同的是,VAE的Encoder會輸出兩組向量,另外需要取樣一組來自正態分佈的向量。
為什麼需要VAE?直觀的解釋:
左邊是自編碼器,在滿月和絃月中間生成不出來;
右邊是VAE,新增了噪聲之後,中間有一定重疊的部分;為了與兩邊都儘可能相近,中間就有可能生成介於滿月和絃月之間的圖。
噪聲的方差是自動學習的。
但是如果僅使用重構進行訓練的話,自動學習來的方差會被學習為0。
所以需要對它新增限制(黃框式子)。
圖中藍色線、紅色線分別為式子中的第一、第二項;式子中第三項是進行L2標準化。
綠色線則是兩項相減。
最低點在σ=0的地方,所以我們希望σ接近0,即方差接近1。
正式的解釋方法:
我們的目標是生成圖片;每張圖片可以視作高維空間中的一個點。
所以目標是實現對這個高維函式的機率分佈估計,這樣就可以從機率高的地方找到長得像pokemo的圖(我們需要的圖)。
可以使用高斯混合模型來實現機率分佈估計。
高斯混合模型:由很多高斯分佈疊加來的模型。
取樣過程:
- 決定從哪個高斯函式中取樣(決定m)
- 根據這個高斯函式獲得x。(\(x|m\)~\(N(μ^m,\sum^m\))
- 此時,\(P(x)=∫_zP(z)P(x|z)dz\)
\(p(z)\)是正態分佈;\(p(x)\)和\(p(z)\)的關係是知道的;
現在的目標:
取一組\(μ(z),σ(z)\),使得\(L=\sum_xlogP(x)\)最大。
x是我們看到的圖片。
\(μ(z),σ(z)\)來自NN,所以我們需要調節NN(藍色)中的引數,使得\(L\)最大。
這裡需要引入另一個分佈\(q(z|x)\)。輸入和輸出如圖。
對\(L\)的計算過程:(進行了一堆細看很簡單的恆等運算)
劃線部分可以理解為兩項之間的距離,一定是大於0的。
大於號右側就是左側式子的第一項,因為左側式子第二項(劃線部分)大於0,所以大於號成立。右側記為下界Lb。
引入\(q(z|x)\)的目的在於:避免Lb上升,但\(logP(x)\)不一定上升的情況。
\(logP(x)\)與\(q(z|x)\)無關,由圖中可以看出,調整\(q(z|x)\)使\(L_b\)變大時,會讓\(KL\)變小。
調整\(q(z|x)\)項到一定程度後,\(KL\)會變得很小;
\(logP(x)\)一定要大於\(Lb\),此時再讓\(Lb\)上升,就可以保證\(P(x)\)上升了。
最小化\(KL[q(z|x)||p(z)]\)就是最小化黃框中的內容,推導略。
條件變分自編碼器
可以根據某一個數字影像的特徵生成很多同類的數字影像。
VAE的問題
本質上沒有學習如何生成真實影像,只是在對訓練資料進行記憶和模仿,學習怎麼和資料集中的圖片儘可能相似,難以產生全新的影像。
擴散模型Diffusion Models
網課P168。
擴散模型基本原理
運作:首先給一張全是雜訊的圖片(大小與期望的最終圖片相同),然後不斷做降噪。
“在我開始工作之前,雕塑已經在大理石塊內完成。雕塑已經在那裡,我只需要鑿掉多餘的材料”
圖片已經存在於雜訊裡,我們只是把雜訊去掉。
這裡的Denoise模型都是同一個;但它除了需要輸入影像外,還需要一個數字輸入,表示現在雜訊的嚴重程度。
首先會根據目前雜訊的嚴重程度,生成一張雜訊圖片;
再在原來圖片的基礎上減去生成的這張雜訊圖片,實現“降噪”。
這個生成雜訊圖片的過程所需要的資料是人類製造的:對原始圖片不斷加噪。
這個過程就叫擴散過程。
如果要實現由文字生成圖片(text to image),訓練時需要文字–圖片的成對資料。
DDPM數學原理
擴散過程:
{α1,…,αT}是預先定義好的。
去噪過程:
擴散模型是autoregressive(自迴歸)的,而VAE是non autoregressive的。
自迴歸:是統計上一種處理時間序列的方法,用同一變數例如x的之前各期,亦即x1至xt-1來預測本期xt的表現。即用x預測x,而不是用x預測y。
穩定擴散模型
目前最好的圖片生成模型。包含三個模組:
這三部分一般是分開訓練的。
文字編碼器的訓練
可以用gpt,BERT等等。
解碼器的訓練
解碼器可以在沒有標記資料的情況下進行訓練。
訓練過程:
-
如果“中間產物”為小圖:把訓練資料中的大圖變小圖,再拿來做放大訓練。
-
如果“中間產物”為“隱變數”:需要訓練一個自編碼器,把圖片變成隱變數,再拿來訓練解碼器。
生成式模型的訓練
與擴散模型的不同之處在於,穩定擴散模型的生成式模型將雜訊新增在中間產物上。
生成對抗網路GAN
網課P55。
除了要訓練上文中的生成器,還要訓練一個判別器Discriminator
它的作用是,輸入一個圖片,輸出一個數字。輸出的數字越大,代表輸入的圖片越像二次元人物圖片(。
顯然CNN很適合用來構造判別器。
判別器將和生成器進行迭代訓練,一起“進化”,類似生物界的進化競賽。
判別器學習的目標是讓真實影像輸出高分,生成的影像輸出低分;
而生成器學習的目標是為了“欺騙”判別器。
步驟:
- 固定生成器G,更新判別器D。
- 固定判別器D,更新生成器G(調整引數)。
- ……以此類推,反覆訓練。
理論分析:
從最簡單的一維向量入手。
\(Div(PG,Pdata)\)很類似\(Loss()\)函式。
只要從\(PG\)和\(Pdata\)中進行取樣,就能實現\(Div\)的計算。
由上,\(Div(PG,Pdata)\)與\(max V(D,G)\)有關,可以直接替換,以避開Div的計算問題:
所以用之前所述的迭代訓練的方法,可以求解G*。
影像生成模型評價指標
已學的影像生成模型有:
- 變分自編碼器VAE
- 擴散模型Diffusion Model
- 生成式對抗網路GAN
指標1:FID,越小越好。
把生成的圖片和真實的圖片一起放進去用CNN分類,越接近越好。
指標2:CLIP,越大越好。
把描述要求的文字和生成的影像丟進去計算。
強化學習
基於策略的強化學習
在很多工中,標註資料非常困難。
一些要定義的:
- 狀態:函式輸入
- 環境:給出狀態;給出獎勵。
- 動作:函式輸出,影響環境
- 獎勵
目標:尋找一種策略以最大化獎勵。
如何學習策略是RL的核心。
總之版本012都有缺點,這裡只寫版本3。
\(G\)是累積獎勵,因為不能只看當前的獎勵,這非常短視近利。
\(γ\)叫衰退係數,思想是離當前動作越遠後的狀態,與當前動作關係越小,所以對當前動作得到的分數影響應該越小。
策略梯度PG
每次更新\(\pi^i\)都需要重新獲取採集整個訓練資料集,非常耗時。
因此也有離線策略,不需要每次都重新採集資料。
基於價值的強化學習
Critic評判器
對於策略π,評判狀態s(且執行動作a)的好壞。
價值函式\(V^{\pi}(s)\):使用π時,觀察到狀態s後,未來獲得的折扣累積獎勵的期望。
折扣累積獎勵:
價值函式是評判器的一種,它可以在“遊戲沒有結束”的情況下,就預測出G。
輸入s,觀察物件為π,輸出\(V^{\pi}(s)\)。
訓練\(V^{\pi}(s)\)過程:
-
蒙特卡洛法MC:
完成整場遊戲,獲得訓練資料,進行訓練以實現預測。
-
時序差分法TD:
不必完成整場遊戲,就能獲得訓練資料。
根據這個關係式:
第三行是我們期望的\(V^{\pi}(s_{t})\)和\(V^{\pi}(s_{t+1})\)之間的關係。雖然不知道這兩者的訓練目標數值,但我們知道它們的目標關係,就可以拿來訓練。
目標是讓兩個結果相減後,與rt(收集到的資料)越接近越好。
訓練過程例題:
無論哪種訓練方法,\(V^{\pi}(s_{b})=\frac{6}{8}=\frac{3}{4}\)
資料中sb總是最後一步。
但對於\(V^{\pi}(s_{a})\):
-
MC法中,觀察到sa後r必為0,所以\(V^{\pi}(s_{a})=0\)
-
TD法中,\(V^{\pi}(s_{a})=γV^{\pi}(s_{a+1})+r_a\)
所以\(V^{\pi}(s_{a})=\frac{3}{4}+0=\frac{3}{4}\)
另一種評判器:動作–價值函式
輸入狀態s和動作a,有兩種方法:
其中第二種僅適用於離散動作。
馬爾科夫決策過程
下一狀態只取決於當前狀態(和動作),則稱為滿足馬爾科夫性。
機器人移動問題。
價值函式與動作–價值函式
定義參見Critic評判器中的兩種評判器。
公式:
-
\(V_{\pi}(s)=\sum_{a∈A} \pi (s,a)q_{\pi}(s,a)\)
-
\(q_{\pi}(s,a)=\sum_{s'∈S} Pr(s'|s,a)[R(s,a,s')+γV_{\pi}(s')]\)
\(Pr(s'|s,a)\)為狀態轉移機率,即採取a行動轉移到狀態\(s’\)的機率。
兩者之間的關係:
- 價值函式取值與時間沒有關係,只與策略π、在策略π下從某個狀態轉移到其後續狀態所取得的回報及在後續所得的回報有關。
- 動作–價值函式取值同樣與時間沒有關係,而是與瞬時獎勵和下一步的狀態和動作有關。
貝爾曼方程
貝爾曼方程也被稱為動態規劃方程。
核心思想為遞推關係:
-
\(V_{\pi}(s)=\sum_{a∈A} \pi (s,a)\sum_{s'∈S} Pr(s'|s,a)[R(s,a,s')+γV_{\pi}(s')]\)
在Pr為0,1時可以簡化為:\(V_{\pi}(s)=R(s,a,s')+γV_{\pi}(s')\)
-
\(q_{\pi}(s,a)=\sum_{s'∈S} Pr(s'|s,a)[R(s,a,s')+γ\sum_{a'∈A} \pi (s',a')q_{\pi}(s',a')]\)
-
價值函式的貝爾曼方程描述了當前狀態價值函式和其後續狀態價值函式之間的關係,即當前狀態價值函式等於瞬時獎勵的期望加上後續狀態的(折扣\(γ\))價值函式的期望。
-
動作–價值函式的貝爾曼方程描述了當前動作–價值函式和其後續動作–價值函式之間的關係,即當前狀態動作–價值函式等於瞬時獎勵的期望加上後續狀態的(折扣\(γ\))動作–價值函式的期望。
策略迭代:策略最佳化與策略評估
求解最優策略\(π*\)的思路:
- 策略評估:從任意一種策略開始,計算其價值函式(或動作–價值函式)
- 策略最佳化:根據價值函式對策略進行調整
- 不斷迭代,直到策略收斂。
這個方法叫做通用策略迭代。
策略最佳化
策略的好壞是相對的,比較兩個策略誰“更好”的方法:
即:按新策略修改某一狀態下的操作後,不會影響後續按原策略執行的動作–價值函式。
進行最佳化:
策略評估
- 動態規劃
- 蒙特卡洛取樣
- 時序差分
Q–Learning演算法
慕課浙大吳飛版
Q–Learning演算法是基於動作–價值的強化學習方法,
用一張表來儲存在各個狀態下執行各種動作能帶來的價值\(q_{\pi}(s,a)\),
這張表被稱為Q Table,如下圖:
右圖中,a/b表示\(q_{\pi}(s,上)=a,q_{\pi}(s,右)=b\)
終止狀態的Q函式值設為0/0。
下圖為設定的初始狀態,目標是從左下角s1走到右上角s9。
中間過程獎勵:R=0,越界R=-1,到達終點R=1。
過程:
-
初始化s為初始狀態
-
進入迴圈:
-
對於不同的動作a(不同的行走方向),選擇當前s下\(q_{\pi}(s,a)\)最大的
-
執行動作a,過程中獲得獎勵R,進入下一狀態s’。
-
根據R和s’更新\(q_{\pi}(s,a)\):
\(q’_{\pi}(s,a)=q_{\pi}(s,a)+α[R+γmax_{a'}q_{\pi}(s',a')-q_{\pi}(s,a)]\)
-
-
直到s是終止狀態(越界或到達s9)。
對應到例圖中,則:
-
初始狀態在s1
-
\(q_{\pi}(s1,上)=0.2\gt q_{\pi}(s1,右)=0\),所以向上走。
其中獎勵\(R=0\),進入狀態s4。
-
更新的\(q_{\pi}(s1,上)\)
\(q’_{\pi}(s1,上)=q_{\pi}(s1,上)+α[R+γmax_{a'}q_{\pi}(s4,a')-q_{\pi}(s1,上)]\)
\(α=0.5,R=0,γ=0.99\)都是事先定義的;
\(max_{a'}q_{\pi}(s4,a')\)是在狀態s4中選擇能使動作–價值函式最大的動作 帶來的函式值,即\(max\{0,0.2\}\)。
所以\(q’_{\pi}(s1,上)=0.2+0.5\times[0+0.99\times max\{0,0.2\}-0.2]=0.199\)
這個公式要背。
探索與利用的平衡
在初步的學習中,學習到的路線會相對固定,無法實現機器人對環境的探索。
所以需要引入\(ε\)貪心(\(ε-greedy\))策略。
這裡的\(ε\)是由人設定的,希望機器探索的機率越高,則將\(ε\)設定得越大。
其他強化學習方法
-
稀疏獎勵:難以判斷某個動作好壞
定義額外獎勵來指導智慧體的學習
-
沒有獎勵:
- 模仿學習
- 逆強化學習
簡答題
-
機器學習和深度學習的區別?
資料量、硬體需求、模型構建、輸入方式
-
單層感知機為何無法模擬邏輯異或操作?請設計一個前饋神經網路,用於擬合異或函式。
點(0,0),(1,1)為0,點(0,1),(1,0)為1,感知機是線性分類器,無法構造超平面將這兩類分開。
輸入層維度為2,用於接收兩個運算元;至少有一層隱藏層,且隱藏層中神經元需要包含非線性啟用函式;輸出層維度為1。
-
在前饋神經網路中,所有的引數能否被初始化為0?如果不能,能否全部初始化為其他相同的值?原因是什麼?
不能被初始化為0,也不能被同時初始化為其他相同的值。
如果引數被初始化為相同的值後,在誤差反向傳播的過程中,同一層的神經元的接受到的誤差都相同,更新後這些引數的值仍然相同,因此不管經過多少次迭代,同一層的神經元引數都相同,不同的神經元無法學習到不同特徵的重要程度,失去了深度神經網路學習特徵的能力。
-
最小化重構誤差的思想可以引申到(深度)自編碼器。當採用一層線性編碼器和一層線性解碼器的自編碼器結構,並用梯度下降法透過最小化重構誤差目標函式對編解碼器引數進行最佳化時,其結果跟PCA得到的結果是否相同?為什麼?
不相同,PCA需要正交約束,而自編碼器通常不需要。
變分自動編碼器與傳統自動編碼器相比具有什麼特點?請解釋變分自動編碼器如何實現潛在空間的連續性和可解釋性。
自編碼器通常用於降維和還原,變分自編碼器則可以用於生成任務。隱空間中,透過加入噪聲,實現了從數值編碼到資料分佈的變化。