Keras: कर्नेल और गतिविधि नियमितकर्ताओं के बीच अंतर


86

मैंने ध्यान दिया है कि भार_ अनियमितता केर में और अधिक उपलब्ध नहीं है और इसके स्थान पर, गतिविधि और कर्नेल रेग्युलर हैं। मैं जानना चाहता हूँ:

  • कर्नेल और गतिविधि नियमित करने वालों के बीच मुख्य अंतर क्या हैं ?
  • मैं इस्तेमाल कर सकते हैं activity_regularizer के स्थान पर weight_regularizer ?

जवाबों:


85

गतिविधि रेगुलराइज़र नेट के आउटपुट के एक फ़ंक्शन के रूप में काम करता है, और इसका उपयोग ज्यादातर छिपी हुई इकाइयों को नियमित करने के लिए किया जाता है, जबकि वेट_ अनियमित, जैसा कि नाम कहता है, वज़न पर काम करता है, जिससे वे क्षय हो जाते हैं। मूल रूप से आप आउटपुट ( activity_regularizer) या भार ( weight_regularizer) के एक फ़ंक्शन के रूप में नियमितीकरण हानि को व्यक्त कर सकते हैं ।

नई kernel_regularizerजगह weight_regularizer- हालांकि यह प्रलेखन से बहुत स्पष्ट नहीं है।

की परिभाषा से kernel_regularizer:

कर्नेल_अग्रिवाइज़र: kernelवेट मैट्रिक्स पर रेगुलराइज़र फ़ंक्शन लागू होता है ( रेगुलराइज़र देखें)।

और activity_regularizer:

एक्टिविटी_हाइज़र: रेग्यूलर फंक्शन लेयर के आउटपुट (इसके "ऐक्टिवेशन") पर लागू होता है। (नियमित देखें)।

महत्वपूर्ण संपादित करें : वहाँ में एक बग है ध्यान दें कि activity_regularizer कि गया था केवल Keras के संस्करण 2.1.4 में तय (Tensorflow बैकएंड साथ कम से कम)। दरअसल, पुराने संस्करणों में, एक्टिविटी रेगुलराइज़र फंक्शन को लेयर के इनपुट पर लागू किया जाता है, आउटपुट पर लागू होने के बजाय (लेयर की वास्तविक सक्रियता, जैसा कि इरादा है)। इसलिए सावधान रहें यदि आप केरस (2.1.4 से पहले) के पुराने संस्करण का उपयोग कर रहे हैं, तो गतिविधि नियमितीकरण संभवतः के रूप में काम नहीं कर सकता है।

आप GitHub पर प्रतिबद्ध देख सकते हैं

पांच महीने पहले फ्रांकोइस चॉलेट ने गतिविधि नियमितकर्ता को एक फिक्स प्रदान किया था, जिसे तब केरस 2.1.4 में शामिल किया गया था


क्या आप पूरी तरह से उस kernel_regularizerजगह के बारे में सुनिश्चित हैं weight_regularizer?
सिमोन

3
मुझे कर्नेल_अग्रिज़र का उपयोग करके कई उदाहरण मिलते हैं, लेकिन गतिविधि_उपयोगकर्ता के लिए नहीं। क्या आप गतिविधि के मामलों के लिए उपयोग कर सकते हैं?
मिलाद एम।

1
आप छिपी हुई परतों के उत्पादन को नियमित क्यों करना चाहेंगे? क्या यह उसी कारण से है कि हम इनपुट को रेंज (-1, 1) या (0, 1) के लिए सामान्य करते हैं। यह है कि SGD प्रक्रिया की सहायता के लिए बाद की परतों के इनपुट को छोटा रखना है?
नागभूषण बद्दी

1
@ नागभूषणबद्दी इस उत्तर को देखें: datascience.stackexchange.com/a/15195/32811
मिशेल टोनुटी

1
@FinncentPrice मैं केवल यह मान सकता हूं कि यह वहां हुआ करता था और अब यह नहीं है
मिशेल टनुटी

34

यह उत्तर थोड़ा देर से है, लेकिन भविष्य के पाठकों के लिए उपयोगी है। इसलिए, आवश्यकता आविष्कार की जननी है जैसा कि वे कहते हैं। मैंने इसे तभी समझा जब मुझे इसकी आवश्यकता थी।
उपर्युक्त उत्तर वास्तव में अंतर का कारण नहीं बनता है, क्योंकि दोनों ही वजन को प्रभावित करते हैं, इसलिए भार या परत के उत्पादन के लिए दंडित करने में क्या अंतर है?
यहाँ उत्तर है: मुझे एक ऐसे मामले का सामना करना पड़ा जहां जाल का वजन छोटा और अच्छा है, [-0.3] से [+3.3] के बीच।
इसलिए, मैं वास्तव में उन्हें दंडित नहीं कर सकता, उनके साथ कुछ भी गलत नहीं है। एक कर्नेल रेगुलराइज़र बेकार है। हालांकि, परत का उत्पादन 100 के दशक में बहुत बड़ा है।
ध्यान रखें कि परत का इनपुट भी छोटा है, हमेशा एक से कम। लेकिन वे छोटे मूल्य इस तरह से वजन के साथ बातचीत करते हैं जो उन बड़े पैमाने पर आउटपुट का उत्पादन करते हैं। यहाँ मैंने महसूस किया कि मुझे एक गतिविधि नियमित करने की आवश्यकता है, बजाय कर्नेल नियमित करने वाले के। इसके साथ, मैं उन बड़े आउटपुटों के लिए परत को सजा रहा हूं, मुझे परवाह नहीं है कि अगर वजन खुद छोटा है, तो मैं इसे इस तरह की स्थिति तक पहुंचने से रोकना चाहता हूं क्योंकि यह मेरे सिग्मॉइड सक्रियण को संतृप्त करता है और टन के अन्य परेशानियों का कारण बनता है। ढाल और ठहराव।


सच में सहज।
सारंग मांजरेकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.