오류를 탐지(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..
이런 경우에는 최적화 검증 테스트를 적용해볼 수 있다. 만약 주어진 입력 x에 대해서, 출력 y를 얼마나 잘 얻을 수 있는지 점수 Scorex(y)를 계산할 수 있을 수 있을 때 말이다. 더불어 argmaxyScorex(y)를 찾는 근사 알고리즘을 사용하는데 종종 최대치를 찾는데 실패하는 검색 알고리즘을 의심해볼 때도 사용해볼 수 있다. 이전 음성 인식 예제를 가져와보면 x=A는 음성 데이터 일 것이고, y=S는 출력 번역본일 것이다. y*가 "올바른" 출력인데, 알고리즘은 y_out 결과를 내뱉었다고 가정해보자. 그러면 이를 확인해볼 방법은 $$Score_{x}(y*) > Score_{x}(y_{out})$$여부를 확인하는 것이다. 만약 위의 수식이 참이라면, 최적화 알고리즘 문제로 판명할 것이다. 이..
음성 인식 시스템을 만들고 있다고 가정해보자. 해당 시스템은 음성 파일 A를 입력으로 넣어줘서 동작하고, 각 출력 문장 S에 대한 점수(Score_A(S))를 계산한다. 예를 들어 $$ Score_{A}(S) = P(S|A)$$ 를 계산할텐데, 이 값은 주어진 입력 음성이 A일 때 적절한 출력 문장으로 문장 S가 나올 확률을 나타내는 것이다. Score(S)를 계산하는 방법으로, 해당 값을 최대로 극대화할 수 있는 영어 문장 S를 찾아야 하고 수식으로는 다음과 같다. $$Output = arg \max_{S}Score_{A}(S)$$ 여기서 "argmax"는 어떻게 계산해야 할까? 만약 영어가 50000개의 단어로 구성되어 있다면, N개의 길이로 구성되어 있는 문장은 (50000)^N 정도가 된다.(약간..
다루고 있는 음성 인식 시스템이 차안에서 발생한 음성 데이터에 대해서 더 많이 필요로 한다. 운전중에 많은 데이터를 수집하는 것보다는 더 쉬운 방법이 있다. 바로 주어진 데이터를 인위적으로 합성하는 것이다. 만약 차 소음이나 거리 소음에 대한 음성 데이터를 많이 가지고 있다고 가정해보자. 몇몇 사이트에선 그 데이터를 다운로드 받을 수 있다. 그리고 조용방에서 사람들이 이야기하는 학습 데이터도 많이 가지고 있다고 가정해보자. 만약 사람이 대화하는 음성 데이터에다 차/거리 소음 데이터를 "추가"한다면, 시끄러운 차 안에서 사람이 대화하는 것에 대한 음성 데이터를 얻을 수 있을 것이다. 이런 과정을 사용해서 우리는 해당 데이터들을 마치 차안에서 얻은 데이터인 것처럼 "합성"(synthesize)시킬 수 있다...
음성 인식 시스템을 개발하고 있는데, 학습 데이터나 학습 개발 데이터 상에서는 잘 동작하는데, 개발 데이터 상에서는 잘 동작하지 않는다고 가정해보자. 그러면 데이터 불일치(data mismatch) 현상이 있는 것인데, 이 때 어떻게 해야 할까? 본인이 추천하는 방법은: 1) 학습 데이터와 개발 데이터 사이에 어떤 데이터 특성이 다른지를 이해할 것2) 알고리즘 상에서 문제가 발생하는 개발 데이터에 조금 더 적합한 학습 데이터를 조금 더 수집할 것 예를 들어, 음성 인식의 개발 데이터에서 오류 평가를 수행하고 있다고 가정해보자: 아마 처음에는 100개의 데이터에 대해서 일일이 평가를 수행할 것이고, 알고리즘이 어디서 문제가 생기는지를 이해하려고 할 것이다. 아마 개발 데이터에 포함되어 있는 대부분의 음성 ..
만약 고양이를 인식하는 작업에서 인간이 거의 완벽에 가까운 성능(0%대의 오류)를 보여줬고, 이상적인 오류율도 0%이다. 지금 상태에서 당신이 가지고 있는 지표가 다음과 같다고 가정해보자: - 학습 데이터 상에서의 1%의 오류 - 학습 개발 데이터 상에서의 5%의 오류 - 개발 데이터 상에서의 5%의 오류 이 결과가 무엇을 의미할까? 여기서는 high variance를 가지고 있는 것을 알 것이다. 앞에서 소개한 variance를 제거하는 방법을 사용하면, 성능이 좋아질 것이다. 이제 알고리즘이 다음의 지표를 가진다고 가정해보자: - 학습 데이터 상에서의 10%의 오류 - 학습 개발 데이터 상에서의 11% 오류 - 개발 데이터 상에서의 12% 오류이건 학습 데이터 상에 높은 avoidable bias가 ..
- Total
- Today
- Yesterday
- Kinect SDK
- Gan
- windows 8
- DepthStream
- PowerPoint
- processing
- 파이썬
- SketchFlow
- Expression Blend 4
- RL
- Kinect for windows
- 한빛미디어
- 딥러닝
- Python
- Variance
- bias
- reward
- arduino
- 강화학습
- ColorStream
- Off-policy
- dynamic programming
- End-To-End
- Distribution
- Policy Gradient
- Kinect
- Windows Phone 7
- TensorFlow Lite
- Pipeline
- Offline RL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |