Skip to content

Introducing Optimization

Chương này là một bước ngoặt quan trọng trong cuốn sách. Sau khi đã xây dựng được một mạng neural hoàn chỉnh có khả năng:

  1. Lan truyền tiến (Forward Pass): Nhận đầu vào và tính toán ra đầu ra.
  2. Tính toán hàm mất mát (Loss Calculation): Đo lường mức độ sai sót của mạng.

...thì câu hỏi lớn tiếp theo là: "Làm thế nào để mạng tự học hỏi và cải thiện?". Chương 6 trả lời câu hỏi này bằng cách giới thiệu khái niệm Tối ưu hóa (Optimization) – quá trình điều chỉnh các tham số (trọng số và bias) để giảm thiểu hàm mất mát.

Mục đích của chương này không phải là đưa ra ngay phương pháp tốt nhất, mà là để người đọc hiểu được bản chất của vấn đề bằng cách thử nghiệm hai phương pháp "ngây thơ" (naive) và nhận ra những hạn chế của chúng.


Phần 1: Phân tích Khái niệm Cốt lõi - Tối ưu hóa (Optimization)

1. Giải thích dễ hiểu

Tối ưu hóa trong machine learning là hành trình tìm ra bộ tham số (trọng số và bias) "tốt nhất" cho mô hình. "Tốt nhất" ở đây có nghĩa là bộ tham số làm cho hàm mất mát (loss) có giá trị nhỏ nhất có thể.

2. Liên hệ trừu tượng: Hành trình tìm đáy thung lũng

Hãy tưởng tượng:

  • Bề mặt Trái ĐấtKhông gian Tham số (Parameter Space): Mỗi điểm trên bề mặt (gồm kinh độ, vĩ độ) tương ứng với một bộ trọng số và bias duy nhất.
  • Độ cao tại mỗi điểmGiá trị hàm mất mát (Loss): Nơi có độ cao lớn là nơi mô hình dự đoán rất tệ (loss cao). Nơi có độ cao thấp là nơi mô hình dự đoán tốt (loss thấp).
  • Mục tiêu của chúng ta là tìm ra điểm có độ cao thấp nhất trên toàn bản đồ (đáy vực sâu nhất) – đó chính là Cực tiểu toàn cục (Global Minimum).

Tối ưu hóa chính là quá trình tìm đường đi xuống điểm thấp nhất trong thung lũng này.


Phần 2: Phân tích 2 Phương pháp Tối ưu hóa "Ngây thơ" trong Sách

Sách tiếp cận vấn đề bằng cách đề xuất hai chiến lược rất trực quan nhưng không hiệu quả.

  • Cách hoạt động:

    1. Tạo ra một bộ trọng số và bias hoàn toàn ngẫu nhiên.
    2. Dùng bộ tham số này để tính toán loss trên toàn bộ dữ liệu.
    3. Nếu loss này thấp hơn loss thấp nhất từng ghi nhận, lưu lại bộ tham số này.
    4. Lặp lại từ bước 1 rất nhiều lần.
  • Liên hệ trừu tượng: "Thả dù mù quáng" Hãy tưởng tượng bạn đang ở trên máy bay và muốn tìm điểm thấp nhất trong một dãy núi rộng lớn bên dưới. Phương pháp này giống như việc bạn nhảy dù ngẫu nhiên xuống một vị trí bất kỳ, đo độ cao, rồi lại lên máy bay và nhảy xuống một vị trí ngẫu nhiên khác. Sau hàng nghìn lần nhảy, bạn hy vọng một trong những lần đó sẽ rơi trúng đáy thung lũng.

  • Kết quả trong sách:

    • Cực kỳ không hiệu quả. Sau 1 tỷ lần lặp, loss giảm không đáng kể và độ chính xác (accuracy) gần như không đổi.
    • Lý do: Không gian tham số của một mạng neural (kể cả mạng nhỏ) là cực kỳ lớn. Việc "thử và sai" một cách mù quáng có xác suất thành công vô cùng nhỏ, giống như mò kim đáy bể.
  • Cách hoạt động:

    1. Bắt đầu với bộ trọng số và bias tốt nhất đã tìm thấy (best_weights).
    2. Tạo ra một bộ trọng số/bias mới bằng cách cộng thêm một giá trị ngẫu nhiên nhỏ vào bộ best_weights.
    3. Tính toán loss với bộ tham số mới này.
    4. Nếu loss mới thấp hơn: Cập nhật best_weights bằng bộ tham số mới.
    5. Nếu loss mới cao hơn: Hủy bỏ thay đổi, quay trở lại (revert) bộ best_weights cũ.
    6. Lặp lại từ bước 2.
  • Liên hệ trừu tượng: "Người leo núi bịt mắt"

    Bây giờ, thay vì nhảy dù, bạn đã được thả xuống một sườn đồi. Bạn bị bịt mắt và không biết hướng nào là đi xuống. Bạn làm như sau: 1. Bước thử một bước nhỏ theo một hướng ngẫu nhiên. 2. Nếu bạn cảm thấy mình đang đi xuống (độ cao giảm), bạn sẽ ở lại vị trí mới. 3. Nếu bạn cảm thấy mình đang đi lên hoặc đi ngang (độ cao tăng/không đổi), bạn sẽ quay lại vị trí cũ và thử bước theo một hướng ngẫu nhiên khác.

  • Kết quả trong sách:

    • Với dữ liệu đơn giản (vertical_data): Hoạt động tốt hơn hẳn! Loss giảm đáng kể và accuracy đạt tới ~93%.
    • Với dữ liệu phức tạp (spiral_data): Gần như thất bại hoàn toàn. Nó bị mắc kẹt ở Cực tiểu cục bộ (Local Minimum).

