Machine-Learning
當使用變分自動編碼器生成樣本時,我們從ñ(0,1)ñ(0,1)N(0,1)代替μ+σñ(0,1)μ+σñ(0,1)mu + sigma N(0,1)
背景:我試圖了解變分自動編碼器作為生成器的使用。我的理解:
- 在訓練期間,對於一個輸入點 xi 我們想學習潛在的 μi 和 σi 然後採樣 zi∼N(μi,σi) 並將其饋送到解碼器以進行重建 ˆxi=decode(zi) .
- 但是我們不能用採樣算子做反向傳播,所以我們重新參數化並使用 zi=μi+σiϵ 在哪裡 ϵ∼N(0,1) . 我們的重建變成 ˆxi=decode(μi+σiϵ) .
但是,當我們完成訓練並準備將其用作生成器時,我們會採樣 z∼N(0,1) 並將其提供給解碼器: xsample=decode(z) .
讓我困惑的部分是,在訓練期間,解碼操作是使用 μi+σiϵ 據我了解,這是使用 N(μi,σi) 與不同 μi 和 σi 對於每個訓練示例。然而,在生成期間,解碼操作(有效地)在 ϵ 獨自從 N(0,1) . 我們為什麼要設置 μ=0 和 σ=1 在生成期間(即使用 z=0+1⋅ϵ )?
訓練時,我們在畫 z∼P(z|x) ,然後用解碼 ˆx=g(z) .
在生成期間,我們正在繪製 z∼P(z) ,然後解碼 x=g(z) .
所以這回答了你的問題:在生成過程中,我們希望從潛在代碼的先驗分佈中生成樣本,而在訓練期間,我們正在從後驗分佈中抽取樣本,因為我們正在嘗試重建特定的數據點。