Chọn tỷ lệ học tập


85

Tôi hiện đang làm việc để thực hiện Stochastic Gradient Descent, SGDđối với các mạng lưới thần kinh sử dụng phương pháp truyền ngược và trong khi tôi hiểu mục đích của nó, tôi có một số câu hỏi về cách chọn giá trị cho tốc độ học tập.

  • Là tỷ lệ học tập liên quan đến hình dạng của gradient lỗi, vì nó chỉ ra tỷ lệ gốc?
  • Nếu vậy, làm thế nào để bạn sử dụng thông tin này để thông báo quyết định của bạn về một giá trị?
  • Nếu đó không phải là loại giá trị nào tôi nên chọn, và tôi nên chọn chúng như thế nào?
  • Có vẻ như bạn sẽ muốn các giá trị nhỏ tránh bị quá mức, nhưng làm thế nào để bạn chọn một giá trị mà bạn không bị mắc kẹt trong cực tiểu địa phương hoặc mất nhiều thời gian để hạ xuống?
  • Liệu nó có ý nghĩa để có một tỷ lệ học tập liên tục, hay tôi nên sử dụng một số số liệu để thay đổi giá trị của nó khi tôi đạt gần mức tối thiểu trong gradient?

Tóm lại: Làm thế nào để tôi chọn tỷ lệ học tập cho SGD?

Câu trả lời:


69
  • Là tỷ lệ học tập liên quan đến hình dạng của gradient lỗi, vì nó chỉ ra tỷ lệ gốc?

    • Ở SGD đồng bằng, câu trả lời là không. Tỷ lệ học tập toàn cầu được sử dụng không phân biệt độ dốc lỗi. Tuy nhiên, trực giác bạn đang có đã truyền cảm hứng cho các sửa đổi khác nhau của quy tắc cập nhật SGD.
  • Nếu vậy, làm thế nào để bạn sử dụng thông tin này để thông báo quyết định của bạn về một giá trị?

    • Adagrad là biết đến rộng rãi nhất trong số này và quy mô một tỷ lệ học toàn cầu η trên mỗi chiều dựa trên chuẩn mực l2 về lịch sử của gradient lỗi gt trên mỗi chiều:

      nhập mô tả hình ảnh ở đây

    • Adadelta là một thuật toán đào tạo như vậy sử dụng cả lịch sử độ dốc lỗi như adagrad và lịch sử cập nhật trọng số và có ưu điểm là không phải thiết lập tốc độ học tập .

  • Nếu đó không phải là loại giá trị nào tôi nên chọn, và tôi nên chọn chúng như thế nào?

    • Đặt tỷ lệ học tập cho SGD đơn giản trong mạng lưới thần kinh thường là một quá trình bắt đầu với giá trị lành mạnh như 0,01 và sau đó thực hiện xác nhận chéo để tìm giá trị tối ưu. Các giá trị tiêu biểu nằm trong một vài bậc độ lớn từ 0,0001 đến 1.
  • Có vẻ như bạn muốn các giá trị nhỏ tránh bị quá mức, nhưng làm thế nào để bạn chọn một giá trị sao cho không bị kẹt trong cực tiểu cục bộ hoặc mất quá nhiều thời gian để hạ xuống? Liệu nó có ý nghĩa để có một tỷ lệ học tập liên tục, hay tôi nên sử dụng một số số liệu để thay đổi giá trị của nó khi tôi đạt gần mức tối thiểu trong gradient?

    • Thông thường, giá trị tốt nhất là gần tốc độ học tập ổn định cao nhất và phân rã / ủ tốc độ học tập (theo tuyến tính hoặc theo cấp số nhân) được sử dụng trong quá trình đào tạo. Lý do đằng sau điều này là từ sớm đã có một tín hiệu học tập rõ ràng nên các cập nhật tích cực khuyến khích khám phá trong khi sau đó với tỷ lệ học tập nhỏ hơn cho phép khai thác bề mặt lỗi cục bộ tinh vi hơn.

1
Trong thực tế, bạn sẽ sử dụng tỷ lệ học tập với adadelta. Trên một số vấn đề nó không hoạt động mà không có.
bayer

