Eğitim kaybı azalır ve tekrar yükselir. Ne oluyor?


26

Eğitim kaybım azaldı ve sonra tekrar yükseldi. Bu çok garip. Çapraz doğrulama kaybı, eğitim kaybını izler. Ne oluyor?

Aşağıdaki gibi iki yığılmış LSTMS var (Keras'larda):

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 dönem için eğitiyorum:

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

127803 örnek üzerinde eğitin, 31951 örnek üzerinde doğrulayın

Ve bu kayıp gibi görünüyor: Kayıp Grafiği


2
Öğreniminiz 25. çağdan sonra büyük olabilir. Daha küçük kurmak için deneyin ve tekrar kaybını kontrol
itdxer

Ancak, ilave eğitim, eğitim veri kaybını nasıl daha büyük hale getirebilir?
patapouf_ai

3
Üzgünüm, öğrenme oranını kastediyorum.
itdxer

Teşekkürler itdxer. Bence söylediklerin doğru yolda olmalı. "Adadelta" yerine "adam" kullanmaya çalıştım ve bu sorunu çözdü, ancak "adadelta" nın öğrenme oranını düşürmenin de işe yarayacağını tahmin ediyorum. Tam bir cevap yazmak istiyorsanız kabul edeceğim.
patapouf_ai 05.06.2016

Yanıtlar:


19

Öğrenme oranınız, 25. çağdan sonra büyük olabilir. Bu sorunun tanımlanması kolaydır. Sadece öğrenme oranınız için daha küçük bir değer ayarlamanız gerekir. Öğrenme oranınızla ilgili problemin NN'den daha düşük bir hataya ulaşması durumunda, bir süre sonra tekrar ortaya çıkmasına rağmen. Ana nokta, hata oranının bir süre içinde daha düşük olacağıdır.

Bu davranışı gözlemlediyseniz iki basit çözüm kullanabilirsiniz. Birincisi en basit olanıdır. Çok küçük bir adım atın ve eğitin. İkincisi, öğrenme oranınızı monoton bir şekilde azaltmak. İşte basit bir formül:

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

Nerede öğrenme oranı, senin yineleme sayısıdır ve tanımlar oranı azalan hız öğrenme bir katsayıdır. Bu, değerinin eşit olması durumunda adımınızın iki katına indirileceği anlamına gelir .t m t mbirtmtm


7
OP, Keras'ı kullandığından , biraz daha karmaşık öğrenme hızı güncellemeleri yapmak için başka bir seçenek , validasyon kaybı belirli bir dönem için iyileşmediğinde öğrenme oranını azaltan ReduceLROnPlateau gibi bir geri arama kullanmak olacaktır .
n1k31t4 15
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.