Chào mừng các bạn quay trở lại với loạt bài về Keras Cơ Bản của tek4.vn. Trong bài viết này chúng ta sẽ cùng khám phá kỹ thuật giúp tăng tốc quá trình huấn luyện mô hình học sâu đó là Batch Normalization. Bắt đầu thôi!
Xem thêm bài viết trước: Giảm Tình Trạng Quá Khớp Trong Huấn Luyện Mô Hình
Quy mô và sự phân bổ của các yếu tố đầu vào cho một layer có thể ảnh hưởng lớn đến mức độ dễ dàng hoặc nhanh chóng của layer đó trong quá trình huấn luyện.
Nói chung, đây là lý do tại sao nên chia tỷ lệ dữ liệu đầu vào trước khi lập mô hình dữ liệu đó bằng mô hình mạng nơ ron.
Batch normalization là một kỹ thuật để đào tạo mạng nơ ron sâu, chuẩn hóa các đầu vào thành một layer cho mỗi mini-batch. Điều này có tác dụng ổn định quá trình học tập và giảm đáng kể số lượng epoch đào tạo cần thiết để đào tạo mạng sâu.
Bạn có thể sử dụng batch normalization trong mạng của mình bằng cách thêm một layer batch normalization trước layer mà bạn muốn có đầu vào chuẩn hóa. Có thể sử dụng batch normalization với các mô hình MLP, CNN và RNN.
Điều này có thể đạt được bằng cách thêm trực tiếp layer BatchNormalization.
Ví dụ dưới đây xác định một mạng MLP nhỏ cho vấn đề dự đoán phân loại nhị phân với layer batch normalization nằm giữa layer ẩn đầu tiên và layer đầu ra.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# example of using batch normalization from sklearn.datasets import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import BatchNormalization from matplotlib import pyplot # create the dataset X, y = make_classification(n_samples=1000, n_classes=2, random_state=1) # determine the number of input features n_features = X.shape[1] # define model model = Sequential() model.add(Dense(10, activation='relu', kernel_initializer='he_normal', input_shape=(n_features,))) model.add(BatchNormalization()) model.add(Dense(1, activation='sigmoid')) # compile the model model.compile(optimizer='adam', loss='binary_crossentropy') # fit the model model.fit(X, y, epochs=100, batch_size=32, verbose=0) |
Ngoài ra, tf.keras có một loạt các layer chuẩn hóa khác mà bạn có thể muốn khám phá; Xem thêm tại:
Bài viết tiếp theo: Tạm dừng đào tạo vào đúng thời điểm thay vì dừng sớm