Nền tảng AI

Backpropagation là gì?

mm
Thêm Unite.AI vào các nguồn ưu tiên của bạn trên Google

Backpropagation là thuật toán được dùng để tính cách mà hàm mất mát của một mạng nơ-ron thay đổi theo các tham số có thể huấn luyện được. Nó áp dụng quy tắc chuỗi của phép tính ngược lại qua các phép toán đã được ghi lại trong một lần truyền tiến.

Backpropagation tính toán gradient; nó không tự quyết định việc cập nhật. Một bộ tối ưu như stochastic gradient descent hoặc AdamW sử dụng các gradient đó để thay đổi trọng số, độ lệch và các tham số có thể huấn luyện khác.

Những điểm chính

  • Lần truyền tiến xây dựng các giá trị trung gian và tạo ra một dự đoán.
  • Hàm mất mát chuyển đổi dự đoán và mục tiêu thành một mục tiêu huấn luyện dạng vô hướng.
  • Backpropagation sử dụng các đạo hàm cục bộ và quy tắc chuỗi để tính gradient của các tham số một cách hiệu quả.
  • Các khung hiện đại triển khai tự động vi phân chế độ ngược trên đồ thị tính toán.
Computational graph showing a forward pass from inputs and trainable weights to loss, followed by backward gradient arrows using the chain rule
Backpropagation tái sử dụng các đạo hàm cục bộ để chuyển thông tin từ hàm mất mát ngược lại tới mọi tham số đóng góp.

Lần truyền tiến

Xét một đơn vị đơn giản:

z = wx + b
ŷ = activation(z)

Đầu vào là x, trong khi w và b là các tham số trọng số và độ lệch có thể huấn luyện. Độ lệch thường thay đổi trong quá trình huấn luyện giống như trọng số. Một mạng kết hợp nhiều phép toán như vậy, cùng với chuẩn hoá, attention, convolution, kết nối dư, hoặc các khối khả vi khác.

Lần truyền tiến thực thi các phép toán đó và tạo ra một dự đoán. Một hàm mất mát như cross-entropy hoặc mean squared error đo lường mục tiêu. Hàm mất mát tốt nhất phụ thuộc vào nhiệm vụ và cách diễn giải đầu ra.

Quy tắc chuỗi

Nếu hàm mất mát L phụ thuộc vào một giá trị trung gian z, và z phụ thuộc vào tham số w, quy tắc chuỗi cho:

∂L/∂w = (∂L/∂z) × (∂z/∂w)

Một mạng sâu chứa nhiều đường đi. Backpropagation duyệt đồ thị tính toán ngược lại, tích lũy các đóng góp khi một giá trị ảnh hưởng đến hàm mất mát qua hơn một đường đi. Kết quả là một gradient cho mọi tham số có thể huấn luyện đã tham gia vào tính toán truyền tiến.

Một ví dụ số nhỏ

Giả sử ŷ = wx + b, với x = 2, w = 3, và b = 1. Dự đoán là 7. Nếu mục tiêu là 5 và hàm mất mát là L = ½(ŷ - y)², thì:

  • ∂L/∂ŷ = ŷ - y = 2
  • ∂ŷ/∂w = x = 2
  • ∂L/∂w = 2 × 2 = 4
  • ∂L/∂b = 2 × 1 = 2

Bộ tối ưu sau đó có thể di chuyển w và b theo hướng ngược lại của gradient. Công thức này chỉ áp dụng cho đơn vị tuyến tính đã chọn và hàm mất mát bình phương lỗi; quy tắc backpropagation chung là quy tắc chuỗi trên đồ thị thực tế, không phải một phương trình “lỗi” cố định.

Backpropagation so với gradient descent

Gradient descent là một phương pháp tối ưu. Backpropagation cung cấp các gradient cần thiết. Một bước huấn luyện thường diễn ra như sau:

  1. Xóa hoặc đặt lại các gradient đã lưu.
  2. Thực hiện lần truyền tiến.
  3. Tính toán hàm mất mát.
  4. Thực hiện lần truyền ngược.
  5. Áp dụng cập nhật của bộ tối ưu.

Việc tách biệt các khái niệm này giúp dễ hiểu hơn về momentum, AdamW, tích lũy gradient và huấn luyện hỗn hợp độ chính xác.

Tự động vi phân

Các khung như PyTorch ghi lại các phép toán và xây dựng một đồ thị trong quá trình truyền tiến. Tự động vi phân chế độ ngược sau đó tính toán các tích vector-Jacobian một cách hiệu quả từ đầu ra trở lại các tham số. Điều này tổng quát hơn so với việc tự viết mã đạo hàm cho một mạng cố định và là nền tảng cho các khung deep learning hiện đại.

