이전 포스트에서 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"와 같은 음소를 가지고 있는 것이다. 지금 다루는 시스템은 음성 데이터 내에..
온라인 상품의 리뷰를 검사해주고, 해당 글 작성자가 상품에 대해서 좋아하는지 안 좋아하는지를 자동적으로 알려주는 시스템을 만들고 있다고 가정해보자. 예를 들어 다음 리뷰에 대해서는 아주 긍정적으로 인식되기를 원할 것이다:This is great mop!( 이건 훌륭한 걸레야! )그리고 다음 글에 대해서는 매우 부정적인 것으로 인식될 것이다.This mop is low quality--I regret buying it.(이 걸레는 질이 낮아서, 산 걸 후회한다.) 긍정적인 것과 부정적인 것을 인식하는데 있어 문제가 발생하는 것을 보통 "감정 분류(sentiment classification)"이라고 부른다. 이런 시스템을 만들기 위해서는 두 가지 구성요소로 이뤄진 하나의 "파이프라인"을 만들어야 한다. 1..
헬리콥터한테 복잡한 기동을 할 수 있도록 가르치는데 머신러닝을 활용한다고 가정해보자. 위의 사진은 시간대별로 컴퓨터가 조종하는 헬리콥터가 엔진이 꺼지면서 착륙하기까지의 사진을 나타내고 있다. 이런 방식을 "자동회전식(autorotation)" 기동이라고 부른다. 이를 통해 헬리콥터의 엔진이 뭔가 예측하지 못한 사유로 인해 고장날 지라도 헬리콥터가 착륙할 수 있게끔 해준다. 인간 조종사는 교육과정 중 일환으로 이런 기동을 연습한다. 이제 해야할 목표는 학습 알고리즘을 사용해서 헬리콥터의 안정적인 착륙을 위해 T 경로를 따라서 헬리콥터가 비행하는 것이다. 강화학습(reinforcement learning)을 적용하기 위해서는, 모든 가능한 경로 T에 대해서 얼마나 좋은지를 평가할 수 있는 "보상 함수(rew..
- Total
- Today
- Yesterday
- TensorFlow Lite
- Variance
- Kinect SDK
- 강화학습
- ai
- Kinect for windows
- DepthStream
- Offline RL
- End-To-End
- dynamic programming
- Policy Gradient
- 딥러닝
- RL
- SketchFlow
- Distribution
- Kinect
- Off-policy
- ColorStream
- PowerPoint
- processing
- reward
- Gan
- 파이썬
- Expression Blend 4
- windows 8
- Pipeline
- Windows Phone 7
- bias
- 한빛미디어
- arduino
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |