Lan truyền ngược là phương pháp mà mạng nơ-ron dùng để tính gradient: hàm mất mát sẽ thay đổi bao nhiêu nếu bạn thay đổi mỗi trọng số hoặc độ lệch một chút. Nói đơn giản, nó cho mô hình biết tham số nào đã đẩy dự đoán đi sai hướng và sai bao nhiêu.
Phiên bản ngắn gọn thì rất đơn giản: cho mạng chạy theo chiều thuận, đo sai số, rồi đi ngược lại qua chính chuỗi phép tính đó bằng quy tắc dây chuyền. Điều này giúp mô hình sâu trở nên dễ xử lý hơn, vì mỗi tầng chỉ cần đóng góp một đạo hàm cục bộ nhỏ.
Lan truyền ngược tính gì
Lan truyền ngược không tự cập nhật tham số. Nó tính các gradient như và , trong đó là hàm mất mát. Một bộ tối ưu như gradient descent sẽ dùng các gradient đó để thực hiện bước cập nhật thật sự.
Nếu mô hình và hàm mất mát khả vi, hoặc ít nhất khả vi từng phần đủ để dùng các phương pháp dựa trên gradient, thì lan truyền ngược cho phép bạn tính các gradient đó hiệu quả chỉ trong một lượt truyền ngược.
Vì sao quy tắc dây chuyền là ý tưởng cốt lõi
Hãy xem mạng nơ-ron như một chuỗi dài các phép tính. Mỗi tầng nhận đầu vào, biến đổi nó, rồi chuyển kết quả cho tầng tiếp theo. Khi đến hàm mất mát, sai số cuối cùng phụ thuộc vào mọi lựa chọn trước đó.
Lan truyền ngược đặt ra một câu hỏi cục bộ ở mỗi bước: nếu giá trị trung gian này thay đổi một chút, thì hàm mất mát cuối cùng sẽ đổi như thế nào? Các tác động cục bộ đó được nhân với nhau khi bạn đi ngược lại. Đó chính là quy tắc dây chuyền theo cách nói đơn giản.
Ví dụ lan truyền ngược với một nơ-ron
Dùng một nơ-ron với một đầu vào:
Ở đây là đầu vào, là trọng số, là độ lệch, là dự đoán, là giá trị mục tiêu, và là hàm sigmoid.
Lấy
Bước 1: Lượt truyền thuận
Trước hết tính tổng có trọng số của nơ-ron:
Bây giờ áp dụng sigmoid:
Tiếp theo tính hàm mất mát:
Dự đoán đang thấp hơn giá trị mục tiêu, nên hàm mất mát là số dương.
Bước 2: Lượt truyền ngược
Bây giờ tính gradient theo trọng số.
Bắt đầu từ hàm mất mát và đi vào trong:
Với sigmoid,
Và với tổng có trọng số,
Bây giờ nối các phần lại với nhau:
Thay số vào:
Dấu âm rất quan trọng. Chúng cho biết rằng nếu tăng hoặc lên một chút thì hàm mất mát ở đây sẽ giảm, điều này phù hợp với tình huống hiện tại vì dự đoán đang quá thấp.
Nếu bạn dùng gradient descent với tốc độ học , thì
Đó là toàn bộ ý tưởng ở dạng thu nhỏ: truyền thuận, tính mất mát, truyền ngược, cập nhật.
Vì sao lan truyền ngược hoạt động với mạng sâu
Trong một mạng sâu hơn, bạn làm điều tương tự theo từng tầng. Khác biệt chính là mỗi tầng ẩn ảnh hưởng đến hàm mất mát một cách gián tiếp thông qua các tầng phía sau, nên gradient của nó chứa nhiều thừa số từ quy tắc dây chuyền hơn.
Lan truyền ngược vẫn thực tế vì mỗi tầng chỉ cần đạo hàm cục bộ của chính nó và tín hiệu đi từ tầng phía sau truyền về. Bạn không phải tự suy lại toàn bộ mạng từ đầu cho từng tham số.
Những lỗi thường gặp khi dùng lan truyền ngược
Nhầm lan truyền ngược với gradient descent
Lan truyền ngược tính gradient. Gradient descent dùng các gradient đó để cập nhật tham số. Chúng liên hệ chặt chẽ với nhau, nhưng không phải là cùng một bước.
Quên rằng hàm mất mát nằm ở cuối
Lượt truyền ngược bắt đầu từ hàm mất mát, không phải từ một tầng ẩn bất kỳ. Nếu bạn mất dấu việc hàm mất mát phụ thuộc vào những gì, chuỗi đạo hàm thường sẽ bị đứt.
Bỏ qua hành vi của hàm kích hoạt
Một số hàm kích hoạt tạo ra gradient rất nhỏ ở một vài vùng. Nếu điều đó lặp lại qua nhiều tầng, quá trình học có thể trở nên chậm.
Cho rằng một lượt truyền ngược nghĩa là mô hình đã học xong
Một lượt truyền ngược chỉ cho ra một bộ gradient cho một batch. Việc huấn luyện thường cần nhiều lần cập nhật trên nhiều ví dụ.
Khi nào lan truyền ngược được dùng
Lan truyền ngược là phương pháp tính gradient tiêu chuẩn để huấn luyện nhiều loại mạng nơ-ron, bao gồm perceptron nhiều lớp, mạng tích chập, mô hình hồi quy và transformer.
Bộ tối ưu cụ thể có thể thay đổi, và một số kiến trúc có thêm các mẹo thực tế, nhưng ý tưởng cốt lõi thường vẫn giống nhau: tính hàm mất mát, truyền gradient ngược lại, rồi cập nhật tham số để giảm sai số trong tương lai.
Một cách thực tế để ghi nhớ
Lan truyền ngược là một cách có cấu trúc để phân bổ công và lỗi bên trong một mô hình nhiều tầng. Nếu đầu ra sai, phương pháp này lần ngược sai số đó để mỗi tham số nhận được một tín hiệu về cách nó đã góp phần tạo ra sai số.
Đó là lý do cụm từ "cách mạng nơ-ron học" phần lớn là đúng. Việc học diễn ra thông qua các lần cập nhật tham số lặp đi lặp lại, và lan truyền ngược là thứ khiến các lần cập nhật đó có cơ sở thay vì ngẫu nhiên.
Thử một bài tương tự
Giữ nguyên ví dụ trên, nhưng đổi giá trị mục tiêu từ thành . Hãy tính lại và , rồi kiểm tra xem các dấu đổi như thế nào. Chỉ một thay đổi đó thôi cũng làm vai trò của hàm mất mát rõ ràng hơn nhiều so với việc chỉ học thuộc công thức.
Cần trợ giúp giải bài?
Tải câu hỏi lên và nhận lời giải từng bước đã được xác minh trong vài giây.
Mở GPAI Solver →