2015-05-04 14 views
32

Tôi chỉ cố gắng tìm hiểu cách tôi có thể sử dụng Caffe. Để làm như vậy, tôi chỉ cần nhìn vào các tập tin .prototxt khác nhau trong thư mục ví dụ. Có một lựa chọn Tôi không hiểu:`lr_policy` trong Caffe là gì?

# The learning rate policy 
lr_policy: "inv" 

Giá trị có thể dường như là:

  • "fixed"
  • "inv"
  • "step"
  • "multistep"
  • "stepearly"
  • "poly"

Ai đó có thể giải thích những tùy chọn này?

Trả lời

39

Nếu bạn nhìn vào bên trong các tập tin /caffe-master/src/caffe/proto/caffe.proto (bạn có thể tìm thấy nó trên mạng here), bạn sẽ thấy các mô tả sau:

// The learning rate decay policy. The currently implemented learning rate 
// policies are as follows: 
// - fixed: always return base_lr. 
// - step: return base_lr * gamma^(floor(iter/step)) 
// - exp: return base_lr * gamma^iter 
// - inv: return base_lr * (1 + gamma * iter)^(- power) 
// - multistep: similar to step but it allows non uniform steps defined by 
//  stepvalue 
// - poly: the effective learning rate follows a polynomial decay, to be 
//  zero by the max_iter. return base_lr (1 - iter/max_iter)^(power) 
// - sigmoid: the effective learning rate follows a sigmod decay 
//  return base_lr (1/(1 + exp(-gamma * (iter - stepsize)))) 
// 
// where base_lr, max_iter, gamma, step, stepvalue and power are defined 
// in the solver parameter protocol buffer, and iter is the current iteration. 
45

Thực tiễn phổ biến là giảm tốc độ học tập (lr) khi quá trình tối ưu hóa/học tập diễn ra. Tuy nhiên, nó không phải là rõ ràng như thế nào chính xác tỷ lệ học tập nên được giảm như là một chức năng của số lặp.

Nếu bạn sử dụng DIGITS làm giao diện cho Caffe, bạn sẽ có thể xem trực quan các lựa chọn khác nhau ảnh hưởng như thế nào đến tỷ lệ học tập.

cố định: tỷ lệ học tập được giữ cố định trong suốt quá trình học.


inv: tỷ lệ học được mục nát như ~ 1/T
enter image description here


bước: tỷ lệ học là piecewise liên tục, giảm mỗi X lặp
enter image description here


nhiều bước: piecewise liên tục trong khoảng thời gian tùy ý
enter image description here


Bạn có thể thấy chính xác cách thức tỷ lệ học được tính toán trong hàm SGDSolver<Dtype>::GetLearningRate (giải quyết/sgd_solver.cpp dòng ~ 30).


Gần đây, tôi đã xem qua một cách tiếp cận thú vị và độc đáo để điều chỉnh tốc độ học tập: Leslie N. Smith's work "No More Pesky Learning Rate Guessing Games". Trong báo cáo của mình, Leslie đề xuất sử dụng lr_policy thay thế giữa việc giảm và tăng tỷ lệ học tập. Tác phẩm của ông cũng cho thấy làm thế nào để thực hiện chính sách này trong Caffe.

+2

No More pesky ... dường như tương tự trong hoạt động để sử dụng adadelta. Hiện nay có nhiều phương án thích ứng có sẵn trong Caffe. –

Các vấn đề liên quan