CS236 第 2 講 · 表示機率分佈
Stanford CS236 · Fall 2023 · Lecture 2

Background:怎麼表示一個高維機率分佈

想直接寫下 \(n\) 個像素的聯合分佈,需要 \(2^n-1\) 個參數。這一講介紹三種降低成本的辦法:條件獨立(Bayesian network)、函數形式(logistic regression),以及兩者的結合:chain rule 加上神經網路。第三種就是下一講 autoregressive model 的起點。

讀完這頁你應該能夠

  1. 畫出「資料、模型家族、距離、最佳化」這張學習生成模型的大圖,並說明每個元件的角色。
  2. 計算各種表示法需要的參數量:完整查表、完全獨立、chain rule、Markov、Bayesian network。
  3. 寫出 chain rule 和 Bayes rule,並解釋「只用 chain rule 不省任何參數」。
  4. 從一張 DAG 讀出聯合分佈的分解式,以及它隱含的條件獨立假設。
  5. 比較 Naive Bayes 和 logistic regression:各自的假設、優缺點、什麼時候誰比較好。
  6. 說明為什麼「chain rule + 神經網路條件分佈」能得到一個 deep generative model。
  7. 看懂 \(Z \to X\) 這種兩節點的潛在變數模型,包括 VAE 的生成過程。

前置知識檢查

  • 機率密度和機率質量的差別(第 1 講有補充框,第 9 節會再複習)
  • 條件機率的定義 \(p(a\mid b) = p(a,b)/p(b)\)(第 4 節補充)
  • 獨立的定義 \(p(a,b) = p(a)p(b)\)(第 5 節補充,會區分獨立和條件獨立)
  • 等比級數求和(第 4 節補充)
  • logistic regression 和 sigmoid(第 7 節會從頭講)
  • 神經網路的一層:\(h = f(Ax+b)\)(第 8 節)

投影片轉成圖片後逐頁看過,文中的「投影片 N 的圖」描述圖片內容。標「出處」的補充來自 Ng & Jordan (2002) 原文、Koller & Friedman《Probabilistic Graphical Models》(學生網路的例子),以及 CS228 講義。

01學習生成模型的大圖

老師說這張圖會在整個學期反覆出現。換掉其中的元件,就會得到不同家族的生成模型:autoregressive、diffusion、GAN 等等。01:35

模型家族 𝓜 = {p_θ} P_data 未知,只有樣本 訓練資料 x⁽ⁱ⁾ ~ P_data p_θ 距離 d(P_data, p_θ) 最佳化:在 𝓜 中找 d 最小的 θ
  1. 資料:一堆樣本,假設來自某個未知的資料生成過程 \(P_{\text{data}}\)。可以是網路文字、圖片、DNA 序列。02:06
  2. 模型家族 \(\mathcal{M}\):一組由參數 \(\theta\) 索引的分佈,例如「所有平均與共變異數的高斯」,或「神經網路權重所能表示的所有分佈」。04:09
  3. 距離 / 損失 \(d\):怎麼衡量兩個高維分佈有多像。選擇什麼距離,等於決定「在乎什麼、不在乎什麼」。05:10
  4. 最佳化:在 \(\mathcal{M}\) 裡找最接近 \(P_{\text{data}}\) 的那一點,就像把 \(P_{\text{data}}\) 投影到 \(\mathcal{M}\) 上。

投影片 3 的圖:左邊是四張狗的照片,標 \(x_i\sim P_{\text{data}}\)、\(i = 1,2,\dots,n\);右邊一團綠色的「Model family」,裡面有一點 \(P_\theta\)、\(\theta\in M\);從 \(P_{\text{data}}\) 到 \(P_\theta\) 的箭頭標 \(d(P_{\text{data}}, P_\theta)\)。上面的 SVG 就是照這張圖重畫的。

$$\theta^\star = \arg\min_{\theta}\; d\big(P_{\text{data}},\, p_\theta\big), \qquad p_\theta \in \mathcal{M}$$

這三個選擇都沒有標準答案,這就是為什麼會有這麼多種生成模型。本講處理的是第一個問題:模型家族要怎麼表示?第 4 講處理距離(KL divergence 與 maximum likelihood)。

學到 \(p(x)\) 之後能做的三件事(投影片 3)

  • 生成:\(x_{\text{new}} \sim p(x)\) 應該看起來像狗。
  • 密度估計:狗的圖片 \(p(x)\) 高,其他的低,可以拿來做異常偵測。07:44
  • 非監督式表示學習:為了給「像狗的圖」高機率,模型必須知道這些圖的共同點(耳朵、尾巴、顏色),等於在沒有標籤的情況下學到特徵。08:45

02基本離散分佈:積木

單一隨機變數很簡單。兩塊積木:11:17

分佈值域參數自由參數數量取樣
Bernoulli \(X\sim\mathrm{Ber}(p)\){正, 反}\(P(X=\text{正})=p\)1丟一枚(不公平的)硬幣
Categorical \(Y\sim\mathrm{Cat}(p_1,\dots,p_m)\){1, …, m}\(P(Y=i)=p_i,\ \sum_i p_i = 1\)m − 1擲一顆(不公平的)m 面骰

「自由參數」要扣掉 1,因為機率總和必須是 1:知道前 \(m-1\) 個,最後一個就確定了。

隨機變數、Val(X) 和「從 Categorical 取樣」的實作

隨機變數 \(X\) 是一個「結果不確定的量」。\(\mathrm{Val}(X)\) 是它所有可能取值的集合,例如一個 8-bit 色彩通道 \(\mathrm{Val}(R) = \{0,\dots,255\}\)。大寫 \(X\) 指變數本身,小寫 \(x\) 指某個具體取值。\(p(x)\) 是 \(P(X=x)\) 的簡寫。

電腦怎麼擲一顆不公平的骰子?標準做法叫 inverse CDF sampling:

  1. 抽一個均勻亂數 \(u \sim U(0,1)\)。
  2. 把區間 \([0,1)\) 依序切成長度 \(p_1, p_2, \dots, p_m\) 的小段。
  3. \(u\) 落在第幾段,就回傳那個值。

本頁所有 demo 的取樣都是這樣做的。Bernoulli 是 \(m=2\) 的特例:\(u < p\) 就回傳 1。

03聯合分佈的參數爆炸

一個像素的顏色

用三個隨機變數 \(R, G, B\),各取 0–255。從聯合分佈 \(p(R,G,B)\) 取樣,就是替這個像素隨機選一個顏色。要多少參數?12:53

