Làm thế nào để lừa reparameterization cho autoencoders biến phân (VAE) làm việc? Có một lời giải thích trực quan và dễ dàng mà không đơn giản hóa toán học cơ bản? Và tại sao chúng ta cần 'mánh khóe'?
Làm thế nào để lừa reparameterization cho autoencoders biến phân (VAE) làm việc? Có một lời giải thích trực quan và dễ dàng mà không đơn giản hóa toán học cơ bản? Và tại sao chúng ta cần 'mánh khóe'?
Câu trả lời:
Sau khi đọc qua các slide hội thảo NIPS 2015 của Kingma , tôi nhận ra rằng chúng ta cần thủ thuật xác định lại thông số để sao lưu thông qua một nút ngẫu nhiên.
Theo trực giác, ở dạng ban đầu, mẫu VAE từ một nút ngẫu nhiên được xấp xỉ bởi mô hình tham số của hậu thế thật. Backprop không thể chảy qua một nút ngẫu nhiên.
Giới thiệu một tham số mới cho phép chúng ta reparameterize trong một cách mà cho phép backprop chảy qua các nút xác định.
Giả sử chúng ta có một phân phối chuẩn được tham số hóa bởi θ , đặc biệt là q θ ( x ) = N ( θ , 1 ) . Chúng tôi muốn giải quyết vấn đề dưới đây phút θ Đây là khóa học một vấn đề khá ngớ ngẩn và tối ưu θ là rõ ràng. Tuy nhiên, ở đây chúng tôi chỉ muốn hiểu làm thế nào thủ thuật tái tham số hóa giúp tính toán độ dốc của mục tiêu này E q [ x 2 ] .
Một cách để tính toán như sau ∇ θ E q [ x 2 ] = ∇ θ ∫ q θ ( x ) x 2 d x = ∫ x 2 ∇ θ q θ ( x ) q θ ( x )
Ví dụ chúng tôi, nơi , phương pháp này mang lại cho ∇ θ E q [ x 2 ] = E q [ x 2 ( x - θ ) ]
Reparameterization Bí quyết là một cách để ghi lại sự mong đợi để phân phối liên quan đến mà chúng tôi đưa gradient không phụ thuộc vào tham số . Để đạt được điều này, chúng ta cần phải thực hiện các yếu tố ngẫu nhiên trong q không phụ thuộc vào θ . Do đó, chúng ta viết x là x = θ + ε , Sau đó, chúng ta có thể viết E q [ x 2 ] = E p [ ( θ + ε ) 2 ] nơi p là sự phân bố của ε , tức là N ( 0 , 1 ) . Bây giờ chúng ta có thể viết các dẫn xuất của E q [ x 2 ] như sau ∇ q E q [ x 2 ] =
Dưới đây là một máy tính xách tay IPython tôi đã viết mà xem xét phương sai của hai cách tính độ dốc này. http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb
Một ví dụ hợp lý về toán học của "mẹo tái tham số hóa" được đưa ra trong câu trả lời của goker, nhưng một số động lực có thể hữu ích. (Tôi không có quyền nhận xét về câu trả lời đó; vì vậy đây là một câu trả lời riêng.)
, có thể cách xa tối ưu (ví dụ: giá trị ban đầu được chọn tùy ý). Nó giống như câu chuyện về người say rượu tìm chìa khóa gần đèn đường (vì đó là nơi anh ta có thể nhìn thấy / mẫu) chứ không phải gần nơi anh ta đánh rơi chúng.
Tôi hy vọng điều đó sẽ giúp.
Hãy để tôi giải thích trước, tại sao chúng ta cần thủ thuật Xác định lại trong VAE.
VAE có bộ mã hóa và giải mã. Bộ giải mã lấy mẫu ngẫu nhiên từ hậu thế thật Z ~ q (z∣ϕ, x) . Để thực hiện bộ mã hóa và bộ giải mã như một mạng nơ ron, bạn cần sao lưu thông qua lấy mẫu ngẫu nhiên và đó là vấn đề bởi vì backpropogation không thể chảy qua nút ngẫu nhiên; để vượt qua trở ngại này, chúng tôi sử dụng thủ thuật tái thông số.
Bây giờ hãy đến để lừa. Vì hậu thế của chúng ta thường được phân phối, chúng ta có thể ước chừng nó với một phân phối bình thường khác. Chúng tôi xấp xỉ Z với phân phối chuẩn ε .
Nhưng làm thế nào điều này có liên quan?
Bây giờ thay vì nói rằng Z được lấy mẫu từ q (z∣ϕ, x) , chúng ta có thể nói Z là một hàm lấy tham số (ε, (Biệt, L)) và các Lọ, L đến từ mạng thần kinh trên (bộ mã hóa) . Vì vậy trong khi backpropogation tất cả chúng ta cần là hàm riêng wrt μ, L và ε là không thích hợp cho việc dẫn xuất.
Tôi nghĩ rằng lời giải thích được tìm thấy trong khóa học Stanford CS228 về các mô hình đồ họa xác suất là rất tốt. Nó có thể được tìm thấy ở đây: https://ermongroup.github.io/cs228-notes/extras/vae/
Tôi đã tóm tắt / sao chép các phần quan trọng ở đây để thuận tiện / hiểu biết của riêng tôi (mặc dù tôi thực sự khuyên bạn chỉ nên kiểm tra liên kết ban đầu).
Nếu bạn quen thuộc với các công cụ ước tính điểm số (tôi tin rằng REINFORCE chỉ là trường hợp đặc biệt của vấn đề này), bạn sẽ nhận thấy đó là vấn đề mà họ giải quyết được khá nhiều. Tuy nhiên, công cụ ước tính điểm số có phương sai cao, dẫn đến khó khăn trong việc học các mô hình phần lớn thời gian.
Ví dụ, chúng ta hãy sử dụng một q rất đơn giản mà chúng ta lấy mẫu.
Điều này có phương sai thấp hơn, vì imo, lý do không tầm thường. Kiểm tra phần D của phụ lục tại đây để được giải thích: https://arxiv.org/pdf/1401.4082.pdf
Chúng tôi có mô hình xác suất của chúng tôi. Và muốn phục hồi các thông số của mô hình. Chúng tôi giảm bớt nhiệm vụ của mình để tối ưu hóa giới hạn dưới biến đổi (VLB). Để làm điều này, chúng ta sẽ có thể làm hai điều:
Các tác giả đề nghị sử dụng Công cụ ước tính Monte Carlo cho cả hai. Và thực tế họ giới thiệu thủ thuật này để có được Công cụ ước tính độ chính xác Monte Carlo Gradient của VLB.
Đó chỉ là cải tiến của phương pháp số.
Thủ thuật xác định lại thông số làm giảm đáng kể phương sai của công cụ ước tính MC cho độ dốc. Vì vậy, đó là một kỹ thuật giảm phương sai :