hoangminhquan-lhsdt / optimizers

Implementation of various optimizers running on test functions for optimization
2 stars 1 forks source link

Review Chương 3 #7

Open KienTrann opened 3 years ago

KienTrann commented 3 years ago

Mình gửi review về phần thuật toán Adam trong chương 3, version này. Warning: chuẩn bị tinh thần để nghe chê ;-).

Thuật toán Adam

Mình thấy phần này có vẻ tụi em viết vẫn còn hơi theo kiểu dịch dựa vào paper, chứ chưa viết ra được dựa vào sự hiểu thật sự của tụi em. Mình đọc thì thấy rối, cái cần nói thì tụi em không nói, cái không cần nói thì tụi em lại nói.

Gợi ý sửa về cấu trúc của phần này:

Tuy nhiên, khác với Momentum, Adam không tích luỹ quán tính phụ thuộc vào độ lớn của bước cập nhật mà thực hiện xấp xỉ dựa vào các giá trị “moment” của gradient

Mình nghĩ chỉ nên nói về cách Momentum được kết hợp với RMSprop trong Adam, chứ không nên nói về các cách khác mà Momentum có thể được kết hợp với RMSprop; vì nếu nói thì tụi em phải so sánh các cách kết hợp này với nhau và phải có thí nghiệm để kiểm chứng. Ngoài ra, phần về "moment" mình cũng cảm thấy rối và có lẽ là không cần thiết.


Dưới đây, mình cố gắng ghi ra các idea chính của Adam theo nhận thức hiện giờ của mình để tụi em tham khảo và thảo luận:

KienTrann commented 3 years ago

Về cách trình bày liên quan đến công thức

Khi trình bày liên quan đến công thức thì cách làm thường thấy là ... Chắc để mình cho một ví dụ. \ "Công thức cập nhật là: \ w = ... (đánh số) \ Trong đó, ...."

Tuy nhiên, mình thấy có khi đầu tiên tụi em không nói gì mà quăng ra ngay một công thức. Sau khi đưa ra công thức cũng không giải thích ý nghĩa của các ký hiệu.

KienTrann commented 3 years ago

Tóm tắt chương

Chương này trình bày về thuật toán tối ưu Adam và cách thuật toán khắc phục khó khăn trong huấn luyện mạng nơ-ron nhiều tầng ẩn mà khoá luận tập trung tìm hiểu. Đầu tiên chúng tôi trình bày về các thuật toán nền tảng: (1) thuật toán Gradient Descent với Momentum để tăng tốc và giảm dao động trong quá trình di chuyển trên bề mặt lỗi, và (2) thuật toán Gradient Descent với tỉ lệ học thích ứng với từng trọng số, cụ thể là thuật toán Adagrad và RMSprop. Dựa trên nền hai thuật toán này, chúng tôi trình bày ý tưởng của thuật toán Adam cũng như những ưu/khuyết điểm của thuật toán trong giải quyết các khó khăn của bài toán huấn luyện mạng nơ-ron.

Gợi ý sửa: \ "Chương này trình bày về thuật toán Adam được đề xuất bởi [ref] để giải quyết bài toán huấn luyện mạng nơ-ron nhiều tầng ẩn; đây là thuật toán mà khóa luận tập trung tìm hiểu. Đầu tiên, chúng tôi trình bày về các thuật toán nền tảng: (1) thuật toán Stochastic Gradient Descent với Momentum để tăng tốc và giảm dao động trong quá trình di chuyển trên bề mặt lỗi, và (2) thuật toán Stochastic Gradient Descent với tỉ lệ học thích ứng cho từng trọng số để có thể di chuyển tốt trong trường hợp bề mặt lỗi có độ cong khác nhau nhiều theo các hướng ứng với các trọng số. Sau đó, chúng tôi trình bày về thuật toán Adam - một cách kết hợp hai thuật toán đã nói lại để giúp giải quyết tốt hơn bài toán huấn luyện mạng nơ-ron nhiều tầng ẩn."

KienTrann commented 3 years ago

Mình có xem kết quả thí nghiệm về đặc trưng thưa ở chương 4 (mình tạm ghi ở đây vì liên quan đến các idea của Adam) thì thấy momentum chạy tốt hơn rmsprop (hình 4.7, hình con bên phải)?

nguyenngoclannhu commented 3 years ago

Dạ thưa thầy, siêu tham số được dùng trong thí nghiệm trên là giá trị mặc định của thuật toán, em chỉ điều chỉnh tỉ lệ học của thuật toán. Đối với thuật toán RMSprop, sử dụng tỉ lệ học lớn hơn thì em có thấy hiện tượng độ lỗi của RMSprop tăng trở lại do dao động quanh điểm cực tiểu và cuối cùng dừng tại điểm cách khá xa.

KienTrann commented 3 years ago

@hoangminhquan-lhsdt @nguyenngoclannhu

Mình gửi review phần tóm tắt chương và các đề mục của chương 3, version này.

Như đã thống nhất, mình chỉ dùng 2 thuật ngữ là Gradient Descent (GD) và Stochastic Gradient Descent (SGD). Hiện giờ, trong phần tóm tắt chương, tụi em ghi là SGD, nhưng ở các đề mục thì ghi là GD. Mình nghĩ có thể sửa ở các đề mục thành SGD vì trong thực tế thì sẽ dùng minibatch. Ở trong nội dụng mỗi đề mục thì tụi em vẫn có thể dùng GD/SGD để ám chỉ GD và SGD nói chung.

KienTrann commented 3 years ago

Mục 3.3

Review nhanh:

Sự bất ổn định có thể đến từ việc áp dụng các biện pháp hạn chế sự overfit của mô hình, hay còn gọi là “regularization”

Như này thì "vơ đũa cả nắm" rồi. Sự bất ổn định ở đây là đến từ phương pháp dropout thôi, vì phương pháp này có sự ngẫu nhiên. Còn chẳng hạn dùng weight decay thì không có vấn đề bất ổn định.