Mục lục[Ẩn giấu][Chỉ]
Trong những năm gần đây, mạng lưới thần kinh đã trở nên phổ biến vì chúng tỏ ra cực kỳ hiệu quả trong nhiều nhiệm vụ.
Chúng đã được chứng minh là một lựa chọn tuyệt vời để nhận dạng hình ảnh và âm thanh, xử lý ngôn ngữ tự nhiên và thậm chí chơi các trò chơi phức tạp như cờ vây và cờ vua.
Trong bài đăng này, tôi sẽ hướng dẫn bạn toàn bộ quá trình đào tạo một mạng lưới thần kinh. Tôi sẽ đề cập và giải thích tất cả các bước để đào tạo một mạng lưới thần kinh.
Trong khi tôi sẽ xem qua các bước, tôi muốn thêm một ví dụ đơn giản để đảm bảo rằng cũng có một ví dụ thực tế.
Vì vậy, hãy đi cùng và hãy tìm hiểu cách xử lý mạng lưới thần kinh
Hãy bắt đầu đơn giản và hỏi những gì là mạng thần kinh ở nơi đầu tiên.
Mạng lưới thần kinh chính xác là gì?
Mạng nơ-ron là phần mềm máy tính mô phỏng hoạt động của bộ não con người. Họ có thể học hỏi từ khối lượng dữ liệu khổng lồ và phát hiện các mẫu mà mọi người có thể khó phát hiện.
Mạng lưới thần kinh đã trở nên phổ biến trong những năm gần đây vì tính linh hoạt của chúng trong các nhiệm vụ như nhận dạng hình ảnh và âm thanh, xử lý ngôn ngữ tự nhiên và mô hình dự đoán.
Nhìn chung, mạng lưới thần kinh là một công cụ mạnh mẽ cho nhiều ứng dụng và có cơ hội thay đổi cách chúng ta tiếp cận nhiều loại công việc.
Tại sao chúng ta nên biết về họ?
Hiểu biết về mạng lưới thần kinh là rất quan trọng vì chúng đã dẫn đến những khám phá trong nhiều lĩnh vực khác nhau, bao gồm thị giác máy tính, nhận dạng giọng nói và xử lý ngôn ngữ tự nhiên.
Ví dụ, mạng lưới thần kinh là trung tâm của những phát triển gần đây trong ô tô tự lái, dịch vụ dịch thuật tự động và thậm chí cả chẩn đoán y tế.
Hiểu cách mạng thần kinh hoạt động và cách thiết kế chúng giúp chúng tôi xây dựng các ứng dụng mới và sáng tạo. Và, có lẽ, nó có thể dẫn đến những khám phá lớn hơn nữa trong tương lai.
Lưu ý về Hướng dẫn
Như tôi đã nói ở trên, tôi xin giải thích các bước huấn luyện mạng nơ-ron bằng cách đưa ra một ví dụ. Để làm điều này, chúng ta nên nói về bộ dữ liệu MNIST. Nó là một lựa chọn phổ biến cho những người mới bắt đầu muốn bắt đầu với mạng lưới thần kinh.
MNIST là từ viết tắt của Modified National Institute of Standards and Technology. Nó là một bộ dữ liệu chữ số viết tay thường được sử dụng để đào tạo và thử nghiệm các mô hình máy học, đặc biệt là các mạng thần kinh.
Bộ sưu tập chứa 70,000 bức ảnh thang độ xám của các chữ số viết tay từ 0 đến 9.
Bộ dữ liệu MNIST là một tiêu chuẩn phổ biến cho phân loại hình ảnh nhiệm vụ. Nó thường được sử dụng cho việc dạy và học vì nó nhỏ gọn và dễ xử lý, đồng thời đặt ra một thách thức khó trả lời cho các thuật toán học máy.
Bộ dữ liệu MNIST được hỗ trợ bởi một số khung và thư viện máy học, bao gồm TensorFlow, Keras và PyTorch.
Bây giờ chúng ta đã biết về tập dữ liệu MNIST, hãy bắt đầu với các bước huấn luyện mạng thần kinh.
Các bước cơ bản để đào tạo mạng lưới thần kinh
Nhập các thư viện cần thiết
Khi lần đầu tiên bắt đầu huấn luyện mạng thần kinh, điều quan trọng là phải có các công cụ cần thiết để thiết kế và huấn luyện mô hình. Bước đầu tiên trong việc tạo mạng thần kinh là nhập các thư viện cần thiết như TensorFlow, Keras và NumPy.
Các thư viện này đóng vai trò là các khối xây dựng cho sự phát triển của mạng lưới thần kinh và cung cấp các khả năng quan trọng. Sự kết hợp của các thư viện này cho phép tạo ra các thiết kế mạng thần kinh phức tạp và đào tạo nhanh.
Để bắt đầu ví dụ của chúng tôi; chúng tôi sẽ nhập các thư viện cần thiết, bao gồm TensorFlow, Keras và NumPy. TensorFlow là một khung máy học mã nguồn mở, Keras là API mạng thần kinh cấp cao và NumPy là một thư viện Python tính toán số.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Tải tập dữ liệu
Tập dữ liệu bây giờ phải được tải. Tập dữ liệu là tập hợp dữ liệu mà mạng thần kinh sẽ được đào tạo. Đây có thể là bất kỳ loại dữ liệu nào, bao gồm ảnh, âm thanh và văn bản.
Điều quan trọng là phải chia tập dữ liệu thành hai phần: một phần để huấn luyện mạng thần kinh và phần còn lại để đánh giá tính đúng đắn của mô hình được huấn luyện. Một số thư viện, bao gồm TensorFlow, Keras và PyTorch, có thể được sử dụng để nhập tập dữ liệu.
Ví dụ của chúng tôi, chúng tôi cũng sử dụng Keras để tải tập dữ liệu MNIST. Có 60,000 ảnh đào tạo và 10,000 ảnh thử nghiệm trong bộ dữ liệu.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Tiền xử lý dữ liệu
Tiền xử lý dữ liệu là một giai đoạn quan trọng trong quá trình huấn luyện mạng nơ-ron. Nó đòi hỏi phải chuẩn bị và làm sạch dữ liệu trước khi đưa vào mạng thần kinh.
Chia tỷ lệ giá trị pixel, chuẩn hóa dữ liệu và chuyển đổi nhãn thành mã hóa một lần nóng là những ví dụ về quy trình tiền xử lý. Các quy trình này hỗ trợ mạng lưới thần kinh học tập hiệu quả và chính xác hơn.
Tiền xử lý dữ liệu cũng có thể giúp giảm thiểu việc trang bị quá mức và cải thiện hiệu suất của mạng thần kinh.
Bạn phải xử lý trước dữ liệu trước khi huấn luyện mạng thần kinh. Điều này bao gồm thay đổi nhãn thành mã hóa một lần nóng và chia tỷ lệ các giá trị pixel nằm trong khoảng từ 0 đến 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Xác định mô hình
Quá trình xác định mô hình mạng nơ-ron liên quan đến việc thiết lập kiến trúc của nó, chẳng hạn như số lớp, số nơ-ron trên mỗi lớp, chức năng kích hoạt và loại mạng (chuyển tiếp, hồi quy hoặc tích chập).
Thiết kế mạng thần kinh mà bạn sử dụng được xác định bởi loại vấn đề mà bạn đang cố gắng giải quyết. Một thiết kế mạng thần kinh được xác định rõ ràng có thể hỗ trợ việc học mạng thần kinh bằng cách làm cho nó hiệu quả và chính xác hơn.
Đã đến lúc mô tả mô hình mạng thần kinh vào thời điểm này. Sử dụng một mô hình đơn giản với hai lớp ẩn, mỗi lớp có 128 nơ-ron và một lớp đầu ra softmax, có 10 nơ-ron, cho ví dụ này.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Biên dịch mô hình
Hàm mất mát, trình tối ưu hóa và số liệu phải được chỉ định trong quá trình biên dịch mô hình mạng thần kinh. Khả năng dự đoán chính xác đầu ra của mạng thần kinh được đánh giá bằng hàm mất mát.
Để tăng độ chính xác của mạng thần kinh trong quá trình đào tạo, trình tối ưu hóa sẽ sửa đổi trọng số của nó. Hiệu quả của mạng lưới thần kinh trong quá trình đào tạo được đánh giá bằng cách sử dụng các số liệu. Mô hình phải được tạo trước khi mạng lưới thần kinh có thể được huấn luyện.
Trong ví dụ của chúng ta, ngay bây giờ chúng ta phải xây dựng mô hình.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Đào tạo người mẫu
Truyền tập dữ liệu đã chuẩn bị qua mạng thần kinh trong khi sửa đổi trọng số của mạng để giảm thiểu hàm mất mát được gọi là huấn luyện mạng thần kinh.
Bộ dữ liệu xác thực được sử dụng để kiểm tra mạng thần kinh trong quá trình đào tạo nhằm theo dõi hiệu quả của nó và ngăn chặn trang bị quá mức. Quá trình đào tạo có thể mất một khoảng thời gian, do đó, điều quan trọng là phải đảm bảo mạng lưới thần kinh được đào tạo phù hợp để tránh trang bị thiếu.
Sử dụng dữ liệu đào tạo, bây giờ chúng ta có thể đào tạo mô hình. Để làm điều này, chúng ta phải xác định kích thước lô (số lượng mẫu được xử lý trước khi mô hình được cập nhật) và số lượng kỷ nguyên (số lần lặp lại trên tập dữ liệu hoàn chỉnh).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Đánh giá mô hình
Kiểm tra hiệu suất của mạng thần kinh trên tập dữ liệu thử nghiệm là quá trình đánh giá nó. Trong giai đoạn này, mạng thần kinh được đào tạo được sử dụng để xử lý tập dữ liệu thử nghiệm và độ chính xác được đánh giá.
Mức độ hiệu quả của mạng thần kinh có thể dự báo kết quả phù hợp từ dữ liệu hoàn toàn mới, chưa được thử nghiệm là thước đo độ chính xác của nó. Việc phân tích mô hình có thể giúp xác định mức độ hoạt động của mạng thần kinh và cũng đề xuất các cách để làm cho nó tốt hơn nữa.
Cuối cùng, chúng tôi có thể đánh giá hiệu suất của mô hình bằng cách sử dụng dữ liệu thử nghiệm sau khi đào tạo.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Đó là tất cả! Chúng tôi đã đào tạo một mạng thần kinh để phát hiện các chữ số trong bộ dữ liệu MNIST.
Từ việc chuẩn bị dữ liệu đến đánh giá hiệu quả của mô hình được đào tạo, việc đào tạo mạng lưới thần kinh liên quan đến một số quy trình. Những hướng dẫn này hỗ trợ người mới trong việc xây dựng và huấn luyện mạng lưới thần kinh một cách hiệu quả.
Những người mới bắt đầu muốn sử dụng mạng thần kinh để giải quyết các vấn đề khác nhau có thể làm như vậy bằng cách làm theo các hướng dẫn sau.
Hình dung ví dụ
Hãy thử hình dung những gì chúng ta đã làm với ví dụ này để hiểu rõ hơn.
Gói Matplotlib được sử dụng trong đoạn mã này để vẽ biểu đồ lựa chọn ảnh ngẫu nhiên từ tập dữ liệu huấn luyện. Đầu tiên, chúng tôi nhập mô-đun “pyplot” của Matplotlib và đặt bí danh cho nó là “plt”. Sau đó, với tổng kích thước là 10 x 10 inch, chúng tôi tạo một hình có 5 hàng và 5 cột của các ô con.
Sau đó, chúng tôi sử dụng vòng lặp for để lặp lại các ô con, hiển thị ảnh từ tập dữ liệu huấn luyện trên mỗi ô con. Để hiển thị ảnh, chức năng “imshow” được sử dụng, với tùy chọn “cmap” được đặt thành 'màu xám' để hiển thị ảnh ở thang độ xám. Tiêu đề của mỗi ô con cũng được đặt thành nhãn của hình ảnh được liên kết trong bộ sưu tập.
Cuối cùng, chúng ta sử dụng chức năng “show” để hiển thị các hình vẽ trong hình. Chức năng này cho phép chúng tôi đánh giá trực quan một mẫu ảnh từ tập dữ liệu, có thể giúp chúng tôi hiểu dữ liệu và xác định bất kỳ mối lo ngại nào có thể xảy ra.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Các mô hình mạng thần kinh quan trọng
- Mạng thần kinh chuyển tiếp (FFNN): Một loại mạng thần kinh đơn giản trong đó thông tin chỉ truyền theo một chiều, từ lớp đầu vào đến lớp đầu ra thông qua một hoặc nhiều lớp ẩn.
- Mạng thần kinh tích chập (CNN): Một mạng thần kinh thường được sử dụng trong phát hiện và xử lý hình ảnh. CNN nhằm mục đích nhận dạng và trích xuất các tính năng từ hình ảnh một cách tự động.
- Mạng thần kinh tái phát (RNN): Một mạng thần kinh thường được sử dụng trong phát hiện và xử lý hình ảnh. CNN nhằm mục đích nhận dạng và trích xuất các tính năng từ hình ảnh một cách tự động.
- Mạng bộ nhớ ngắn hạn dài (LSTM): Một dạng RNN được tạo để khắc phục vấn đề biến mất độ dốc trong RNN tiêu chuẩn. Các phụ thuộc dài hạn trong dữ liệu tuần tự có thể được ghi lại tốt hơn bằng LSTM.
- Bộ mã hóa tự động: Mạng thần kinh học tập không giám sát trong đó mạng được dạy để tái tạo dữ liệu đầu vào ở lớp đầu ra của nó. Nén dữ liệu, phát hiện bất thường và khử nhiễu hình ảnh đều có thể được thực hiện bằng bộ mã hóa tự động.
- Mạng đối thủ chung (GAN): Mạng thần kinh tổng quát là một dạng mạng thần kinh được dạy để tạo ra dữ liệu mới có thể so sánh với tập dữ liệu huấn luyện. GAN được tạo thành từ hai mạng: mạng trình tạo tạo dữ liệu mới và mạng phân biệt để đánh giá chất lượng của dữ liệu được tạo.
Tóm lại, Bước tiếp theo của bạn nên là gì?
Khám phá một số tài nguyên và khóa học trực tuyến để tìm hiểu thêm về cách đào tạo mạng lưới thần kinh. Làm việc trên các dự án hoặc ví dụ là một phương pháp để hiểu rõ hơn về mạng lưới thần kinh.
Bắt đầu với các ví dụ đơn giản như bài toán phân loại nhị phân hoặc nhiệm vụ phân loại ảnh, sau đó chuyển sang các nhiệm vụ khó hơn như xử lý ngôn ngữ tự nhiên hoặc học tăng cường.
Làm việc trong các dự án giúp bạn có được kinh nghiệm thực tế và cải thiện kỹ năng đào tạo mạng lưới thần kinh của mình.
Bạn cũng có thể tham gia các nhóm và diễn đàn về máy học và mạng lưới thần kinh trực tuyến để tương tác với những người học và chuyên gia khác, chia sẻ công việc của bạn cũng như nhận nhận xét và trợ giúp.
LSRS MONRAD-KROHN
⁶ĵMuốn xem chương trình python để giảm thiểu lỗi. Các nút lựa chọn đặc biệt để thay đổi trọng lượng cho lớp tiếp theo