6 분 소요

image



Structuring Machine Learning Projects

Setting Up your Goal

Satisficing and Optimizing Metric

하이퍼 파라미터를 튜닝하거나 알고리즘 교육에 다른 아이디어를 시도하거나 머신러닝 시스템을 만드는 데 있어 다양한 옵션을 시도하는 등 어떤 경우라도 단일 실수 평가 지표가 있다면 진행 속도가 훨씬 빨라지는 것을 보게 될 것입니다. 이 지표는 새롭게 시도한 것들이 더 잘 작동하는지 더 안 좋은 결과를 내는지 알려 주기 때문입니다. 그래서 보통 팀들이 머신러닝 프로젝트를 시작할 때 단일 실수 평가 지표를 사용할 것을 권장합니다.


image

예시를 한번 보겠습니다. 응용 머신러닝은 실증적 증거에 기반한 절차입니다. 어떤 아이디어가 있으면 이를 코드화하고 실험을 해 결과를 획득하고 그 결과를 이용해 아이디어를 정제합니다. 이러한 절차를 계속 루프처럼 반복해 알고리즘을 계속 개선해 나갑니다.

예를 들어 분류기 A를 전에 만들어 두었다고 해 봅시다. 그리고 하이퍼 파라미터와 훈련 세트 등에 변화를 주어 새로운 분류기 B를 훈련했다고 해봅시다. 한가지 합리적인 분류기 성능 평가 방법은 정밀도와 재현율을 보는 것입니다. 정확히 정밀도와 재현율이 어떻게 되어 있는지 보는 것은 이번 예시에서 사실 그리 중요하지 않습니다. 간단히 말해 정밀도의 정의는 고양이 인식 분류기를 예로 들면 몇 퍼센트가 고양이인지 보여주는 정확도입니다.

만약 분류기 A가 95%의 정확도를 보인다면 분류기 A가 고양이를 올바르게 판별하는 확률은 95%입니다. 재현율은 실제 고양이 이미지 중 몇 퍼센트가 분류기를 통해 올바르게 인식이 되었는가를 뜻합니다. 그렇다면 만약 분류기 A의 재현율이 90%라고 하면 모든 개발 세트의 이미지에서 실제로 고양이인 이미지를 90% 정확도로 인식했다는 뜻입니다. 그러니 정밀도와 재현율의 정의를 너무 신경쓸 필요는 없습니다.

정밀도와 재현율 간에는 트레이드오프가 존재하는 것으로 밝혀졌는데 둘 다 신경 쓸 수 밖에 없습니다. 만약 분류기가 어떤 것이 고양이라고 하면 그럴 확률이 매우 높기를 바랄 것입니다. 동시에 분류기가 실제 고양이 이미지의 대부분을 고양이라고 올바르게 인식하길 바랄 것입니다. 그렇기 때문에 분류기를 정밀도와 재현율의 기준에서 평가하는 것이 합리적인 것이라고 할 수 있습니다.

평가 측정 지표로 정밀도와 재현율을 사용할 때의 문제는 여기에서 그렇듯 분류기 A가 재현율에 강하고 분류기 B는 정밀도에 강한 경우 어떤 분류기가 더 좋은지 알기 어려울 수 있습니다. 여러 아이디어와 하이퍼 파라미터를 시도해 보고 있다면 단지 분류기 두 개만이 아니라 열댓 개를 테스트해 본 뒤 약 12가지의 분류기를 테스트해봐서 가장 좋은 것을 고르는 것이 좋습니다.

그 뒤로는 계속 반복 수행할 수 있습니다. 또 이 두 가지의 평가 지표로는 둘 중 하나를 빨리 선택하거나 열 개 중 하나를 선택하는 것이 어렵습니다. 그래서 분류기를 선택할 때 추천드리는 것은 정밀도와 재현율이라는 수치 두 개를 사용하기보다는 정밀도와 재현율을 결합한 새로운 평가 지표를 찾는 것입니다.

머신러닝 에서는 정밀도와 재현율을 결합할 때 F1 score라는 것을 쓰는 게 정석입니다. F1 score의 상세내용은 그리 중요하지 않습니다만 대략적으로 P라는 정밀도 값과 R이라는 재현율 값의 평균이라고 보시면 됩니다. 공식적으로 F1 score는 다음 공식으로 정의되는데요.

$\dfrac{2}{\cfrac{1}{P} + \cfrac{1}{R}}$

수학에서는 이 공식을 정밀도 P와 재현율 R의 조화평균이라고 합니다. 비공식적으로는 정밀도와 재현율의 평균값을 구하는 것이라고 생각하시면 편합니다. 산술 평균이 아니라 이 공식으로 정의된 조화 평균을 사용합니다. 정밀도와 재현율의 균형을 맞추는 데에는 장점이 있습니다만.

이번 예시에서는 분류기 A가 더 나은 F1 score를 갖는다는 것을 바로 보실 수 있습니다. F1 score가 정밀도와 재현율을 결합하는 데 합리적인 방법이라고 가정하면 분류기 A가 B보다 낫다고 빠르게 판단할 수 있겠지요.

평가 지표를 사용하면 분류기 A와 B 중 무엇이 더 나은지 빨리 파악할 수 있어 개발 세트와 단일 실수 평가 지표를 함께 사용하면 머신 러닝 알고리즘 개선을 위한 반복 수행 속도를 높일 수 있습니다.


image

다른 예시를 보시죠 고양이 애호가들을 위해 4대륙에 고양이 어플을 만든다고 해 봅시다 미국, 중국, 인도 그리고 나머지 지역에서요. 그리고 2가지 분류기가 이 네 대륙에서 얻은 데이터에서 다양한 오류를 냈다고 해 봅시다. 알고리즘 A는 미국 유저가 제출한 사진에서 3% 오류를 내는 식으로요.

그렇다면 이 서로 다른 시장 또는 대륙에서 분류기가 얼마나 잘 작동하는지 추적하는 것이 합리적일 수 있습니다. 하지만 이 네 수치를 추적하면서 이를 보고 알고리즘 A와 B 중 무엇이 더 나은지 빨리 결정하는 것은 쉽지 않습니다. 그리고 여러 분류기로 테스트를 하게 되면 많은 수치를 보며 하나를 빨리 고르는 것은 꽤나 어렵습니다.

그래서 이번 예시에서 추천하는 것은 네 개 대륙에서의 성능을 추적하는 동시에 평균을 계산하는 것입니다. 평균 성능이 합리적인 단일 실수 평가 지표라고 하면 평균값을 산출함으로써 알고리즘 C가 가장 낮은 평균 오류값을 가지고 있다는 것을 빠르게 확인할 수 있습니다.

그럼 바로 C를 선택해 진행할 수 있겠죠. 지속적으로 반복 수행을 할 알고리즘을 골라야 합니다. 머신러닝에서의 작업은 보통 아이디어를 내고 이를 시도해 본 뒤 그 아이디어가 도움이 되었는지 확인하는 절차를 따릅니다.

단일 실수 평가 지표를 이용해 전체적인 효율성을 높이거나 프로젝트 팀의 효율적인 의사결정을 도울 수 있습니다. 효과적인 평가 지표를 구축하는 방법에 대한 논의가 아직 완전히 끝난 것은 아닙니다.


Satisficing and Optimizing Metric

중요시하는 부분을 모두 감안해 단일 열 평가 지표로 결합하는 것은 쉬운 일이 아닙니다. 개인적으로 이런 경우에는 만족 지표와 최적화 지표가 간혹 유용한 경우가 있었습니다. 어떤 의미인지 자세히 설명드리도록 하겠습니다.

image

고양이 인식 프로그램의 분류 정확도를 중요시하기로 결정했다고 가정해 보겠습니다. 이는 F1 score나 기타 정확도 측정 요소일 수도 있습니다. 이러한 정확도뿐 아니라 러닝 타임도 고려한다고 가정해 보죠. 이미지를 올바르게 분별하는데 얼마나 걸릴까요?

분류기 A는 80 밀리초 B는 95 밀리초 C는 1,500 밀리초가 걸립니다. 이는 이미지를 판별하는데 총 1.5초가 소요된다는 것이죠. 한 가지 할 수 있는 것은 정확도를 러닝타임과 결합시켜 종합 평가 수치를 만드는 방법입니다. 따라서 종합 비용은 정확도 - 0.5 x 러닝타임일 수 있겠죠.

하지만 정확도와 러닝타임을 이런 공식을 이용해 결합하는 프로세스 자체가 인공적이라 생각되실 수도 있습니다. 두 가지를 선형 가중 합계로 결합시키는 것처럼 말이죠.

