동적 계획법 (Dynamic Programming) 이란, 복잡한 문제를 더 작은 하위 문제로 나누어 해결하는 알고리즘 설계 기법이다.
쉽게 말해, "N번째 답을 구하기 위해 N-1번째 답을 활용하는 방식의 접근법" 이라고 이해할 수 있다.
N번째 답이 N-1번째 답에서 도출될 수 있다면, N-1번째 답은 N-2번째 답에서 도출되고, N-2번째 답은 N-3번째에서.. 하는 방식으로 나아가게 될 것이다.
결국 2번째 답은 1번째 답을 활용해서 구할 수 있으므로,
1번째 답만 구해놓고 dp를 활용하면 원하는 N이 무엇이든 답을 얻을 수 있게 된다.
대표 논문: "The Theory of Dynamic Programming" by Richard Bellman (1954) 링크
중요성: Richard Bellman이 개발한 동적 프로그래밍은 강화학습의 이론적 기초를 마련했다. Bellman 방정식과 마르코프 결정 과정(MDPs)의 도입은 최적 제어 문제를 해결하는 수학적 프레임워크를 제공했으며, 이후 모든 강화학습 알고리즘의 기반이 되었다. 이 접근법은 상태 가치 함수와 최적 반환 함수의 개념을 사용하여 순차적 의사결정 문제를 해결하는 방법을 제시했다.
용어 설명:
예를 들어, 현재 날씨가 흐리면 곧 비가 올 것으로 예측할 수 있다. 과거의 상태가 화창했을 지라도 현재 상태가 흐리다는 사실만으로 다음 상태를 예측하는 모델인 것이다.
마르코프 성질은 주사위를 던져서 나오게 될 숫자와 같은 독립변수에는 영향을 주고받지 않는다.
수학적 원리:
코드 예제: