'바닥부터 배우는 강화 학습' 8장에는 가치 기반 에이전트를 학습하는 방법에 대해서 설명하고 있습니다. 아래 내용은 공부하면서 핵심 내용을 정리한 것입니다.
참고자료
- 도서: 바닥부터 배우는 강화 학습 / 8장 가치 기반 에이전트
- 이번 챕터에서 다룰 문제
◦ 모델 프리
◦ 상태 공간 (state space)과 액션 공간(action space)이 매우 커서 테이블에 담지 못할 상황 - 강화 학습에 뉴럴넷을 접목시키는 접근법 2가지
◦ 함수 vπ(s)나 qπ(s)를 뉴럴넷으로 표현하는 방식
◦ 정책 함수 π(a|s)를 뉴럴넷으로 표현하는 방식

- 가치 기반(value-based): 가치 함수에 근거하여 액션을 선택
모델-프리 상황에서는 v(s)만 가지고 액션을 정할 수 없기 때문에 액션-가치 함수 q(s,a) 사용 - 정책 기반(policy-based): 정책 함수 π(a|s)를 보고 직접 액션을 선택
- 액터-크리틱(actor-critic): 가치 함수와 정책 함수를 모두 사용
◦ 액터: "행동하는 녀석" 정책 π를 뜻 함
◦ 크리틱: "비평가" 가치 함수 v(s) 또는 q(s,a)를 뜻 함
8.1 밸류 네트워크의 학습

- 정책 π가 고정되어 있을 때 뉴럴넷을 이용하여 π의 가치 함수 vπ(s) 학습하는 방법
- 밸류 네트워크(value netowrk): 뉴럴넷으로 이루어진 가치 함수 vθ(s)
- 손실함수: L(θ)=(vtrue(s)−vθ(s))2
존재하는 모든 상태 s에 대해서 L(θ) 계산이 어려움 - 기댓값 손실함수: L(θ)=E[(vtrue(s)−vθ(s))2]
- 그라디언트: ∇θL(θ)=−E[(vtrue(s)−vθ(s))∇θvθ(s)]
θ′=θ−α∇θL(θ)=θ+α(vtrue(s)−vθ(s))∇θvθ(s)
- 위 식으로 θ 업데이트
- 실제 상황에서는 실제 가치 함수인 vtrue(s)가 없음. 몬테카를로 / TD 학습방법 사용 가능
◈ 첫 번째 대안: 몬테카를로 리턴
V(st)←V(st)+α(Gt−V(st))
- 몬테카를로 방식을 이용해 테이블의 벨류값을 업데이트하는 수식
L(θ)=E[(Gt−vθ(s))2]
- 손실 함수의 정답 vtrue(s) 자리에 Gt를 대입
θ′=θ+α(Gt−vθ(s))∇θvθ(s)
- 동일한 방식으로 θ를 업데이트
◈ 두 번째 대안: TD 타깃
L(θ)=E[(rt+1+γvθ(st+1)−vθ(s))2]
- 손실 함수의 정답 vtrue(s) 자리에 rt+1+γvθ(st+1)를 대입
θ′=θ+α(rt+1+γvθ(st+1)−vθ(s))∇θvθ(s)
- 동일한 방식으로 θ를 업데이트
- 위 수식에서 vθ(st+1)을 상수로 취급해야 안정적인 학습 가능
8.2 딥 Q러닝
- 가치 기반 에이전트는 명시적 정책(explicit policy)이 없음.
- 액션-가치함수 q(s,a)를 이용. 내재된 정책(implicit policy)
◈ 이론적 배경 - Q러닝
Q∗(s,a)=Es′[r+γmaxa′Q∗(s′,a′)]Q(s,a)←Q(s,a)+α(r+γmaxa′Q(s′,a′)−Q(s,a))
- 벨만 최적 방정식과 테이블 업데이트 수식
L(θ)=E[(r+γmaxa′Qθ(s′,a′)−Qθ(s,a))2]
- 벨만 최적 방정식과 테이블 업데이트 수식을 뉴럴넷으로 확장
θ′=θ+α(r+γmaxa′Qθ(s′,a′)−Qθ(s,a))∇θQθ(s,a)
- 위 식을 이용하여 θ를 업데이트해 나가면 Qθ(s,a)는 점점 최적의 액션-가치함수 Q∗(s,a)에 가까워짐
- 기댓값 연산자를 없애기 위해 여러 개의 샘플을 뽑아서 평균을 이용해 업데이트함. 이처럼 복수의 데이터를 모아 놓은 것을 미니 배치(mini-batch)라 함
- 미니 배치 사이즈(mini-batch size): 미니 배치를 구성할 데이터 개수
딥 Q러닝 pseudo code
- Qθ의 파라미터 θ를 초기화
- 에이전트의 상태 s를 초기화 (s←s0)
- 에피소드가 끝날 때까지 다음을 반복
◦ Qθ에 대한 ϵ - greedy를 이용하여 액션 a를 선택
◦ a를 실행하여 r과 s′을 관측
◦ s′에서 Qθ에 대한 greedy를 이용하여 액션 a′을 선택
◦ θ 업데이트: θ←θ+α(r+γQθ(s′,a′)−Qθ(s,a))∇θQθ(s,a)
◦ s←s′
- Q러닝은 off-policy 학습
◦ 실행할 액션을 선택하는 행동 정책: ϵ - greedy Qθ
◦ 학습 대상이 되는 타깃 정책: greedy Qθ
◈ 익스피어런스 리플레이어와 타깃 네트워크
익스피리언스 리플레이(Experience Replay)

- "겪었던 경험을 재사용하면 더 좋지 않을까?" 하는 아이디어에서 출발
- 하나의 상태 전이(transition) et는 (st,at,rt,st+1)로 표현 가능
"상태 st에서 액션 at를 했더니 보상 rt을 받고 다음 상태 st+1에 도착하였다"는 뜻 - 리플레이 버퍼(replay buffer)
◦ 가장 최근에 발생한 데이터 n개를 버퍼에 저장
◦ 새로운 데이터가 하나 버퍼에 들어오면 가장 오래된 데이터를 하나 제거
◦ 학습할 때는 버퍼에서 임의로 데이터를 뽑아서 사용. (예, 32개씩 미니 배치 단위로 학습)
◦ 각각의 데이터 사이 상관성(correalation)이 작아서 더 효율적으로 학습 가능
◦ off-policy 알고리즘에만 사용할 수 있음
별도의 타깃 네트워크(Target Network)

- 하나의 네트워크 θ만 사용할 경우 θi를 업데이트하여 θi+1이 된 경우 정답도 함께 변경됨
R+γmaxA′Qθi(S′,A′)→R+γmaxA′Qθi+1(S′,A′) - 정답지가 자주 변하는 것은 학습의 안정성을 매우 떨어 뜨림
◈ DQN 구현
- 이 부분은 구현에 대한 코드가 설명되어 있습니다.
'강화 학습 > 바닥부터 배우는 강화 학습' 카테고리의 다른 글
바닥부터 배우는 강화 학습 | 10. 알파고와 MCTS (0) | 2023.03.22 |
---|---|
바닥부터 배우는 강화 학습 | 09. 정책 기반 에이전트 (0) | 2023.01.28 |
바닥부터 배우는 강화 학습 | 07. Deep RL 첫 걸음 (0) | 2023.01.17 |
바닥부터 배우는 강화 학습 | 06. MDP를 모를 때 최고의 정책 찾기 (0) | 2023.01.05 |
바닥부터 배우는 강화 학습 | 05. MDP를 모를 때 밸류 평가하기 (0) | 2022.11.29 |