Một số phép toán không khả vi hoặc có đạo hàm không ổn định. Các khung định nghĩa subgradient hoặc quy ước được tài liệu hoá trong một số trường hợp, nhưng người thực hành vẫn phải hiểu các tensor tách rời, các phép toán in-place và độ chính xác số học.

Gradient biến mất và bùng nổ

Việc nhân lặp lại qua nhiều lớp hoặc bước thời gian có thể làm gradient trở nên cực kỳ nhỏ hoặc lớn. Gradient biến mất làm chậm quá trình học ở các lớp đầu; gradient bùng nổ gây mất ổn định cho các cập nhật. Các hàm kích hoạt họ ReLU, khởi tạo cẩn thận, kết nối dư, chuẩn hoá, recurrence có cổng, và gradient clipping giúp ích, nhưng không có giải pháp nào chung.

Kiểm tra gradient

Kiểm tra gradient bằng phương pháp hiệu số hữu hạn so sánh gradient phân tích hoặc tự động với một xấp xỉ số học. Phương pháp này chậm nhưng hữu ích để gỡ lỗi các phép toán tùy chỉnh. Giám sát chuẩn gradient và phát hiện giá trị NaN hoặc vô hạn có thể tiết lộ sự không ổn định trong quá trình huấn luyện.

Quy tắc chuỗi qua đồ thị tính toán

Backpropagation tính toán gradient của một hàm mất mát vô hướng đối với mọi tham số khả vi một cách hiệu quả. Lần truyền tiến ghi lại các giá trị trung gian trong một đồ thị tính toán. Bắt đầu từ hàm mất mát, tự động vi phân chế độ ngược áp dụng quy tắc chuỗi, nhân các đạo hàm cục bộ và tích lũy các đóng góp ở các điểm giao nhau của các đường đi. Đối với một lớp y=f(x,w), độ nhạy ngược lên y kết hợp với các đạo hàm riêng phần để tạo ra độ nhạy cho x và w. Backpropagation tính toán gradient; bộ tối ưu quyết định cách các tham số thay đổi.

Một lớp affine đơn giản tạo ra y=Wx+b. Gradient cho W là tích ngoài của gradient ngược lên và đầu vào, gradient cho b là tổng các giá trị ngược lên, và gradient của đầu vào được nhân với ma trận trọng số chuyển vị. Các hàm kích hoạt thêm các đạo hàm phần tử. Convolution, chuẩn hoá, attention và việc tái sử dụng trong recurrent tuân theo nguyên tắc đồ thị tương tự nhưng yêu cầu hình dạng tensor đúng, broadcasting, masking và chia sẻ tham số. Các khung giải phóng các kích hoạt đã lưu sau lần truyền ngược trừ khi được giữ lại, do đó bộ nhớ thường tăng theo kích thước batch, độ sâu và độ dài chuỗi.

Các thất bại gradient, xác minh và thực hành kỹ thuật

Tích của nhiều đạo hàm có thể biến mất hoặc bùng nổ. Các hàm kích hoạt giống ReLU, khởi tạo cẩn thận, chuẩn hoá, kết nối dư, gating và gradient clipping giải quyết các cơ chế khác nhau. Các hàm kích hoạt bão hòa và các phép toán không khả vi có thể chặn các tín hiệu hữu ích; backpropagation cắt ngắn giới hạn lịch sử chuỗi; độ chính xác hỗn hợp có thể gây underflow nếu không có loss scaling. Gradient bùng nổ là một triệu chứng, vì vậy clipping nên đi kèm với việc điều tra learning rate, dữ liệu, kiến trúc và lỗi số thay vì che giấu chúng.

Xác minh các phép toán tùy chỉnh bằng kiểm tra gradient hiệu số hữu hạn trên các đầu vào double-precision nhỏ, tránh các điểm không khả vi. Kiểm tra chuẩn gradient, NaN, các tham số không hoạt động, và liệu gradient có đạt tới các module mong đợi không. Xóa gradient tích lũy một cách có chủ ý và phân biệt hành vi huấn luyện so với đánh giá cho dropout và chuẩn hoá. Checkpointing tính lại các kích hoạt để tiết kiệm bộ nhớ; huấn luyện phân tán phải tổng hợp gradient một cách nhất quán. Một hàm mất mát huấn luyện giảm dần cho thấy có một con đường tối ưu, không phải gradient đúng về mặt khái niệm, dữ liệu không rò rỉ, hoặc mô hình tổng quát.

Ví dụ thực tế: xác minh một lớp nơ-ron tùy chỉnh

