동적 프로그래밍 (Dynamic Programming, DP)과 강화 학습 (RL)의 근본적인 차이점은 환경의 동력학이 알려진 것 (즉 모델)을 가정하고, 후자는 프로세스에서 얻은 데이터 일련의 샘플 형태, 일련의 프로세스 궤적 또는 단일 궤적을 포함 할 수있다. 이 기능으로 인해 RL 방법은 모델 작성이 어렵거나 비용이 많이 드는 경우에 유용합니다. 그러나 두 방법 모두 동일한 작동 원리 (일반화 된 정책 반복 (0120))를 공유한다는 점에 유의해야합니다 (Sutton's book).
이 둘이 비슷하다면 두 접근법 모두 몇 가지 한계점, 즉 차원의 저주를 공유합니다. Busoniu's book에서 (제 3 장 당신의 목적을 위해 유용 아마 무료입니다) :
민주당과 RL 분야에서 중앙 도전, 그 원래의 형태 (즉, 표 형식)에서, DP 및 RL 알고리즘은 할 수있다
일반적인 문제는 으로 구현하십시오. (기타 이유로) 함수 또는 정책의 정확한 표현이 필요하기 때문에 상태 공간과 작업 공간이 유한 수의 개별 요소로 구성되어있을 때만 구현할 수 있습니다. 일반적으로 상태 공간에는 불가능합니다. 무한 수의 요소 (또는 상태의 수가 너무 높을 때 너무 비싸다).
상태와 동작이 매우 많은 값을 취하는 경우에도 값을 나타내는 함수 및 정책은 개의 Q- 함수 (및 Q- 함수의 작업 변수) 수와 함께 기하 급수적으로 커집니다. 이 문제를 차원의 저주라고하며 상태 및 동작 변수가 많은 경우 고전적인 DP 및 RL 알고리즘을 비실용적으로 만듭니다. 이러한 문제에 대처하기 위해 대략적으로 값 함수 인 및/또는 정책을 사용하는 클래식 알고리즘을 사용해야합니다. 실제 관심사의 대부분의 문제에는 크거나 연속적인 상태 및 행동 공간이 있기 때문에 근사가 DP 및 RL에서 필수적입니다.
귀하의 경우에는 일종의 함수 근사법을 사용해야한다는 것이 확실합니다. 그러나 전환 확률 행렬을 알고있는 경우 DP 또는 RL을 기반으로 방법을 선택할 수 있습니다. RL의 경우, 전이는 단순히 동작이 주어지면 다음 상태를 계산하는 데 사용됩니다.
DP 또는 RL을 사용하는 것이 더 좋습니다. 사실 나는 그 해답을 모른다. 그리고 최적의 방법은 당신의 특정 문제에 달려있다. 직관적으로, 계획된 방식 (DP)으로 상태 집합을 샘플링하는 것이 더 안전하다고 보이지만, 최적 상태를 찾기 위해 상태 공간의 큰 부분이 관련되지 않을 수도 있습니다. 그러한 경우, 일련의 궤도 (RL)를 샘플링하는 것이 계산적으로 더 효과적 일 수있다. 어떤 경우에도 두 가지 방법이 올바로 적용되면 유사한 해결책을 제시해야합니다.
참고 : 함수 근사를 사용할 때 수렴 속성이 더 약해지고 반복 프로세스 중에 발산하는 경우가 드물지 않습니다. 특히 근사가 비선형 인 경우 (예 : 인공 신경망) RL이 결합 된 경우.
DP를 기반으로 한 접근 방식의 현재 문제는 많은 상태를 보유하고 있다는 것입니다. 맞습니까? 그런 경우에 SARSA (람다)를 함수 근사치로 사용 하시겠습니까? –
SARSA가 Transiction prob를 요구하지 않기 때문에. 매트릭스, 그것은 단지 각 상태를 임의의 횟수 방문합니다, 그것은 목적을 수행합니다. 제가 사용하고있는 것은 Sutton (141 페이지)이 정의한 SARSA (lambda) on-policy 제어 방법입니다. 확실하지 않은 질문에 대답했다면 다시 물어보십시오. – user4218673
잠재력을 지닌 사다 (SARSA)라고 들었지만 그에 관한 많은 정보를 찾을 수 없었습니다 – user4218673