Dropout ile aşırı uyumu engelleme
Yapay sinir ağlarında yaygın bir sorun, eğitim verisine aşırı uyum sağlamalarıdır. Bu, R\(^2\) veya doğruluk gibi puanlama ölçütünün eğitim kümesi için yüksek, ancak test ve doğrulama kümeleri için düşük olması ve modelin eğitim verisindeki gürültüye uyması anlamına gelir.
Dropout kullanarak aşırı uyumu önlemeye çalışabiliriz. Bu, eğitim aşamasında bazı nöronları rastgele devre dışı bırakır ve ağın eğitim verisindeki gürültüye uymasını engellemeye yardımcı olur. keras içinde bunu yapmak için kullanabileceğimiz bir Dropout katmanı vardır. Eğitim sırasında devre dışı bırakılan bağlantıların oranı olan dropout oranını ayarlamamız gerekir. Bu oran, Dropout() katmanında 0 ile 1 arasında ondalık bir değer olarak belirlenir.
Bu model için ortalama kare hata kayıp fonksiyonuna geri dönüyoruz.
Bu egzersiz, kursun bir parçasıdır
Python ile Finans için Machine Learning
Egzersiz talimatları
- Modele ilk Dense katmandan sonra bir dropout katmanı (
Dropout()) ekle ve dropout oranı olarak %20 (0.2) kullan. - Modeli
.compile()içinde derlerkenadamoptimize edicisini vemsekayıp fonksiyonunu kullan. - Modeli
scaled_train_featuresvetrain_targetsüzerinde 25 epoch boyunca eğit.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
from keras.layers import Dropout
# Create model with dropout
model_3 = Sequential()
model_3.add(Dense(100, input_dim=scaled_train_features.shape[1], activation='relu'))
model_3.add(____)
model_3.add(Dense(20, activation='relu'))
model_3.add(Dense(1, activation='linear'))
# Fit model with mean squared error loss function
model_3.compile(optimizer=____, loss=____)
history = model_3.fit(____, ____, epochs=____)
plt.plot(history.history['loss'])
plt.title('loss:' + str(round(history.history['loss'][-1], 6)))
plt.show()