Khi nào thì phân biệt tự động giá rẻ?


12

Sự khác biệt tự động cho phép chúng ta đánh giá số lượng đạo hàm của một chương trình trên một đầu vào cụ thể. Có một định lý rằng tính toán này có thể được thực hiện với chi phí ít hơn năm lần so với chi phí để chạy chương trình gốc. Yếu tố này của năm là một giới hạn trên.

Trong những tình huống có thể giảm chi phí này? Nhiều mã phái sinh trong trường chạy với tốc độ gần bằng tốc độ của chương trình gốc. Điều gì được thực hiện để có được sự tăng tốc này?

Những đặc điểm của chương trình ban đầu có thể được khai thác để tăng tốc tính toán là gì?

Những thủ thuật kỹ thuật phần mềm nào có thể được sử dụng để tăng tốc tính toán?


1
Chắc chắn, người ta sẽ muốn khai thác các thuộc tính đặc biệt của các đạo hàm của hàm như hàm số mũ và hàm lượng giác. Có rất nhiều tiềm năng chung phổ biến ở đó.
JM

Bạn đang hỏi về chế độ đảo ngược hay chế độ chuyển tiếp?
Jed Brown

Hiểu biết (hạn chế) của tôi là cả hai chế độ tiến và lùi đều có chi phí gần như nhau.
MRocklin

Câu trả lời:


6

Hiểu biết hạn chế của tôi về AD tương đồng với những gì Matt đã nói. Để tăng tốc tính toán của các đạo hàm, cấu trúc của biểu đồ biểu thức phải khai thác độ thưa thớt và sự khan hiếm trong tập hợp các ma trận Jacobian. (Xem bài viết này của Griewank để hiểu rõ hơn.) Các thủ thuật kỹ thuật phần mềm có thể nằm trong chính mã AD để cơ cấu lại biểu đồ biểu thức để tận dụng các tính chất này trong tập hợp các ma trận Jacobian. Biết cách mã AD tạo biểu đồ biểu thức từ mã bạn đang viết sẽ giúp bạn hiểu rõ hơn về cách viết mã yêu cầu tính toán ít hơn. Bất kỳ mã AD tốt nào cũng nên tận dụng lợi thế của nội tại với các biểu hiện con chung, nhưng mã AD tốt rất khó viết.

Tài liệu tham khảo tiêu chuẩn trong lĩnh vực này là Đánh giá các công cụ phái sinh: Nguyên tắc và kỹ thuật phân biệt thuật toán, Ấn bản thứ hai của Andreas Griewank và Andrea Walther, và nên cung cấp thông tin chi tiết hơn về cách giảm số lượng tính toán cần thiết để đánh giá đạo hàm của chương trình.


3

Bất kỳ AD nào vẫn cần những nội tại này được cung cấp, vì vậy tôi không thể thấy những gì phải làm với độ phức tạp chung của một biểu thức. Tôi đoán bạn có thể phân loại độ phức tạp theo số lượng đường dẫn thông qua biểu đồ biểu thức kể từ khi bạn cụm từ AD theo cách này. Andrew Lyons có công việc tốt trên các đồ thị song song loạt ở đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.