티스토리 뷰
<본 포스트는 UC Berkeley 교수인 Benjamin Recht 의 블로그에 올라온 글을 번역한 것입니다. 원본>
앞에서 다뤘던 두개 포스트에서는 강화학습에서 현재 진행되고 있는 연구 중 2개의 흐름에 대해서 소개했다. 첫번째는 prescriptive analytics에서 바라본 강화학습이었고, 두번째는 optimal control에 대한 내용이었다. 이번 포스트에서는 앞과 다르게 현업이나 논문 상에서 사람들이 강화학습을 어떻게 사용하는지에 대해 초점을 맞춰보고자 한다. 강화학습은 수사학(rhetoric)과는 조금 다른 측면이 있어서 각각의 다른 방법론과 알고리즘의 한계를 쉽게 이해시키고자 2개의 포스트에 나눠서 설명하려고 한다.
지금까지 지속되고 전례에 의해서 간신히 유지되어 오던 규칙들이 몇가지 있는데, 그 규칙에 대해서 윤곽을 그리고, control system 설계와 분석에서 연구가 진행되고 있는 그 연관성을 언급하고자 한다.
경로(Trajectories)와 정책(Policies)
앞에서 다뤘던 추상화된 dynamic system model을 다시 살펴보자.
\( x_{t+1} = f(x_{t}, u_{t}, e_{t}) \)
다시 말하지만, \(x_{t}\)는 system의 state이고, \(u_{t}\)는 제어 action이며, \(e_{t}\)는 랜덤한 에러 항목이다. 여기서 f는 고정되어 있지만, 아직 모르는 상태라고 가정해보자.
이제 trajectory를 dynamical system에 의해서 생성되는 state와 control action의 연속된 형태라고 정의하겠다.
\( \tau_{t} = (u_{1}, ... u_{t-1}, x_{0}, ..., x_{t}) \)
control policy란 (간단하게 "policy")는 함수인데, 보통 \(\pi\) 라고 표현하며, dynamical system으로부터 trajectory를 받고, 새로운 control action을 출력으로 내뱉는 함수를 말한다. 여기서 \(\pi\)는 이전 state와 control action만 받을 수 있다.
예를 들어, 긴 시간 영역에서의 LQR에서는 우리가 알고있기로는 policy란 고정된 행렬 K에 대해서 거의 optimal하다고 알고 있다.
\( pi(\tau_{t}) = Kx_{t} \)
하지만 일반적인 강화학습 문제에서는 완전 제멋대로 동작하면서 복잡한 policy도 있을 수 있다.
Optimal control과 강화학습은 예상되는 reward를 최대화 할수 있는 policy를 찾는데 목적을 두고 있다.
예언가(oracle)에게 가서 물어보기
이전 포스트에서 언급했던 강화학습의 목적은 아래와 같은 optimal control problem의 해를 구하는 것이었다.
\( \text{maximize}_{u_{t}} \;\; \mathbb E_{e_{t}}[\sum_{t=0}^{N}R_{t}[x_{t}, u_{t}]] \)
\( \text{subject to} \;\; x_{t+1} = f(x_{t}, u_{t}, e_{t}) \)
\( (x_{0} \; \text{given}) \)
하지만 우리는 현재 함수 f에 대해서 알지 못한다고 가정했다. 또한 몇몇 연구에서는 우리가 reward function R도 모르는 것을 가정했다. 어떠한 문제상에서 R에 대해 알지 못한다는 것은 개인적인 입장에선 현실성이 없어 보이기도 하고, 사실 R은 공학 관점에서는 설계 parameter이다. 하지만 이 포스트의 목적에 따라 R에 대해서 알든 알지 못하든 상관이 없을 것이다.
중요한 부분은 우리가 dynamics에 의해 동작하는 함수 f에 대해서 알지 못하는 한 기본적인 최적화 방법을 가지고는 최적화 문제를 풀 수 없다는 것이다. 우리는 dynamical system과 우리가 가지고 있는 지식에 기반해서 가장 최적의 policy를 선택하는 것에서 무언가를 배워야 한다는 것이다. 여기서 어떻게 성공률을 측정할 수 있을까? 우리가 취한 policy를 통해서 얻을 수 있는 최종 예상 reward와 해당 policy를 찾기 위해서 system에 시도하는 횟수에 대한 균형을 찾아야 한다.
현대의 강화학습에서 가장 표준이 되는 형태는 다음의 게임을 하는 것이다. 우리는 policy \(\pi\)와 행동 범위 L을 결정한다. 그리고 해당 policy를 simulation engine이나 실제 robotic system에 넣어보고, 다음과 같은 trajectory를 얻을 수 있다. 이때 \(u_{t} = \pi(\tau_{t})\)이다.
\(\tau_{L} = (u_{1},...,u_{L-1},x_{0},...,x_{L}) \)
이게 우리가 목표로 할 예언가 모델이다. 일반적으로 예언가에 의해서 계산되는 샘플의 총 갯수를 최소화하길 원한다. 그래서 만약 전체 동작 L에 대해서 m번의 쿼리를 돌린다면, 우리는 이에 필요한 댓가로 mL 만큼을 지불해야 한다. 하지만 매 실험 순간에는 우리의 공간을 넘나드는 것은 자유롭다.
그러면 이제 예언가가 확인할 데이터의 총 갯수를 n이라고 정의해보자. 마지막 날에 우리는 우리가 정한 policy를 통해서 예상 reward가 높았으면 좋겠지만, 이와 더불어 예언가가 확인할 쿼리의 갯수도 적었으면 좋겠다.
휴.. 여기까지만 와도 벌써 복잡한 내용이다. 이것만 봐도 이런 문제에서 "최선"의 알고리즘을 결정하기란 참 어렵다. 가장 적은 샘플만 본 것에 reward를 더 준다면, 해당 알고리즘을 최고라고 결정해도 좋을까? 아니면 정해진 샘플 갯수만 가지고도 가장 높은 reward를 얻을 수 있는 알고리즘을 최선이라고 판단해야 할까? 아니면 그 중간이 좋은 것일까? 이 시리즈의 후반부에서 서로 다른 강화학습 방법론의 상대적인 성능에 대해서 측정할 때 다시 다뤄보도록 하겠다.
반복 학습 제어(Iterative Learning Control)
제어 이론 학자들은 이 강화학습 게임을 다르게 표현하는데 보통 iterative learning control(ILC)라고 한다. ILC상에서 초점은 반복적인 작업을 수행하는 제어 시스템을 설계하는 것이고, 이런 설계는 해당 반복을 정리하면서 정제된다. 흔한 예제가 trajectory를 추적하는 것을 학습하는 것인데, 이때의 입력은 이전 iteration에서 원하는 trajectory로부터의 편차를 조절하면서 제어를 향상시킬 수 있다. ILC는 제어이론 내에서 유용하고, 많이 다뤄졌던 내용이고, 수많은 산업 분야에서 성과를 얻어왔다. 또한 실제 물리 시스템에서 iterative learning control이 구체화 된 것은 어떠한 강화학습 성과보다 더 좋은 것은 결코 과장이 아니다. 몇가지 구체적인 사례도 있다. 아마 quadrotor가 자유자제로 움직임을 보면서 다시 돌아와 나머지 글을 다시 읽게 될 것이다.
Iterative learning control과 강화학습은 해당 방법론이 어떤 정보를 제어 설계 엔지니어에게 전달되냐의 관점에서는 크게 다르지 않다. 강화학습에서 문제는 dynamical system에 대해서 최대한 많은 정보들이 감춰지도록 설계된다. 강화학습 예제들이 잘 정의된 미분 방정식으로 구성된 물리 시뮬레이터를 사용하긴 하지만, 우리가 기본적인 기계 지식에 대해서 모르는 것처럼 우리 손을 묶고 있어야 하고, 또한 우리가 만든 제어 시스템에서 원하는 목적을 이해하지 않는다. 결론적으로 말해, 강화학습은 합리적인 성능을 얻기 위해서는 수백만의 학습 샘플들이 필요하다. 반대로 ILC의 경우는 인간이 낼 수 있는 성능을 넘기 위해서 몇번의 iteration만 필요하다. 하지만 ILC의 경우 system dynamics를 투영한 합리적이 모델이 필요하고, 어쩌면 잘 정의된 dynamics도 가정하고 있어야 한다. 이렇듯 조금 완벽하지 않은 모델을 정의하면서 적은 시간안에 실제 물리 시스템에서 학습시킬 수 있는 절충점이 있을까
이런 모델링과 iteration 횟수에 대한 모델간의 trade-off를 이해하는 것은 실용적으로나 학문적으로 매우 흥미가 있는 도전이다. 이렇게 클래식한 제어 기법과 강화학습 방법론을 비교하고 대조함으로써 어떤 새로운 직관을 얻을 수 있을까? 우리가 system을 제어하기 위해서 얼마나 system을 이해하고 있어야 할까? 다음에 진행될 몇몇 포스트를 통해서 강화학습 게임에서의 몇가지 접근 방법과 그 방법 내에서 최적화하는 방법들이 얼마나 다른지에 대해서 설명해보고자 한다. 우선 내가 덜 좋아하는 Policy Gradient 부터 시작해보려고 한다.
'Study > AI' 카테고리의 다른 글
[RL] Updates on Policy Gradients (0) | 2019.03.04 |
---|---|
[RL] A Model, You Know What I Mean? (0) | 2019.02.27 |
[RL] The Policy of Truth (0) | 2019.02.25 |
[RL] The Linear Quadratic Regulator (0) | 2019.02.21 |
[RL] The Linearization Principle (0) | 2019.02.19 |
[RL] Total Control (0) | 2019.02.19 |
[RL] Make It Happen (0) | 2019.02.14 |
- Total
- Today
- Yesterday
- 한빛미디어
- DepthStream
- ColorStream
- Expression Blend 4
- 강화학습
- PowerPoint
- Offline RL
- Off-policy
- Gan
- TensorFlow Lite
- Kinect for windows
- Kinect
- End-To-End
- 딥러닝
- Kinect SDK
- dynamic programming
- SketchFlow
- processing
- Pipeline
- ai
- bias
- Windows Phone 7
- reward
- 파이썬
- Policy Gradient
- Variance
- RL
- arduino
- Distribution
- windows 8
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |