沒有任何公式——直觀的理解變分自動編碼器VAE
首發地址:https://yq.aliyun.com/articles/68410

“出來。通過簡單的測量重構誤差和反傳網絡參數能夠很好的訓練該類網絡。
上圖是“變分自動編碼器-VAE”,不同點在於其隱藏代碼來自於訓練期間學習到的概率分布。
90能更有效的學習參數。
概率解釋通過假設每個參數的概率分布來降低w_i=0.7,在概率版本中,計算均值大約為u_i = 0.7和方差為v_i = 0.1的高斯分布,即w_i =N(0.7,0.1)。這個假設將輸入,隱藏表示以及神經網絡的輸出轉換為概率隨機變量。這類網絡被稱為貝葉斯神經網絡或BNN。
“後,將該計算問題轉換為優化問題,可以使用隨機梯度下降法來解決。
在貝葉斯網絡中,網絡可以基於分布參數重新參數化。在變分自動編碼器中,僅在隱藏節點上假設這些分布。因此,編碼器變成一個變分推理網絡,而且譯碼器變成一個將隱藏代碼映射回數據分布的生成網絡。
將分布的均值和方差視為傳統網絡的參數,並將方差乘以來自噪聲發生器的樣本以增加隨機性。通過參數化隱藏分布,可以反向傳播梯度得到編碼器的參數,並用隨機梯度下降訓練整個網絡。此過程能夠學習到“重新調參技巧
在經典版的神經網絡中,可以用均方誤差
正“
VAE
network= {
# encoder
encoder_x = Input_layer(size=input_size, input=data)
encoder_h = Dense_layer(size=hidden_size, input= encoder_x)
# the re-parameterized distributions that are inferred from data
z_mean = Dense(size=number_of_distributions, input=encoder_h)
z_variance = Dense(size=number_of_distributions, input=encoder_h)
epsilon= random(size=number_of_distributions)
# decoder network needs a sample from the code distribution
z_sample= z_mean + exp(z_variance / 2) * epsilon
#decoder
decoder_h = Dense_layer(size=hidden_size, input=z_sample)
decoder_output = Dense_layer(size=input_size, input=decoder_h)
}
cost={
reconstruction_loss = input_size * crossentropy(data, decoder_output)
kl_loss = - 0.5 * sum(1 + z_variance - square(z_mean) - exp(z_variance))
cost_total= reconstruction_loss + kl_loss
}
stochastic_gradient_descent(data, network, cost_total)
本文由北郵@愛可可-愛生活 老師推薦,
,譯者:海棠
最後更新:2017-07-12 22:09:51