티스토리 뷰

Study/AI

[MLY] 최적화 지표와 만족 지표

생각많은 소심남 2018. 9. 2. 23:56

  여러 개의 평가 지표(Evaluation Metrics)를 결합하는 또다른 방법이 있다.

Classifier 

Accuracy 

 RunningTime

90% 

80ms 

92% 

95ms 

95% 

1500ms 

Accuracy와 Running Time 을 아래와 같이

Accuracy - 0.5 * RunningTime

라는 식을 통해 accuracy와 RunningTime을 하나의 식에 넣음으로써 하나의 평가 척도로 정의하는 것 자체가 부자연스럽게 보일 수 있다. 여기서 이렇게 식을 넣는거 대신에 할 수 있는 것이 있다. 첫번째로 "받아들일 수 있을 만한" RunningTime이 무엇인지를 정의해볼 수 있다. 예를 들어 100ms안에 동작하는 것은 어떤것이든 받아들일 수 있을만한 것이라고 가정해보자. 그러면 정확성을 높이기 위해서는 만든 분별기가 RunningTime 조건을 충족하느냐를 만족시켜야 한다. 여기서 RunningTime은 보통 "만족 평가 지표" 라고 표현할 수 있을텐데, 만약 당신이 만든 분별기가 해당 평가 척도를 충분히 만족한다면 결국 그 감별기가 100ms안에 동작한다는 것을 의미하는 것이다. 여기서 정확성은 "최적화된 평가 지표"라고 말할 수 있다.

 예를 들어 model의 binary file 크기나, 실행시간, 정확성과 같이 N개의 서로 다른 기준을 가지고 평가를 해야 다면, 보통 "만족" 지표라는 조건을 N-1개 설정하게 된다. 다른 말로 이런 과정을 통해 어떤 특정값을 만족시키기를 원한다. 그러고 난후에 마지막까지 남은 지표를 "최적화" 지표라고 정의한다. 예를 들어 만족할만한 binary file의 크기나 동작 시간이라고 받아들일 수 있을 만한 일종의 threshold를 설정하고, 그런 계수가 주어진 상태에서 정확성을 최적하는 것을 말한다.

 한 가지 예를 들어보자. 만약 특정 기동어를 말하는 사람을 들을 수 있는 마이크를 사용하는 하드웨어 장비를 만든다고 가정해보자. 여기에는 Amazon Echo가 "Alexa"라고 들으면 깨거나, Apple Siri가 "Hey Siri"라고 들으면 깨는 것, Android가 "Okay Google", Baidu가 "Hello Baidu"라고 들으면 깨는 것들을 모두 일컫는데, 이 경우에는 False Positive 와 False Negative 비율을 고려할 것이다. 여기서 False Positive면 기동어를 부른 사람이 없어도 시스템이 동작하는 현상이 될 것이고, False Negative면 어떤 사람이 기동어를 이야기 했음에도 시스템이 동작하지 않는 현상을 말할 것이다. 이때 이 시스템의 성능에 대해서 내세울 수 있는 합리적인 목표중 하나는 False Negative rate를 줄이고(최적화 지표), 24시간내 한 건의 False Positive도 발생하지 않아야 하는 것을 들 수 있다.(만족 지표)

(-> 내가 이해한 바로는 만족 지표는 최소한 만족시켜야 할 필수 지표고, 최적화 지표는 성능에 직접적으로 영향을 주는 충분 지표 인거 같다.)

 한번 이런 방법으로 평가 지표를 최적화했다면, 조금더 진척 속도를 올릴 수 있게 된다.

참고로 해당 주제와 관련하여 강의가 공개되어 있으니 참고하면 좋을 것 같다.

< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 9. Optimizing and satisficing metrics 을 번역한 내용입니다.>

댓글