Začněte nyníZačněte zdarma

Boj s přetrénováním pomocí dropoutu

Častým problémem neuronových sítí je přetrénování (overfitting) na trénovacích datech. To znamená, že metrika jako R\(^2\) nebo přesnost vychází dobře pro trénovací sadu, ale špatně pro testovací a validační sadu – model se totiž přizpůsobil šumu v trénovacích datech.

Přetrénování lze omezit pomocí dropoutu. Ten během trénování náhodně vypíná část neuronů, čímž brání síti v přizpůsobování se šumu. keras nabízí vrstvu Dropout, která to za nás zajistí. Nastavíme dropout rate, tedy podíl spojení, která se během trénování náhodně vypínají. Zadává se jako desetinné číslo mezi 0 a 1 přímo do vrstvy Dropout().

Pro tento model se vrátíme ke ztrátové funkci mean squared error.

Toto cvičení je součástí kurzu

Machine Learning for Finance in Python

Zobrazit kurz

Pokyny k cvičení

  • Za první vrstvu Dense přidej do modelu vrstvu dropout (Dropout()) a nastav dropout rate na 20 % (0,2).
  • Při kompilaci modelu v .compile() použij optimalizátor adam a ztrátovou funkci mse.
  • Natrénuj model na scaled_train_features a train_targets po dobu 25 epoch.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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()
Upravit a spustit kód