아마 로봇과 관련된 강화학습을 시도하려다 보면 거의 한번쯤 마주치게 될 것이 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)에 대한 결정을 내릴 수 있을 것이다. 데이터를 평가하는데 있어 "올바른" 길이라는 것은 없고, 적용해볼만한 가치가 있는 방법들이 많이 있다. 이와 비슷하게 오류 평..
오류를 탐지(attribution)하는데 있어 몇가지 일반적인 과정이 있다. 만약 사용하고 있는 파이프라인이 3개의 단계 A, B, C로 구성되어 있고, A는 B에 직접적으로 물려있고, B는 C에 직접적으로 물려있는 경우라고 가정해보자. 개발 데이터를 통해서 생길 수 있는 문제에 대해서 처리를 하기 위해서는: 1. A의 출력이 "완벽한" 출력이 되도록 수정해본다.(예를 들어 앞에서 소개한 고양이 이미지에 대한 "완벽한" 박스 이미지) 그리고 해당 출력을 이용해서 파이프라인의 B와 C에서 테스트를 해본다. 만약 알고리즘이 정상적인 결과를 출력한다면 이 말은 A가 좋은 출력을 내보낼 경우, 전체 알고리즘 출력은 정상적으로 나온다는 것을 의미한다. 그렇기 때문에 해당 오류는 A에서 발생한 것이고 탐지할 수 있..
이전 예제를 계속 살펴보자 그래서 고양이 감지기가 다음과 같은 박스 이미지를 출력으로 내뱉었다. 그러면 다음 단계인 고양이 종 분류기는 위의 잘린 이미지를 받고, 사진 상에 고양이 없다고 하거나 y=0으로 잘못 출력을 할 것이다. 고양이 감지기는 매우 안좋게 동작했다. 하지만 고도로 숙련된 사람은 잘못된 이미지 상에서도 임의적으로 Siamese cat을 인지할 수 있다. 그러면 해당 오류는 고양이 감지기에서 발생한 것일까, 아니면 고양이 종 분류기에서 발생한 것일까? 모호한 부분이다. 만약 위와 같이 모호한 케이스의 숫자가 적다면, 원하는 결정을 내리고 유사한 결과를 얻을 수 있다. 하지만 오류가 정확히 어디서 나타나는지를 명확히 확인하기 위한 정현화된 방법이 있다. 1. 고양이 감지기의 출력을 손으로 ..
복잡한 머신러닝 파이프라인을 활용하고 있고, 성능을 개선시키고자 한다. 파이프라인 중 어떤 부분이 성능을 개선하는데 효과가 있을까? 파이프라인 내 특정 부분에 대해 오류를 고려함으로써, 일의 우선 순위를 결정할 수 있다. 앞에서 다뤘던 Siamese cat 분류기 예제를 살펴보자: 첫번째 부분인 고양이 감지기에선 고양이를 찾아서 이미지 상에서 해당 부분을 잘라준다. 두번째 부분인 고양이 종 분류기에서는 해당 고양이가 Siamese cat인지 여부를 결정한다. 이 파이프라인내 두가지 각각을 개선시키는데는 수년이 소요될 수 있다. 어떤 요소에 초점을 맞춰야 할까? 각 요소별로 오류 평가를 수행함으로써, 파이프라인의 두 요소 중 하나가 알고리즘에서 문제가 발생했는지 여부를 찾을 수 있다. 예를 들어 지금 사용..
이미지 분류 알고리즘은 이미지 x를 입력으로 받고, 해당 사물의 카테고리를 나타내는 정수 형태로 출력될 것이다. 혹시 알고리즘이 위와 같은 출력 대신에 이미지를 묘사한 하나의 문장으로 출력을 내보낼 수 있을까? 예를 들어위의 이미지를 입력으로 받았을 때 출력은"초록 나무와 초록 잔디가 있는 배경에서 길을 가로지르고 있는 노란 버스"라고 하는 것처럼 말이다. 지도 학습의 전형적인 어플리케이션은 보통 h:X -> Y라는 함수를 학습을 하고, 보통 y는 정수나 실수를 나타낸다. 예를 들어: 문제 X Y 스팸 메일 분류 메일 스팸이냐/아니냐(0/1) 이미지 인식 이미지 정수로 된 라벨 집값 예측 집의 특성 달러로 표시된 돈 상품 추천 상품 & 사용자 특성 해당 상품을 구입할 가능성 end-to-end 딥러닝 환..
데이터 가용성과는 별개로, 파이프라인의 구성 요소를 선택할 때, 두번째 고려사항도 염두해둬야 한다. 요소 개발적으로 풀수 있는 작업들을 얼마나 단순화시킬 수 있느냐 하는 것이다. 파이프란이의 구성 요소를 선택하는 있어서 해당 요소들이 각각 구성하기 쉽거나 학습시키기 쉬운 것들을 선택해야 한다. 그런데 여기서 학습하기 "쉽다"는 것은 어떤 것을 의미할까? 머신러닝 관련 작업을 수행할 때, 아래에 쉬운 순서대로 나열된 부분을 고려해보자: 1. (위의 이미지와 같이) 해당 이미지가 과도하게 노출되었는지 여부를 구별하는 것 2. 해당 이미지가 실내에서 찍은건지 야외에서 찍은건지 구별하는 것 3. 해당 이미지가 고양이를 포함하고 있는 것인지를 구별하는 것 4. 해당 이미지가 검정과 하얀 털로 구성된 고양이가 포함..
end-to-end 방식이 아닌 파이프라인 시스템을 만들때, 파이프라인의 구성 요소로 적합한 후보군은 어떤 것일까? 어떻게 파이프라인을 디자인하느냐가 전체 시스템의 성능에 크게 영향을 줄 수 있다. 한가지 중요한 고려 사항 중 하나는 각 요소들을 학습시킬 데이터를 쉽게 얻을 수 있느냐 여부이다. 예를 들어 아래와 같은 자율 주행을 위한 구조를 고려해보자: 위의 구조에서 머신러닝을 활용하여 차와 보행자를 탐지할 수 있다. 더 나아가 이를 위한 데이터를 얻는 것이 그렇게 어렵지 않다. 차와 보행자에 대한 라벨링이 되어 있는 수많은 컴퓨터 비전 처리용 데이터들이 많이 있다. 또한 (Amazon Mechanical Turk와 같은) 크라우드 소싱을 활용해서 더 많은 데이터 집합을 얻을 수 있다. 결국 차 감지기..
이전 예와 동일한 음성 파이프라인을 고려해보자.위의 파이프라인의 대부분 요소들은 "수동적으로 조절되어야 한다(hand-engineered): - MFCC는 일종의 수동적으로 생성되는 음성 특징의 집합체이다. 비록 이 정보들이 음성 입력으로부터 의미있는 정보를 제공하기는 하나, 한편으로는 몇몇 정보를 제거함으로 인해서 입력 데이터를 단순화시킬 수도 있다. - 음소는 언어학자들이 만들어낸 발명품과 같다. 사실 이것들은 음성 상에서 약간 불완전한 요소이기도 하다. 음소가 실제 음성을 근사하기에게 부족한 부분이 있기에, 이를 알고리즘에 반영하면 실제 음성 시스템의 성능을 제한시킬 수도 있다. 이런 수동적인 요소들이 시스템의 잠재적인 성능을 제한시킬 수 있다. 하지만 이런 수동적인 요소들도 몇몇 장점을 가지고 있..
음성 인식 시스템을 만들길 원한다고 가정해보자. 그러면 아래와 같이 세가지 요소로 구성된 시스템을 만들 것이다:각 요소들은 다음과 같이 동작한다: 1. 특징 연산(Compute features) : MFCC(Mel-frequency cepstrum coefficients)와 같이 수동적으로 생성된 특징을 추출한다. 이를 통해 화자의 음정과 같이 상대적으로 연관성이 적은 특성들 배제하고 방언이나 사투리의 내용을 얻는데 주력한다. 2. 음소 인식(Phonemene recognizer) : 몇몇 언어학자들은 "음소"라고 불리는 발음의 기본 요소들이 있다고 믿는다. 예를 들어 "keep"에서 처음 발음되는 "k"는 "cake"에서 "c"와 같은 음소를 가지고 있는 것이다. 지금 다루는 시스템은 음성 데이터 내에..
- Total
- Today
- Yesterday
- Expression Blend 4
- Policy Gradient
- arduino
- DepthStream
- processing
- End-To-End
- Gan
- SketchFlow
- 강화학습
- bias
- dynamic programming
- Off-policy
- Distribution
- TensorFlow Lite
- ColorStream
- 파이썬
- Python
- Kinect for windows
- RL
- Offline RL
- reward
- 한빛미디어
- Variance
- PowerPoint
- 딥러닝
- Kinect
- windows 8
- Kinect SDK
- Pipeline
- Windows Phone 7
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |