tek4

Cách Vẽ Đồ Thị Đường Cong Học Tập Của Mô Hình – Keras Cơ Bản

by - September. 25, 2021
Học
Kiến thức
Machine Learning
<p>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 nhau t&igrave;m hiểu về c&aacute;ch vẽ đồ thị đường cong học tập của m&ocirc; h&igrave;nh học s&acirc;u. Bắt đầu th&ocirc;i!</p> <p style="text-align: justify;">Xem th&ecirc;m b&agrave;i viết trước:&nbsp;<a href="https://tek4.vn/cach-visualize-mot-mo-hinh-hoc-sau-keras-co-ban/" target="_blank" rel="noopener">C&aacute;ch Visualize Một M&ocirc; H&igrave;nh Học S&acirc;u</a></p> <p><img style="width: 657px; display: block; margin-left: auto; margin-right: auto;" src="http://tek4vn.2soft.top/public_files/50-png" alt="50" height="342" /></p> <p style="text-align: justify;">Đường cong học tập l&agrave; một biểu đồ về hiệu suất của m&ocirc; h&igrave;nh mạng nơ ron theo thời gian, chẳng hạn như được t&iacute;nh to&aacute;n v&agrave;o cuối mỗi epoch đ&agrave;o tạo.</p> <p style="text-align: justify;">C&aacute;c đồ thị đường cong học tập cung cấp c&aacute;i nh&igrave;n s&acirc;u sắc về động lực học tập của m&ocirc; h&igrave;nh, chẳng hạn như liệu m&ocirc; h&igrave;nh c&oacute; đang học tốt hay kh&ocirc;ng, liệu n&oacute; c&oacute; underfitting với tập dữ liệu đ&agrave;o tạo hay kh&ocirc;ng hoặc n&oacute; c&oacute; overfitting với tập dữ liệu đ&agrave;o tạo hay kh&ocirc;ng.</p> <p style="text-align: justify;">Bạn c&oacute; thể dễ d&agrave;ng tạo đường cong học tập cho c&aacute;c m&ocirc; h&igrave;nh học s&acirc;u của m&igrave;nh.</p> <p style="text-align: justify;">Trước ti&ecirc;n, bạn phải cập nhật lệnh gọi của m&igrave;nh th&agrave;nh h&agrave;m fit để bao gồm tham chiếu đến tập dữ liệu x&aacute;c thực. Tập x&aacute;c thực l&agrave; một phần của tập huấn luyện kh&ocirc;ng được sử dụng để đ&agrave;o tạo m&ocirc; h&igrave;nh m&agrave; thay v&agrave;o đ&oacute; được sử dụng để đ&aacute;nh gi&aacute; hiệu suất của m&ocirc; h&igrave;nh trong qu&aacute; tr&igrave;nh huấn luyện.</p> <p style="text-align: justify;">Bạn c&oacute; thể chia nhỏ dữ liệu theo c&aacute;ch thủ c&ocirc;ng v&agrave; chỉ định đối số validation_data hoặc bạn c&oacute; thể sử dụng đối số validation_split v&agrave; chỉ định phần trăm ph&acirc;n chia của tập dữ liệu đ&agrave;o tạo v&agrave; để API thực hiện ph&acirc;n t&aacute;ch cho bạn.</p> <p style="text-align: justify;">H&agrave;m fit sẽ trả về đối tượng&nbsp;<em>history</em>&nbsp;c&oacute; chứa dấu vết của c&aacute;c chỉ số hiệu suất được ghi lại ở cuối mỗi epoch đ&agrave;o tạo. Điều n&agrave;y bao gồm h&agrave;m mất m&aacute;t đ&atilde; chọn v&agrave; từng chỉ số được định cấu h&igrave;nh, chẳng hạn như độ ch&iacute;nh x&aacute;c, mất m&aacute;t v&agrave; chỉ số được t&iacute;nh to&aacute;n cho tập dữ liệu đ&agrave;o tạo v&agrave; x&aacute;c thực.</p> <p style="text-align: justify;">Đường cong học tập l&agrave; một biểu đồ của 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.</p> <p style="text-align: justify;">Ch&uacute;ng ta c&oacute; thể vẽ được đường cong học tập từ đối tượng history bằng thư viện&nbsp;<a href="https://matplotlib.org/">Matplotlib</a>&nbsp;.</p> <p style="text-align: justify;">V&iacute; dụ dưới đ&acirc;y ph&ugrave; hợp với 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. Ph&acirc;n chia tập x&aacute;c thực l&agrave; 30 phần trăm được sử dụng để đ&aacute;nh gi&aacute; m&ocirc; h&igrave;nh trong qu&aacute; tr&igrave;nh đ&agrave;o tạo v&agrave; cross-entropy loss tr&ecirc;n tập dữ liệu x&aacute;c thực v&agrave; đ&agrave;o tạo sau đ&oacute; được vẽ đồ thị bằng c&aacute;ch sử dụng một biểu đồ đường.</p> <pre class="language-python"><code># example of plotting learning curves from sklearn.datasets import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.optimizers import SGD 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(Dense(1, activation='sigmoid')) # compile the model sgd = SGD(learning_rate=0.001, momentum=0.8) model.compile(optimizer=sgd, loss='binary_crossentropy') # fit the model history = model.fit(X, y, epochs=100, batch_size=32, verbose=0, validation_split=0.3) # plot learning curves pyplot.title('Learning Curves') pyplot.xlabel('Epoch') pyplot.ylabel('Cross Entropy') pyplot.plot(history.history['loss'], label='train') pyplot.plot(history.history['val_loss'], label='val') pyplot.legend() pyplot.show()</code></pre> <p style="text-align: justify;">Chạy v&iacute; dụ fits với m&ocirc; h&igrave;nh tr&ecirc;n tập dữ liệu. Khi kết th&uacute;c qu&aacute; tr&igrave;nh chạy, đối tượng&nbsp;<em>history</em>&nbsp;được trả về v&agrave; được sử dụng l&agrave;m cơ sở để tạo biểu đồ đường.</p> <p style="text-align: justify;">Cross-entropy loss đối với tập dữ liệu đ&agrave;o tạo được truy cập th&ocirc;ng qua kh&oacute;a &lsquo;loss&rsquo; v&agrave; tổn thất tr&ecirc;n tập dữ liệu x&aacute;c thực được truy cập th&ocirc;ng qua kh&oacute;a &lsquo;val_loss&lsquo; tr&ecirc;n thuộc t&iacute;nh history của đối tượng history.</p> <p><img style="width: 629px; display: block; margin-left: auto; margin-right: auto;" src="http://tek4vn.2soft.top/public_files/50_1-png" alt="50_1" height="472" /></p> <p><a href="https://tek4.vn/cach-luu-va-load-lai-mot-mo-hinh-hoc-sau-keras-co-ban/" target="_blank" rel="noopener">B&agrave;i viết tiếp theo: C&aacute;ch lưu v&agrave; load m&ocirc; h&igrave;nh</a></p> <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>