प्रशिक्षण हानि नीचे और ऊपर फिर जाती है। क्या हो रहा है?


26

मेरा प्रशिक्षण नुकसान नीचे और फिर ऊपर जाता है। यह बहुत ही अजीब है। क्रॉस-वेलिडेशन लॉस प्रशिक्षण हानि को ट्रैक करता है। क्या हो रहा है?

मेरे पास दो स्टैक्ड LSTMS इस प्रकार हैं (करेस पर):

model = Sequential()
model.add(LSTM(512, return_sequences=True, input_shape=(len(X[0]), len(nd.char_indices))))
model.add(Dropout(0.2))
model.add(LSTM(512, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(len(nd.categories)))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adadelta')

मैं इसे 100 युगों के लिए प्रशिक्षित करता हूं:

model.fit(X_train, np.array(y_train), batch_size=1024, nb_epoch=100, validation_split=0.2)

127803 नमूनों पर ट्रेन, 31951 नमूनों पर मान्य

और यह है कि नुकसान की तरह लग रहा है: घाटे का ग्राफ


2
25 वें युग के बाद आपकी शिक्षा बड़ी हो सकती है। इसे छोटा सेट करने की कोशिश करें और अपने नुकसान की फिर से जाँच करें
itdxer

लेकिन अतिरिक्त प्रशिक्षण प्रशिक्षण डेटा हानि को बड़ा कैसे बना सकता है?
patapouf_ai

3
क्षमा करें, मेरा मतलब है सीखने की दर।
itdxer

धन्यवाद itdxer मुझे लगता है कि आपने जो कहा वह सही रास्ते पर होना चाहिए। मैंने "एडलाट्टा" के बजाय "एडैम" का उपयोग करने की कोशिश की और इस समस्या को हल किया, हालांकि मैं अनुमान लगा रहा हूं कि "एडलड्टा" की सीखने की दर को कम करने से शायद काम भी होगा। यदि आप एक पूर्ण उत्तर लिखना चाहते हैं तो मैं इसे स्वीकार करूंगा।
patapouf_ai

जवाबों:


19

25 वें युग के बाद आपकी सीखने की दर बड़ी हो सकती है। इस समस्या को पहचानना आसान है। आपको बस अपनी सीखने की दर के लिए एक छोटा मूल्य निर्धारित करने की आवश्यकता है। यदि NN की तुलना में आपके सीखने की दर से संबंधित समस्या कम त्रुटि तक पहुँचनी चाहिए, इसके बावजूद यह थोड़ी देर के बाद फिर से बढ़ जाएगी। मुख्य बिंदु यह है कि त्रुटि दर किसी समय में कम होगी।

यदि आपने इस व्यवहार को देखा तो आप दो सरल समाधानों का उपयोग कर सकते हैं। पहले वाला सबसे सरल है। एक बहुत छोटा कदम सेट करें और इसे प्रशिक्षित करें। दूसरा यह है कि आपके सीखने की दर को एकतरफा घटा दिया जाए। यहाँ एक सरल सूत्र है:

α(t+1)=α(0)1+tm

कहाँ अपने सीखने दर है, अपने यात्रा संख्या है और कि दर कम गति सीखने की पहचान करता है एक गुणांक है। इसका अर्थ है कि जब बराबर होगा, तो आपका कदम दो के एक कारक से कम हो जाएगा ।t m t t matmtm


7
जैसा कि ओपी करैस का उपयोग कर रहा था, थोड़ा और अधिक परिष्कृत सीखने की दर अपडेट करने का एक अन्य विकल्प ReduceLROnPlateau जैसे कॉलबैक का उपयोग करना होगा , जो कि दी गई एक बार की अवधि के लिए सत्यापन हानि में सुधार नहीं होने पर सीखने की दर को कम कर देता है।
n1k31t4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.