Làm cách nào (một cách có hệ thống) điều chỉnh tốc độ học tập có Gradient Descent làm Trình tối ưu hóa?


12

Một người ngoài đối với trường ML / DL; bắt đầu khóa học Deepacity của Udacity dựa trên Tensorflow; làm bài tập 3 bài 4; cố gắng điều chỉnh tốc độ học tập với cấu hình sau:

  • Kích thước hàng loạt 128
  • Số bước: đủ để lấp đầy 2 epoch
  • Kích thước của các lớp ẩn: 1024, 305, 75
  • Trọng lượng khởi tạo: cắt ngắn bình thường với tiêu chuẩn. độ lệch của sqrt (2 / n) trong đó n là kích thước của lớp trước
  • Bỏ học xác suất: 0,75
  • Chính quy: không áp dụng
  • Thuật toán tỷ lệ học tập: phân rã theo cấp số nhân

chơi xung quanh với các thông số tỷ lệ học tập; chúng dường như không có hiệu lực trong hầu hết các trường hợp; mã ở đây ; các kết quả:

Accuracy    learning_rate   decay_steps     decay_rate      staircase
93.7        .1              3000            .96             True
94.0        .3              3000            .86             False
94.0        .3              3000            .96             False
94.0        .3              3000            .96             True
94.0        .5              3000            .96             True
  • Làm thế nào tôi nên điều chỉnh tỷ lệ học tập một cách có hệ thống?
  • Làm thế nào là tỷ lệ học tập liên quan đến số lượng các bước?

1
tpot cung cấp các đường ống điều chỉnh ML tự động
denfromufa

Câu trả lời:


4

Sử dụng một trình tối ưu hóa giảm dần. Đây là một tổng quan rất tốt.

Về mã, hãy xem hướng dẫn này . Đâyđây là một số ví dụ.

Cá nhân, tôi đề nghị sử dụng ADAM hoặc RMSprop. Vẫn còn một số siêu đường kính để thiết lập, nhưng có một số "tiêu chuẩn" hoạt động 99% thời gian. Đối với ADAM, bạn có thể xem bài báo của nó và cho RMSprop tại các slide này .

BIÊN TẬP

Ok, bạn đã sử dụng một trình tối ưu hóa gradient. Sau đó, bạn có thể thực hiện một số tối ưu hóa siêu đường kính để chọn tỷ lệ học tập tốt nhất. Gần đây, một cách tiếp cận tự động đã được đề xuất . Ngoài ra, có rất nhiều công việc đầy hứa hẹn của Frank Hutter liên quan đến việc điều chỉnh siêu đường kính tự động.

Nói chung, hãy xem Thử thách AutoML , nơi bạn cũng có thể tìm thấy mã nguồn của các đội. Trong thử thách này, mục tiêu là tự động hóa học máy, bao gồm cả điều chỉnh siêu đường kính.

Cuối cùng, bài viết này của LeCunhướng dẫn rất gần đây của DeepMin (xem Chương 8) đưa ra một số hiểu biết có thể hữu ích cho câu hỏi của bạn.

Dù sao, hãy nhớ rằng (đặc biệt là đối với các vấn đề dễ), điều bình thường là tốc độ học tập không ảnh hưởng nhiều đến việc học khi sử dụng trình tối ưu hóa giảm dần. Thông thường, các tối ưu hóa này rất đáng tin cậy và làm việc với các thông số khác nhau.


Tôi đã sử dụng Gradient Descent Tối ưu hóa trong mã. Cảm ơn các liên kết!
Thoran

@Thoran Ok, đã không đọc mã: D (và câu hỏi không đề cập đến trình tối ưu hóa). Tôi đã chỉnh sửa câu trả lời của mình để giúp bạn thêm một số trợ giúp :)
Simon

Phát triển tốt đẹp, làm cho công việc dễ dàng hơn cho người ngoài như <. Bạn có biết số bước và tỷ lệ học tập có liên quan như thế nào không? Ruột của tôi nói với tôi rằng nếu có nhiều bước hơn, quá trình học tập sẽ chậm hơn.
Thoran

@Thoran Thông thường có, số bước càng cao, quá trình càng chậm (nhưng cũng ổn định hơn). Tôi tiếp tục chỉnh sửa câu trả lời của mình bằng cách thêm một số tài liệu tham khảo cho một số "thủ thuật" có thể hữu ích cho việc điều chỉnh siêu âm tay.
Simon

những thứ rất tuyệt, sẽ mất một thời gian để tôi tiêu hóa nó: D
Thoran

1

Bạn có thể tự động điều chỉnh siêu tham số trong rất nhiều thuật toán học máy, hoặc chỉ là siêu âm cho trình tối ưu hóa Gradient Descent tức là tốc độ học.

Một thư viện đã được phổ biến để làm điều này là spearmint.

https://github.com/JasperSnoek/spearmint


1

Một bộ điều chỉnh tốc độ học tập tự động rất gần đây được đưa ra trong Thích ứng tỷ lệ học tập trực tuyến với gốc siêu cấp

Phương pháp này rất đơn giản để thực hiện, kết quả cốt lõi cho SGD được đưa ra là:

αt=αt1+βf(θt1)Tf(θt2)

βe.g.f(θt2)α

βα0


0

Để điều chỉnh siêu âm (cho dù đó là tốc độ học tập, tốc độ phân rã, chính quy hay bất cứ thứ gì khác), bạn cần thiết lập một bộ dữ liệu được tổ chức; bộ dữ liệu này tách rời khỏi tập dữ liệu đào tạo của bạn. Sau khi điều chỉnh một số mô hình với các cấu hình khác nhau (trong đó một cấu hình = một lựa chọn cụ thể của từng siêu tham số), bạn chọn cấu hình bằng cách chọn mô hình tối đa hóa độ chính xác giữ.


Làm thế nào là dữ liệu được tổ chức khác với dữ liệu kiểm tra hoặc xác nhận?
Thoran

tổ chức là một tên khác để xác nhận. Về cơ bản, bạn có ba bộ dữ liệu rời rạc: đào tạo, tổ chức và kiểm tra. Train chỉ được sử dụng để học trọng số mô hình (ví dụ: sử dụng độ dốc giảm dần). Heldout được sử dụng để điều chỉnh các tham số mô hình. Kiểm tra chỉ được sử dụng để đo hiệu suất tổng quát hóa (nghĩa là làm thế nào tôi có thể mong đợi mô hình của mình thực hiện trên dữ liệu chưa xem)
Alireza

Cảm ơn @Alireza đã dành thời gian của bạn để giải thích. Tôi đang sử dụng dữ liệu xác nhận đã. Và không có kiểm tra, không thể đo lường độ chính xác!
Thoran

Chà, câu hỏi ban đầu của bạn là về việc xác định tỷ lệ học tập: nếu cột đầu tiên trong bài đăng gốc của bạn được tổ chức (không đào tạo) chính xác, thì bạn có thể nói 0,5 tốt hơn 0,1 (mặc dù bạn nên tiếp tục thử các giá trị> 0,5). [lưu ý: nếu bạn thực hiện lại các thử nghiệm của mình, chỉ cần phân vùng một số dữ liệu để phục vụ thử nghiệm]
Alireza
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.