Một kỹ sư triển khai một lớp phổ khả vi cho mạng âm thanh. Một bài kiểm tra double-precision nhỏ so sánh gradient tự động với hiệu số hữu hạn trung tâm trên các đầu vào và tham số, loại trừ các điểm mà phép toán cố ý không khả vi. Các trường hợp hình dạng, broadcasting, padding và chuyển đổi phức sang thực được xử lý riêng. Bài kiểm tra xác minh gradient tích lũy khi một tham số được tái sử dụng và xác nhận rằng các khung âm thanh được mask không tạo ra gradient.

Trong quá trình huấn luyện, bảng điều khiển theo dõi chuẩn gradient và kích hoạt, NaN, các tham số không hoạt động, và loss scaling. Một batch bị hỏng cố ý xác nhận rằng việc kiểm tra sẽ bắt được đầu ra không hữu hạn trước khi bộ tối ưu cập nhật. Độ chính xác hỗn hợp và các triển khai xuất khẩu được so sánh với tham chiếu. Các bài kiểm tra tiếp tục checkpoint bao gồm trạng thái bộ tối ưu và thứ tự ngẫu nhiên. Lớp này không được chấp nhận chỉ vì tổng loss giảm; gradient đơn vị, độ ổn định số và khả năng tổng quát hoá downstream phải cung cấp bằng chứng nhất quán.

Bằng chứng triển khai và sẵn sàng vận hành

Một quyết định sản xuất cần nhiều hơn một buổi trình diễn thành công. Xác định người dùng mục tiêu, môi trường hoạt động, đầu vào, đầu ra, phụ thuộc, người sở hữu và hậu quả của mỗi lỗi quan trọng. Thiết lập một baseline có thể tái tạo và một bộ đánh giá có phiên bản trước khi tinh chỉnh. Kiểm tra các trường hợp bình thường, điều kiện biên, đầu vào sai dạng hoặc thiếu, dịch chuyển phân phối, mất phụ thuộc, lạm dụng, và các nhóm hoặc môi trường có khả năng bị thiếu hụt. Đo lường chất lượng nhiệm vụ cùng với hiệu chỉnh hoặc độ không chắc, độ trễ, thông lượng, chi phí tài nguyên, khả năng tiếp cận, quyền riêng tư và bảo mật. Ghi lại mọi biến đổi và ngưỡng để một người đánh giá độc lập có thể tái tạo kết quả và phân biệt bằng chứng với một nguyên mẫu hấp dẫn.

Trước khi ra mắt, chỉ định quyền chịu trách nhiệm cho việc phát hành, ngoại lệ, thay đổi, rollback và ngừng sử dụng. Sử dụng triển khai theo giai đoạn, duy trì một phương án dự phòng an toàn, và xác minh giám sát với các lỗi được đưa vào cố ý. Dữ liệu telemetry vận hành nên tiết lộ chất lượng đầu vào, hành vi đầu ra, phiên bản mô hình hoặc quy tắc, tình trạng phụ thuộc, can thiệp của con người, và kết quả đã xác nhận mà không thu thập dữ liệu nhạy cảm không cần thiết. Định nghĩa ngưỡng cảnh báo và người chịu trách nhiệm phản hồi, sau đó xem xét bằng chứng thực tế sau khi triển khai thay vì giả định hiệu suất offline sẽ kéo dài. Đánh giá lại mỗi khi nguồn dữ liệu, người dùng, mô hình, nhà cung cấp, chính sách, phần cứng hoặc mục tiêu thay đổi. Một hệ thống được duy trì cũng cần có tài liệu phục hồi, học hỏi từ sự cố, quy trình xóa và lưu trữ, và một điểm rõ ràng khi nó nên bị vô hiệu hoá hoặc thay thế.

Câu hỏi thường gặp

Backpropagation có cập nhật trọng số không?

Backpropagation tính toán gradient. Bộ tối ưu áp dụng cập nhật bằng cách sử dụng các gradient đó, tốc độ học và có thể là trạng thái như momentum hoặc các moment thích nghi.

Backpropagation có thực tế sinh học không?

Backpropagation tiêu chuẩn là một thuật toán kỹ thuật và không được chấp nhận như một mô hình chi tiết của quá trình học trong não sinh học. Phép ẩn dụ thần kinh lịch sử không nên được coi là tương đương sinh học.

Tài liệu tham khảo chính

Blogger và lập trình viên với chuyên môn về Machine Learning và Deep Learning topics. Daniel hy vọng giúp đỡ người khác sử dụng sức mạnh của AI cho lợi ích xã hội.