Bắt đầu ngayBắt đầu miễn phí

Chống overfitting với dropout

Một vấn đề phổ biến với neural network là chúng dễ bị overfit vào dữ liệu huấn luyện. Nghĩa là điểm số như R\(^2\) hoặc accuracy cao trên tập huấn luyện nhưng thấp trên các tập kiểm tra và xác thực, và mô hình đang khớp với nhiễu trong dữ liệu huấn luyện.

Bạn có thể hạn chế overfitting bằng cách dùng dropout. Cách này sẽ ngẫu nhiên loại bỏ một số neuron trong giai đoạn huấn luyện, giúp mạng tránh khớp theo nhiễu của dữ liệu huấn luyện. keras có một tầng Dropout để bạn làm điều này. Bạn cần đặt tỷ lệ dropout, tức là phần trăm kết nối bị loại trong thời gian huấn luyện. Tham số này được đặt dưới dạng số thập phân từ 0 đến 1 trong tầng Dropout().

Trong bài này, chúng ta sẽ quay lại dùng hàm mất mát mean squared error.

Bài tập này là một phần của khóa học

Machine Learning cho Tài chính bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Thêm một tầng dropout (Dropout()) sau Dense đầu tiên trong mô hình, và dùng tỷ lệ dropout 20% (0.2).
  • Dùng trình tối ưu adam và hàm mất mát mse khi biên dịch mô hình với .compile().
  • Huấn luyện mô hình với scaled_train_featurestrain_targets trong 25 epoch.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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()
Chỉnh sửa và Chạy Mã