Làm thế nào để giảm cân KLD so với mất tái thiết trong bộ mã hóa tự động đa dạng


26

trong gần như tất cả các ví dụ mã mà tôi đã thấy về VAE, các hàm mất được định nghĩa như sau (đây là mã tenorflow, nhưng tôi đã thấy tương tự đối với theano, đèn pin, v.v. Nó cũng là một mạng lưới, nhưng điều đó cũng không quá liên quan , chỉ ảnh hưởng đến các trục mà các khoản tiền được thực hiện):

# latent space loss. KL divergence between latent space distribution and unit gaussian, for each batch.
# first half of eq 10. in https://arxiv.org/abs/1312.6114
kl_loss = -0.5 * tf.reduce_sum(1 + log_sigma_sq - tf.square(mu) - tf.exp(log_sigma_sq), axis=1)

# reconstruction error, using pixel-wise L2 loss, for each batch
rec_loss = tf.reduce_sum(tf.squared_difference(y, x), axis=[1,2,3])

# or binary cross entropy (assuming 0...1 values)
y = tf.clip_by_value(y, 1e-8, 1-1e-8) # prevent nan on log(0)
rec_loss = -tf.reduce_sum(x * tf.log(y) + (1-x) * tf.log(1-y), axis=[1,2,3])

# sum the two and average over batches
loss = tf.reduce_mean(kl_loss + rec_loss)

Tuy nhiên, phạm vi số của kl_loss và rec_loss phụ thuộc rất nhiều vào độ mờ không gian tiềm ẩn và kích thước tính năng đầu vào (ví dụ: độ phân giải pixel) tương ứng. Sẽ là hợp lý nếu thay thế các_số giảm bằng giảm_mean để có được mỗi KLD z-dim và mỗi pixel (hoặc tính năng) LSE hoặc BCE? Quan trọng hơn, làm thế nào để chúng ta giảm cân tiềm ẩn với mất tái thiết khi tổng hợp lại cho sự mất mát cuối cùng? Có phải chỉ là thử nghiệm và lỗi? hoặc có một số lý thuyết (hoặc ít nhất là quy tắc của ngón tay cái) cho nó? Tôi không thể tìm thấy bất kỳ thông tin nào về điều này ở bất cứ đâu (bao gồm cả bài báo gốc).


Vấn đề tôi gặp phải là, nếu sự cân bằng giữa kích thước tính năng đầu vào (x) và kích thước không gian tiềm ẩn (z) của tôi không 'tối ưu', thì khả năng tái tạo của tôi rất tốt nhưng không gian tiềm ẩn đã học không được cấu trúc (nếu x kích thước là rất cao và lỗi tái cấu trúc chiếm ưu thế so với KLD) hoặc ngược lại (tái tạo không tốt nhưng không gian tiềm ẩn đã học được cấu trúc tốt nếu KLD chiếm ưu thế).

Tôi thấy mình phải bình thường hóa tổn thất tái cấu trúc (chia cho kích thước tính năng đầu vào) và KLD (chia cho kích thước z) và sau đó cân thủ công thuật ngữ KLD với hệ số trọng lượng tùy ý (Việc chuẩn hóa là để tôi có thể sử dụng cùng hoặc trọng lượng tương tự độc lập với kích thước của x hoặc z ). Thực tế tôi đã tìm thấy khoảng 0,1 để cung cấp một sự cân bằng tốt giữa tái thiết và không gian tiềm ẩn có cấu trúc mà cảm thấy như một 'điểm ngọt ngào' đối với tôi. Tôi đang tìm kiếm công việc trước đây trong lĩnh vực này.


Theo yêu cầu, ký hiệu toán học ở trên (tập trung vào mất L2 cho lỗi tái thiết)

Ltôimộttent(tôi)= =-12Σj= =1J(1+đăng nhập(σj(tôi))2-(μj(tôi))2-(σj(tôi))2)

Lrecon(tôi)= =-Σk= =1K(yk(tôi)-xk(tôi))2

L(m)= =1MΣtôi= =1M(Ltôimộttent(tôi)+Lrecon(tôi))

Trong đó là chiều của vectơ tiềm ẩn (và trung bình tương ứng và phương sai ), là chiều của các tính năng đầu vào, là kích thước lô nhỏ, siêu ký tự biểu thị dữ liệu thứ điểm và là tổn thất cho lô nhỏ thứ .Jzμσ2KM(tôi)tôiL(m)m

Câu trả lời:


17

Đối với bất kỳ ai vấp ngã trên bài đăng này cũng đang tìm kiếm một câu trả lời, chủ đề twitter này đã thêm rất nhiều cái nhìn sâu sắc rất hữu ích.

Cụ thể là:

beta-VAE: Học các khái niệm trực quan cơ bản với khung biến đổi bị ràng buộc

thảo luận về câu hỏi chính xác của tôi với một vài thí nghiệm. Thật thú vị, có vẻ như (tương tự như trọng lượng KLD được chuẩn hóa của tôi) cũng tập trung vào khoảng 0,1, với các giá trị cao hơn mang lại không gian tiềm ẩn có cấu trúc hơn với chi phí tái cấu trúc kém hơn và các giá trị thấp hơn giúp tái tạo tốt hơn với cấu trúc ít hơn không gian tiềm ẩn (mặc dù trọng tâm của họ là đặc biệt về học tập gỡ cơ quan đại diện).βnorm

và đọc liên quan (nơi các vấn đề tương tự được thảo luận)


7

Tôi muốn thêm một bài báo liên quan đến vấn đề này (tôi không thể bình luận do uy tín thấp của tôi tại thời điểm này).

Trong tiểu mục 3.1 của bài báo, các tác giả đã chỉ định rằng họ đã thất bại trong việc đào tạo việc thực hiện VAE ngay lập tức có trọng số tương đương với khả năng và phân kỳ KL. Trong trường hợp của họ, tổn thất KL đã giảm đáng kể xuống 0, mặc dù nó được dự đoán sẽ có một giá trị nhỏ. Để khắc phục điều này, họ đã đề xuất sử dụng "ủ chi phí KL", từ từ tăng hệ số trọng số của thuật ngữ phân kỳ KL (đường cong màu xanh) từ 0 lên 1.

Hình 2. Trọng số của thời hạn phân kỳ KL của giới hạn dưới biến thiên theo lịch biểu ủ sigmoid điển hình được vẽ cùng với giá trị (không trọng số) của thuật ngữ phân kỳ KL cho VAE của chúng tôi trên Penn TreeBank.

Giải pháp giải quyết công việc này cũng được áp dụng trong Ladder VAE.

Giấy:

Bowman, SR, Vilni, L., Vinyals, O., Dai, AM, Jozefowicz, R. và Bengio, S., 2015. Tạo câu từ một không gian liên tục . bản in sẵn arXiv arXiv: 1511.06349.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.