티스토리 뷰
강화학습 (Reinforcement Learning, RL) 은 무엇인가?
강화학습의 정의에 대해 살펴보기 전, 강화학습이 속해있는 Machine learning에 대해서 살펴보자.
Machine Learning = Supervised + Unsupervised + Reinforcement learning으로 구성된다.
- Supervised learning (지도학습) : label이라는 정답 data를 가지고 있어 이로부터 즉각적인 feedback을 받으며 학습하는 것을 말한다. 현재의 data들을 바탕으로 미래를 예측하거나, 정답이 있는 결과를 맞추는데에 목적이 있다. ex) classification (분류), Regression (회귀)
- Unsupervised learning (비지도학습): 정답에 해당되는 label이 없다. 따라서 즉각적인 feedback을 받을 수 없다. ex) clustering(클러스터링), 차원 축소
- Reinforcement learning (강화학습) : label은 없지만 환경으로부터 주어진 reward를 통해 action을 학습한다. 이와 같은 면에서 reward도 label로 보는 견해가 있으나, 환경과 상호작용을 한다는 측면에서 다르다. ex) 자율주행, 로봇 제어 등
강화학습 정의
<쉽지만 추상적인 버전>
시행착오를 통해 발전해 나가는 과정
<어렵지만 좀 더 정확한 버전>
순차적 의사결정 문제에서 누적 보상을 최대화하기 위해
시행착오를 통해 행동을 교정하는 학습 과정
그럼 여기서 사용한 용어에 대해서 공부하고 넘어가자.
순차적 의사결정 (Sequential decision making)
일련의 행동을 연이어 결정하고 수행하는 과정을 의미한다.
예를 들어, 운전이나 주식 거래와 같은 활동을 성공적으로 수행하기 위해서는 여러 번의 의사결정이 필요하다. 각 의사결정은 이전의 상황과 그에 따른 결과를 고려하여 진행되며, 이는 다시 다음 행동에 영향을 미치게 된다. 이게 바로 순차적 의사결정이다.
보상 (Reward)
얼마나 의사결정을 잘 내리고 실행했는지를 평가하는 척도이다.
강화학습의 목적은 과정에서 받는 보상의 총합, 즉 누적 보상(cumulative reward)를 최대화하는 것이다.
> 스칼라
보상은 일반적으로 하나의 스칼라(Scalar) 값으로 주어진다.
> 어떻게 X 얼마나 O
보상은 "어떻게" 해야 높은 보상을 얻을 수 있는 지에 대한 정보를 제공하지 않고, 어떤 행동을 하면 그것에 대해 "얼마나" 잘 하고 있는지를 평가해 준다. 그럼 "어떻게"에 대한 정보를 아무도 알려주지 않는 데 어떻게 학습을 할 수 있을까? 수많은 시행착오 덕분이다.
> 희소하고 지연된 보상
보상이 희소 (sparse) 할 수 있으며 지연(delay)될 수 있다. 이는 특정 행동이 예상한 결과를 즉시 얻지 못할 수 있으며, 때로는 보상이 행동 후 오랜 시간이 지난 후에 나타날 수 있음을 의미한다. 예를 들어, 자율 주행차의 경우 특정 조작이 사고를 방지하는 데 도움이 되었지만, 이 사실을 인식하고 보상을 주는 데는 시간이 걸릴 수 있다.
보상이 행동과 보상이 일대일로 대응이 된다면 강화학습은 한결 쉬워진다. 행동에 대한 평가가 즉각적으로 이루어지는 만큼 좋은 행동과 안 좋은 행동을 가려내기 쉽기 때문이다. 그러나, 실제로 선택했던 행동의 빈도에 비해 훨씬 가끔 주어지거나, 행동 이후 오랜 시간이 지나야 나타날 수 있기 때문에, 행동과 보상의 연결이 어려울 수 있다. 보상이 어떤 행동 덕분인지 책임 소재가 불분명해지면서 그만큼 학습도 어려워지기 때문이다. 따라서, 이런 문제를 해결하기 위해 밸류 네트워크 (value network) 등의 다영한 아이디어가 강화학습에 등장하였다.
시행착오 (Trial and Error)
말그대로 시행착오이다. 지은이는 자전거를 타는 법을 배우려고 합니다. 처음에는 무작정 자전거에 올라타고, 페달을 밟으며 여러 번 넘어지기도 했다. 그러나, 지은이는 포기하지 않고 반복하여 "속도를 빠르게 하면 균형을 잡기 쉽구나", " 핸들을 이렇게 돌려야하는구나" 와 같이 스스로 깨우치면서 자전거 타는 법을 익혔다. 각 실패와 성공은 지은이에게 다양한 인사이트를 제공했고, 이를 통해 어떤 행동이 보상을 가져다주는지를 배웠다. 시행착오를 통해 예측된 행동이 아닌, 실제 행동을 통해 얻은 보상으로 행동의 가치를 평가하고 더 많은 보상을 얻기 위해 학습하는 것이 강화학습의 핵심이다.
강화학습 원리
앞서 설명한 순차적 의사결정 문제를 도식화하면 다음과 같다.
강화학습은 환경(environment)와 에이전트(agent) 사이에서 상태(state), 행동(action), 보상(reward)을 반복적으로 상호작용(interaction)하며 학습하는 과정이다. 에이전트가 정책(policy)에 따라 특정 행동을 취하고 그 결과로 상황이 변하는 일련의 과정을 하나의 루프(loop)라고 하며, 이 루프가 끊임없이 반복되는 것을 순차적 의사결정 문제라 할 수 있다.
에이전트 (Agent)
에이전트는 강화학습의 주체로, 학습하는 대상이자 환경 속에서 행동하는 개체이다. 에이전트는 현재 상황 \(s_t\)에서 정책에 따라 어떤 행동 \(a_t\)을 할지 결정하고, 그 행동 \(a_t\)을 실행하여 환경으로부터 보상과 다음 상태의 정보를 받는다.
환경 (Environment)
에이전트를 제외한 모든 요소를 환경이라고 한다. 현재 상태에 대한 모든 정보를 숫자로 표현하여 기록해 놓으면 그것을 상태 (state) 라고 한다. 환경은 결국 상태 변화 (state transition) 를 일으키는 역할을 담당하며, 에이전트로부터 받은 행동 \(a_t\)를 통해 상태 변화를 일으키고 \(s_t -> s_{t+1}\), 보상 \(r_{t+1}\)을 계산하여
(s_{t+1|\)과 \(r_{t+1}\)을 에이전트에게 전달한다.
상호작용 (Interaction)
에이전트가 현재 상태 \(s_t\)에서 행동 \(a_t\)을 시행하고 이를 통해 환경이 \(s_{t+1}\)바뀌면, 즉 에이전트와 환경이 한번 상호작용하면 하나의 루프가 끝난다. 이 과정을 반복하면서 에이전트는 학습을 계속합니다. 이러한 반복적인 상호작용을 통해 에이전트는 더 나은 의사결정을 학습하게 됩니다.
실제 세계는 시간의 흐름이 연속적이겠지만, 순차적 의사결정 문제에서는 시간의 흐름을 이산적으로 생각한다. 각 시간 단위를 틱(tick) 또는 타임 스텝(time step)이라고 한다.
강화학습의 위력
병렬성의 힘
수많은 컴퓨터를 병렬로 연결해서 시뮬레이션 진행하고, 시뮬레이션 결과를 모아서 중앙에서 학습하면 빠른 학습 가능
자가 학습 (Self-learning)의 매력
시뮬레이션 환경 속에 던져놓고 목적만 알려주고 알아서 배우게하는 강화학습이 유연하고 자유롭고 성능면에서도 뛰어남
마치며
Sutton 교수님 책에서 다음과 같은 문장이 있습니다.
Reinforcement learning is defined not by characterizing learning methods, but by characterizing a learning problem.
이는 강화학습이 학습을 하는 '방식'이 아닌, 해결해야 하는 '문제'에 의해 정의된다는 의미한다.
강화학습의 본질은 MDP (Markov Decision Process, 마코프 결정 과정)로 표현되는 문제를 푸는 것이라고 할 수 있다. MDP는 강화학습 문제를 수학적으로 모델링하는 방법으로, 상태(state), 행동(action), 보상(reward), 정책(policy) 등의 개념을 포함한다.
다음 포스팅은 MDP에 대해 살펴보겠습니다.
Reference
[1] https://sumniya.tistory.com/2
[2] 바닥부터 배우는 강화학습
[3] David sliver 교수님 강의
'AI > 강화학습 (Reinforcement Learning)' 카테고리의 다른 글
[RL 강화학습] 정책과 2가지 가치 함수: Policy, Value function (0) | 2024.10.02 |
---|---|
[RL 강화학습] Markov Process, Markov Reward Process, Markov Decision Process 개념 (0) | 2024.07.03 |
- Total
- Today
- Yesterday
- 로지스틱 회귀
- **kwargs
- *args
- NumPy
- 강화학습
- 손실함수
- 11870
- numpy 배열 생성
- adrew ng 머신러닝 강의
- 백준
- 딥러닝
- baekjoon
- 비용함수
- action value function
- Sort
- 경사하강법
- **
- sorted
- policy function
- Andrew Ng
- 파이썬
- computation graph
- omp: error #15
- python
- *
- state value function
- 강의노트 정리
- 앤드류응
- numpy 배열 속성
- 숏코딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |