Deep learning là nhánh của machine learning dùng mạng nơ-ron nhiều lớp để tự học biểu diễn (representation) từ dữ liệu thô. Bài này đi từ một neuron đơn giản, qua activation, lan truyền xuôi/ngược và tối ưu, tới các kiến trúc lớn: CNN cho ảnh, RNN/LSTM và Transformer cho chuỗi/ngôn ngữ, kèm ví dụ Keras và lời khuyên khi nào nên dùng DL thay vì ML cổ điển.
Đơn vị cơ bản là neuron (perceptron): nó nhận các đầu vào x₁..xₙ, nhân với weights w₁..wₙ, cộng thêm bias b, rồi cho qua một hàm kích hoạt phi tuyến:
z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b = wᵀx + b a = activation(z) # đầu ra của neuron
Một perceptron đơn lẻ chỉ vẽ được ranh giới tuyến tính (không giải nổi bài toán XOR). Xếp nhiều neuron thành lớp (layer), rồi chồng nhiều lớp lại thành Multi-Layer Perceptron (MLP) — với các hidden layer ở giữa — thì mạng có thể xấp xỉ gần như mọi hàm (universal approximation). Weights và bias chính là tham số học được; huấn luyện là quá trình điều chỉnh chúng để giảm loss.
Nếu không có phi tuyến, chồng bao nhiêu lớp tuyến tính lại vẫn chỉ ra một hàm tuyến tính. Activation phi tuyến là thứ cho mạng khả năng học quan hệ phức tạp.
| Hàm | Công thức | Đặc điểm |
|---|---|---|
| Sigmoid | σ(z) = 1/(1+e⁻ᶻ) | Ra (0,1); dùng ở output nhị phân. Bão hoà hai đầu → vanishing gradient. |
| Tanh | (eᶻ−e⁻ᶻ)/(eᶻ+e⁻ᶻ) | Ra (−1,1), zero-centered nên tốt hơn sigmoid ở hidden layer; vẫn bão hoà. |
| ReLU | max(0, z) | Mặc định cho hidden layer: rẻ, không bão hoà phía dương, hội tụ nhanh. Có thể "chết" (dying ReLU). |
| Leaky/ELU/GELU | vd max(0.01z, z) | Biến thể cho gradient nhỏ ở vùng âm, tránh neuron chết. GELU phổ biến trong Transformer. |
| Softmax | eᶻⁱ/Σeᶻʲ | Ở output đa lớp: biến logits thành phân phối xác suất tổng bằng 1. |
Forward pass: đưa dữ liệu qua mạng từ input tới output để ra dự đoán ŷ. Sau đó tính loss đo sai lệch giữa ŷ và nhãn thật:
Hồi quy : MSE = mean((y - ŷ)²) Phân loại : Cross-entropy = -Σ yᵢ log(ŷᵢ)
Backpropagation dùng quy tắc chuỗi (chain rule) để tính gradient của loss theo từng weight, lan truyền ngược từ output về input. Gradient descent rồi cập nhật weight ngược hướng gradient:
w ← w - η * ∂Loss/∂w # η (eta) = learning rate
| Optimizer | Ý tưởng |
|---|---|
| SGD | Cập nhật theo gradient của từng mini-batch; đơn giản, có thể dao động. |
| Momentum | Cộng dồn "quán tính" các bước trước để vượt vùng phẳng & giảm dao động. |
| Adam | Kết hợp momentum + learning rate thích nghi cho từng tham số; mặc định phổ biến nhất. |
Mạng sâu có hàng triệu tham số nên rất dễ overfit. Các kỹ thuật thường được dùng chồng lên nhau:
| Kỹ thuật | Cơ chế |
|---|---|
| Dropout | Ngẫu nhiên "tắt" một tỉ lệ neuron mỗi bước train (vd 0.5), buộc mạng không phụ thuộc vào neuron đơn lẻ. Tắt khi inference. |
| Batch Normalization | Chuẩn hoá đầu ra mỗi lớp theo từng batch → ổn định & tăng tốc học, giảm nhạy với khởi tạo, có chút tác dụng regularize. |
| Early stopping | Dừng huấn luyện khi loss trên validation ngừng cải thiện → tránh học quá đà. |
| Weight decay (L2) | Phạt weight lớn, giữ mô hình "mượt" hơn; tương đương ridge trong loss. |
| Data augmentation | Sinh thêm dữ liệu bằng biến đổi giữ nhãn (xoay/lật/crop ảnh, thêm nhiễu) → mạng bất biến hơn, khó overfit. |
Convolutional Neural Network (CNN) khai thác cấu trúc không gian của ảnh. Thay vì nối mọi pixel với mọi neuron, nó trượt các filter/kernel nhỏ (vd 3×3) trên ảnh:
Các kiến trúc tiêu biểu theo dòng thời gian:
| Kiến trúc | Đóng góp |
|---|---|
| LeNet-5 (1998) | CNN kinh điển nhận dạng chữ số viết tay. |
| AlexNet (2012) | Sâu hơn + ReLU + dropout + GPU; châm ngòi bùng nổ deep learning. |
| VGG (2014) | Rất sâu với toàn bộ filter 3×3 xếp chồng, đơn giản mà hiệu quả. |
| ResNet (2015) | Skip/residual connection cho phép huấn luyện mạng cực sâu (100+ lớp) mà không vanishing gradient. |
Recurrent Neural Network (RNN) xử lý dữ liệu tuần tự (văn bản, chuỗi thời gian) bằng cách duy trì một hidden state mang thông tin từ các bước trước. Nhưng RNN thuần gặp vanishing gradient khi chuỗi dài → quên phụ thuộc xa.
Transformer (2017, "Attention is All You Need") loại bỏ tính tuần tự của RNN, thay bằng cơ chế self-attention: mỗi token trực tiếp "chú ý" tới mọi token khác và cân trọng số mức liên quan. Ưu thế then chốt:
| Tiêu chí | RNN/LSTM | Transformer |
|---|---|---|
| Xử lý | Tuần tự, khó song song | Song song toàn chuỗi → train nhanh trên GPU |
| Phụ thuộc xa | Khó với chuỗi rất dài | Attention nối trực tiếp mọi vị trí |
| Ứng dụng | Dần bị thay thế | Nền tảng của BERT, GPT, và hầu hết LLM hiện đại |
Embedding biến đối tượng rời rạc (từ, sản phẩm, user) thành vector số thực dày đặc (vd 128–768 chiều), sao cho các đối tượng tương tự nằm gần nhau trong không gian. Thay cho one-hot thưa và không mang ngữ nghĩa, embedding học được quan hệ: kinh điển vua − đàn ông + phụ nữ ≈ hoàng hậu. Word2Vec/GloVe là embedding tĩnh; các mô hình Transformer cho embedding theo ngữ cảnh. Chúng là đầu vào cho hầu hết bài toán NLP và cả hệ gợi ý.
# Lớp embedding trong Keras: vocab 10000 -> vector 128 chiều from tensorflow.keras.layers import Embedding emb = Embedding(input_dim=10000, output_dim=128)
| Framework | Đặc điểm |
|---|---|
| PyTorch | Định hình bằng đồ thị động (define-by-run), Pythonic, dễ debug; thống trị nghiên cứu và ngày càng phổ biến trong production. |
| TensorFlow / Keras | Keras là API cấp cao dễ học; hệ sinh thái triển khai mạnh (TF Serving, TFLite, TF.js). Tốt cho người mới và production quy mô lớn. |
# MLP phân loại nhị phân với Keras Sequential from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout model = Sequential([ Dense(64, activation="relu", input_shape=(n_features,)), Dropout(0.3), Dense(32, activation="relu"), Dense(1, activation="sigmoid") # xác suất lớp dương ]) model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"]) from tensorflow.keras.callbacks import EarlyStopping es = EarlyStopping(monitor="val_loss", patience=5, restore_best_weights=True) model.fit(X_train, y_train, validation_split=0.2, epochs=100, batch_size=32, callbacks=[es])
| Tiêu chí | Deep Learning | ML cổ điển |
|---|---|---|
| Loại dữ liệu | Ảnh, text, audio, video (unstructured) | Tabular / có cấu trúc |
| Kích thước dữ liệu | Rất lớn (chục nghìn+ mẫu) | Nhỏ đến vừa vẫn tốt |
| Feature engineering | Tự học đặc trưng từ dữ liệu thô | Cần con người thiết kế feature |
| Tài nguyên | Cần GPU, huấn luyện lâu | Chạy CPU, nhanh, rẻ |
| Giải thích được | Khó (hộp đen) | Dễ hơn (cây, hệ số hồi quy) |