Bỏ qua tới nội dung chính
Quay lại tin tức

Hồi quy ngược giải thích cho người mới bắt đầu (Phần 3): Cách hồi quy ngược thực sự hoạt động

Towards Data Science· Nikhil Dasari· 12/8/2026general

Từ một gradient đến mọi gradient Bài viết Backpropagation Explained for Beginners (Part 3): How Backpropagation Really Works xuất hiện lần đầu trên Towards Data Science.

Deep Learning Giải thích về Backpropagation cho người mới bắt đầu (Phần 3): Backpropagation thực sự hoạt động như thế nào Từ một gradient đến mọi gradient Nikhil Dasari Ngày 12/8/2026 15 phút đọc Ảnh của Phil S trên Pexels Chào mừng quý vị trở lại! Trước hết, xin chân thành cảm ơn phản hồi của quý vị về hai phần đầu của loạt bài này. Thật vui khi nhiều người đã thấy chúng hữu ích. Như thường lệ, nếu quý vị có bất kỳ suy nghĩ, câu hỏi hoặc đề xuất nào trong khi đọc, chúng tôi rất mong nhận được ý kiến của quý vị. Bây giờ, chúng ta hãy tiếp tục từ phần 2. Tại sao phải tính toán lại các gradient giống nhau? Chúng ta đã tính toán gradient cho w1w_1​ bằng cách sử dụng quy tắc chuỗi (chain rule). \[ \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial w_1} \] Chúng ta đã thu được phương trình tương tự như phương trình đã được suy ra trước đó bằng cách sử dụng phép vi phân cổ điển trong Phần 1. \[ \frac{\partial L}{\partial w_1} = -2(y-\hat{y}) \cdot w_3 \cdot \mathrm{ReLU}'(w_1x+b_1) \cdot x \] Sau đó, chúng ta đã hiểu tầm quan trọng của quy tắc chuỗi. Vậy còn các gradient cho các tham số khác thì sao? \[ b_1,\; w_2,\; b_2,\; w_3,\; w_4,\; b_3 \] Chúng ta đã xem xét toàn bộ quá trình cho w1w_1​. Do đó, chúng ta thường nghĩ đến việc lặp lại các bước tương tự, đó là sử dụng quy tắc chuỗi cho các tham số còn lại. Nếu chúng ta xem xét tất cả các phương trình quy tắc chuỗi cho tất cả các tham số, chúng ta có thể nhận thấy rằng nhiều đạo hàm riêng xuất hiện nhiều hơn một lần. \[ \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial w_1} \] \[ \frac{\partial L}{\partial b_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial b_1} \] \[ \frac{\partial L}{\partial w_2} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial a_2} \cdot \frac{\partial a_2}{\partial z_2} \cdot \frac{\partial z_2}{\partial w_2} \] \[ \frac{\partial L}{\partial b_2} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial a_2} \cdot \frac{\partial a_2}{\partial z_2} \cdot \frac{\partial z_2}{\partial b_2} \] \[ \frac{\partial L}{\partial w_3} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial w_3} \] \[ \frac{\partial L}{\partial w_4} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial w_4} \] \[ \frac{\partial L}{\partial b_3} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial b_3} \] Hãy xem xét \[b_1\] Phương trình quy tắc chuỗi cho tham số này là \[ \frac{\partial L}{\partial b_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial b_1} \] Bây giờ, hãy so sánh phương trình này với phương trình quy tắc chuỗi của w1w_1​. \[ \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial w_1} \] Chúng ta có thể nhận thấy rằng hầu hết chuỗi này thực sự giống hệt nhau. Cả hai phương trình đều chứa \[ \frac{\partial L}{\partial \hat{y}} \] Chúng cũng chứa \[ \frac{\partial \hat{y}}{\partial a_1} \] và \[ \frac{\partial a_1}{\partial z_1} \] Điểm khác biệt duy nhất là đạo hàm riêng cuối cùng. Đối với w1, số hạng cuối cùng là \[ \frac{\partial z_1}{\partial w_1} \] trong khi đối với b1, số hạng cuối cùng là \[ \frac{\partial z_1}{\partial b_1} \] Nếu tính toán gradient cho b1, ba đạo hàm riêng đầu tiên được tính hai lần, mặc dù giá trị của chúng hoàn toàn giống nhau. Mô hình tương tự xuất hiện khi tính toán gradient cho \[ w_2,\; b_2,\; w_3,\; w_4,\; b_3 \] Trong mỗi trường hợp, nhiều đạo hàm riêng trung gian xuất hiện nhiều hơn một lần. Tại thời điểm này, một câu hỏi thường được đặt ra. Tại sao chúng ta lại tính toán lại các đạo hàm riêng trung gian giống nhau mà chúng ta đã tính một lần rồi? Nếu tiếp tục theo cách này, chúng ta sẽ thực hiện nhiều phép tính không cần thiết. Đối với mạng nơ-ron nhỏ của chúng ta, điều này có vẻ không phải là vấn đề lớn, nhưng trong thực tế, chúng ta có các mạng nơ-ron với hàng triệu tham số. Nếu tiến hành theo cùng một cách cho các mạng nơ-ron khổng lồ, điều đó sẽ làm tăng thời gian và tài nguyên tính toán cần thiết để huấn luyện mô hình, khiến quá trình huấn luyện trở nên đắt đỏ hơn nhiều. Chúng ta có thể làm gì ở đây? Một ý tưởng nảy ra là thay vì tính toán lại các giá trị giống nhau, tại sao chúng ta không tái sử dụng những giá trị đó bất cứ khi nào cần đến. Đây chính xác là ý tưởng đằng sau thuật toán lan truyền ngược (backpropagation). Thuật toán này không sử dụng một cách khác để tính toán gradient mà hoàn toàn dựa vào quy tắc chuỗi. Bây giờ chúng ta đã biết ý tưởng đằng sau thuật toán lan truyền ngược. Khi tính toán gradient cho w1, \[ \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial w_1}. \] chúng ta lưu trữ các đạo hàm riêng trung gian \[ \frac{\partial L}{\partial \hat{y}}, \qquad \frac{\partial L}{\partial a_1}, \qquad \frac{\partial L}{\partial z_1} \] Tiếp theo, khi tính toán gradient của \[\frac{\partial L}{\partial b_1}\] chúng ta có thể đơn giản tái sử dụng các giá trị đã tính trước đó của \[ \frac{\partial L}{\partial \hat{y}}, \qquad \frac{\partial L}{\partial a_1}, \qquad \frac{\partial L}{\partial z_1} \] Tương tự, chúng ta tiếp tục tính toán gradient của các tham số còn lại, lưu trữ các đạo hàm riêng trung gian bất cứ khi nào có thể và tái sử dụng chúng.

Nguồn tin: Towards Data Science — Tác giả: Nikhil Dasari. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.