일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 행복
- tensorflow
- NLP
- MDP
- 애쉬브라운
- 양성평등
- 벨만 방정식
- MB
- 인공지능
- CS224N
- 딥뉴럴넷
- 머신러닝
- 다이내믹 프로그래밍
- 독서
- Gradient descent
- kbpf
- 폴댄스
- model free
- 딥러닝
- 리처드소처
- 파이썬
- 페미니즘
- 파이썬과 케라스로 배우는 강화학습
- 자연어처리
- ai
- cost function
- Richard Socher
- Linear Regression
- 강화학습
- 취미
- Today
- Total
Ordinary day
강화학습 스터디 1주차 본문
(파이썬과 케라스로 배우는 강화학습을 읽고 요약정리 한 것입니다.)
1. 강화학습 개요
강화학습은 행동심리학과 머신러닝에 뿌리를 둔 학문이며, 문제에 대한 정의가 필수적.
'강화'의 핵심은 보상을 얻게 해주는 행동의 빈도 증가이며, 이 때 에이전트는 이해는 못하더라도 행동과 행동의 결과를 보상을 통해 연결할 수 있다.
강화학습을 정의하려면 머신러닝 개념을 추가로 알아야 하는데, '머신러닝'은 인공지능의 한 범주로 컴퓨터가 스스로 학습하게 하는 알고리즘을 개발하는 분야 라고 설명할 수 있다. 즉, 주어진 데이터를 토대로 스스로 성능을 높여나가는 것이다.
이런 머신러닝에는 지도학습, 비지도학습, 강화학습 으로 크게 3가지로 나눌 수 있다.
- 지도학습(Supervised Learning): 정답을 알고 있는 데이터를 이용해 컴퓨터를 학습, 예측한 답과 정답의 차이를 통해 지속적으로 학습한다.
회귀분석(Regression), 분류(Classification) 등의 기법들이 여기에 해당. - 비지도학습(Unsupervised Learning): 비슷한 것끼리 묶어주는 식의 학습, 정답이 있는 것이 아니기 때문에 주어진 데이터로만 학습한다.
군집화(Clustering)이 여기에 해당 - 강화학습(Reinforcement Learning): 보상을 통해 학습, 이때 보상은 컴퓨터가 선택한 행동에 대한 환경의 반응이다.
앞에서 에이전트라는 단어를 사용했는데, 에이전트는 강화학습을 통해 스스로 학습하는 컴퓨터를 말한다.
이 에이전트는 환경에 대해 사전지식이 없는 상태에서 학습을 하는데, 보상을 통해 어떤 행동이 좋은 행동인지 학습하게 된다.
궁극적으로 강화학습의 목적은 에이전트가 환경을 탐색하면서 얻는 보상들의 합을 최대화하는 "최적의 행동양식/정책"을 학습하는 것이다.
그렇다면 강화학습은 왜 쓸까? 강화학습의 장점은 무엇일까?
강화학습의 장점은 에이전트가 환경에 대한 사전지식이 없어도 학습한다는 것이다. 그리고 순차적으로 결정을 해야할 문제를 푸는데 좋은 해결책이다.
물론 다이나믹 프로그래밍이나 진화 알고리즘 또한 순차적 행동 결정 문제를 해결하는 방법이긴 하나 강화학습은 이 둘의 한계를 극복할 수 있다.(이 부분은 다음에 다시 설명)
순차적으로 행동을 결정하는 문제를 정의할 때 사용하는 방법이 MDP(Markov Decision Process)인데,
MDP는 순차적 행동 결정 문제를 수학적으로 정의하여 에이전트가 그 문제에 접근할 수 있게 한다.
그렇다면 순차적 행동 결정 문제의 구성요소는 어떤 것들이 있을까?
- 상태(State): 에이전트의 상태로 동적, 정적인 요소를 모두 포함. 에이전트가 상태를 통해 상황을 판단하여 행동을 결정하기 때문에 충분한 정보를 제공해야 한다. (쉽게 관찰이라고 생각하면 됨)
- 행동(Action): 에이전트가 어떠한 상태에서 취할 수 있는 행동. 에이전트가 행동을 취하면 환경은 에이전트에게 보상을 주고 다음 상태를 알려준다.
- 보상(Reward): 다른 머신러닝 기법과 다르게 만들어주는 가장 핵심적인 요소. 에이전트는 보상을 통해 자신의 행동을 평가하고 이를 통해 학습할 수 있다. 보상은 환경의 일부이기 때문에 에이전트는 어떤 상황에서 얼마의 보상이 나오는지 미리 알지 못한다.
- 정책(Policy): 순차적 행동 결정 문제에서 구해야 할 답. 모든 상태에 대해 에이전트가 어떤 행동을 해야 하는지 정해놓은 것.
딥마인드는 강화학습을 브레이크아웃이라는 게임에 적용했다.
에이전트는 DQN이라는 인공신경망을 사용하여 각 행동이 얼마나 좋은지를 출력으로 내놓는데, 이를 큐함수라고 한다.
에이전트는 큐함수에 따라 행동하고 환경으로부터 받는 보상으로 스스로를 강화한다.
2. 강화학습 기초 1: MDP와 벨만 방정식
결국 강화학습은 어떠한 방정식을 풀어내는 방법인데, 이 방정식을 벨만 방정식이라고 한다.
MDP를 통해 정의된 문제에서 에이전트가 학습하기 위해 가치함수라는 개념을 도입하는데, 이것이 벨만 방정식과 연결된다.
앞에서 MDP의 구성요소에 대해 간략하게 설명했는데 이제부터 자세히 알아보자.
상태
S는 에이전트가 관찰 가능한 상태의 집합이다. 시간 t 일 때 상태를 St로 표현하는데, 어떤 t에서의 상태 St는 정해져있지 않다. 따라서 시간 t에서의 상태는 확률변수(어떤 집합 안에서 뽑을 때마다 달라질 수 있는 것)이다.
행동
에이전트가 상태 St에서 할 수 있는 가능한 행동의 집합을 A로 표현한다. 보통 에이전트가 할 수 있는 행동은 모든 상태에서 같다.
보상
에이전트가 학습할 수 있는 유일한 정보로, 환경이 에이전트에게 주는 정보이다.
보상함수는 시간 t일 때 상태가 St = s 이고 그 상태에서 행동 At = a를 했을 경우에 받을 보상에 대한 기댓값 E이다.
보상함수에서 특이한 점은 에이전트가 어떤 상태에서 행동한 것은 시간 t 인데, 보상을 받는 시점은 t+1 이다.
그 이유는 보상은 환경이 에이전트에게 알려주는 값으로, 그 시점이 t+1이기 때문이다.
따라서 에이전트가 받는 보상을 Rt+1로 표현한다.
상태 변환 확률
상태의 변화에는 확률적인 요인이 들어간다. 이를 수치적으로 표현한 것이 상태 변환 확률이다.
상태 변환 확률은 상태 s에서 행동 a를 취했을 때 다른 상태 s' 에 도달할 확률이며, 환경의 모델이라고도 한다.
감가율
에이전트는 보상이 얼마나 시간이 지나서 받는지를 고려해 감가시켜 현재의 가치로 따진다.
이때 시간에 따라 감가하는 비율을 감가율이라고 한다.
감가율 r 는 0과 1 사이의 값이며, 보상에 곱해지면 보상이 감소하게 된다.
정책
정책은 모든 상태에서 에이전트가 할 행동으로, 상태가 입력으로 들어오면 행동을 출력으로 내보내는 일종의 함수이다.
에이전트가 강화학습을 통해 학습해야 할 것은 '최적 정책'으로 각 상태에서 단 하나의 행동만을 선택하는 것이다.
(에이전트가 학습할 때는 확률적으로 여러 개의 행동을 선택할 수 있어야 함)
최적 정책을 얻기 위해 현재의 정책보다 더 좋은 정책을 학습해 나가는 것이 강화학습이다.
에이전트는 현재 상태에서 앞으로 받을 보상들을 고려해 행동을 결정하고, 환경은 에이전트에게 실제 보상과 다음 상태를 알려준다.
이러한 과정을 반복하면서 에이전트는 받을 것으로 예상했던 보상(가치함수 Value Function)에 대해 옳고 그름을 판단하고 이를 토대로 자신의 정보와 정책을 바꿔나간다. 이를 무한히 반복하면 가장 많은 보상을 받게 하는 정책을 학습할 수 있다.
에이전트는 미래에 받을 보상들을 고려하여 현재 취해야 할 행동을 선택해야 한다.
가치함수를 통해 아직 받지 않은 미래의 보상들을 고려하여 행동을 선택할 수 있다.
가치함수는 어떤 상태에 있으면 앞으로 얼마의 보상을 받을 것인지에 대한 기댓값 이라고 정의할 수 있으며, 에이전트가 정책을 판단하는 기준이 된다.
가치함수를 정의할 때 고려할 점
- 감가율
에이전트의 입장에서는 1)지금 받은 보상이나 미래에 받은 보상을 똑같이 취급하고, 2)100이라는 보상을 1번 받는 것과 1이라는 보상을 100번 받는 것을 구분할 수 없으며, 3)시간이 무한대라면 0.1의 보상이나 1의 보상이나 결국 무한대의 보상을 받는데 이를 구분할 수 없다. 따라서 좀 더 정확한 판단을 위해 감가율을 고려해야 한다.
참고로 보상은 각 타임스텝마다 확률적이기 때문에 반환값(에이전트가 실제로 받은 보상의 합)은 확률변수이지만, 가치함수는 특정양을 나타낸다. (가치함수는 확률변수가 아님, 반환값의 기댓값이므로.) - 정책
정책은 모든 상태에서 에이전트가 해야할 행동으로, 정책에 따라 계산하는 가치함수가 달라지기 때문에 반드시 고려해야할 요소이다.
정책을 고려한 가치함수가 바로 벨만 기대 방정식이다. 벨만 기대 방정식은 현재 상태의 가치함수와 다음 상태의 가치함수 사이의 관계식이라고 생각하면 된다.
이 벨만 기대 방정식을 이용해 현재의 가치함수를 계속 업데이트하다 보면 에이전트가 얻을 실제 보상값에 대한 참 기댓값을 구할 수 있다.
지금까지 말했던 '가치함수'는 '상태 가치함수'이다. (상태(input) -> 가치함수 -> 앞으로 받을 보상의 합(output))
이와는 조금 다른 '행동 가치함수' 큐함수가 있는데, 이는 어떤 상태에서 어떤 행동이 얼마나 좋은지 알려주는 함수이다.
큐함수는 상태, 행동 두 가지 변수를 가지며, 보통 강화학습에서 에이전트가 행동을 선택하는 기준으로 사용한다.
(상태 가치함수와 다른 점은 조건문에 행동이 추가됨)
위에서 설명한 벨만 기대 방정식을 반복적으로 계산한다면, 결국 방정식의 왼쪽 식과 오른쪽 식이 같아진다. (이 때가 수렴!)
현재 정책에 대한 참 가치함수(어떤 정책을 따라 움직였을 경우 받게 되는 보상에 대한 참값)를 구한 것이라 볼 수 있다.
다시 한번 강화학습의 목적을 되새겨보면 '최적 정책을 찾는 것'이고 이는 가치함수를 통해 판단할 수 있다.
(최적 정책은 보상을 많이 받을 수 있는 정책이고, 가치함수는 받을 보상들의 합이니까.. 결국 모든 정책에 대해 가장 큰 가치함수를 주는 정책이 최적 정책이라고 할 수 있다.)
이 최적 정책을 따라갔을 때 받을 보상의 합이 최적 가치함수이다.(최적 큐함수 또한 같은 방식으로 구할 수 있음)
'Study > ML 이론' 카테고리의 다른 글
강화학습 스터디 3주차 (0) | 2017.09.28 |
---|---|
강화학습 스터디 2주차 (0) | 2017.09.18 |
모두를 위한 머신러닝(RL) - Q-learning (1) | 2017.04.10 |
Andrew Ng 머신러닝 기초 강의 - Neural Networks: Learning (0) | 2017.03.10 |
Andrew Ng 머신러닝 기초 강의 - Logistic Regression (0) | 2017.02.06 |