티스토리 뷰

 이런 경우에는 최적화 검증 테스트를 적용해볼 수 있다. 만약 주어진 입력 x에 대해서, 출력 y를 얼마나 잘 얻을 수 있는지 점수 Scorex(y)를 계산할 수 있을 수 있을 때 말이다. 더불어 argmaxyScorex(y)를 찾는 근사 알고리즘을 사용하는데 종종 최대치를 찾는데 실패하는 검색 알고리즘을 의심해볼 때도 사용해볼 수 있다. 이전 음성 인식 예제를 가져와보면 x=A는 음성 데이터 일 것이고, y=S는 출력 번역본일 것이다.

 y*가 "올바른" 출력인데, 알고리즘은 y_out 결과를 내뱉었다고 가정해보자. 그러면 이를 확인해볼 방법은 

$$Score_{x}(y*) > Score_{x}(y_{out})$$

여부를 확인하는 것이다. 만약 위의 수식이 참이라면, 최적화 알고리즘 문제로 판명할 것이다. 이에 대한 근거를 이해하기 위해선 이전 포스트를 참고해봐라. 만약 수식이 거짓이라면, Score(y)를 계산하는데 문제가 있는 것이다.

 한가지 예를 더 살펴보자. 만약 중국어를 영어로 번역하는 시스템을 만들고 있다고 가정해보자. 이때 시스템은 입력으로 중국어 문자 C를 받을 것이고, 각 올바른 문장 E에 대한 점수 Score(E)를 계산할 것이다. 예를 들어 Score(E) = P(E|C)를 계산할텐데, 이 값은 주어진 입력 문장이 C일 때 E가 번역될 확률을 나타내는 것이다.

 알고리즘은 다음을 계산함으로써, 문장을 번역할 것이다.

$$ output = arg \max_{E} Score_{C}(E)$$

 하지만 선택가능한 영어 문장 E의 규모가 매우 크기 때문에 아마 heuristic한 검색 알고리즘에 의존하게 된다.

 만약 정확한 번역인 E*가 아닌 E_out이라는 잘못된 결과를 출력을 내뱉는다고 가정해보자. 그러면 최적화 검증 테스트는 

$$ Score_{C}(E*) > Score_{C}(E_{out})$$ 

인지 여부를 확인할 것이다. 이런 관계가 유지된다면 Score(.)는 E_out보다는 E*를 정상적으로 인식할 것이다. 이러면 해당 오류가 근사 검증 알고리즘에 원인이 있다고 인지할 것이다. 만약 그렇지 않다면, 해당 오류가 Score(.)를 계산하는데에서 발생한다고 이해하게 될 것이다.

 AI 업계에서는 처음에는 근사된 점수 함수 Score(.)를 먼저 학습 시키고, 그 다음에 근사화된 최대화(최적화) 알고리즘을 사용하는 것이 일반적인 "디자인 패턴"이다. 만약 이런 디자인 패턴을 알고 난 후에는 오류의 원인을 이해하기 위해서 최적화 검증 테스트를 사용할 수 있게 될 것이다.

< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 45. General form of Optimization Verification test를 번역한 내용입니다.>

댓글
댓글쓰기 폼
«   2019/09   »
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          
글 보관함
Total
1,345,107
Today
69
Yesterday
705