Trong quá trình tìm hiểu về mạng NN, mình thấy khá là khó hiểu, đặc biệt với các bạn không mạnh về toán. Bài này, mình sẽ diễn giải cách thức làm việc của NN một cách trực quan, dễ hiểu cho các bạn thông qua một ví dụ cụ thể.
1. Nhắc lại lý thuyết
Giả sử ta có mạng NN như sau:
Quá trình training model bao gồm 2 phases:
1.1 Forward Path
Phase này tính toán (dự đoán) đầu ra
Giả sử activation là hàm sigmoid:
Ta sẽ tính lần lượt các đại lượng trung gian:
Công thức tính của từng đại lượng như sau:
Tiếp theo là tính loss bằng cách so sánh đầu ra của mạng NN với các giá trị thực tế:
Công thức tính loss như sau:
1.2 Backward Path
Mục đích của phase này là cập nhật trọng số
Ta sẽ sử dụng thuật toán tối ưu Stochastic Gradient Descent (SGD)
để cập nhật
Công thức cập nhật như sau:
với:
learning rate
.Đạo hàm từng phần của các
Đạo hàm từng phần của các
Sau khi tính được đạo hàm từng phần của mỗi
2. Ví dụ áp dụng
Vẫn với kiến trúc mạng như trên, ta sẽ gán các giá trị khởi tạo cho các tham số như hình bên dưới:
Ok, bây giờ ta sẽ bắt đầu đi tính toán.
2.1 Fordward Path
Input của
Input của
Ouput của
Output của
Input của
Input của
Output của
Output cuat
Tổng lỗi:
2.2 Backward Path
Tính đạo hàm từng phần của Loss Function theo mỗi
Các
Ta biết:
Nên:
Tiếp theo, vì:
Nên:
Và,
Nên:
Tổng hợp lại ta được:
Tổng hợp lại ta được:
Tổng hợp lại ta được:
Tổng hợp lại ta được:
Các
--------------------------------------------------------------
----------------------------------------------------
---------------------------------
-------------------------
Gộp lại:
----------------------------------------------------
---------------------------------
-------------------------
Gộp lại:
---------------------------------
----------------------
----------------------
--------------------------------------------------------------
--------------------------------------------------------------
----------------------------------------------------
---------------------------------
-------------------------
Gộp lại:
----------------------------------------------------
---------------------------------
-------------------------
Gộp lại:
---------------------------------
----------------------
----------------------
--------------------------------------------------------------
--------------------------------------------------------------
----------------------------------------------------
---------------------------------
-------------------------
Gộp lại:
----------------------------------------------------
---------------------------------
-------------------------
Gộp lại:
---------------------------------
----------------------
----------------------
--------------------------------------------------------------
--------------------------------------------------------------
----------------------------------------------------
---------------------------------
-------------------------
Gộp lại:
----------------------------------------------------
---------------------------------
-------------------------
Gộp lại:
---------------------------------
----------------------
----------------------
--------------------------------------------------------------
Đến đây ta đã tính xong các đạo hàm từng phần theo các
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
Phù, như vậy là chúng ta đã cập nhật xong giá trị mới cho các trọng số
3. Tham khảo