강화학습

[강화학습]다이내믹 프로그래밍

APinCan 2020. 1. 15. 22:14

다이내믹 프로그래밍

다이내믹 프로그래밍을 이용해 벨만 방정식을 풀기

가치함수를 구하는 과정을 작은 과정 여러개로 쪼개어 반복 계산 모든 상태에 대해 한번 가치함수 업데이트 다음 계산 때는 업데이트 된 가치함수를 이용해 다시 모든 상태에 대해서 가치함수 업데이트 이걸 반복

 

가치함수에 대한 방정식

벨만 기대 방정식 --> 정책 이터레이션

벨만 최적 방정식 --> 가치 이터레이션

정책/가치 이터레이션 --> SARSA --> 큐러닝

 

 

정책 이터레이션

정책 이터레이션에서는 정책을 평가하는 도구로 가치함수 사용, 이터레이션을 반복할수록 최적에 도달

정책과 가치함수를 분리시킴

 

벨만 기대 방정식을 이용해 강화학습 문제 품, 가장 높은  보상을 얻게 하는 정책을 알고 싶은데 처음에는 알 수가 없음 그래서 무작위 정책으로 시작

현재 정책을 평가(정책 평가)하고 --> 더 나은 정책으로 발전(정책 발전)하는 것으로 구성

이 과정을 계속 반복해 최적 정책으로 수렴

 

정책 평가

가치함수를 이용해 현재 정책이 얼마나 좋은지 평가, 정책에 대한 평가는 현재 정책에서 받을 보상에 대한 기대값(정책의 가치)

이 식을 그대로 쓰기에는 에피소드가 언제 끝날지 몰라서 계산이 어려우므로 벨만 기대 방정식을 사용, 주변 상태의 가치함수와 한 타임스템만 고려해 다음 가치함수 계산, 여러번 계산하면 이번 정책에 대한 참 가치함수로 수렴

그리고 기대값을  계산 가능한 형태로 바꾸면 벨만 방정식에서 많이 본 형태가 나옴

모든 상태에 대해 동시에 시행

현재 정책에서 상태 s일때 행동 a를 할 확률(정책) 곱하기, 그 때의 보상 + 주변상태의 가치함수의 감가율 곱

현재 상태에서 모든 선택가능한 행동에 대해 수행 후 다 더해 현재 정책에서 현재 상태의 가치함수를 업데이트, 이 것을 모든 상태에 대해서 동시에 수행

모든 상태에 대해 계산한 것이 한번의 정책 평가 이를 여러번 해서 현재 정책에서 상태들에 대해 참 가치함수를 구함

 

정책 발전

정책 평가를 마쳤으면 정책 발전, 정책 발전은 일단 탐욕 정책 발전 사용

정책 평가를  거치면 각 행동에 대한 가치를 알 수 있음, 정책 평가로 구한 모든 상태에 대한 가치함수를 이용해 어떤 행동을 하는 것이 좋을지 큐함수를 계산

여기서 기대값 E 대신 계산 가능한 형태로 바꾸면

상태 s 행동 a에서의 큐함수는 주변 상태 s에 저장된  가치함수 X 감가율 + 그 때의 보상으로 표현

상태 s에서 가능한 행동들의 큐함수 비교하고 가장 큰 큐함수 가지는 행동 선택이 탐욕 발전 정책

 

탐욕 정책 발전 통해 업데이트 된 정책

상태 s에서 탐욕 발전 정책 통해 업데이트 한 정책 = 상태 s, 행동 a일때 큐함수 중 가장 큰 큐함수

 

 

가치 이터레이션

최적정책을 가정, 정책이 직접주어지지 않고 행동의 선택은 가치함수를 통해 이루어짐

정책 이터레이션처럼 명시적으로 정책 표현하지 않고 가치함수 안에 내재되어 있음, 그래서 가치함수를 업데이트하면 정책은 자동적으로 발전함

여기서는 구하려는 가치함수를 최적 정책에 대한 가치함수라 가정함 그래서 반복 계산하면 최적 정책에 대한 참 가치함수(최적 가치함수)를 구하게 되는 것

시작부터 최적정책을 가정했기 때문에 정책 발전이 필요 없는 것

벨만 기대 방정식과 다른 부분은 정책값 이용한 기대값 계산 부분은 없고 max만 있음

벨만 최적방정식은 기대 방정식과 달리 max만이라 정책은 고려하지 않음

정책 이터레이션과의 차이는 다음 상태들을 전부다 고려해 가치함수를 업데이트 하는게 아닌 제일 높은 값을 가지는 R+ rV(s')값만 고려해 업데이트

 

 

 

참고 : 파이썬과 케라스로 배우는 강화학습

http://www.yes24.com/Product/goods/44136413

'강화학습' 카테고리의 다른 글

[강화학습] 딥살사, 폴리시 그레디언트  (0) 2020.01.18
[강화학습] 살사, 큐러닝  (0) 2020.01.18
[강화학습]벨만 방정식  (0) 2020.01.15