Trong những năm gần đây, deep learning đã trở thành một trong những công nghệ cốt lõi thúc đẩy sự phát triển của trí tuệ nhân tạo. Từ nhận diện hình ảnh, xử lý ngôn ngữ tự nhiên đến xe tự lái, các mô hình deep learning đóng vai trò chủ đạo trong việc học và khai thác dữ liệu phi cấu trúc. Tuy nhiên, không phải ai cũng hiểu rõ sự khác biệt giữa các loại mô hình phổ biến trong lĩnh vực này.
Nếu bạn quan tâm đến việc áp dụng deep learning vào bài toán cụ thể, hãy bắt đầu từ Tạo hệ thống nhận diện khuôn mặt thời gian thực bằng OpenCV, nơi mô hình CNN được triển khai trực tiếp. Hoặc nếu bạn muốn xử lý bài toán phân loại hình ảnh cơ bản hơn, có thể tham khảo Hướng dẫn sử dụng YOLOv8 để nhận diện đối tượng. Còn với bài toán đếm số lượng đối tượng trong ảnh, bạn sẽ thấy rõ sự khác biệt giữa segmentation và classification trong bài Tự động đếm số người trong ảnh bằng kỹ thuật segmentation.
Mô hình mạng nơ-ron truyền thẳng (Feedforward Neural Network – FNN)
Mạng nơ-ron truyền thẳng là hình thức cơ bản nhất trong họ hàng nhà deep learning. Dữ liệu di chuyển từ đầu vào qua các lớp ẩn đến đầu ra mà không có vòng lặp nào. Đây là nền tảng của các bài toán phân loại, hồi quy đơn giản.
FNN có cấu trúc tuyến tính, rất phù hợp để làm bước khởi đầu cho người mới tìm hiểu về mạng nơ-ron. Mặc dù hiệu quả còn hạn chế với dữ liệu phức tạp như hình ảnh hay chuỗi thời gian, nhưng nó giúp bạn hiểu cốt lõi của forward propagation và backpropagation.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential([
Dense(64, activation='relu', input_shape=(input_dim,)),
Dense(32, activation='relu'),
Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
Mạng tích chập (Convolutional Neural Network – CNN)
CNN là xương sống của hầu hết hệ thống thị giác máy tính hiện đại. Chúng đặc biệt hiệu quả khi xử lý dữ liệu dạng lưới như hình ảnh nhờ khả năng tự động trích xuất đặc trưng qua các lớp convolution và pooling.
Điểm mạnh của CNN là giảm số lượng tham số so với FNN truyền thống trong các tác vụ xử lý ảnh. Nó tận dụng tính cục bộ và tính bất biến dịch chuyển, giúp mạng học hiệu quả hơn và tổng quát tốt hơn.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
MaxPooling2D(pool_size=(2, 2)),
Flatten(),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Mạng hồi tiếp (Recurrent Neural Network – RNN)
RNN được thiết kế để xử lý dữ liệu có tính tuần tự như văn bản, âm thanh, hay chuỗi thời gian. Khác với CNN hay FNN, RNN lưu lại trạng thái từ bước trước để đưa ra dự đoán hiện tại, giúp nó ghi nhớ bối cảnh.
Tuy nhiên, RNN truyền thống dễ gặp vấn đề về gradient vanishing. Do đó, các biến thể như LSTM (Long Short-Term Memory) hay GRU (Gated Recurrent Unit) thường được sử dụng để cải thiện khả năng học phụ thuộc dài hạn.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(128, input_shape=(timesteps, features)),
Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
Transformer – nền tảng của NLP hiện đại
Transformer là bước ngoặt lớn trong xử lý ngôn ngữ tự nhiên (NLP). Không như RNN, Transformer xử lý toàn bộ chuỗi đầu vào song song và dùng cơ chế attention để học mối quan hệ giữa các phần tử. Nó chính là nền tảng của các mô hình nổi tiếng như BERT, GPT, T5…
Cơ chế self-attention giúp Transformer học các phụ thuộc dài hạn một cách hiệu quả mà không gặp các vấn đề gradient như RNN. Hiện tại, nó cũng đang được ứng dụng trong thị giác máy tính (Vision Transformer – ViT).
Dưới đây là ví dụ đơn giản sử dụng mô hình Transformer từ thư viện transformers của Hugging Face:
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
result = classifier("Deep learning models are changing the world.")
print(result)
Autoencoder – học biểu diễn dữ liệu
Autoencoder là mô hình học không giám sát nhằm nén và giải nén dữ liệu đầu vào, giúp trích xuất các đặc trưng ẩn (latent features). Mô hình gồm hai phần: encoder (nén) và decoder (giải nén), thường dùng trong khử nhiễu, phát hiện bất thường, hoặc nén ảnh.
Khác với các mô hình phân loại, Autoencoder không dự đoán nhãn mà học cách tái tạo lại đầu vào. Nếu độ sai khác lớn giữa đầu vào và đầu ra, có thể đó là một dị thường.

