핵심 개념
차별화 가능한 프로그래밍은 복잡한 컴퓨터 프로그램(제어 흐름 및 데이터 구조 포함)을 엔드-투-엔드로 자동 차별화할 수 있게 하여 프로그램 매개변수의 경사도 기반 최적화를 가능하게 하는 프로그래밍 패러다임이다.
초록
이 책은 차별화 가능한 프로그래밍의 핵심 개념을 종합적으로 소개한다.
Part I에서는 미분과 확률적 학습의 기본 개념을 다룬다.
Part II에서는 신경망, 순차 네트워크, 제어 흐름과 같은 차별화 가능한 프로그램을 소개한다.
Part III에서는 프로그램을 차별화하는 방법, 즉 자동 미분, 최적화를 통한 차별화, 적분(특히 기댓값)을 통한 차별화 등을 다룬다.
Part IV에서는 프로그램을 부드럽게 만드는 두 가지 주요 기술인 인피멀 컨볼루션(최적화 관점)과 컨볼루션(적분 관점)을 소개하고 이들 간의 연결고리를 설명한다.
Part V에서는 프로그램을 최적화하는 기본 개념, 1차 및 2차 최적화 알고리즘, 쌍대성 등을 다룬다.
이 책의 목표는 차별화 가능한 프로그래밍에 유용한 핵심 기술을 소개하는 것이며, 다양한 응용 사례를 망라하지는 않는다.
통계
차별화 가능한 프로그래밍은 기존 프로그래밍과 달리 프로그램 전체를 자동으로 차별화할 수 있어 매개변수 최적화가 가능하다.
차별화 가능한 프로그래밍은 경사도 기반 최적화 알고리즘을 사용할 수 있어 고차원 문제에 효과적이다.
자동 미분(autodiff)은 차별화 가능한 프로그래밍의 핵심 기술로, 복잡한 함수의 미분을 자동으로 계산할 수 있다.
인용구
"차별화 가능한 프로그래밍은 복잡한 컴퓨터 프로그램(제어 흐름 및 데이터 구조 포함)을 엔드-투-엔드로 자동 차별화할 수 있게 하여 프로그램 매개변수의 경사도 기반 최적화를 가능하게 하는 프로그래밍 패러다임이다."
"자동 미분은 차별화 가능한 프로그래밍의 핵심 기술로, 복잡한 함수의 미분을 자동으로 계산할 수 있다."