課堂上有學生猜「3 個」,這是錯的。顏色立方體裡每一格都要一個機率:

$$256 \times 256 \times 256 - 1 \approx 1.68 \times 10^{7}$$

投影片 5 的圖:一個 RGB 色彩立方體,三個軸分別是 red、green、blue,角落從黑到白,表面是連續變化的顏色;下方寫「Sampling from the joint distribution \((r, g, b)\sim p(R, G, B)\) randomly generates a color for the pixel」以及 \(256\cdot256\cdot256 - 1\)。

答 3 隱含了「三個通道互相獨立」的假設,這正是下一節要討論的事。

一張黑白圖片

\(n\) 個二元像素 \(X_1,\dots,X_n\),\(\mathrm{Val}(X_i)=\{0,1\}\)。15:28

  • 可能的圖片(狀態)數:\(\underbrace{2\times2\times\cdots\times2}_{n} = 2^n\)
  • 完整聯合分佈的參數:\(2^n - 1\)。對 28×28 的 MNIST,\(n=784\),\(2^{784}\approx10^{236}\),遠多於宇宙的原子數。18:05

投影片 6 的圖:三張 MNIST 手寫數字(9、3、6),說明一張黑白圖就是 \(n\) 個二元隨機變數 \(X_i\in\{\text{Black},\text{White}\}\) 的一組取值。

參數這麼多,既存不下,也不可能從資料學出來:每個參數都要看到足夠多的對應樣本才能估計,但 \(2^{784}\) 種圖絕大多數一次都不會出現。一定要做假設,問題只在於做什麼假設。

04兩個極端:完全獨立 vs. 鏈式法則

極端一:所有像素互相獨立

如果 \(X_1,\dots,X_n\) 互相獨立,聯合分佈就是邊際分佈的乘積:18:37

$$p(x_1,\dots,x_n) = p(x_1)\,p(x_2)\cdots p(x_n)$$
  • 可能的狀態仍然是 \(2^n\) 個,分佈的定義域沒變。
  • 但參數只要 \(n\) 個:每個像素一個 Bernoulli。這是指數級的節省。
  • 代價:取樣時每個像素自己丟硬幣,完全不看其他像素。生成的「數字」只會是一團雜訊。21:18

投影片 7 的圖:兩張「每個像素獨立取樣」得到的 28×28 黑白圖:中間有一團白點,形狀模糊,看不出任何筆畫。

下面的 Demo A 第一列會讓你親眼看到這種雜訊。

兩條規則

CHAIN RULE(永遠成立) $$p(x_1,\dots,x_n) = p(x_1)\,p(x_2\mid x_1)\,p(x_3\mid x_1,x_2)\cdots p(x_n\mid x_1,\dots,x_{n-1})$$
BAYES RULE $$p(s_1\mid s_2) = \frac{p(s_1, s_2)}{p(s_2)} = \frac{p(s_2\mid s_1)\,p(s_1)}{p(s_2)}$$

Chain rule 是所有 autoregressive model(包括大型語言模型)的基礎:一個句子的機率 = 第一個字的機率 × 給定第一個字下第二個字的機率 × …。它對任何變數順序都成立,像素也可以。21:48

Chain rule 怎麼推出來?

從條件機率的定義 \(p(a\mid b) = p(a,b)/p(b)\) 出發,移項得 \(p(a,b) = p(b)\,p(a\mid b)\)。對三個變數重複使用兩次:

$$p(x_1,x_2,x_3) = p(x_1,x_2)\,p(x_3\mid x_1,x_2) = p(x_1)\,p(x_2\mid x_1)\,p(x_3\mid x_1,x_2)$$

第一步把 \((x_1,x_2)\) 當成一個整體 \(b\),\(x_3\) 當成 \(a\)。用歸納法就能推廣到 \(n\) 個變數。過程沒有用到任何假設,所以叫做「永遠成立」。

Bayes rule 也只是把 \(p(s_1,s_2)\) 用兩種順序展開:\(p(s_1)p(s_2\mid s_1) = p(s_2)p(s_1\mid s_2)\),再除以 \(p(s_2)\)。

極端二:只用 chain rule,什麼都不假設

看起來進步了:每一項都是單一變數的(條件)分佈。但數一下參數:24:52

因子條件變數的組合數參數
\(p(x_1)\)沒有條件1
\(p(x_2\mid x_1)\)\(x_1\in\{0,1\}\),每種各一個 Bernoulli2
\(p(x_3\mid x_1,x_2)\)4 種組合4
⋮⋮
\(p(x_n\mid x_1,\dots,x_{n-1})\)\(2^{n-1}\) 種組合\(2^{n-1}\)
總和\(2^n-1\)

和完整查表完全一樣。老師的說法是 no free lunch:沒有做任何假設,就不可能得到任何節省。最後幾個條件分佈尤其昂貴。25:56

等比級數:為什麼 1 + 2 + 4 + … + 2ⁿ⁻¹ = 2ⁿ − 1?

令 \(S = 1 + 2 + \cdots + 2^{n-1}\),則 \(2S = 2 + 4 + \cdots + 2^n\)。兩式相減,中間項全部抵消:\(2S - S = 2^n - 1\)。

用二進位看更直觀:\(n\) 個 1 組成的二進位數 \(111\cdots1_2\),加 1 就變成 \(1000\cdots0_2 = 2^n\)。

05中間路線:條件獨立

Chain rule 本身沒用,但它是一個好的起點:把它寫出來,再用條件獨立假設把某些條件項刪掉。26:56

Markov 假設

假設「給定 \(X_i\),\(X_{i+1}\) 和更早的 \(X_1,\dots,X_{i-1}\) 條件獨立」,記作 \(X_{i+1} \perp X_1,\dots,X_{i-1} \mid X_i\)。於是:

$$\begin{aligned} p(x_1,\dots,x_n) &= p(x_1)\,p(x_2\mid x_1)\,p(x_3\mid \cancel{x_1}, x_2)\cdots p(x_n\mid \cancel{x_1,\dots}, x_{n-1}) \\ &= p(x_1)\,p(x_2\mid x_1)\,p(x_3\mid x_2)\cdots p(x_n\mid x_{n-1}) \end{aligned}$$

參數:\(1 + 2(n-1) = 2n-1\)。從指數變成線性。

投影片 9 的圖:上半是 chain rule 與「\(1 + 2 + \cdots + 2^{n-1} = 2^n - 1\)」,並舉 \(p(x_2\mid x_1 = 0)\)、\(p(x_2\mid x_1 = 1)\) 各 1 個參數為例;下半在 chain rule 的每一項把 \(x_1,\dots,x_{i-1}\) 劃掉,得到 Markov 鏈,最後一行「How many parameters? \(2n-1\). Exponential reduction!」。

直覺:天氣。「明天的天氣只看今天,不需要知道昨天」。用在語言上就是手機的自動完成只看前一個字:做得到,但效果有限,因為需要更多上下文。28:59

獨立 vs. 條件獨立:兩者互不蘊含

獨立 \(A \perp B\):\(p(a,b) = p(a)\,p(b)\),等價於 \(p(a\mid b) = p(a)\),也就是知道 \(B\) 對猜 \(A\) 沒幫助。

條件獨立 \(A \perp B \mid C\):\(p(a,b\mid c) = p(a\mid c)\,p(b\mid c)\),等價於 \(p(a\mid b,c) = p(a\mid c)\)。意思是已經知道 \(C\) 之後,\(B\) 對猜 \(A\) 沒有額外幫助。

例 1:條件獨立但不獨立。小學生的「鞋子尺寸」和「閱讀能力」明顯相關,因為年紀大的兩者都高。但給定年齡之後,兩者大致無關。年齡是共同原因。

例 2:獨立但不條件獨立。兩枚公平硬幣 \(A, B\) 互相獨立。令 \(C\) = 「兩枚是否相同」。給定 \(C\) 之後,知道 \(A\) 就完全知道 \(B\),兩者不再獨立。這叫 explaining away。

本課最常用的條件獨立形式就是上面的 \(p(a\mid b,c) = p(a\mid c)\):把條件裡的 \(b\) 刪掉。

Demo A模型階梯:同一份資料,四種假設

資料是 1,797 張 8×8 黑白手寫數字(sklearn digits,二值化),所以 \(n=64\)。完整查表需要 \(2^{64}-1 \approx 1.8\times10^{19}\) 個參數。下面四個模型由弱到強排列,都直接在你的瀏覽器裡訓練。前三個靠計數就能學(第 4 講會證明「計數」就是 maximum likelihood),第四個用梯度下降。

Test NLL 是 1,497 張訓練圖以外 300 張測試圖的平均負對數似然,單位是 bits / 張,越低越好。它代表「用這個模型壓縮一張圖平均需要幾個 bit」。完全不學、每個像素丟公平硬幣是 64 bits。

瀏覽器實測的 Test NLL(bits / 張):獨立 36.0、Markov 34.1、鄰居 Bayes net 30.5、chain rule + logistic 25.9。每多一點結構,壓縮就更好;全部都遠低於不學習的 64 bits。觀察重點:

  • 獨立模型只記住「哪些位置常有墨水」,樣本是散在中間的雜點,看不出筆畫。
  • Markov 鏈(逐列掃描,只看左邊一格)能畫出水平的短線段,但上下兩列之間毫無關聯。
  • 鄰居 Bayes net(看上方和左方各一格)開始出現連續的筆畫和封閉形狀,參數仍只有 256 個。
  • Chain rule + logistic regression:每個像素看所有前面的像素,但條件分佈用 logistic 函數表示,而不是查表。參數從 \(2^{64}\) 降到 2,080 個,樣本最像數字。這就是第 8 節「chain rule + 神經網路」的最簡版本,下一講會叫它 FVSBN。
這四個模型的參數怎麼算、怎麼訓練?
  • 獨立:64 個 \(p(x_i=1)\),每個用「訓練集中該位置是 1 的比例」估計。
  • Markov:\(p(x_1)\) 1 個,加上每個 \(i\ge2\) 的 \(p(x_i=1\mid x_{i-1}=0)\) 和 \(p(x_i=1\mid x_{i-1}=1)\) 各 1 個,共 \(1+63\times2=127\)。
  • 鄰居 Bayes net:每個像素的父節點是上方和左方,條件組合 4 種,共 \(64\times4=256\)(邊界上不存在的鄰居當作 0)。
  • Logistic chain rule:\(p(x_i=1\mid x_{<i}) = \sigma\big(b_i + \sum_{j<i} w_{ij}x_j\big)\),參數 \(64 + \sum_{i}(i-1) = 64 + 2016 = 2080\)。用 Adam(minibatch 100、30 個 epoch)最大化訓練集的 log-likelihood。

計數時都加了 Laplace smoothing(分子 +1、分母 +2),避免沒看過的組合得到機率 0,否則測試時 \(\log 0 = -\infty\)。

06Bayesian network

把 Markov 假設一般化:每個變數不一定只看前一個,而是看一組父節點。29:30

定義 一個 Bayesian network 由一張有向無環圖(DAG)\(G=(V,E)\) 指定:
  1. 每個隨機變數 \(X_i\) 一個節點;
  2. 每個節點一個條件機率分佈(CPD)\(p(x_i\mid x_{\mathrm{Pa}(i)})\),\(\mathrm{Pa}(i)\) 是它的父節點。
它定義的聯合分佈是 $$p(x_1,\dots,x_n) = \prod_{i\in V} p(x_i\mid x_{\mathrm{Pa}(i)})$$
  • 為什麼一定是合法的分佈?DAG 一定能排出一個拓撲順序。照這個順序寫 chain rule,再依假設刪掉非父節點的條件,就得到上面的乘積。32:41
  • 為什麼省參數?每個 CPD 的大小是父節點數量的指數,而不是總變數數 \(|V|\) 的指數。圖越稀疏越省,越密越有表達力。單鏈就是 Markov 模型。33:12

投影片 12 的圖:左邊是一張有 directed cycle 的圖(藍色節點沿箭頭繞一圈),右邊是一張 DAG(同樣的節點,箭頭方向改成沒有環),下面註明「DAG stands for Directed Acyclic Graph」。

DAG、拓撲排序,以及「乘起來總和為 1」的證明

DAG:所有邊都有方向,而且沿著箭頭走不可能繞回原點(沒有 directed cycle)。拓撲排序:把節點排成一列,使每條邊都從前面指向後面。DAG 一定排得出來(先拿掉一個沒有入邊的節點,重複即可),有環的圖則排不出來。

總和為 1 的證明:照拓撲順序,最後一個節點 \(X_n\) 不是任何人的父節點,所以它只出現在自己的 CPD 裡。對它求和:

$$\sum_{x_n} \prod_{i} p(x_i\mid x_{\mathrm{Pa}(i)}) = \Big[\prod_{i<n} p(x_i\mid x_{\mathrm{Pa}(i)})\Big]\underbrace{\sum_{x_n} p(x_n\mid x_{\mathrm{Pa}(n)})}_{=1}$$

每次消掉一個葉節點,重複 \(n\) 次,最後得到 1。如果圖有環,就找不到可以先消的節點,這個論證失敗,乘積也確實可能不是合法分佈。

學生網路的例子

五個變數:考試難度 D、學生智力 I、成績 G、SAT 分數 S、推薦信 L。34:15

投影片 13 的圖:Difficulty、Intelligence 指向 Grade,Intelligence 指向 SAT,Grade 指向 Letter,每個節點旁邊掛一張 CPD 表:\(p(d^0, d^1) = (0.6, 0.4)\)、\(p(i^0, i^1) = (0.7, 0.3)\);\(p(g\mid i, d)\) 四列 \((i^0d^0)\ 0.3/0.4/0.3\)、\((i^0d^1)\ 0.05/0.25/0.7\)、\((i^1d^0)\ 0.9/0.08/0.02\)、\((i^1d^1)\ 0.5/0.3/0.2\);\(p(s\mid i)\):\(i^0\) 為 0.95/0.05、\(i^1\) 為 0.2/0.8;\(p(l\mid g)\):\(g^1\) 0.1/0.9、\(g^2\) 0.4/0.6、\(g^3\) 0.99/0.01。(\(g^1\) 是最好的成績。)Demo B 用的就是這幾張表。

出處:這個「學生網路」是 Koller & Friedman《Probabilistic Graphical Models》(2009)第 3 章的經典例子,CS228 講義也沿用它。

Demo B · 讀出分解式、計算機率、祖先取樣

D難度 I智力 G成績 SSAT L推薦信
$$p(d,i,g,s,l) = p(d)\,p(i)\,p(g\mid i,d)\,p(s\mid i)\,p(l\mid g)$$
按「取樣 1 次」,看祖先取樣依拓撲順序逐一決定每個變數。

參數量(D、I、S、L 各 2 值,G 有 3 個等第):

表示法計算參數
完整聯合分佈\(2\cdot2\cdot3\cdot2\cdot2 - 1\)47
Bayesian network\(\underbrace{1}_{D}+\underbrace{1}_{I}+\underbrace{4\times2}_{G\mid I,D}+\underbrace{2\times1}_{S\mid I}+\underbrace{3\times1}_{L\mid G}\)15

圖的結構 = 條件獨立假設

把上面的分解式和「不做任何假設」的 chain rule(順序 D, I, G, S, L)並排:36:19

$$\begin{aligned} \text{chain rule:}\quad &p(d)\;p(i\mid d)\;p(g\mid i,d)\;p(s\mid i,d,g)\;p(l\mid g,d,i,s) \\ \text{BN:}\quad &p(d)\;p(i)\;\;\;\;\;\;\;p(g\mid i,d)\;p(s\mid i)\;\;\;\;\;\;\;\;\;p(l\mid g) \end{aligned}$$

每一個被刪掉的條件,就是一條獨立假設:

  • \(p(i\mid d)\to p(i)\):\(D \perp I\)(考試難度和學生智力無關)
  • \(p(s\mid i,d,g)\to p(s\mid i)\):\(S \perp \{D,G\}\mid I\)(知道智力後,SAT 和這門課的難度、成績無關)
  • \(p(l\mid g,d,i,s)\to p(l\mid g)\):\(L \perp \{I,D,S\}\mid G\)(推薦信只看成績)

投影片 14 的圖:同一張學生網路(不含 CPD 表),下面先寫出 BN 的分解,再寫出「任何分佈都可以用 chain rule 寫成」的 \(p(d)p(i\mid d)p(g\mid i,d)p(s\mid i,d,g)p(l\mid g,d,i,s)\),最後一行列出三個額外的條件獨立:\(D\perp I\)、\(S\perp\{D,G\}\mid I\)、\(L\perp\{I,D,S\}\mid G\)。

小結與本課的定位

  • 算任一組取值的機率:把 CPD 乘起來(Demo B 右上)。
  • 取樣:照 DAG 順序,從每個 CPD 依序取樣,叫做 ancestral sampling(Demo B 右下)。37:54
  • 從圖的結構可以讀出部分條件獨立性質。
老師怎麼說 · 38:24這門課不走傳統機率圖模型(PGM,那是 CS228 的內容)的路線。我們只會用很簡單的圖,通常兩三個隨機變數或隨機向量。真正的「簡化」改用一種比較軟的方式:用神經網路來表示變數之間的關係。38:24

07Generative vs. discriminative

為了把「神經網路」接進來,先看一個熟悉的分類問題,比較兩種建模方式。39:55

Naive Bayes:一個用來分類的生成模型

垃圾郵件分類:\(Y=1\) 是垃圾信。字彙表有 \(n\) 個字,\(X_i=1\) 表示第 \(i\) 個字出現在信裡。40:29

假設:給定 \(Y\),所有字互相條件獨立。對應的 Bayes net 是 \(Y\) 指向每一個 \(X_i\):

$$p(y, x_1,\dots,x_n) = p(y)\prod_{i=1}^{n} p(x_i\mid y)$$

它的生成故事是:先決定這封信是不是垃圾信,再依此逐字決定每個字出不出現。41:32

投影片 16 的圖:一個標「Label」的節點 \(Y\),箭頭指向下方一排「Features」\(X_1, X_2, X_3,\dots,X_n\),特徵之間沒有任何邊。

  • 訓練:數「垃圾信中出現字 \(i\) 的比例」等等,參數只有 \(1 + 2n\) 個。
  • 分類:用 Bayes rule 反推:43:07
$$p(Y=1\mid x_1,\dots,x_n) = \frac{p(Y=1)\prod_{i} p(x_i\mid Y=1)}{\sum_{y\in\{0,1\}} p(Y=y)\prod_{i} p(x_i\mid Y=y)}$$

假設顯然不對:「bank」出現會讓「account」更可能出現。但它在實務上常常還算堪用。投影片的說法是:幾乎所有機率模型都是錯的,但其中很多仍然有用。44:09

同一個聯合分佈,兩種 chain rule 順序

$$p(Y, \mathbf{X}) = \underbrace{p(\mathbf{X}\mid Y)\,p(Y)}_{\text{generative:}Y\to\mathbf{X}} = \underbrace{p(Y\mid \mathbf{X})\,p(\mathbf{X})}_{\text{discriminative:}\mathbf{X}\to Y}$$
  • Generative(\(Y\to\mathbf X\)):要學 \(p(Y)\) 和 \(p(\mathbf X\mid Y)\),再用 Bayes rule 算 \(p(Y\mid\mathbf X)\)。
  • Discriminative(\(\mathbf X\to Y\)):直接學 \(p(Y\mid\mathbf X)\)。完全不需要建模 \(p(\mathbf X)\),反正測試時 \(\mathbf X\) 一定會給你。46:46

投影片 18–20 的圖:(18) 兩張兩節點的圖:Generative 是 \(Y\to X\),Discriminative 是 \(X\to Y\)(\(X\) 塗灰表示永遠觀測到)。(19) 把 \(X\) 展開成 \(X_1,\dots,X_n\):generative 這邊 \(Y\) 指向每個 \(X_i\)、\(X_i\) 之間也有一串邊;discriminative 這邊 \(X_1,\dots,X_n\) 之間互相連接、全部指向 \(Y\)。(20) 左邊那張完整的 generative 圖,經過一個粗箭頭,刪掉 \(X_i\) 之間所有的邊,變成 Naive Bayes。

但兩邊都沒有免費午餐

把 \(\mathbf X\) 展開成 \(X_1,\dots,X_n\):47:47

$$\begin{aligned} \text{generative:}\quad p(Y,\mathbf X) &= p(Y)\,p(X_1\mid Y)\,p(X_2\mid Y,X_1)\cdots p(X_n\mid Y,X_1,\dots,X_{n-1}) \\ \text{discriminative:}\quad p(Y,\mathbf X) &= p(X_1)\,p(X_2\mid X_1)\cdots p(Y\mid X_1,\dots,X_n) \end{aligned}$$
  • Generative 這邊,\(p(Y)\) 很簡單,但 \(X_i\) 們有很多父節點。Naive Bayes 的解法是砍邊(條件獨立)。
  • Discriminative 這邊,不用管 \(p(\mathbf X)\),但 \(p(Y\mid X_1,\dots,X_n)\) 有 \(2^n\) 種條件組合,查表一樣存不下。50:55解法是假設函數形式。

Logistic regression:假設函數形式

不再用表格,而是假設 \(p(Y=1\mid\mathbf x;\boldsymbol\alpha) = f(\mathbf x,\boldsymbol\alpha)\),\(f\) 要滿足:52:27

  • 輸出在 0 和 1 之間(它是機率);
  • 以某種簡單但合理的方式依賴 \(x_1,\dots,x_n\);
  • 只用 \(n+1\) 個參數 \(\boldsymbol\alpha\) 就能完全描述(精簡)。
$$z(\boldsymbol\alpha,\mathbf x) = \alpha_0 + \sum_{i=1}^{n}\alpha_i x_i, \qquad p(Y=1\mid\mathbf x;\boldsymbol\alpha) = \sigma\big(z(\boldsymbol\alpha,\mathbf x)\big), \qquad \sigma(z) = \frac{1}{1+e^{-z}}$$

這樣假設的後果(投影片 22):59:12

  1. 決策邊界 \(p(Y=1\mid\mathbf x) > 0.5\) 在 \(\mathbf x\) 上是線性的(\(z>0\) 是一個超平面的一側)。
  2. 等機率的等高線都是直線。
  3. 機率隨 \(\mathbf x\) 變化的方式被固定成 S 形曲線。如果真實的 \(p(y\mid x)\) 長得完全不一樣,這個模型就會表現不好。

投影片 21–22 的圖:(21) 右邊是 sigmoid 曲線 \(\sigma(z)\),從 0 平滑升到 1。(22) 三張圖:第一張是二維特徵平面上的紅色 + 與藍色 ◆ 兩類點,背景是預測機率的等高線,決策邊界是一條直線;第二張是同一個機率的俯視圖,等機率線全是平行直線;第三張是機率曲面的 3D 圖,沿一個方向呈 S 形上升。

Sigmoid、log-odds,以及為什麼叫「regression」

\(\sigma(z) = 1/(1+e^{-z})\) 把整條實數線壓到 \((0,1)\):\(\sigma(0)=0.5\),\(z\to+\infty\) 時趨近 1,\(z\to-\infty\) 時趨近 0,而且 \(\sigma(-z) = 1-\sigma(z)\)。

它的反函數是 log-odds(logit):若 \(p=\sigma(z)\),則 \(z = \log\dfrac{p}{1-p}\)。所以 logistic regression 的真正假設是:log-odds 是 \(\mathbf x\) 的線性函數。

老師解釋了名字的由來:它不是查表,而是一個把 \(\mathbf x\)「迴歸」到機率值的函數。只是這個迴歸的輸出被限制在 0 和 1 之間,所以要套上 sigmoid。55:04

課堂問答:Naive Bayes 和 logistic regression 的關係

學生問:線性依賴是不是就等於假設各個 \(X\) 互相獨立?老師回答:反過來才成立。Naive Bayes 的分解式會推出 \(p(y\mid\mathbf x)\) 恰好是 logistic 形式,但 logistic 形式並不蘊含 Naive Bayes。所以 logistic regression 做的假設比較弱。56:06

證明:Naive Bayes 推出 logistic 形式(課堂只提了結論)

令 \(\theta_{i1} = p(X_i=1\mid Y=1)\),\(\theta_{i0} = p(X_i=1\mid Y=0)\),\(\pi = p(Y=1)\)。因為 \(x_i\in\{0,1\}\),可以寫成

$$p(x_i\mid y) = \theta_{iy}^{\,x_i}(1-\theta_{iy})^{1-x_i}$$

計算後驗的 log-odds:

$$\begin{aligned} \log\frac{p(Y=1\mid\mathbf x)}{p(Y=0\mid\mathbf x)} &= \log\frac{\pi}{1-\pi} + \sum_i \Big[x_i\log\frac{\theta_{i1}}{\theta_{i0}} + (1-x_i)\log\frac{1-\theta_{i1}}{1-\theta_{i0}}\Big] \\ &= \underbrace{\log\frac{\pi}{1-\pi} + \sum_i\log\frac{1-\theta_{i1}}{1-\theta_{i0}}}_{\alpha_0} + \sum_i x_i\underbrace{\log\frac{\theta_{i1}(1-\theta_{i0})}{\theta_{i0}(1-\theta_{i1})}}_{\alpha_i} \end{aligned}$$

(分母 \(p(\mathbf x)\) 在兩類相除時約掉了。)log-odds 是 \(\mathbf x\) 的線性函數,所以 \(p(Y=1\mid\mathbf x) = \sigma(\alpha_0 + \sum_i\alpha_i x_i)\),正是 logistic regression 的形式。

反方向不成立:logistic regression 可以學出任何 \(\boldsymbol\alpha\),但很多產生線性 log-odds 的資料分佈並不滿足「給定 \(Y\) 下各字獨立」。所以 logistic regression 的模型家族(作為條件分佈)比 Naive Bayes 推出的還要大。

什麼時候誰比較好?

  • 資料多:logistic regression 假設較少,通常比較準。57:10
  • 資料少:Naive Bayes 的強假設像一個先驗,反而有幫助。
  • 相關的特徵:如果「bank」和「account」總是一起出現,Naive Bayes 被迫當它們是獨立證據,會重複計算,變得過度自信。Logistic regression 可以把其中一個係數設為 0。61:19
  • 缺值:discriminative model 只會從完整的 \(\mathbf x\) 預測 \(y\)。有些像素或特徵缺了,它不知道怎麼辦,因為它沒有建模 \(p(\mathbf X)\)。生成模型擁有完整的聯合分佈,原則上可以「從任何東西預測任何東西」:對沒看到的變數做邊際化,或直接補值。62:53
缺值時,生成模型怎麼算 p(y | 部分 x)?

把特徵分成看得到的 \(\mathbf x_e\)(evidence)和看不到的 \(\mathbf x_h\)。對看不到的部分求和(邊際化):

$$p(y\mid\mathbf x_e) = \frac{\sum_{\mathbf x_h} p(y,\mathbf x_e,\mathbf x_h)}{\sum_{y'}\sum_{\mathbf x_h} p(y',\mathbf x_e,\mathbf x_h)}$$

對 Naive Bayes 來說特別簡單:\(\sum_{x_h} p(x_h\mid y) = 1\),所以缺掉的字直接從乘積中消失,只要用看得到的字算就好。

這個「生成模型能處理任意條件查詢」的性質,正是第 1 講 inpainting、超解析度能用生成模型解的原因。

「資料少時 Naive Bayes 較好」的出處

這個結論來自 Ng & Jordan (2002) 的經典論文〈On Discriminative vs. Generative Classifiers〉。這裡的 \(n\) 是特徵數,比較的是分類錯誤率:

  • 漸近而言(樣本無限多),logistic regression 的錯誤率不會比 Naive Bayes 高(Proposition 1):它在所有線性分類器裡找最好的,Naive Bayes 選出的也是一個線性分類器。
  • 但要接近各自的漸近錯誤率,logistic regression 需要 \(O(n)\) 個樣本(Proposition 2,由 VC 維度 \(n\) 的一致收斂界得到,而且最壞情況下也至少要這麼多);Naive Bayes 只需要 \(O(\log n)\) 個(Lemma 3 加上 Corollary 6,需要一些溫和的條件,Naive Bayes 的假設成立時這些條件會滿足)。

所以兩者的學習曲線常會交叉:樣本少時 Naive Bayes 較好,樣本多時 logistic regression 較好。論文用 UCI 資料集的實驗展示了這兩個區間。下面的 Demo C 可以重現這個交叉。

出處:Ng & Jordan (2002) §3 Proposition 1–2、Lemma 3、Corollary 6,以及摘要。

Demo CNaive Bayes vs. logistic regression

合成的垃圾郵件資料:5 個真正有資訊的字(第 1 個是「bank」),再加上 \(k\) 個「bank」的完全複製品(「account」等,總是和 bank 同時出現)。複製品不帶任何新資訊,但 Naive Bayes 會把它們當成獨立證據。

Naive BayesLogistic regression最佳可能(真實後驗)

右圖是測試集的平均 log-loss(越低越好)對訓練樣本數 N(對數刻度),每點是 6 次隨機重抽的平均。試試看:

  • \(k=0\):Naive Bayes 的假設完全正確,它在每個 N 都很好,小樣本時明顯勝出。
  • \(k=1\):只有一個複製品。N 很小時 Naive Bayes 仍然較好,但大約在 N = 20–40 之間兩條曲線交叉,之後 logistic regression 勝出,因為 Naive Bayes 停在比較差的位置。這就是 Ng & Jordan 描述的現象。
  • \(k=3\) 以上:Naive Bayes 把 bank 的證據算了 \(k+1\) 次,在每個 N 都比較差。左邊「只含 bank 的信」可以看到它的機率被推向極端(真實值約 0.45,它給出接近 1)。Logistic regression 則逼近最佳。

08把神經網路當成條件分佈

Logistic regression 仍然假設 log-odds 是線性的,這可能太簡單。更有彈性的做法是先把 \(\mathbf x\) 做非線性轉換,再做 logistic regression:64:56

$$\mathbf h = f(A\mathbf x + \mathbf b), \qquad p_{\text{Neural}}(Y=1\mid\mathbf x;\boldsymbol\alpha,A,\mathbf b) = \sigma\Big(\alpha_0 + \sum_{i=1}^{h}\alpha_i h_i\Big)$$
  • \(\mathbf h\) 是學出來的特徵,\(f\) 是逐元素的非線性函數。這就是一層的神經網路。
  • 參數變多(\(A, \mathbf b, \boldsymbol\alpha\)),但能表示更複雜的 \(p(y\mid\mathbf x)\) 形狀。
  • 把 \(\mathbf h\) 再送進下一層,重複很多次,就是深度神經網路。

投影片 26 的圖:一個小型神經網路:輸入 \(x_1, x_2, x_3\) 連到一排隱藏單元(全連接),再匯集到單一輸出 \(y\)。

課堂問答 · 67:07學生問:既然有了 \(A\) 和 \(\mathbf b\),為什麼還需要 \(\boldsymbol\alpha\)?老師答:\(A\mathbf x+\mathbf b\) 是一個向量,最後還是要映射成一個純量機率,\(\boldsymbol\alpha\) 負責這件事。這樣寫也讓它看起來是 logistic regression 的嚴格推廣。如果 \(Y\) 是多類別,最後一步就換成 softmax。67:07

Bayes net vs. 神經模型:本講的結論

三種寫法放在一起看(投影片 27):69:18

$$\begin{aligned} \text{完全一般(chain rule):}\; &p(x_1)\,p(x_2\mid x_1)\,p(x_3\mid x_1,x_2)\,p(x_4\mid x_1,x_2,x_3) \\ \text{Bayes net:}\; &p(x_1)\,p(x_2\mid x_1)\,p(x_3\mid \cancel{x_1},x_2)\,p(x_4\mid x_1,\cancel{x_2,x_3}) \\ \text{神經模型:}\; &p(x_1)\,p(x_2\mid x_1)\,p_{\text{Neural}}(x_3\mid x_1,x_2)\,p_{\text{Neural}}(x_4\mid x_1,x_2,x_3) \end{aligned}$$
  • Bayes net:靠刪掉條件變數來簡化,也就是條件獨立。對影像和文字通常太強。
  • 神經模型:保留所有條件變數,但假設條件分佈有特定的函數形式。夠深的網路可以逼近任何函數(universal approximation)。

投影片 27 的圖:三行公式。第一行 chain rule(「Fully General」);第二行 Bayes net,把 \(p(x_3\mid x_1,x_2)\) 中的 \(x_1\)、\(p(x_4\mid x_1,x_2,x_3)\) 中的 \(x_2, x_3\) 劃掉(「Assumes conditional independencies」);第三行把後兩項換成 \(p_{\text{Neural}}\)(「Assume specific functional form for the conditionals. A sufficiently deep neural net can approximate any function.」)。

「chain rule + 每個條件分佈用神經網路」就是 neural autoregressive model,也是大型語言模型在做的事:用神經網路從前面的字預測下一個字。Demo A 第四列就是它最簡單的版本(每個條件是一個 logistic regression)。68:45

老師怎麼說 · 71:22還有一個實務問題:序列中每個位置都需要一個不同的神經網路,這很難做。所以要想辦法把這些網路的權重綁在一起(weight tying / sharing),實際上才可行。這是下一講的主題。71:22
Universal approximation 定理在說什麼?它保證了什麼、沒保證什麼?

定理大意:只要隱藏單元夠多,一層隱藏層、使用非線性激活函數的神經網路就能以任意精度逼近任何(在有界區域上)連續的函數。

它保證:神經網路的模型家族夠大,原則上能表示需要的條件分佈。

它沒保證:(1) 需要多少單元(可能多到不實際);(2) 梯度下降能找到那組權重;(3) 用有限資料學到的結果能泛化。所以老師說「no free lunch」:我們賭的是神經網路能捕捉這些條件分佈,實際上不一定成立。

09連續變數與兩節點的潛在變數模型

連續變數有無限多個可能值,表格完全不可行,一定要用參數化的密度函數:72:56

$$\text{Gaussian: } p_X(x) = \frac{1}{\sigma\sqrt{2\pi}}e^{-(x-\mu)^2/2\sigma^2}, \qquad \text{Uniform: } p_X(x) = \frac{1}{b-a}\mathbf 1[a\le x\le b]$$

多維的高斯(\(\mathbf x\in\mathbb R^n\)):

$$p_{\mathbf X}(\mathbf x) = \frac{1}{\sqrt{(2\pi)^n|\Sigma|}}\exp\Big(-\tfrac12(\mathbf x-\boldsymbol\mu)^\top\Sigma^{-1}(\mathbf x-\boldsymbol\mu)\Big)$$

Chain rule、Bayes rule 對密度一樣成立,例如 $$p_{X,Y,Z}(x,y,z) = p_X(x)\,p_{Y\mid X}(y\mid x)\,p_{Z\mid X,Y}(z\mid x,y)$$ 所以 Bayes net 和神經網路可以自由混搭連續與離散變數。74:57

多維高斯的參數量,以及 |Σ| 和 Σ⁻¹ 是什麼

\(\boldsymbol\mu\) 有 \(n\) 個數,\(\Sigma\) 是對稱的 \(n\times n\) 共變異數矩陣,有 \(n(n+1)/2\) 個自由數。總共 \(O(n^2)\):對 \(n=784\) 約 31 萬個,可以存。但高斯只能表示「一個橢圓團」,形狀太簡單,不夠描述手寫數字。

\(|\Sigma|\) 是行列式,衡量這個橢圓團的「體積」,放在分母讓積分等於 1。\(\Sigma^{-1}\) 決定橢圓的方向和各軸的伸縮。\((\mathbf x-\boldsymbol\mu)^\top\Sigma^{-1}(\mathbf x-\boldsymbol\mu)\) 叫 Mahalanobis 距離的平方:考慮各方向尺度後,\(\mathbf x\) 離中心多遠。

三個 \(Z\to X\) 的例子(投影片 29)

投影片 28–29:兩頁都是純文字。28 列出一維 Gaussian、Uniform 與多維 Gaussian 的密度,以及「Chain rule, Bayes rule, etc all still apply」的連續版 chain rule;29 列出下面三個例子,最後一句「Note: Even if \(\mu_\theta, \sigma_\phi\) are very deep (flexible), functional form is still Gaussian」。

都是兩節點的 Bayes net,分解為 \(p_{Z,X}(z,x) = p_Z(z)\,p_{X\mid Z}(x\mid z)\):75:58

  1. 兩個高斯的混合:\(Z\sim\mathrm{Bernoulli}(p)\);\(X\mid Z=0 \sim\mathcal N(\mu_0,\sigma_0)\),\(X\mid Z=1\sim\mathcal N(\mu_1,\sigma_1)\)。參數 \(p,\mu_0,\sigma_0,\mu_1,\sigma_1\)。(第 1 講 demo 的 GMM 就是它的多元推廣。)
  2. 均勻潛在變數:\(Z\sim U(a,b)\),\(X\mid Z=z\sim\mathcal N(z,\sigma)\)。參數 \(a,b,\sigma\)。77:32
  3. Variational autoencoder:\(Z\sim\mathcal N(0,1)\),\(X\mid Z=z\sim\mathcal N\big(\mu_\theta(z), e^{\sigma_\phi(z)}\big)\),其中 \(\mu_\theta,\sigma_\phi\) 是神經網路。這裡 Bayes net 和神經網路混在一起。78:02
老師怎麼說 · 79:36即使 \(\mu_\theta\) 和 \(\sigma_\phi\) 非常深、非常有彈性,給定 \(z\) 之後 \(x\) 的分佈仍然是高斯。這是一個取捨。79:36

但對 \(z\) 積分後的邊際分佈 \(p(x) = \int p(z)\,p(x\mid z)\,dz\) 可以非常複雜,因為它是無限多個高斯的混合。下面的 demo 把這點畫出來。

Demo D · 給定 z 是高斯,對 z 積分後就不是了

邊際分佈 p(x)幾個 z 值下的 p(z)·p(x | z)樣本直方圖

在 ③ 中,\(\mu(z) = 1.6\tanh(3z) + 0.5\sin(4z)\) 是一個固定的小函數,代替訓練好的 decoder。橘色的每一條都只是一個鐘形,但加起來的藍色曲線有好幾個峰。把 σ 調小,峰會更尖、更多。第 5 講會講怎麼訓練這種模型,難點在於那個積分算不出來。

常見誤解

誤解:「用 chain rule 拆開就能省參數」。Chain rule 沒有任何假設,參數仍然是 \(2^n-1\)。節省一定來自額外的假設:條件獨立,或函數形式。
誤解:「獨立和條件獨立差不多」。兩者互不蘊含。有共同原因的變數彼此相關,但給定共同原因之後可能就條件獨立(鞋子尺寸和閱讀能力);反過來,原本獨立的變數在給定共同結果之後會變相關(explaining away)。
誤解:「Bayes net 的箭頭代表因果」。箭頭只代表一種分解順序和條件獨立結構。同一個分佈可以用不同方向的圖表示,例如 \(Y\to X\) 和 \(X\to Y\) 都能表示任意的 \(p(X,Y)\)。
誤解:「Discriminative model 沒有維度問題」。\(p(Y\mid X_1,\dots,X_n)\) 用表格一樣需要 \(2^n\) 列。它也必須做假設(函數形式)。
誤解:「Logistic regression 是線性模型,所以輸出的機率也是線性的」。線性的是 log-odds 和決策邊界,機率本身是 S 形。
誤解:「VAE 的 decoder 輸出高斯,所以 VAE 只能生成高斯分佈」。只有 \(p(x\mid z)\) 是高斯。\(p(x)=\int p(z)p(x\mid z)dz\) 是無限混合,可以很複雜(Demo D)。

自我測驗

1. 學習生成模型的大圖中有哪三個需要「選擇」的元件?
模型家族 \(\mathcal M\)(怎麼表示 \(p_\theta\))、距離或損失 \(d(P_{\text{data}},p_\theta)\)、以及最佳化方法(怎麼在 \(\mathcal M\) 中找到 \(d\) 最小的那一個)。資料是給定的。
2. 三個像素,每個像素是 RGB、各 256 階。完整聯合分佈要多少參數?
總共 9 個變數,每個 256 種值:\(256^9 - 1 = 2^{72}-1 \approx 4.7\times10^{21}\)。
3. n 個二元變數,用 chain rule(不做假設)要多少參數?為什麼?
\(1+2+4+\cdots+2^{n-1} = 2^n-1\),和完整查表相同。第 \(i\) 個因子要對前面 \(i-1\) 個變數的每一種組合(\(2^{i-1}\) 種)各給一個 Bernoulli 參數。
4. 在 Markov 假設下參數是多少?寫出它用的條件獨立式。
\(X_{i+1}\perp X_1,\dots,X_{i-1}\mid X_i\)。參數 \(1 + 2(n-1) = 2n-1\)。
5. 一個 Bayes net 中每個節點最多 k 個父節點,所有變數二元。參數最多多少?
每個節點最多 \(2^k\) 種父節點組合,各需 1 個參數,所以最多 \(n\cdot 2^k\)。對 \(n\) 是線性,對 \(k\) 是指數。
6. 學生網路中,為什麼可以寫 p(s | i) 而不是 p(s | i, d, g)?這代表什麼假設?
因為圖中 S 的父節點只有 I。它代表 \(S\perp\{D,G\}\mid I\):知道智力之後,這門課的難度和成績對預測 SAT 沒有額外資訊。
7. 為什麼有環的有向圖不能當 Bayesian network?
有環就排不出拓撲順序,CPD 的乘積無法對應到任何一個 chain rule 的分解,也就無法保證它是加總為 1 的合法分佈(「逐一消去葉節點」的證明找不到可以先消的節點)。
8. 證明(或描述)Naive Bayes 的後驗具有 logistic 形式。反過來成立嗎?
後驗的 log-odds 是 $$\log\frac{\pi}{1-\pi}+\sum_i\Big[x_i\log\frac{\theta_{i1}}{\theta_{i0}}+(1-x_i)\log\frac{1-\theta_{i1}}{1-\theta_{i0}}\Big]$$ 整理後是 \(\alpha_0+\sum_i\alpha_ix_i\),所以 \(p(Y=1\mid\mathbf x)=\sigma(\cdot)\)。反過來不成立:logistic 形式不要求各字在給定 Y 下獨立。
9. 「bank」和「account」總是同時出現。Naive Bayes 和 logistic regression 各會怎樣?
Naive Bayes 把兩者當獨立證據,同一份證據算兩次,後驗會過度自信。Logistic regression 可以把其中一個係數設為 0(或把權重分給兩者),不會重複計算。
10. 給一張缺了一半像素的圖,discriminative 分類器能補回缺的像素嗎?生成模型呢?
Discriminative 分類器不行,它只建模 \(p(y\mid\mathbf x)\),對像素之間的關係一無所知。生成模型建模了 \(p(\mathbf x)\)(或 \(p(\mathbf x,y)\)),可以算 \(p(\mathbf x_{\text{缺}}\mid\mathbf x_{\text{有}})\) 並取樣補值(計算上可能很難,但資訊是有的)。
11. 「chain rule + 神經網路」的模型為什麼有實務上的困難?怎麼解決?
第 \(i\) 個條件分佈的輸入長度不同(\(i-1\) 個變數),若每個位置都用一個獨立的網路,參數和計算量都會很大。解法是在不同位置之間共享(綁定)權重,這是第 3 講的 NADE、RNN、Transformer 在做的事。
12. VAE 中 p(x | z) 是高斯。p(x) 也是高斯嗎?
一般不是。\(p(x)=\int p(z)\,\mathcal N(x;\mu_\theta(z),\sigma^2(z))\,dz\) 是無限多個高斯的混合。只要 \(\mu_\theta\) 是非線性的,結果就可以有多峰、彎曲等複雜形狀。

延伸閱讀