16. 부족한 것 필요한 것 해야 할 것
학습 = 이론 + 실습
학습 = 이론 + 실습
이론과 실습 두 마리 토끼를 잡는 책을 집필해보자!
17. 책이 다루는 내용
• 강화학습의 배경과 개념
• 강화학습을 위한 기본적인 이론: MDP, 벨만 방정식, 다이내믹 프로그래밍
• 고전 강화학습 알고리즘: 몬테카를로, 살사, 큐러닝
• 인공신경망을 이용한 강화학습 알고리즘: 딥살사, REINFORCE, DQN, 액터-크리틱, A3C
• 강화학습 알고리즘 구현 및 설명: 그리드월드, 카트폴, 아타리게임
27. 상태(s) 현재 상황을 나타내는 정보
에이전트가 탁구를 치려면 탁구공의 위치, 속도, 가속도와 같은 정보가 필요
28. 보상(r) 행동의 좋고 나쁨을 알려주는 정보
보상은 에이전트가 달성하고자 하는 목표에 대한 정보를 담고 있다
https://www.intelnervana.com/demystifying-deep-reinforcement-learning/
29. 에이전트와 환경의 상호작용 과정
1. 에이전트가 환경에서 자신의 상태를 관찰
2. 그 상태에서 어떠한 기준에 따라 행동을 선택
3. 선택한 행동을 환경에서 실행
4. 환경으로부터 다음 상태와 보상을 받음
5. 보상을 통해 에이전트가 가진 정보를 수정함
𝑠0, 𝑎0, 𝑟1, 𝑠1, 𝑎1, 𝑟2, ⋯ , 𝑠 𝑇
34. 가치함수(Value function)
• 하지만 아직 보상을 받지 않았는데….? 미래에 받을 보상을 어떻게 알지?
지금 상태에서 미래에 받을 것이라 기대하는 보상의 합 = 가치함수
가치함수 𝑣(𝑠) = 𝑬 𝑅𝑡+1 + 𝛾𝑅𝑡+2 + ⋯ |𝑆𝑡 = 𝑠
35. 큐함수(Q function)
• 하지만 내가 알고 싶은 건 ‘어떤 행동이 좋은가’인데?
지금 상태에서 이 행동을 선택했을 때 미래에 받을 것이라 기대하는 보상의 합
= 큐함수
큐함수 𝑞(𝑠, 𝑎) = 𝑬 𝑅𝑡+1 + 𝛾𝑅𝑡+2 + ⋯ |𝑆𝑡 = 𝑠, 𝐴 𝑡 = 𝑎
36. 정책(Policy)
• 미래에 대한 기대 내가 어떻게 행동할 것인지를 알아야 함
• 각 상태에서 에이전트가 어떻게 행동할 지에 대한 정보
상태 s에서 행동 a를 선택할 확률
큐함수 𝑞 𝜋(𝑠, 𝑎) = 𝑬 𝝅 𝑅𝑡+1 + 𝛾𝑅𝑡+2 + ⋯ |𝑆𝑡 = 𝑠, 𝐴 𝑡 = 𝑎
가치함수 𝑣 𝜋(𝑠) = 𝑬 𝝅 𝑅𝑡+1 + 𝛾𝑅𝑡+2 + ⋯ |𝑆𝑡 = 𝑠
정책 𝜋(𝑎|𝑠) = 𝑷 𝐴 𝑡 = 𝑎|𝑆𝑡 = 𝑠
40. 벨만 방정식(Bellman equation)
• 에이전트는 모든 (상태, 행동)에 대해서 큐함수를 가진다 일종의 기억
• 그렇다면 현재의 큐함수를 다음 타임스텝의 큐함수로 표현할 수 있지 않을까?
큐함수 𝑞 𝜋(𝑠, 𝑎) = 𝑬 𝝅 𝑅𝑡+1 + 𝛾𝑅𝑡+2 + ⋯ |𝑆𝑡 = 𝑠, 𝐴 𝑡 = 𝑎
너무 먼 미래에 대해서 기대를 품기보다는 가까운 미래에 대해서 구체적인 기대를 품기로 했다
𝑞 𝜋(𝑠, 𝑎) = 𝑬 𝝅 𝑅𝑡+1 + 𝛾(𝑅𝑡+2 + ⋯ )|𝑆𝑡 = 𝑠, 𝐴 𝑡 = 𝑎
𝑞 𝜋(𝑠, 𝑎) = 𝑬 𝝅 𝑅𝑡+1 + 𝛾𝑞 𝜋(𝑆𝑡+1, 𝐴 𝑡+1)|𝑆𝑡 = 𝑠, 𝐴 𝑡 = 𝑎
벨만 기대 방정식(Bellman expectation equation)
41. 살사(SARSA)
• 벨만 기대 방정식 큐함수 업데이트 식
현재 큐함수 보상 + 감가율 X 다음 큐함수
미래에 대해서 기대만 하기보다는 실제로 부딪혀보면서 학습하기로 했다
𝑞 𝜋(𝑠, 𝑎) = 𝑬 𝝅 𝑅𝑡+1 + 𝛾𝑞 𝜋(𝑆𝑡+1, 𝐴 𝑡+1)|𝑆𝑡 = 𝑠, 𝐴 𝑡 = 𝑎
𝑞 𝑠, 𝑎 ← 𝑟 + 𝛾𝑞 𝜋(𝑠′, 𝑎′)
점진적인 큐함수의 업데이트
𝑞 𝑠, 𝑎 = 𝑞 𝑠, 𝑎 + 𝛼(𝑟 + 𝛾𝑞 𝑠′, 𝑎′ − 𝑞 𝑠, 𝑎 )
42. 살사(SARSA)
• 현재 큐함수를 업데이트하기 위해서는 (s, a, r, s’, a’)이 필요
살사(SARSA)
𝑞 𝑠, 𝑎 = 𝑞 𝑠, 𝑎 + 𝛼(𝑟 + 𝛾𝑞 𝑠′, 𝑎′ − 𝑞 𝑠, 𝑎 )
43. 𝜀 − 탐욕정책
• 탐욕 정책의 Exploration problem 일정한 확률로 랜덤하게 행동 선택
𝜀 −탐욕정책 𝜋(𝑠) = ቊ
𝑎∗
= 𝑎𝑟𝑔𝑚𝑎𝑥 𝑎 𝑞(𝑠, 𝑎), 1 − 𝜀
𝑎 ≠ 𝑎∗, 𝜀
탐욕정책 𝜋′(𝑠) = 𝑎𝑟𝑔𝑚𝑎𝑥 𝑎 𝑞 𝜋(𝑠, 𝑎)
44. 큐러닝(Q-Learning)
• 기왕 기억을 활용하는 김에 좋은 기억을 활용해보자
다음 큐함수 중에서 가장 값이 큰 큐함수를 이용해서 현재 큐함수를 업데이트
(Q-Learning)
𝑞 𝑠, 𝑎 = 𝑞 𝑠, 𝑎 + 𝛼(𝑟 + 𝛾 max
𝑎′
𝑞(𝑠′, 𝑎′) − 𝑞 𝑠, 𝑎 )
46. 그리드월드와 큐러닝
1. 현재 상태에서 𝜖-탐욕 정책에 따라 행동을 선택
2. 선택한 행동으로 환경에서 한 타임스텝을 진행
3. 환경으로부터 보상과 다음 상태를 받음
4. 다음 상태에서 𝜖 -탐욕 정책에 따라 다음 행동을 선택
5. (s, a, r, s’)을 통해 큐함수를 업데이트
https://github.com/rlcode/reinforcement-learning-kr/tree/master/1-grid-world/5-q-learning
48. 브레이크아웃(Breakout)
• 상태, 행동, 보상
• 행동 : 제자리, 좌, 우, (발사)
• 보상 : 벽돌 깰 때마다 점수를 받으며 위 층의 벽돌을 깰수록
더 큰 점수를 받음
• 게임 세팅 : 1 에피소드에서 에이전트는 5개의 목숨을 가짐
• 목표 : 1 에피소드 동안 최대의 점수 얻기
61. Target q-network
• 안정적인 학습을 위해 학습에 사용하는 큐함수의 값을
타겟 큐-신경망(𝜃−)에서 가져옴
• 타겟 큐-신경망을 일정한 주기마다 업데이트
𝑀𝑆𝐸 = 𝑟 + 𝛾 max
𝑎′
𝑞 𝜃− 𝑠′, 𝑎′ − 𝑞 𝜃 𝑠, 𝑎
2
62. Deep Q-Learning
1. 상태에 따른 행동 선택
2. 선택한 행동으로 환경에서 한 타임스텝을 진행
3. 환경으로부터 다음 상태와 보상을 받음
4. 샘플(s, a, r, s’)을 리플레이 메모리에 저장
5. 리플레이 메모리에서 무작위로 추출한 32개의 샘플로 학습
6. 50000 타임스텝마다 타깃네트워크 업데이트