tek4

Tạm Dừng Huấn Luyện Đúng Thời Điểm – Keras Cơ Bản

by - September. 26, 2021
Học
Kiến thức
Machine Learning
<p style="text-align: justify;">Ch&agrave;o mừng c&aacute;c bạn quay trở lại với loạt b&agrave;i về&nbsp;<a href="https://tek4.vn/keras-co-ban-bat-dau-hoc-sau-voi-tf-keras/" target="_blank" rel="noopener">Keras Cơ Bản</a>&nbsp;của<a href="https://tek4.vn/" target="_blank" rel="noopener">&nbsp;tek4.vn</a>. Trong b&agrave;i viết n&agrave;y ch&uacute;ng ta sẽ c&ugrave;ng kh&aacute;m ph&aacute; c&aacute;ch l&agrave;m thế n&agrave;o để tạm dừng huấn luyện m&ocirc; h&igrave;nh đ&uacute;ng thời điểm thay v&igrave; dừng sớm. Bắt đầu th&ocirc;i!</p> <p style="text-align: justify;">Xem th&ecirc;m b&agrave;i viết trước:<a href="https://tek4.vn/tang-toc-huan-luyen-mo-hinh-voi-batch-normalization-keras-co-ban/" target="_blank" rel="noopener">&nbsp;Tăng Tốc Huấn Luyện M&ocirc; H&igrave;nh Với Batch Normalization</a></p> <p><img style="width: 594px; display: block; margin-left: auto; margin-right: auto;" src="http://tek4vn.2soft.top/public_files/54-png" alt="54" height="310" /></p> <p style="text-align: justify;">Mạng neural l&agrave; một th&aacute;ch thức để huấn luyện.</p> <p style="text-align: justify;">Huấn luyện qu&aacute; &iacute;t v&agrave; m&ocirc; h&igrave;nh kh&ocirc;ng hiệu quả. Huấn luyện qu&aacute; nhiều v&agrave; m&ocirc; h&igrave;nh l&agrave;m qu&aacute; tải tập dữ liệu đ&agrave;o tạo. Cả hai trường hợp đều dẫn đến một m&ocirc; h&igrave;nh k&eacute;m hiệu quả.</p> <p style="text-align: justify;">Một c&aacute;ch tiếp cận để giải quyết vấn đề n&agrave;y l&agrave; sử dụng phương ph&aacute;p dừng huấn luyện đ&uacute;ng thời điểm hay c&ograve;n gọi l&agrave; dừng sớm (early stopping). Điều n&agrave;y li&ecirc;n quan đến việc theo d&otilde;i sự mất m&aacute;t tr&ecirc;n tập dữ liệu đ&agrave;o tạo v&agrave; tập dữ liệu x&aacute;c thực (một tập con của tập dữ liệu đ&agrave;o tạo kh&ocirc;ng được sử dụng để huấn luyện m&ocirc; h&igrave;nh). Ngay sau khi c&oacute; dấu hiệu qu&aacute; khớp với bộ dữ liệu x&aacute;c thực, qu&aacute; tr&igrave;nh huấn luyện c&oacute; thể bị dừng lại.</p> <p style="text-align: justify;">Việc dừng sớm c&oacute; thể được sử dụng với m&ocirc; h&igrave;nh của bạn bằng c&aacute;ch trước ti&ecirc;n phải đảm bảo rằng bạn c&oacute; tập dữ liệu x&aacute;c thực. Bạn c&oacute; thể x&aacute;c định tập dữ liệu x&aacute;c thực theo c&aacute;ch thủ c&ocirc;ng th&ocirc;ng qua đối số&nbsp;<em>validation_data</em>&nbsp;cho h&agrave;m&nbsp;<em>fit()</em>&nbsp;hoặc bạn c&oacute; thể sử dụng&nbsp;<em>validation_split</em>&nbsp;v&agrave; chỉ định số lượng tập dữ liệu đ&agrave;o tạo cần giữ lại để x&aacute;c thực.</p> <p style="text-align: justify;">Sau đ&oacute;, bạn c&oacute; thể x&aacute;c định&nbsp;EarlyStopping&nbsp;v&agrave; hướng dẫn n&oacute; về biện ph&aacute;p hiệu suất n&agrave;o cần theo d&otilde;i, chẳng hạn như&nbsp;<em>&lsquo;val_loss&lsquo;</em>&nbsp;cho sự mất m&aacute;t tr&ecirc;n tập dữ liệu x&aacute;c thực v&agrave; số epoch để quan s&aacute;t thấy qu&aacute; khớp trước khi thực hiện h&agrave;nh động.</p> <p style="text-align: justify;">Lệnh gọi lại&nbsp;<a href="https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping">EarlyStopping</a>&nbsp;được định cấu h&igrave;nh n&agrave;y sau đ&oacute; c&oacute; thể được cung cấp cho h&agrave;m fit() th&ocirc;ng qua đối số &ldquo;callbacks&rdquo; lấy danh s&aacute;ch c&aacute;c lệnh gọi lại.</p> <p style="text-align: justify;">Điều n&agrave;y cho ph&eacute;p bạn đặt số lượng epoch th&agrave;nh một số lượng lớn v&agrave; tin tưởng rằng qu&aacute; tr&igrave;nh đ&agrave;o tạo sẽ kết th&uacute;c ngay khi m&ocirc; h&igrave;nh bắt đầu bị qu&aacute; khớp. Bạn cũng c&oacute; thể muốn tạo một đường cong học tập để kh&aacute;m ph&aacute; th&ecirc;m th&ocirc;ng tin chi tiết về động lực học tập của qu&aacute; tr&igrave;nh chạy v&agrave; khi qu&aacute; tr&igrave;nh đ&agrave;o tạo bị tạm dừng.</p> <p style="text-align: justify;">V&iacute; dụ dưới đ&acirc;y minh họa một mạng nơ ron nhỏ trong b&agrave;i to&aacute;n ph&acirc;n loại nhị ph&acirc;n tổng hợp sử dụng t&iacute;nh năng dừng sớm để tạm dừng đ&agrave;o tạo ngay khi m&ocirc; h&igrave;nh bắt đầu bị qu&aacute; khớp (sau khoảng 50 epoch).</p> <pre class="language-python"><code># example of using early stopping from sklearn.datasets import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.callbacks import EarlyStopping # 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(Dense(1, activation='sigmoid')) # compile the model model.compile(optimizer='adam', loss='binary_crossentropy') # configure early stopping es = EarlyStopping(monitor='val_loss', patience=5) # fit the model history = model.fit(X, y, epochs=200, batch_size=32, verbose=0, validation_split=0.3, callbacks=[es])</code></pre> <p>API tf.keras cung cấp một số lệnh gọi lại m&agrave; bạn c&oacute; thể muốn kh&aacute;m ph&aacute;; Bạn c&oacute; thể t&igrave;m hiểu th&ecirc;m tại đ&acirc;y:</p> <ul> <li><a href="https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/">tf.keras Callbacks</a></li> </ul> <p><em>"Đ&acirc;y l&agrave; b&agrave;i viết cuối c&ugrave;ng trong loạt b&agrave;i về Keras cơ bản. Hi vọng bạn thấy th&iacute;ch th&uacute; v&agrave; h&agrave;i l&ograve;ng với những g&igrave; học được trong series n&agrave;y, nếu c&oacute; bất cứ thắc mắc n&agrave;o đừng ngần ngại để lại dưới phần b&igrave;nh luận. Cảm ơn c&aacute;c bạn đ&atilde; quan t&acirc;m theo d&otilde;i v&agrave; đừng qu&ecirc;n ủng hộ tek4.vn để ch&uacute;ng m&igrave;nh c&oacute; động lực ph&aacute;t triển th&ecirc;m nhiều series hay ho kh&aacute;c nh&eacute;!"</em></p> <div id="wpd-post-rating" class="wpd-not-rated"> <div class="wpd-rating-wrap">&nbsp;</div> </div> <hr /> <p style="text-align: center;"><em><strong>Fanpage Facebook:</strong>&nbsp;<a href="https://www.facebook.com/tek4.vn/">TEK4.VN</a></em>&nbsp;</p> <p style="text-align: center;"><em><strong>Tham gia cộng đồng để chia sẻ, trao đổi v&agrave; thảo luận:</strong>&nbsp;<a href="https://www.facebook.com/groups/tek4.vn/">TEK4.VN - Học Lập Tr&igrave;nh Miễn Ph&iacute;</a></em></p>