Phần 3: Sơ đồ minh họa các phép tính toán (ASCII Art)

Sơ đồ 1: Luồng tính toán chung (Forward Pass & Loss)
Text Only
+----------------+
|    Input X     |
+----------------+
        |
        V
+----------------+
|    Dense 1     |
|   (w1, b1)     |
+----------------+
        |
        V
+----------------+
| Activation ReLU|
+----------------+
        |
        V
+----------------+
|    Dense 2     |
|   (w2, b2)     |
+----------------+
        |
        V
+----------------+
|Activation Softmax|
+----------------+
        |
        V
+----------------+     +----------------+
|   Predictions  |     |   True Labels  |
|     (y_pred)   |     |      (y)       |
+----------------+     +----------------+
        |                    |
        +--------+   +-------+
                 |   |
                 V   V
          +----------------+
          |  Loss Function |
          | (CrossEntropy) |
          +----------------+
                 |
                 V
          +----------------+
          |   Final Loss   |
          +----------------+
Sơ đồ 2: Logic của Phương pháp 1 (Tìm kiếm Hoàn toàn Ngẫu nhiên)
Text Only
         +----------+
         |  Start   |
         +----------+
              |
              V
+-------------+------------------+
| khoi_tao lowest_loss = 9999999 |
+--------------------------------+
              |
              |   +--------------------------------------+
              +-->|          Loop (10000 lan)            |
                  +--------------------------------------+
                                |
                                V
                  +--------------------------------------+
                  |   Tao bo trong so/bias HOAN TOAN MOI  |
                  +--------------------------------------+
                                |
                                V
                  +--------------------------------------+
                  | Thuc hien Forward Pass & tinh Loss   |
                  +--------------------------------------+
                                |
                                V
                  +--------------------------------------+
                  |      loss < lowest_loss ?            |
                  +------------------+-------------------+
                                     |
                       +-------------+-------------+
                       |                           |
                       V (Yes)                     V (No)
        +----------------------------+
        | lowest_loss = loss         |         (Khong lam gi)
        | Luu lai bo trong so/bias   |
        +----------------------------+
                       |                           |
                       +-------------+-------------+
                                     |
                                     | (Quay lai dau Loop)
                                     +----------------------+
                                                            |
(Sau khi ket thuc Loop)                                     |
              |                                             |
              V                                             ^
         +----------+                                       |
         |   End    |<--------------------------------------+
         +----------+
Sơ đồ 3: Logic của Phương pháp 2 (Tinh chỉnh Ngẫu nhiên)
Text Only
          +----------+
          |  Start   |
          +----------+
               |
               V
+--------------+-------------------+
| khoi_tao best_weights/biases      |
| khoi_tao lowest_loss = 9999999    |
+-----------------------------------+
               |
               |   +-----------------------------------------+
               +-->|             Loop (10000 lan)            |
                   +-----------------------------------------+
                                 |
                                 V
                   +-----------------------------------------+
                   | weights += gia_tri_ngau_nhien_nho       |
                   | biases  += gia_tri_ngau_nhien_nho       |
                   +-----------------------------------------+
                                 |
                                 V
                   +-----------------------------------------+
                   |  Thuc hien Forward Pass & tinh Loss     |
                   +-----------------------------------------+
                                 |
                                 V
                   +-----------------------------------------+
                   |         loss < lowest_loss ?            |
                   +-------------------+---------------------+
                                       |
                         +-------------+-------------+
                         |                           |
                         V (Yes)                     V (No)
        +----------------------------+  +-----------------------------------+
        | lowest_loss = loss         |  | Hoan tac:                         |
        | best_weights = weights.copy()|  | weights = best_weights.copy()   |
        | best_biases = biases.copy()  |  | biases = best_biases.copy()     |
        +----------------------------+  +-----------------------------------+
                         |                           |
                         +-------------+-------------+
                                       |
                                       | (Quay lai dau Loop)
                                       +-----------------------+
                                                               |
(Sau khi ket thuc Loop)                                        |
               |                                               |
               V                                               ^
          +----------+                                         |
          |   End    |<----------------------------------------+
          +----------+

Phần 4: Kết luận và Bài học Rút ra

Chương 6 đóng một vai trò sư phạm xuất sắc. Bằng cách dẫn dắt người đọc qua các phương pháp "ngây thơ", nó làm nổi bật những thách thức cốt lõi của việc huấn luyện mạng neural:

  1. Tính phi hiệu quả của tìm kiếm mù quáng: Không gian tham số quá lớn để có thể tìm kiếm ngẫu nhiên.
  2. Vấn đề Cực tiểu cục bộ (Local Minima): Các phương pháp tìm kiếm cục bộ có thể dễ dàng bị "mắc kẹt", ngăn cản mô hình đạt đến hiệu suất tối ưu.

Chương này tạo tiền đề hoàn hảo cho các chương tiếp theo, nơi một phương pháp "thông minh" hơn sẽ được giới thiệu. Thay vì bước đi ngẫu nhiên, chúng ta cần một cách để xác định hướng đi nào sẽ làm giảm loss nhanh nhất. Hướng đi đó chính là gradient, và phương pháp sử dụng nó được gọi là Gradient Descent – tiêu chuẩn vàng trong tối ưu hóa mạng neural hiện đại.

Trích dẫn tham khảo khái niệm:

  • Optimization Algorithms: Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. (Chapter 8).
  • Local Minima: Khái niệm cơ bản trong các lĩnh vực tối ưu hóa toán học và khoa học máy tính.