Làm thế nào để phương pháp Adam của gốc dốc ngẫu nhiên hoạt động?


45

Tôi quen thuộc với các thuật toán giảm độ dốc cơ bản để đào tạo mạng lưới thần kinh. Tôi đã đọc bài viết đề xuất Adam: ADAM: PHƯƠNG PHÁP TỐI ƯU HÓA HẤP DẪN .

Mặc dù tôi chắc chắn đã có một số hiểu biết (ít nhất là), bài viết dường như quá cao đối với tôi. Ví dụ, hàm chi phí thường là tổng của nhiều hàm khác nhau, do đó, một số lượng lớn các phép tính phải được thực hiện để tối ưu hóa giá trị của nó; giải thích độ dốc ngẫu nhiên - theo như tôi hiểu chủ đề - chỉ tính toán tối ưu hóa cho một tập hợp con của các hàm này. Đối với tôi nó là không rõ ràng, làm thế nào Adam thực hiện điều này và tại sao kết quả này trong giảm lỗi đào tạo cho toàn bộ J ( θ ) .J(θ)J(θ)

Tôi nghĩ Adam cập nhật gradient của nó bằng cách tính đến gradient trước đó. Họ gọi nó là một cái gì đó như tận dụng động lực? Chính xác thì động lượng này là gì? Theo thuật toán ở trang hai trong bài báo, đó là một loại trung bình di chuyển, giống như một số ước tính về khoảnh khắc thứ nhất và thứ hai của gradient "thông thường"?

Thực tế, tôi sẽ nghi ngờ rằng Adam cho phép một người sử dụng các kích thước bước hiệu quả lớn hơn để giảm độ dốc và do đó lỗi đào tạo kết hợp với xấp xỉ ngẫu nhiên. Do đó, vectơ cập nhật kết quả sẽ "nhảy" xung quanh nhiều hơn về kích thước không gian, thay vì mô tả một số đường cong như thuật toán giảm độ dốc thông thường sẽ làm.

Ai đó có thể giải thích làm thế nào Adam làm việc? Đặc biệt là cách nó hội tụ, cụ thể là tại sao phương pháp của Adam hoạt động và chính xác lợi ích là gì?


1
bạn nên cung cấp một tiêu đề tốt hơn cho câu hỏi của bạn. Chính xác những gì về adam bạn muốn hỏi? Ngay cả khi nó nói chung, hãy cố gắng làm cho nó dễ tìm kiếm hơn một chút.
Charlie Parker

Câu trả lời:


40

Bài viết của Adam nói, "... nhiều hàm mục tiêu được tạo thành từ một tổng số các hàm con được đánh giá ở các mẫu con khác nhau của dữ liệu; có nghĩa là hàm mục tiêu là tổng của các lỗi trong các ví dụ đào tạo và việc đào tạo có thể được thực hiện trên các ví dụ riêng lẻ hoặc các chuỗi nhỏ. Điều này giống như trong giảm dần độ dốc ngẫu nhiên (SGD), hiệu quả hơn đối với các vấn đề quy mô lớn so với đào tạo hàng loạt vì cập nhật tham số thường xuyên hơn.

Về lý do tại sao Adam làm việc, nó sử dụng một vài thủ thuật.

Một trong những thủ thuật này là động lượng, có thể cho sự hội tụ nhanh hơn. Hãy tưởng tượng một hàm mục tiêu có hình dạng như một hẻm núi dài và hẹp dần dần dốc về phía mức tối thiểu. Nói rằng chúng tôi muốn giảm thiểu chức năng này bằng cách sử dụng độ dốc giảm dần. Nếu chúng ta bắt đầu từ một số điểm trên tường hẻm núi, độ dốc âm sẽ chỉ theo hướng đi xuống dốc nhất, tức là chủ yếu hướng về tầng hẻm núi. Điều này là do các bức tường hẻm núi dốc hơn nhiều so với độ dốc dần dần của hẻm núi về phía mức tối thiểu. Nếu tốc độ học tập (tức là kích thước bước) nhỏ, chúng ta có thể xuống tầng hẻm núi, sau đó theo nó về mức tối thiểu. Nhưng, tiến độ sẽ chậm. Chúng tôi có thể tăng tỷ lệ học tập, nhưng điều này sẽ không thay đổi hướng của các bước. Trong trường hợp này, chúng tôi sẽ vượt qua tầng hẻm núi và kết thúc ở bức tường đối diện. Sau đó, chúng tôi sẽ lặp lại mô hình này, dao động từ tường này sang tường khác trong khi tiến triển chậm về mức tối thiểu. Động lượng có thể giúp đỡ trong tình huống này.

