5

Tôi đang triển khai các mô hình Probabilistic Matrix Factorization trong theano và muốn sử dụng các quy tắc Adam gradient descent.Có hy vọng sử dụng việc thực hiện Adam của Lasagne để xác định hệ số ma trận xác suất không?

Mục tiêu của tôi là có mã không rõ ràng nhất có thể, có nghĩa là tôi không muốn theo dõi rõ ràng số lượng 'm' và 'v' từ thuật toán của Adam.

Có vẻ như điều này là có thể, đặc biệt là sau seeing how Lasagne's Adam is implemented: nó ẩn số lượng 'm' và 'v' bên trong các quy tắc cập nhật của theano.function.

Điều này hoạt động khi khả năng đăng nhập phủ định được hình thành với mỗi cụm từ xử lý một số lượng khác nhau. Nhưng trong Hệ số ma trận xác suất, mỗi thuật ngữ chứa một sản phẩm dấu chấm của một vector người dùng tiềm ẩn và một vectơ mục tiềm ẩn. Bằng cách này, nếu tôi tạo một cá thể Adam của Lasagne trên mỗi thuật ngữ, tôi sẽ có nhiều số lượng 'm' và 'v' cho cùng một vectơ tiềm ẩn, đó không phải là cách mà Adam phải làm việc.

Tôi cũng posted on Lasagne's group, thực tế là twice, nơi có thêm một số chi tiết và một số ví dụ.

Tôi nghĩ về hai hiện thực thể:

  1. từng đánh giá hiện hành (có nghĩa là mỗi học kỳ tồn tại trong hàm mục tiêu NLL toàn cầu) có Adam riêng của mình được cập nhật thông qua một cuộc gọi dành riêng cho một theano.function. Thật không may điều này dẫn đến việc sử dụng Adam không chính xác, vì cùng một vector tiềm ẩn sẽ được liên kết với các số lượng 'm' và 'v' khác nhau được sử dụng bởi thuật toán Adam, không phải là cách mà Adam phải làm việc.
  2. Gọi Adam trên toàn bộ NLL mục tiêu, sẽ làm cho cơ chế cập nhật giống như Gradient Descent đơn giản thay vì SGD, với tất cả các nhược điểm được biết (thời gian tính toán cao, ở trong minima địa phương, v.v.).

Câu hỏi của tôi là:

  • có lẽ là có một cái gì đó mà tôi không hiểu một cách chính xác về cách Adam Lasagne của hoạt động?

  • Tùy chọn số 2 có thực sự như SGD, theo nghĩa là mọi cập nhật cho vectơ tiềm ẩn sẽ ảnh hưởng đến bản cập nhật khác (trong cùng cuộc gọi Adam) sử dụng vector đã cập nhật đó?

  • Bạn có bất kỳ đề xuất nào khác về cách triển khai không?

Bất kỳ ý tưởng nào về cách giải quyết vấn đề này và tránh sao chép vectơ và ma trận sao chép cho số lượng 'v' và 'm'?

+0

Dường như Q này sẽ được nhiều hơn ở nhà tại http://stats.stackexchange.com/ – redcalx

+0

@redcalx: Tôi không đồng ý, vấn đề ở đây chỉ nằm trong cách * thực hiện * Adam. – fstab

+0

Tôi không đọc chi tiết về PMF và tôi không phải là người dùng Lasagne, nhưng liệu bạn có thể thể hiện mục tiêu tối ưu hóa của mình như một chức năng theano duy nhất của các thông số mô hình của bạn? Nếu vậy, thì điều này chắc chắn có thể được thực hiện trong theano tinh khiết. – Kh40tiK

Trả lời

0

Dường như trong bài báo họ đang gợi ý rằng bạn tối ưu hóa toàn bộ chức năng cùng một lúc sử dụng gradient descent:

Sau đó chúng tôi có thể thực hiện gradient descent trong Y, V, và W để giảm thiểu hàm mục tiêu cho bởi Eq. 10.

Vì vậy, tôi sẽ nói tùy chọn 2 của bạn là cách chính xác để thực hiện những gì họ đã làm.

Không có nhiều phức tạp hoặc phi tuyến tính (bên cạnh hình sigmoid), do đó bạn có thể không có khả năng chạy các vấn đề tối ưu hóa điển hình liên quan đến mạng thần kinh cần thiết cho Adam. Vì vậy, miễn là tất cả phù hợp trong bộ nhớ tôi đoán phương pháp này sẽ làm việc.

Nếu nó không phù hợp với bộ nhớ, có lẽ có một số cách bạn có thể đưa ra một phiên bản minibatch của sự mất mát để tối ưu hóa hơn. Cũng sẽ được quan tâm để xem nếu bạn có thể thêm một hoặc nhiều mạng thần kinh để thay thế một số xác suất có điều kiện. Nhưng đó là nhận được một chút off-topic ...

Các vấn đề liên quan