그래서 대신 사용할 수 있는 다른 방법으로는 정확도를 최대화하는 분류기를 선택하는데 이 때의 러닝 타임 즉 이미지 분류에 소요되는 시간이 100 밀리초 이하여야 합니다. 이 경우 정확도를 최대화하고 싶기 때문에 정확도가 최적화 지표라고 할 수 있습니다. 정확성을 최대한 높이려고 할 경우 이 때의 러닝 타임을 만족 지표라고 부릅니다. 즉 어느 수준 이상이면 충분하다는 것입니다. 즉, 100 밀리초 이내라면 그 이후로는 더 이상 신경을 쓰지 않는 적어도 그렇게 많은 노력을 들이지 않는 요소입니다.

따라서 이는 러닝 타임과 정확성을 절충하거나 모두 고려하는 매우 합리적인 방법이 됩니다. 러닝타임이 100 밀리초 이내인 이상 유저들은 50 밀리초이건 100 밀리초이건 더 빠르건 신경쓰지 않을 것입니다. 그리고 최적화와 만족 지표를 정의하면서 최적의 분류기를 명확하게 볼 수 있습니다.

이 경우 분류기 B가 될 텐데요. 그 이유는 러닝타임이 100 밀리초 이내인 분류기 중 가장 정확도가 높은 것이기 때문입니다. 일반적으로, 중요하게 생각하는 N 지표가 있다면 그 중 한 가지를 최적화 지표로 고르는 것이 합리적일 수 있습니다. 거기에 대해서는 최대한 좋은 결과를 내야겠죠. 그리고 나서 N-1을 만족 지표로 합니다. 즉 어느 기준을 충족하는 이상 이 경우 러닝 타임이 100밀리초 이내인 이상 그 범위 안에 속하면 얼마나 그 이상 빠른지 여부는 신경 쓰지 않습니다. 하지만 그 기준까지는 도달해야겠죠.

예시를 하나 더 보겠습니다 웨이크 워드를 감지하는 시스템을 만든다고 가정해 봅시다. 트리거 워드라고도 하죠. 이는 아마존 에코와 같은 음성 인식 기기에서 알렉사 라고 이야기해 기기를 깨우거나 구글 기기같은 경우 오케이 구글 애플의 경우 헤이 시리 바이두 기기의 경우 니하오 바이두라고 얘기하는 경우입니다.

이러한 웨이크 워드는 음성인식기기를 깨우는 데 사용되는데요 먼저 이런 단어를 말하고 나서 하고 싶은 말을 이어서 하는 것입니다. 니하오 바이두와 같은 중국어의 경우 트리거 워드 감지 시스템의 정확도에 신경써야 할 수도 있습니다. 그래서 누군가 이런 트리거 워드를 말하는 경우 음성인식기기를 깨울 확률이 얼마나 될지 거짓 긍정 개수를 신경 쓸 수도 있겠죠. 즉 아무도 트리거 워드를 사용하지 않은 경우에도 갑자기 기기가 랜덤으로 깨어나는 경우는 얼마나 자주 발생할까요?

이런 경우 두 가지 평가 지표를 결합하는 합리적인 방법 중 하나는 정확도를 최대치로 올리는 것입니다. 즉 누군가 트리거 워드를 말할 경우 음성인식기기가 깨어날 확률을 최대치로 한 이후 그에 따라 24시간마다 최대 한 개의 거짓 긍정만 허용하는 것입니다. 이렇게 하여 기기가 무작위로 스스로 작동하는 경우가 평균적으로 최대 딱 한번만 일어날 수 있도록 설정하는 것입니다.

이런 경우 정확도가 최적화 지표가 되고 24시간 이내의 거짓 긍정 개수가 만족 지표가 되는 것입니다. 이 때 24시간 이내 최대 한 개의 거짓 긍정이 발생했을 경우에만 만족이 성립합니다.

요약하자면, 만약 고려 요소가 여러 가지 있을 경우 가장 좋은 결과가 났으면 하는 부분을 최적화 지표로 설정하고 어느 정도 이상이면 충분한 요소 한 개 이상을 만족 지표로 설정합니다. 그러면 이제 다양한 선택지를 빠르게 보고 가장 좋은 것을 거의 자동적으로 선택할 수 있습니다.

이제 평가 메트릭은 다음과 같아야 합니다 훈련 세트나 개발 세트, 시험 세트에서 평가 또는 계산되어야 합니다. 그래서 한 가지 해야 할 것은 바로 훈련과 개발 세트 시험 세트를 설정하는 것입니다.

댓글남기기