'바닥부터 배우는 강화 학습' 5장에는 MDP를 모르고 있는 경우 밸류를 평가하는 방법에 대해서 설명하고 있습니다. 아래 내용은 공부하면서 핵심 내용을 정리한 것입니다.
참고자료
- 도서: 바닥부터 배우는 강화 학습 / 5장 MDP를 모를 때 밸류 평가하기
- 동영상: https://www.youtube.com/watch?v=47FyZtBRglI&list=PLpRS2w0xWHTcTZyyX8LMmtbcMXpd3s4TU&index=4
모델 프리
- 보상 함수 ras와 전이 확률 Pass′를 모르는 상황
- '모델을 모른다', 'MDP를 모른다', '모델 프리다'는 같은 의미
5.1 몬테카를로 학습
- 동전의 앞면 뒷면이 나올 확률을 모르더라도 동전을 여러 번 던져보면 확률을 가늠할 수 있음
- 동전을 여러 번 던져볼수록 더 정확한 확률을 가늠할 수 있음
- 몬테카를로: 무언가 직접 측정하기 어려운 통계량이 있을 때 여러 번 샘플링하여 그 값을 가늠하는 기법
예) MCTS(Monte Carlo Tree Search), MCMC(Markov Chain Monte Carlo) - 가치 함수 vπ(st)=E(Gt)를 계산할 때 실제 MDP를 모르더라도 상태 st에서 여러 번 리턴을 여러 번 구한 후 평균을 구해서 계산 가능
- 더 많은 에피소드를 진행할수록 대수의 법칙(Law of large numbers)에 의해 각 상태의 밸류 예측치는 점점 정확해짐
◈ 몬테카를로 학습 알고리즘

- 그리드 월드에서 보상 함수 ras와 전이 확률 Pass′를 모르는 상황
- 계산을 통해서 평가하는 플래닝(planning)이 아닌 실제 경험을 통한 학습
1. 테이블 초기화

- 각 상태별로 N(s)와 V(s) 2개의 값을 0으로 초기화
◦ N(s): 상태 s를 총 몇 번 방문했는지 횟수를 기록
◦ V(s): 상태 s에서 경험했던 리턴의 총합을 기록
2. 경험 쌓기
- 에이전트가 시작(s0) 에서 시작해서 종료(sT)에 도달하기까지의 에피소드를 실행
s0,a0,r0,s1,a1,r1,s2,a2,r2,...,sT−1,aT−1,rT−1,sT - 에피소드에 대한 리턴을 계산할 수 있음
G0=r0+γr1+γ2r2+γ3r3+...+γT−1rT−1G1=r1+γr2+γ2r3+...+γT−2rT−1...GT−1=rT−1GT=0
3. 테이블 업데이트

- 다음과 같은 에피소드를 실행하였다고 가정하면
s0→s4→s5→s6→s10→s14→sT - 방문했던 모든 상태에 대해서 N(s)와 V(s)값을 업데이트
◦ N(st)←N(st)+1
◦ V(st)←V(st)+Gt
4. 밸류 계산
- 많은 횟수의 에피소드를 경험 후 충분히 경험이 쌓이면 리턴의 평균을 밸류의 근사치로 사용
vπ(st)≅V(st)N(st)
- 이와 같이 많은 에피소드를 통해 밸류를 추정하는 방식이 몬테카를로 방법론
◈ 조금씩 업데이트하는 버전

