machine learning - कैफी में `lr_policy` क्या है?




machine-learning neural-network (2)

मैं बस यह पता लगाने की कोशिश करता हूं कि मैं Caffe उपयोग कैसे कर सकता हूं। ऐसा करने के लिए, मैंने उदाहरण फ़ोल्डर में अलग-अलग .prototxt फ़ाइलों को देखा। एक विकल्प है जिसे मैं समझ नहीं पा रहा हूं:

# The learning rate policy
lr_policy: "inv"

संभावित मान प्रतीत होते हैं:

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

क्या कोई कृपया उन विकल्पों को समझा सकता है?


अनुकूलन / सीखने की प्रक्रिया में प्रगति के रूप में सीखने की दर (एलआर) को कम करना एक आम प्रथा है। हालांकि, यह स्पष्ट नहीं है कि पुनरावृत्ति संख्या के कार्य के रूप में सीखने की दर को कैसे कम किया जाना चाहिए।

यदि आप DIGITS के लिए इंटरफ़ेस के रूप में DIGITS उपयोग करते हैं, तो आप DIGITS रूप से सीख सकते हैं कि विभिन्न विकल्प सीखने की दर को कैसे प्रभावित करते हैं।

निश्चित: सीखने की दर पूरे सीखने की प्रक्रिया में तय की जाती है।

आविष्कार: सीखने की दर ~ 1/T रूप में क्षीण हो रही है

कदम: सीखने की दर टुकड़े की तरह स्थिर है, हर एक्स पुनरावृत्तियों को छोड़ना

multistep: मनमानी अंतराल पर टुकड़े की तरह स्थिर

आप देख सकते हैं कि SGDSolver<Dtype>::GetLearningRate ( solvers / sgd_solver.cpp लाइन ~ 30) फ़ंक्शन में सीखने की दर की गणना कैसे की जाती है।

हाल ही में, मैं सीखने-दर ट्यूनिंग के लिए एक दिलचस्प और अपरंपरागत दृष्टिकोण में आया: लेस्ली एन स्मिथ का काम "नो मोर पेस्की लर्निंग रेट अनुमान खेलों" । अपनी रिपोर्ट में, लेस्ली ने lr_policy का उपयोग करने का सुझाव दिया जो सीखने की दर को कम करने और बढ़ाने के बीच वैकल्पिक है। उनके काम से पता चलता है कि कैफी में इस नीति को कैसे कार्यान्वित किया जाए।


यदि आप /caffe-master/src/caffe/proto/caffe.proto फ़ाइल के अंदर /caffe-master/src/caffe/proto/caffe.proto हैं (आप इसे ऑनलाइन here पा सकते हैं) तो आप निम्न विवरण देखेंगे:

// 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.




gradient-descent