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.