- 에피소드가 1개 끝날 때마다 테이블의 값을 조금씩 업데이트
- α는 얼마큼 업데이트할지 크기를 결정해주는 파라미터
- N(st)에 값을 따로 저장해 둘 필요 없이 에피소드가 끝날 때마다 테이블의 값을 업데이트
- 아래와 같이 표현도 가능함
V(st)←V(st)+α∗(Gt−V(st))
◈ 몬테카를로 학습 구현
이 부분은 구현에 대한 코드가 설명되어 있습니다.
5.2 Temporal Difference 학습
- MC(몬테카를로)의 한 가지 단점은 업데이트를 하려면 반드시 에피소드가 끝난 후에 리턴을 계산해야 함.
적용할 수 있는 환경이 제한 적 - Temporal Difference 학습 방법론: 종료하지 않는 MDP(non-terminating MDP)에서 학습 가능한 방법
◦ "에피소드가 끝나기 전에 업데이트할 수는 없을까?"
◦ "추측을 추측으로 업데이트 하자", "미래의 추측으로 과거의 추측을 업데이트"
◈ 이론적 배경
- 벨만 기대 방정식 0단계 수식
vπ(st)=Eπ[rt+1+γvπ(st+1)]
- rt+1+γvπ(st+1)을 여러 번 뽑아서 평균을 내면 그 평균이 vπ(st)에수렴
- TD 타깃(TD target): rt+1+γvπ(st+1)
◈ Temporal Difference 학습 알고리즘
- TD도 MC와 마찬가지로 테이블 값을 0으로 초기화
- TD와 MC의 차이는 업데이트 수식과 업데이트 시점이 다름
- 아래의 에피소드를 가정
s0→s1→s2→s3→s7→s6→s10→s11→sT - TD는 각각의 상태 전이가 일어나자마자 바로 테이블의 값을 업데이트
◦ MC: V(st)←V(st)+α(Gt−V(st))
◦ TD: V(st)←V(st)+α(rt+1+γV(st+1)−V(st)) - 위 수식은 MC의 Gt를 rt+1+γV(st+1)로 변경한 것
- 모든 상태에서 보상은 -1, α=0.01, γ=1.0인 경우 아래와 같이 계산 가능
V(s0)←V(s0)+0.01∗(−1+V(s1)−V(s0))V(s1)←V(s1)+0.01∗(−1+V(s2)−V(s1))...V(s11)←V(s11)+0.01∗(−1+V(s15)−V(s11))
- 테이블의 값이 수렴할 때까지 진행
◈ Temporal Difference 학습 구현
이 부분은 구현에 대한 코드가 설명되어 있습니다.
5.3 몬테카를로 vs TD
- MC, TD의 장점을 여러 측면에서 비교
◈ 학습 시점
- Episodic MDP: MDP의 상태들 중에 종료 상태(terminating state)라는 것이 있는 경우
◦ 바둑, 스타크래프트 등 종료 조건이 명확한 경우
◦ MC, TD 모두 적용 가능 - Non-Episodic MDP: 종료 상태 없이 하나의 에피소드가 무한히 이어지는 MDP
◦ 주식 시장에서의 포트폴리오 분배처럼 명확한 종료 조건이 없거나, 하나의 에피소드가 너무 길어지는 경우
◦ TD만 적용 가능
◈ 편향성(Bias)
- MC: vπ(st)=E[(Gt)]. (from 가치 함수의 정의)
◦ 여러 개의 샘플에 대한 평균을 구하는 방식으로 편향되어 있지 않는(unbiased) 안전한 방법론 - TD: vπ(st)=E[(rt+1+γvπ(st+1))] (from 벨만 기대 방정식)
◦ 실제 계산에서 사용하는 수식은 vπ(st)=E[(rt+1+γV(st+1))]
◦ vπ: 정책 π의 실제 가치로 알 수 없는 값
◦ V: 현재 업데이트하고 있는 테이블에 쓰여있는 값
◦ vπ(st+1)≠V(st+1)
◦ 실제 타깃 rt+1+γvπ(st+1)은 불편 추정량(unbiased estimate)
◦ 사용하는 타깃 rt+1+γV(st+1)은 편향(biased) 되어 있음 - 편향성의 측면에서는 MC가 우세
◈ 분산(Variance)
- MC는 에피소드가 끝나야 하기 때문에 리턴이 -6 또는 -2000 등 다양한 값을 가질 수 있음. 분산(variance)이 큼
- TD는 한 샘플만 보고 업데이트하기 때문에 분산이 작음
- 분산의 측면에서는 TD가 우세
◈ 종합
- 최근 강화 학습 알고리즘은 TD가 우세
5.4 몬테카를로와 TD의 중간
◈ n스텝 TD
- TD에서 여러 스텝을 진행하고 난 뒤 추측 치를 이용
N=1:rt+1+γV(st+1)N=2:rt+1+γrt+2+γ2V(st+2)N=3:rt+1+γrt+2+γ2rt+3+γ3V(st+3)...N=n:rt+1+γrt+2+γ2rt+2+...+γnV(st+n)
- 스텝을 무한으로 간다면 (종료 시점을 T로 가정)
N=∞:rt+1+γrt+2+γ2rt+2+...+γT−1RT
- 위 값은 리턴임. 즉 MC는 TD의 한 사례
- TD(0): N=1인 경우의 TD를 TD-zero라고 함
- N이 커질수록 bias는 줄어들고 variance는 커짐
- TD(0)와 MC 사이의 적당한 구간을 찾는 것은 어려운 문제
'강화 학습 > 바닥부터 배우는 강화 학습' 카테고리의 다른 글
바닥부터 배우는 강화 학습 | 07. Deep RL 첫 걸음 (0) | 2023.01.17 |
---|---|
바닥부터 배우는 강화 학습 | 06. MDP를 모를 때 최고의 정책 찾기 (0) | 2023.01.05 |
바닥부터 배우는 강화 학습 | 04. MDP를 알 때의 플래닝 (0) | 2022.11.14 |
바닥부터 배우는 강화 학습 | 03. 벨만 방정식 (0) | 2022.11.04 |
바닥부터 배우는 강화 학습 | 02. 마르코프 결정 프로세스 (0) | 2022.11.04 |