Động lượng đơn giản có nghĩa là một số phần của bản cập nhật trước được thêm vào bản cập nhật hiện tại, do đó các bản cập nhật lặp lại trong một hợp chất hướng cụ thể; chúng tôi xây dựng đà, di chuyển ngày càng nhanh hơn theo hướng đó. Trong trường hợp của hẻm núi, chúng tôi sẽ xây dựng động lượng theo hướng tối thiểu, vì tất cả các bản cập nhật đều có một thành phần theo hướng đó. Ngược lại, di chuyển qua lại trên các bức tường hẻm núi liên quan đến hướng đảo ngược liên tục, do đó động lượng sẽ giúp làm giảm các dao động theo các hướng đó.

Một mẹo khác mà Adam sử dụng là chọn một cách thích nghi một tỷ lệ học tập riêng cho từng tham số. Các thông số thường nhận được các bản cập nhật nhỏ hơn hoặc ít thường xuyên hơn sẽ nhận được các bản cập nhật lớn hơn với Adam (điều ngược lại cũng đúng). Điều này tăng tốc độ học tập trong trường hợp tỷ lệ học tập phù hợp khác nhau giữa các tham số. Ví dụ, trong các mạng sâu, độ dốc có thể trở nên nhỏ ở các lớp đầu và việc tăng tỷ lệ học tập cho các tham số tương ứng là điều hợp lý. Một lợi ích khác của phương pháp này là, vì tỷ lệ học tập được điều chỉnh tự động, điều chỉnh thủ công trở nên ít quan trọng hơn. SGD tiêu chuẩn yêu cầu điều chỉnh cẩn thận (và có thể điều chỉnh trực tuyến) tỷ lệ học tập, nhưng điều này ít đúng với Adam và các phương pháp liên quan. Vẫn cần phải chọn siêu đường kính,

Phương pháp liên quan :

Động lượng thường được sử dụng với SGD tiêu chuẩn. Một phiên bản cải tiến được gọi là Nesterov đà hoặc gradient tăng tốc Nesterov. Các phương pháp khác sử dụng tỷ lệ học tập được điều chỉnh tự động cho từng tham số bao gồm: Adagrad, RMSprop và Adadelta. RMSprop và Adadelta giải quyết vấn đề với Adagrad có thể khiến việc học dừng lại. Adam tương tự như RMSprop với động lượng. Nadam sửa đổi Adam để sử dụng động lượng Nesterov thay vì động lực cổ điển.

Tài liệu tham khảo :

Kingma và Ba (2014) . Adam: Một phương pháp để tối ưu hóa ngẫu nhiên.

Goodfellow et al. (2016) . Học sâu, chương 8.

Các slide từ khóa học của Geoff Hinton

Dozat (2016) . Kết hợp Nesterov Momentum vào Adam.


2
(+1) Cộng đồng sẽ được hưởng lợi rất nhiều nếu bạn có thể cập nhật câu trả lời của mình để bao gồm thêm thông tin về bằng chứng về sự hội tụ của Adam và các chỉnh sửa của họ, chẳng hạn như "Về sự hội tụ của Adam và xa hơn" openreview.net/forum?id=ryQu7f- RZ
Tái lập Monica

2
Cảm ơn @Sycorax, tôi sẽ cố gắng cập nhật khi tôi có thời gian
user20160

1
w

Tiếp tục bình luận cuối cùng của tôi, câu trả lời này giải thích về sự khác biệt giữa Adam và rmsprop với động lượng, trong khi tập trung vào cách hành vi giống như động lượng của Adam khác với hành vi giống như động lượng thông thường. (Câu trả lời đó cũng bao gồm mã Python để mô phỏng và hiển thị bằng đồ họa cách các phương thức khác nhau hoạt động.)
Oren Milman
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.