Neural Network hoạt động như thế nào?
Theo dõi một forward pass, hàm loss và cập nhật gradient qua mạng nhiều tầng.
Neural network là một hàm có tham số, được ghép từ các phép biến đổi. “Neuron” ở đây là một phép tính; hiểu đầu vào, trọng số và activation giúp đọc mạng rõ hơn các ẩn dụ về bộ não.
Mục tiêu học tập
- Tính được đầu ra một neuron và một tầng ẩn.
- Giải thích vai trò activation và backpropagation.
- Phân biệt inference, gradient và optimizer step.
Từ input đến prediction
Mỗi nút nhận nhiều con số, nhân chúng với trọng số, cộng bias rồi qua một quy tắc activation. Nút phía sau dùng các kết quả đó. Các trọng số được học; khi chỉ dự đoán, ta giữ chúng cố định.
Ví dụ một nút nhận [1, 2], trọng số [0.5, −1] và bias 0.1: tổng là −1.4. ReLU biến giá trị này thành 0. Đây là phép tính minh họa, không phải mạng đã được huấn luyện.
Một tầng ẩn có dạng ; tầng sau có thể tính . ReLU dùng . Với phân loại nhiều lớp, logits thường được chuyển thành phân bố bằng softmax khi cần xác suất.
Kích thước tensor phải khớp. Nếu vector input dài d và có m hidden units, W có m hàng và d cột theo quy ước vector cột. Hướng lưu tensor trong thư viện có thể khác, nên kiểm tra shape thay vì đoán.
Nếu bỏ mọi activation phi tuyến và chỉ ghép các affine layer, toàn mạng vẫn rút gọn thành một affine map. Tính phi tuyến cho phép biểu diễn cấu trúc phức tạp hơn, nhưng không tự bảo đảm học được quy luật hữu ích.
ReLU có đạo hàm bằng 0 ở nhánh âm; tại 0 dùng một quy ước subgradient. Saturation, initialization và thang đo input ảnh hưởng truyền gradient, nên cần theo dõi activation và gradient khi loss không giảm.
Loss, backpropagation và optimizer
Loss chấm mức sai của dự đoán. Backpropagation tính mỗi trọng số ảnh hưởng loss ra sao; optimizer dùng thông tin đó để sửa trọng số. Giống chỉnh nhiều núm dựa trên mức lệch, nhưng hướng chỉnh được tính từ phép toán, không phải đoán ngẫu nhiên.
Một bước SGD là , với learning rate . Thứ tự điển hình: xóa gradient cũ, forward, tính loss, backward, optimizer step. Mini-batch ước lượng gradient từ một phần dữ liệu.
Inference không cập nhật trọng số. Trong các framework, eval mode và tắt gradient có vai trò khác nhau: một cái đổi hành vi lớp như dropout, cái kia tránh xây graph cho đạo hàm.
Chain rule truyền đạo hàm qua graph: . Backprop là cách tính gradient hiệu quả, không phải chính thuật toán chọn bước cập nhật.
Kiểm tra đạo hàm bằng finite differences trên một ví dụ nhỏ, tránh điểm không khả vi. Sai số số học và bước nhiễu quá nhỏ có thể làm kiểm tra mất ổn định; đây là công cụ debug, không thay thế đánh giá tổng quát hóa.
Một neuron có thể kiểm tra bằng tay
Thay input hoặc bias trong đoạn mã rồi dự đoán đầu ra trước khi chạy. Nếu tổng âm thì ReLU cho 0; nếu tổng dương thì giữ nguyên. Mục tiêu là hiểu đường đi của con số, chưa phải tạo mô hình nhận dạng ảnh.
Sau khi hiểu forward, thử loss bình phương giữa đầu ra và một target giả định. Với nhánh ReLU đang dương, đạo hàm theo một trọng số bằng sai số nhân input tương ứng nếu loss là nửa bình phương sai số.
Một neuron đơn không mô tả dropout, normalization hay attention. Khi mở rộng thành nhiều tầng, giữ một bộ ví dụ số nhỏ để kiểm tra shape, broadcast và gradient trước khi tăng batch hoặc độ sâu.
Workflow & kiến trúc
Ứng dụng & giới hạn
- Đọc shape và data flow trong một mạng phân loại.
- Debug activation hoặc gradient trên ví dụ nhỏ.
Điểm mạnh
Ghép nhiều phép biến đổi khả vi để học biểu diễn cùng mục tiêu.
Giới hạn cần nhớ
Nhiều tham số làm tăng chi phí và nguy cơ overfit; giải thích từng trọng số không tương đương giải thích hành vi cả mạng.
Thử trong một project nhỏ
Đổi bias thành 2.0, tính z và ReLU bằng tay. Thêm target 1.0 và tính đạo hàm nửa bình phương sai số theo trọng số đầu tiên trên nhánh dương.
x = [1.0, 2.0]
w = [0.5, -1.0]
bias = 0.1
z = sum(a * b for a, b in zip(x, w)) + bias
h = max(0.0, z)
assert abs(z - (-1.4)) < 1e-12
assert h == 0.0
print({"pre_activation": z, "relu": h})Python thuần: một forward pass với tham số tự chọn; không phải mạng đã train hay benchmark.
