강화학습에서 모델의 역할은 여전히 많이 논의가 되고 있다. policy gradient와 같이 model-free method(model 없는 상태에서 학습하는 방법)은 system을 관찰하고, 이전에 받았던 award와 state를 바탕으로 현재의 전략을 개선시킴으로써 optimal control problem을 푸는데 목적을 두고 있다. 수많은 학자들이 논의하고 있는 내용은 실제 물리 시스템을 시뮬레이션 하는데 필요한 수많은 복잡한 수식의 조합이 필요없이 선천적으로 학습할 수 있는 시스템에 대한 것이다. 또한 전체 system dynamic에 대해서 범용적으로 쓸 수 있는 모델을 학습시키는 것보다 특정 작업에 대한 정책을 찾는게 쉬운지 여부에 대해서도 논쟁을 하고 있다. 반대로 연속된(continuo..
우리가 처음으로 다뤄볼 강화학습 알고리즘은 Policy Gradient 이다. 사실 1993년에 Policy Gradient가 나쁜 아이디어로 찍혀서 나오지 못했다는 사실이 놀랍긴 하다. Policy Gradient는 어떠한 domain knowledge없이도 어떤 문제도 풀수 있게끔 프로그램을 좋게 튜닝하는데 도움을 주기 때문에 매력적인 알고리즘이다. 물론 어떤 알고리즘이든 이렇게 주장하려면 이렇게 주장하려면, 그 좋은 부분에 대해서 매우 일반적인 성향을 띄어야 한다. 실제로 살펴보면 알겠지만 policy gradient란 수학적 심볼과 공식으로 이뤄진 랜덤 탐색에 불과하다. 사실 이 내용은 많은 포스트를 할애해야 하기 때문에 미리 사과하고자 한다. Policy Gradient란 어떤 것에 대해서 깊게..
앞에서 다뤘던 두개 포스트에서는 강화학습에서 현재 진행되고 있는 연구 중 2개의 흐름에 대해서 소개했다. 첫번째는 prescriptive analytics에서 바라본 강화학습이었고, 두번째는 optimal control에 대한 내용이었다. 이번 포스트에서는 앞과 다르게 현업이나 논문 상에서 사람들이 강화학습을 어떻게 사용하는지에 대해 초점을 맞춰보고자 한다. 강화학습은 수사학(rhetoric)과는 조금 다른 측면이 있어서 각각의 다른 방법론과 알고리즘의 한계를 쉽게 이해시키고자 2개의 포스트에 나눠서 설명하려고 한다. 지금까지 지속되고 전례에 의해서 간신히 유지되어 오던 규칙들이 몇가지 있는데, 그 규칙에 대해서 윤곽을 그리고, control system 설계와 분석에서 연구가 진행되고 있는 그 연관성을..
dynamic를 모르는 상태에서의 optimal control을 이해하고, 강화학습을 전개하는 입장에서 관점을 제공해주는 엄청 심플한 baseline이 있을까? 일단 매우 일반화가 된 예에서 시작해보자. 일반적으로 알려진 optimal한 제어 문제는 다음 형태를 띈다:\( \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}) \) 여기서 \(x_{t}\)는 system의 state이고, \(u_{t}\)는 제어 action이고, \(e_{t}\)는 랜..
나는 머신러닝으로 문제를 푸는데 있어 "Linearization Principle"이라고 부르는 기조를 유지한다. 이 원칙에는 많은 다양성들이 존재하지만, 간단하게 말하자면, "만얀 머신러닝 알고리즘이 실제 선형모델로 제한된 상태에서 예상치 못한 소위 미친 짓을 한다면, 복잡한 비선형 모델에서도 마찬가지로 미친 짓을 할 것이다"라는 것이다. 이 Linearization Principle은 머신러닝상에서의 복잡한 문제를 다루기 쉽고 간단한 문제로 분해시켜주고 해결할 간편한 방법을 제공한다. 물론 머신 러닝을 이해하는 있어 선형 모델을 활용한 문제가 충분하다고는 생각하지 않지만, 그래도 널리 활용할 수 있는 방법이라는 데에는 논의할 필요가 있다고 생각한다. 같은 방법으로 2-SAT 문제를 해결하는 것이 P=..
이전에 다뤘던 이유와 더불어서, 내가 강화학습의 재기에 흥미를 느꼈던 이유는 강화학습이 내가 사랑하는 두가지 영역의 교차점에서 동작하기 때문이다. 바로 머신러닝과 제어 분야 말이다. 이 교차점에 대해서 조금이라도 이해한다는 건 매우 신기한 일이다. 그리고 각각의 영역에서 사용되었던 기법들 역시 자주 사용할 수 있다. 제어는 잘 정의된 모델로부터 복잡한 행동을 설계하는 이론을 말하는데, 이에 비해 머신러닝은 데이터만 딸랑 있는 상태에서 복잡하고 모델이 정의되지 않은(model-free) 예측을 할 수 있다. 제어 이론의 핵심은 입력과 출력으로 이뤄진 하나의 dynamical system이라는 것이다. 이런 시스템은 현재 상태와 입력에 대해서 반응할 수 있는 내부 상태 변수(internal state)를 가..
만약 최신 해킹과 관련된 뉴스를 읽어보았다면, Deep Reinforcement Learning(심층 강화학습)으로 모든 문제를 풀 수 있을거라고 생각할 것이다. Deep RL을 통해서 바둑에서는 인간을 뛰어넘는 성능을 보여주기도 하고, Atari 게임을 깨기도 하며, 복잡한 로봇 시스템을 조종할 수도 있고, 딥러닝 시스템의 계수들을 자동적으로 튜닝해주기도 하며, network stack 속의 Queue를 관리하기도 하고, 심지어는 데이터 센터의 에너지 효율성을 증대시켜주기도 한다. 정말로 기적과 같은 기술이지 않은가? 하지만 나는 이렇게 성과가 언론에 의해서 대담하게 뿌려지는 것에 대해 의구심을 가지고 있고, 더더욱이나 다른 연구자들이 이런 성과에 대한 재현에 궁금함을 표할 때 의구심을 더 많이 가진다..
이번 포스트에서는 Board Game Geek 이란 사이트에서 제공되는 보드 게임별 리뷰 점수 정보를 활용해서 리뷰 점수를 예측하는 것을 해보고자 한다. 물론 정보를 가지고 있는 데이터를 활용해서 예측을 할 것이기 때문에 Supervised Learning이 될 것이고, 이 중에서 Linear Regression와 Random Forest Regression를 사용해보려고 한다. 참고로 Random Forest Regression은 Linear Regression으로 해결할 수 없는 Non-Linear Relation에 대한 예측을 하기 위해 사용된다. 참고로 해당 데이터는 오픈소스로 공개되어 있는 Scrappers를 활용해서 데이터를 긁어왔으며, 데이터에 대한 자세한 정보는 다음 링크를 참조하면 좋을 ..
아마 로봇과 관련된 강화학습을 시도하려다 보면 거의 한번쯤 마주치게 될 것이 mujoco라는 robot simulator이다. 그런데 아마 그리고 이를 실제로 python에서 개발하려면 openai에서 개발한 mujoco_py라는 wrapper를 활용하게 될 것이다. 그런데 아마 나와있는 가이드대로 설치하고 테스트하려다보면 다음과 같은 에러가 출력되는 경우가 있다.ERROR: GLEW initalization error: Missing GL version mujoco에서는 Visualization시 그래픽 라이브러리로 OpenGL을 사용하는데, 위 오류는 mujoco에서 요구하는 opengl을 찾지 못했다는 것이다. 이는 현재 사용하는 PC상에 OpenGL라이브러리 (libGLEW.so, libGL.so..
강화학습을 다루다보면 근본적으로 environment의 특성에 대해서 이해할 필요가 있다. 그 중에서도 많이 나오는 내용이 해당 env가 Fully Observable 이냐 Partially Observable이냐 를 정의하는 것이다. 우선 Observability라는 개념은 Dynamic Control System 이론에서 나온 개념인데, 위키피디아에 정의된 내용을 그대로 가져오면, 시스템의 내부 상태가 외부 출력에 대한 지식으로부터 얼마나 잘 추론될 수 있는지에 대한 척도를 말한다. 다시 말해서 출력만 가지고 시스템 상태를 파악할 수 있느냐를 나타내는 것이다. Fully Observable이라는 말은 출력된 결과만 가지고도 내부 state를 모두 추론할 수 있는 것을 의미한다. 강화학습 notatio..
이전 포스트에서 Data Aggregation을 통해 Imitation learning을 수행하는데 있어 사람의 힘이 필요하다는 것을 언급했었고, 그에 대한 알고리즘은 다음과 같았다. 1. 인간으로부터 뽑은 데이터 \(D=\{o_{1}, a_{1}, ... , o_{N}, a_{N}\}\)을 바탕으로 \(\pi_{\theta}(a_{t}|o_{t})\)를 학습시킨다. 2. policy로부터 나온 데이터 \(D_{\pi} = \{o_{1}, ..., o_{M} \}\)을 구하기 위해 \(\pi_{\theta}(a_{t}|o_{t})\)를 돌려본다. 3. \(D_{\pi}\)에 대한 action \(a_{t}\)의 라벨링을 인간이 하게 한다. 4. 맨처음에 있던 데이터와 새로 policy에 의해서 생성된 데..
우선 강화학습을 하기전에 notation에 대한 정의가 필요해서 정리해본다. 강의에서는 강화학습을 바로 다루기보다는 조금 익숙한 Supervised Learning에 맞춰서 필요한 구문들을 설명해놨다. 그래서 제일 처음 다룬 내용은 다음과 같았다. 사실 위의 그림을 기존에 우리가 supervised learning이라고 알고 있던 문제를 강화학습 notation으로 변경해서 표현한 예시이다. 일반적인 Supervised learning의 process는 위와 같이 진행된다. 먼저 다들 아는 내용이겠지만 supervised learning은 정답지가 있는 상태에서 학습을..
보통 머신러닝 업계에서는 몇몇 대가를 손꼽을 수 있는데, 그중 머신러닝의 대중화에 큰 영향을 준 사람으로 Andrew Ng을 많이 뽑는다. 이 분은 Stanford 교수로 있다가 Coursera라는 MOOC를 개설하면서 자신의 머신러닝 강좌를 무료로 공개했다. 그 밖에도 업계에서 기여한 부분이 크겠지만, 개인적으로는 이게 제일 큰 업적이 아닐까 싶다. 아무튼 Ng 교수가 2018년 7월부터 Machine Learning Yearning 이라는 책을 온라인 버전으로 무료로 공개하기 시작했다. 책 제목을 굳이 번역하자면 "머신러닝에 대한 열망" 정도가 될텐데, 엄청난 머신러닝 관련 알고리즘이나 기법을 장황하게 설명해둔 것이 아니라 적어도 머신러닝을 활용한 업무에서 참고해야 될 부분이나 간략한 이론적 기반을 ..
만약 파이프라인의 각 요소는 인간 성능 지표에 도달하거나 근방에 있지만, 전체적인 성능은 인간 성능 지표에 도달하지 않는 경우가 있다면 어떻게 할까? 이 말은 파이프라인에 결함이 있고, 재설계될 필요성이 있다는 것을 의미한다.오류 평가는 이렇게 파이프라인을 재설계할 필요가 있을 경우에 이해하기 쉽도록 도와준다. 이전 포스트에서는 각 요소의 성능이 인간 성능 지표에 도달했는지 여부에 대한 질문을 던졌었다. 만약 세가지 질문에 대한 답이 모두 "옳다" 일 경우를 가정해보자. 그 말은: 1. Detect car 요소는 카메라 이미지로부터 차를 탐지하는데 있어 (대략적으로) 인간 성능 지표에 도달했다. 2. Detect pedestrians 요소는 카메라 이미지로부터 보행자를 탐지하는데 있어 (대략적으로) 인간..
학습 알고리즘에서 오류 평가를 수행하는 것은 다음 개선할 사항을 파악하기 위해서 머신러닝 시스템의 문제를 평가하는데 데이터 과학을 사용하는 것과 같다. 핵심은, 요소별 오류 평가는 어떤 요소가 개선에 있어서 큰 영향을 주는지를 알려준다는 것이다. 웹사이트 상에서 고객이 물건을 사는 것에 대한 데이터가 있다고 가정해보자. 데이터 과학자는 해당 데이터를 분석하는데 다양한 방법을 사용할 수 있을 것이다. 그래서 웹사이트 상에서 가격을 올려야 할지, 혹은 서로 다른 마케팅 활동을 통해서 얻을 수 있는 고객의 영속적인 가치(lifetime value)에 대한 결정을 내릴 수 있을 것이다. 데이터를 평가하는데 있어 "올바른" 길이라는 것은 없고, 적용해볼만한 가치가 있는 방법들이 많이 있다. 이와 비슷하게 오류 평..
- Total
- Today
- Yesterday
- TensorFlow Lite
- PowerPoint
- Policy Gradient
- Kinect SDK
- dynamic programming
- 강화학습
- 딥러닝
- 한빛미디어
- Kinect for windows
- RL
- windows 8
- bias
- Off-policy
- 파이썬
- Windows Phone 7
- Expression Blend 4
- ColorStream
- SketchFlow
- Python
- Pipeline
- reward
- Kinect
- arduino
- Gan
- Distribution
- Variance
- Offline RL
- End-To-End
- processing
- DepthStream
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |