Tại sao điều quan trọng là bao gồm một thuật ngữ điều chỉnh sai lệch cho trình tối ưu hóa Adam cho Deep Learning?


14

Tôi đang đọc về trình tối ưu hóa Adam cho Deep Learning và tình cờ thấy câu sau trong cuốn sách mới Deep Learning của Begnio, Goodfellow và Courtville:

Adam bao gồm các hiệu chỉnh sai lệch cho các ước tính của cả các khoảnh khắc thứ tự đầu tiên (thời hạn động lượng) và các khoảnh khắc thứ hai (không được kiểm duyệt) để giải thích cho việc khởi tạo của chúng tại điểm gốc.

có vẻ như lý do chính để bao gồm các thuật ngữ điều chỉnh sai lệch này là bằng cách nào đó nó loại bỏ sự thiên vị của việc khởi tạo mt=0vt=0 .

  • Tôi không chắc chắn 100% điều đó có nghĩa là gì nhưng dường như điều đó có nghĩa là khoảnh khắc thứ 1 và thứ 2 bắt đầu từ 0 và bằng cách nào đó bắt đầu từ 0, các giá trị gần bằng 0 theo cách không công bằng (hoặc hữu ích) cho đào tạo ?
  • Mặc dù tôi rất muốn biết điều đó có nghĩa chính xác hơn một chút và điều đó làm hỏng việc học như thế nào. Cụ thể, những ưu điểm nào của việc không tối ưu hóa trình tối ưu hóa có được về mặt tối ưu hóa?
  • Làm thế nào điều này giúp đào tạo các mô hình học tập sâu?
  • Ngoài ra, nó có nghĩa gì khi không thiên vị? Tôi quen thuộc với độ lệch chuẩn không thiên vị nghĩa là gì nhưng tôi không rõ ý nghĩa của nó trong bối cảnh này.
  • Là sự điều chỉnh sai lệch thực sự là một vấn đề lớn hay đó là một cái gì đó vượt quá trong bài báo tối ưu hóa Adam?

Để mọi người biết tôi đã rất cố gắng để hiểu bài báo gốc nhưng tôi đã rất ít đọc và đọc lại bài báo gốc. Tôi cho rằng một số câu hỏi này có thể được trả lời ở đó nhưng tôi dường như không thể phân tích các câu trả lời.


2
Liên kết: arxiv.org/pdf/1412,6980v8.pdf Ước tính độ dốc thời điểm 1 và 2 được cập nhật thông qua trung bình di chuyển và bắt đầu với cả hai ước tính bằng 0, do đó những giá trị ban đầu mà giá trị thực không bằng 0, sẽ làm sai lệch kết quả , bởi vì các ước tính ban đầu bằng không chỉ dần dần chết đi. Điều tôi không hiểu là tại sao độ dốc tại điểm ban đầu không được sử dụng cho các giá trị ban đầu của những thứ này, và sau đó là cập nhật tham số đầu tiên. Sau đó, sẽ không có ô nhiễm bởi các giá trị 0 ban đầu, phải được hoàn tác. Vì vậy, sẽ không cần điều chỉnh sai lệch.
Mark L. Stone

1
Vì vậy, có vẻ như thay vì có mã đặc biệt cho lần lặp ban đầu, các tác giả đã quyết định thực hiện một điều tương đương về mặt toán học bằng cách giới thiệu những gì sẽ là một thiên vị, và sau đó hoàn tác nó. Điều này thêm các tính toán không cần thiết, mặc dù nhanh, trên tất cả các lần lặp. Bt làm điều này, họ đã duy trì độ tinh khiết của mã trông giống nhau ở tất cả các lần lặp. Thay vào đó, tôi sẽ chỉ bắt đầu với đánh giá độ dốc đầu tiên và có công thức cập nhật thời điểm gradient chỉ bắt đầu ở lần lặp thứ 2.
Mark L. Stone

@ MarkL.Stone các tác giả nhấn mạnh rất nhiều sự điều chỉnh sai lệch đến nỗi dường như đó là điều mới lạ hoặc quan trọng trong bài báo của họ. Vì vậy, họ có thể đã không "sửa sai lệch" và có cùng thuật toán? Nếu đó là sự thật thì tôi không biết tại sao adam lại là một trình tối ưu hóa quan trọng như vậy hay vấn đề lớn là gì. Tôi luôn nghĩ rằng đó là sự điều chỉnh sai lệch.
Charlie Parker

4
Họ giới thiệu một sự thiên vị và sau đó sửa nó ra, không có lý do chính đáng rõ ràng với tôi. Nó giống như nhân với 2 (oh my, kết quả là sai lệch), và sau đó chia cho 2 để "sửa" nó. Toàn bộ điều với sự giới thiệu và loại bỏ thiên vị dường như là một biểu hiện không cần thiết. Có lẽ bài báo không đủ dài mà không làm điều đó, vì vậy họ đã thêm phần này để làm cho nó dài hơn :) Adam có thể có giá trị của nó, nhưng họ sẽ làm như vậy theo cách tôi đề xuất. Tôi muốn các tác giả đến đây và giải thích nó mặc dù. Có lẽ tôi đang thiếu một số điểm tinh tế hoặc hiểu lầm một cái gì đó.
Mark L. Stone

Câu trả lời:


14

Vấn đề KHÔNG sửa sai lệch
Theo bài báo.

Trong trường hợp độ dốc thưa thớt, để ước tính đáng tin cậy về khoảnh khắc thứ hai, người ta cần tính trung bình trên nhiều độ dốc bằng cách chọn một giá trị nhỏ β2; tuy nhiên, đây chính xác là trường hợp nhỏ β2 trong đó việc thiếu hiệu chỉnh sai lệch khởi tạo sẽ dẫn đến các bước ban đầu lớn hơn nhiều.

enter image description here

β2β1β2=0.999β1=0.91β2=0.0011β1=0.1

m1=0.1gtv1=0.001gt2m1/(v1+ϵ)

m1^=g1v1^=g12mt^/(vt^+ϵ)β1β2


m0mt=βmt1+(1β)gtm0

m1=βm0+(1β)gtβm0m1(1β)m1^=(m1βm0)/(1β)m0=0mt^=mt/(1βt)


Như Mark L. Stone đã nhận xét tốt

Nó giống như nhân với 2 (oh my, kết quả là sai lệch), và sau đó chia cho 2 để "sửa" nó.

Bằng cách nào đó, điều này không chính xác tương đương với

gradient tại điểm ban đầu được sử dụng cho các giá trị ban đầu của những điều này, và sau đó cập nhật tham số đầu tiên

(tất nhiên nó có thể được chuyển thành dạng tương tự bằng cách thay đổi quy tắc cập nhật (xem bản cập nhật của câu trả lời) và tôi tin rằng dòng này chủ yếu nhằm thể hiện sự không cần thiết của việc giới thiệu sai lệch, nhưng có lẽ nó đáng chú ý sự khác biệt)

Ví dụ: khoảnh khắc đầu tiên được sửa ở lần 2

m2^=β(1β)g1+(1β)g21β2=βg1+g2β+1

g1

m2=βg1+(1β)g2
g1

Là sự điều chỉnh thiên vị thực sự là một vấn đề lớn
vì nó chỉ thực sự ảnh hưởng đến vài bước đầu tiên đào tạo, nó không có vẻ như một vấn đề rất lớn, trong nhiều khuôn khổ phổ biến (ví dụ keras , caffe ) chỉ lập dự toán sai lệch được thực hiện.

ϵ


m^t

m^t=βt1g1+βt2g2+...+gtβt1+βt2+...+1

m1g1

mtβmt+gt
m^t(1β)mt1βt

Do đó, nó có thể được thực hiện mà không cần đưa ra một thuật ngữ sai lệch và sửa nó. Tôi nghĩ rằng bài báo đã đặt nó ở dạng hiệu chỉnh sai lệch để thuận tiện cho việc so sánh với các thuật toán khác (ví dụ RmsProp).


1
Bạn có đồng ý với nhận xét thứ 2 của tôi về câu hỏi không? Đối với tôi, đó là điểm mấu chốt. Điều về phép nhân và chia cho 2 chỉ được coi là một phép so sánh "dễ hiểu" hơn, không phải là phép toán được sử dụng trong vấn đề này. nếu có những bài báo khác mà tôi đã xem xét, nó đưa ra sự thiên vị theo cùng một cơ chế, trong trường hợp ADAM dường như hoàn toàn có thể tránh được, nhưng đã không sửa nó, thì đó hoàn toàn là STUPID (trừ khi có sự thiên vị nào đó đã giúp hiệu suất của thuật toán).
Mark L. Stone

@ MarkL. Có, có! thực sự tôi đã nâng cấp nó, xin lỗi về tiếng Anh của tôi. và tôi nghĩ rằng thuật toán không sửa sai lệch là rmsprop, nhưng không giống như adam rmsprop hoạt động tốt với độ lệch.
dontloo

@dontloo không trả lời địa chỉ của bạn Mark L. Stone bình luận về lý do tại sao sự điều chỉnh sai lệch có vẻ thừa? (Điều đó tôi nghĩ là khá quan trọng, thậm chí có thể còn hơn cả việc diễn giải những gì bài báo gốc nói).
Charlie Parker

@CharlieParker ý bạn là tại sao việc hiệu chỉnh sai lệch là thừa hoặc tại sao tác giả làm cho nó trông thừa?
dontloo

@dontloo Tôi không nghĩ các tác giả làm cho nó thừa. Tôi nghĩ rằng họ thực sự cần nó (với điều kiện cụ thể của họ). Tuy nhiên, tôi nghĩ rằng không cần thiết phải đưa ra đề nghị của Mark. Tôi đoán câu hỏi của tôi trong phần bình luận ngay bây giờ là nếu họ thực sự cần thuật ngữ điều chỉnh.
Charlie Parker
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.