Neural-Networks

為什麼在變分自動編碼器(高斯變分族)中我們建模日誌σ2日誌⁡σ2logsigma^2並不是σ2σ2sigma^2(或者σσsigma) 本身?

  • June 26, 2018

理論上,VAE 中的編碼器(假設變分族是高斯的)生成和(或者)。但是,在實踐中,我看到人們假設輸出是. 為什麼這是必要的或有用的?

它帶來了穩定性和易於訓練。根據定義,sigma 必須是正實數。強制執行此操作的一種方法是使用 ReLU 函數來獲取其值,但梯度在零附近沒有很好地定義。此外,標準差值通常非常小 1»sigma>0。優化必須使用非常小的數字,其中浮點算法和定義不明確的梯度會帶來數值不穩定性。

如果您使用對數變換,則將 [1,0] 區間中數值不穩定的非常小的數字映射到 [log(1), -inf],您有更多的空間可以使用。計算 log 和 exp 在數值上穩定且容易,因此您基本上可以獲得優化變量可以在其中移動的空間。

請不要混淆:人們不會使用 log(sigma) 值作為 sigma 值,而是始終將其轉換回原始空間。同樣在 VAE 中,您需要 Kullback-Leibler 散度項中的 log(sigma) 值,因此無論如何您都需要計算它…

引用自:https://stats.stackexchange.com/questions/353220

comments powered by Disqus