01

Deep Learning (học sâu) · Bước 1/8 · 10 phút

Hiểu mạng nơ-ron bằng trực giác

Bạn giải thích được nơ-ron, layer, loss, gradient descent và backpropagation bằng lời đơn giản.

Một nơ-ron là một phép cộng nhỏ

Một nơ-ron nhân tạo nhận vài con số, nhân mỗi số với một trọng số (weight), cộng tất cả lại, cộng thêm một độ lệch (bias), rồi cho kết quả đi qua một hàm đơn giản gọi là hàm kích hoạt (activation). Chỉ vậy thôi. Một nơ-ron đơn lẻ chỉ vẽ được một đường thẳng chia hai nhóm.

Hàm kích hoạt rất quan trọng. Thiếu nó, xếp bao nhiêu nơ-ron chồng lên nhau cũng chỉ ra một đường thẳng. Lựa chọn phổ biến là ReLU: giữ nguyên số nếu dương, ngược lại trả về 0. Chỗ gấp khúc nhỏ ấy giúp nhiều nơ-ron cùng nhau vẽ được những đường biên cong, phức tạp.

Các layer biến cái đơn giản thành phong phú

Một layer (lớp) là một hàng nơ-ron cùng đọc chung một đầu vào. Mạng nơ-ron là các layer nối tiếp nhau: đầu ra của layer này là đầu vào của layer sau. "Sâu" trong học sâu chỉ có nghĩa là nhiều layer.

Các layer đầu học những mẫu đơn giản. Các layer sau ghép chúng thành mẫu phức tạp hơn. Trong model nhận diện ảnh, layer đầu có thể phản ứng với các cạnh, layer giữa với mắt hay bánh xe, layer cuối với khuôn mặt hay ô tô. Không ai lập trình điều này. Nó tự hình thành qua huấn luyện.

Loss cho mạng biết nó sai bao nhiêu

Huấn luyện bắt đầu với trọng số ngẫu nhiên, nên những dự đoán đầu tiên vô nghĩa. Hàm mất mát (loss function) biến mỗi lỗi thành một con số: cao khi dự đoán lệch xa, thấp khi gần đúng. Với bài toán phân loại, thường dùng cross-entropy. Với bài toán dự đoán một con số, dùng sai số bình phương trung bình (MSE).

Mục tiêu của huấn luyện là tìm bộ trọng số khiến loss trung bình nhỏ trên những ví dụ mạng chưa từng thấy.

Gradient descent và backpropagation

Hãy hình dung loss là một vùng đồi núi, còn bộ trọng số là vị trí của bạn. Gradient chỉ hướng lên dốc. Gradient descent (hạ gradient) bước một bước nhỏ theo hướng ngược lại, lặp đi lặp lại. Độ dài bước là learning rate (tốc độ học): quá lớn thì vượt quá đáy, quá nhỏ thì đi rất chậm.

Backpropagation (lan truyền ngược) là cách mạng tính gradient cho hàng triệu trọng số cùng lúc. Nó đi ngược từ loss, qua từng layer, dùng quy tắc đạo hàm hàm hợp (chain rule). Các framework như PyTorch tự làm việc này cho bạn. Nhưng bạn vẫn cần trực giác để gỡ lỗi.

Thử ngay

Huấn luyện một mạng tí hon ngay trên trình duyệt

  1. 1.Mở TensorFlow Playground tại playground.tensorflow.org.
  2. 2.Chọn bộ dữ liệu xoắn ốc (spiral). Bắt đầu với một hidden layer gồm hai nơ-ron rồi bấm chạy. Xem nó thất bại.
  3. 3.Thêm layer và nơ-ron cho đến khi đường biên ôm được vòng xoắn. Sau đó tăng learning rate lên 3 và xem quá trình huấn luyện mất ổn định.
  4. 4.Đổi activation từ ReLU sang Linear. Bạn sẽ thấy thêm bao nhiêu layer cũng không giải được hình xoắn ốc.
Backpropagation làm gì?

Tự kiểm tra

Backpropagation làm gì?

Đọc thêm