Đồ thị tính toán

Phép tính đa biến từ nguyên tắc đầu tiên

Có một cấu trúc dữ liệu sắp xếp gọn gàng mọi thứ từ hai bài học trước: đồ thị tính toán. Mọi phép toán số học trong mô hình (cộng, nhân, nhân ma trận, kích hoạt) đều trở thành một nút trong một đồ thị có hướng. Đồ thị này là cách PyTorch, JAX và TensorFlow tính gradient một cách tự động.

Huấn luyện chạy đồ thị qua hai lượt quét. Lượt xuôi (forward) chảy từ trái sang phải, tính và lưu vào bộ nhớ đệm giá trị của từng nút. Lượt ngược (backward) chảy từ phải sang trái, dùng quy tắc dây chuyền để đẩy gradient từ hàm mất mát ngược về mọi đầu vào, mỗi nút một lần.

Ý tưởng giúp nó mở rộng quy mô: mỗi nút chỉ cần biết đạo hàm cục bộ của riêng nó. Để gửi gradient ngược qua một nút, hãy nhân gradient đến (từ phía trên) với ma trận Jacobi cục bộ của nút đó (đầu ra của nó phụ thuộc thế nào vào đầu vào của nó). Không nút nào cần đến bức tranh toàn cục; các quy tắc cục bộ được xâu chuỗi lại tạo ra gradient tổng chính xác.

Vị trí của nó trong MLĐồ thị tính toán chính là autograd. Khi bạn viết một mô hình trong PyTorch, mỗi phép toán âm thầm ghi lại một nút; gọi loss.backward() sẽ đi ngược đồ thị, nhân các Jacobi cục bộ theo quy tắc dây chuyền và đặt ∂loss/∂w trên mọi tham số. Bạn không bao giờ phải viết đạo hàm bằng tay, và sự tiện lợi đó — đạo hàm được tính chính xác và gần như miễn phí — chính là lý do học sâu hiện đại trở nên khả thi.
▶ Đồ thị tính toán
← Quy tắc dây chuyền: Dạng ma trậnĐiểm tới hạn trong Rⁿ →