Cần lưu ý rằng trình tối ưu hóa Adam là bình thường hơn Adagrad hoặc Adadelta ngày nay.
E_net4 vẫn đình công vào

22

Dưới đây là một lưu ý rất hay (trang 12) về tốc độ học tập trong Mạng lưới thần kinh (Tuyên truyền trở lại) của Andrew Ng. Bạn sẽ tìm thấy chi tiết liên quan đến tỷ lệ học tập.

http://web.stanford.edu/ class / cs294a / spzzyAutoencoder_2011new.pdf

Đối với điểm thứ 4 của bạn, bạn đúng rằng thông thường người ta phải chọn một tỷ lệ học tập "cân bằng", điều đó không nên vượt quá hoặc không hội tụ quá chậm. Người ta có thể vẽ biểu đồ tỷ lệ học tập ghi lại mức độ giảm dần của hàm chi phí để chẩn đoán / tinh chỉnh. Trong thực tế, Andrew thường sử dụng thuật toán L-BFGS (được đề cập trong trang 12) để có được tỷ lệ học tập "đủ tốt".


9

Chọn tỷ lệ học tập là một ví dụ về "vấn đề meta" được gọi là tối ưu hóa siêu tham số . Tỷ lệ học tập tốt nhất phụ thuộc vào vấn đề trong tay, cũng như kiến ​​trúc của mô hình được tối ưu hóa, và thậm chí vào trạng thái của mô hình trong quy trình tối ưu hóa hiện tại! Thậm chí có những gói phần mềm dành cho việc tối ưu hóa hyperparameter như bạc hàhyperopt (chỉ là một vài ví dụ, có rất nhiều người khác!).

Ngoài tối ưu hóa siêu tham số quy mô đầy đủ, tôi muốn đề cập đến một kỹ thuật khá phổ biến để chọn tỷ lệ học tập chưa được đề cập cho đến nay. Ủ mô phỏng là một kỹ thuật để tối ưu hóa một mô hình, theo đó một mô hình bắt đầu với tốc độ học tập lớn và giảm dần tốc độ học tập khi quá trình tối ưu hóa tiến triển. Nói chung, bạn tối ưu hóa mô hình của mình với tỷ lệ học tập lớn (0,1 hoặc hơn), và sau đó giảm dần tỷ lệ này, thường bằng một mức độ lớn (vì vậy đến 0,01, sau đó là 0,001, 0,0001, v.v.).

Điều này có thể được kết hợp với việc dừng sớm để tối ưu hóa mô hình với một tốc độ học tập miễn là tiến trình được thực hiện, sau đó chuyển sang tốc độ học nhỏ hơn một khi tiến độ xuất hiện chậm. Tỷ lệ học tập lớn hơn xuất hiện để giúp mô hình xác định vị trí các vùng tối ưu chung, quy mô lớn, trong khi tỷ lệ nhỏ hơn giúp mô hình tập trung vào một tối ưu cục bộ cụ thể.


6

Sao chép từ luận án thạc sĩ của tôi :

  • Nếu tổn thất không giảm trong vài kỷ nguyên, tỷ lệ học tập có thể quá thấp. Quá trình tối ưu hóa cũng có thể bị kẹt ở mức tối thiểu cục bộ.
  • Mất NAN có thể là do tỷ lệ học tập quá cao. Một lý do khác là chia cho số 0 hoặc lấy logarit của số không.
  • Theo dõi cập nhật trọng lượng: Andrej Karpathy đã đề xuất trong bài giảng thứ 5 của CS231n để theo dõi cập nhật trọng lượng để kiểm tra xem tỷ lệ học tập có được lựa chọn tốt hay không. Ông đề nghị rằng việc cập nhật trọng lượng phải theo thứ tự 10−3. Nếu cập nhật trọng lượng quá cao, thì tỷ lệ học tập phải giảm. Nếu cập nhật trọng lượng quá thấp, thì tỷ lệ học tập phải được tăng lên.
  • Tỷ lệ học tập điển hình là trong [0,1, 0,00001]

4

Tỷ lệ học tập, được chuyển đổi thành "kích thước bước" trong quá trình lặp lại của chúng tôi, đã là một vấn đề nóng trong nhiều năm, và nó sẽ tiếp tục.

Có ba tùy chọn cho kích thước bước liên quan đến tôi:

  • Một liên quan đến " thời gian " và mỗi thứ nguyên sẽ chia sẻ cùng một kích thước bước. Bạn có thể đã nhận thấy một cái gì đó như

αt

Trong khi t thể hiện số lần lặp hiện tại, alpha là siêu tham số

  • cái tiếp theo được kết nối với độ dốc và mỗi thứ nguyên có kích thước bước riêng. Bạn có thể đã nhận thấy một cái gì đó như

1αβ+s=1t1gs2αβ+s=1tgs2

Trong khi alpha và beta là siêu tham số, g thể hiện độ dốc

  • cái cuối cùng là sự kết hợp giữa thời gian và độ dốc , và nó sẽ giống như

1αβ+s=1t1gs2αβ+s=1tgs2+γt

hoặc là

1αβ+s=1t1gs2αβ+s=1tgs2γt

Hy vọng điều này sẽ giúp bạn, chúc may mắn -)


Bạn có một tài liệu tham khảo cho điều này?
Jon

Bạn có thể tham khảo phần tỷ lệ học tập của FTRL, chúng tôi có thể xây dựng nó với TIME và GRADIENT.
joe

3

Mạng lưới thần kinh thường được đào tạo bởi độ dốc giảm dần trên các trọng số. Điều này có nghĩa là tại mỗi lần lặp, chúng tôi sử dụng phương pháp backpropagation để tính đạo hàm của hàm mất đối với từng trọng số và trừ nó khỏi trọng số đó. Tuy nhiên, nếu bạn thực sự thử điều đó, các trọng số sẽ thay đổi quá nhiều mỗi lần lặp lại, điều này sẽ khiến chúng trở nên quá chính xác và sự mất mát sẽ thực sự tăng / phân kỳ. Vì vậy, trong thực tế, mọi người thường nhân mỗi công cụ phái sinh với một giá trị nhỏ gọi là tỷ lệ học tập của Google trước khi họ trừ nó khỏi trọng số tương ứng của nó.

Bạn cũng có thể nghĩ về một chức năng mất mạng thần kinh như một bề mặt, trong đó mỗi hướng bạn có thể di chuyển đại diện cho giá trị của trọng lượng. Độ dốc của dốc giống như bước nhảy theo hướng dốc hiện tại và tốc độ học tập giống như độ dài của bước nhảy bạn thực hiện.


3

Thêm vào câu trả lời của David, ở fastai là nơi tôi tìm thấy khái niệm tìm tỷ lệ học tập tốt nhất cho dữ liệu đó, sử dụng một kiến ​​trúc cụ thể.

Nhưng điều đó chỉ tồn tại trên fastai / pytorch. Gần đây có ai đó làm keras thực hiện .

lần lượt dựa trên các giấy tờ này:

Hi vọng điêu nay co ich.


2

Hãy để tôi giới thiệu ngắn gọn về một cách tiếp cận khác về cách chọn tỷ lệ học tập, dựa trên khóa học Deep Learning của Jeremy Howard 1. Nếu bạn muốn tìm hiểu sâu hơn, hãy xem blogpost này .

Tỷ lệ học tập được đề xuất trong khóa học của Jeremy Howard dựa trên một cách có hệ thống để thử các mức học khác nhau và chọn một mức làm cho hàm mất mát giảm đi nhiều nhất. Điều này được thực hiện bằng cách cung cấp nhiều đợt cho phương pháp giảm độ dốc theo lô nhỏ và tăng tốc độ học tập mỗi đợt mới mà bạn cung cấp cho phương thức. Khi tốc độ học tập rất nhỏ, chức năng mất sẽ giảm rất chậm. Khi tỷ lệ học tập rất lớn, chức năng mất sẽ tăng lên. Giữa hai chế độ này, có một tỷ lệ học tập tối ưu mà chức năng mất giảm nhanh nhất. Điều này có thể được nhìn thấy trong hình sau:

nhập mô tả hình ảnh ở đây

103

Licensed under cc by-sa 3.0 with attribution required.