6 분 소요

image



Structuring Machine Learning Projects

Comparing to Human-level Performance

Why human-level performance?

지난 몇 년간 더 많은 머신러닝 팀들이 머신러닝 시스템과 인간 수준 성능 비교에 대해 얘기하기 시작했습니다. 왜 그럴까요? 두 가지 큰 이유가 있다고 봅니다.

첫째, 딥 러닝의 발전으로 머신러닝 알고리즘이 갑자기 더 잘 구동되면서 많은 응용 분야에서 머신러닝 알고리즘이 실제로 인간 능력에 경쟁할 수준에 다가섰습니다.

둘째, 기계 학습 시스템을 설계하고 구축하는 작업 흐름을 만들 경우 인간도 할 수 있는 일을 하려고 할 때의 작업 흐름이 훨씬 더 효율적이라는 것이 밝혀졌습니다.

따라서 이러한 환경에서는 인간 수준의 성능을 비교하거나 모방하는 것에 대해 논의하는 것이 당연해집니다. 몇 개의 예시를 통해 구체적으로살펴보도록 하겠습니다.


image 시간을 두고 진행되는 머신러닝 작업들을 많이 봐 왔는데요. 이 경우 x축은 시간으로 팀이나 리서치 커뮤니티의 작업 기간이 수개월 또는 수년이 될 수 있습니다.

성능이 인간 수준에 근접할수록 빠른 진전이 일어나는 경향이 있는데요. 조금 지나면 알고리즘이 인간수준 성능을 뛰어넘으면서 진행속도나 정확도가 정체되기 시작합니다. 그러면서 능숙도가 증가할 수도 있지만 인간 수준 성능을 능가한 뒤에도 지속적으로 더 좋아질 수는 있지만 성능, 즉 정확도 상승 속도는 보통 더뎌지게 됩니다.

결국에는 이론적 최적 성능 수준을 달성하면 좋겠죠. 그러나 알고리즘을 계속 훈련시키면서 더 많은 데이터를 더 큰 모델에 사용할 수는 있겠지만 성능은 이론적인 한계점에 다가갈 뿐 절대로 거기에 도달하지는 않습니다.

이를 베이즈 최적 오류라고 합니다. 이 베이즈 최적 오류를 가장 최상의 오류라고 생각하시면 됩니다. 이것이 바로 어떤 x, y함수 매핑이 일정 정확도를 넘는 방식입니다.

음성 인식을 예로 들면 x가 오디오 클립이라면 어떤 오디오에는 노이즈가 너무 많아 내용 판단이 불가능한 경우도 있습니다. 이런 경우 완벽한 오류는 100%가 아닐 수 있습니다. 또는 고양이 인식 프로그램에서 이미지가 너무 흐릿해 이미지가 고양이 사진인지 여부를 전혀 인식하지 못할 수도 있습니다 이 경우에도 마찬가지로 완벽한 정확도가 100%가 아닐 수 있습니다.

그래서 베이즈 최적 오류 또는 베이지안 최적 오류, 줄여서 베이즈 오류는 x에서 y로의 매핑을 이론적으로 가장 정확하게 나타내는 함수입니다. 절대로 이 값을 넘을 수는 없습니다. 그렇기 때문에 아무리 오랫동안 문제 해결에 매달려도 이 보라색 선, 베이즈 오류를 못 넘기는 것이 놀랍지는 않습니다.

그리고 인간 수준 성능을 능가하기 전까지의 발전 속도는 보통 꽤나 빠릅니다. 그리고 간혹 그 이후로 느려지기도 하죠 여기에는 두 가지 이유가 있다고 생각됩니다. 왜 인간 수준 성능을 넘으면 진행 속도가 더뎌지는지 말이죠.

첫째, 많은 작업에서 인간 수준 성능이 베이즈 최적 오류 지점과 멀리 떨어져 있지 않기 때문입니다. 인간은 보통 사진을 보고 여기에 고양이가 있는지 아는 것 오디오를 듣고 전사하는 걸 아주 잘 합니다. 그렇기 때문에 인간 수준 성능을 이미 능가한 시점에서는 더 발전할 수 있는 부분이 제한적일 수 있는 것이죠.

둘째, 성능이 인간 수준에 미치지 못할 경우 여러 가지 도구를 이용해 성능을 개발할 수 있습니다. 이런 도구는 인간 수준 성능을 넘은 뒤에는 사용하기 어렵습니다.


image 즉 인간이 능숙한 작업들 여기에는 사진을 보고 사물을 인식하는 것 오디오를 듣거나 언어를 읽는 것 등이 포함되는데요. 이렇게 인간이 잘 하는 아주 자연적인 작업들의 경우 머신 러닝 알고리즘이 여전히 인간 성능에 못 미칠 때에는 인간으로부터 표기 데이터를 받아올 수 있습니다. 즉, 인간에게 물어보고, 예시들을 레이블화하여, 학습 알고리즘에 데이터로 반영할 수 있습니다.

다음에는 수동 오류 분석에 대해 알아보도록 하겠습니다. 하지만 인간이 여전히 어떤 알고리즘보다도 작업을 더 잘 처리하는 경우 알고리즘이 틀린 부분을 사람들에게 관련 예시로 물어봐 인간은 왜 맞았고 알고리즘은 왜 틀렸는지에 대한 통찰력을 기를 수 있습니다.

다음에는 이런 방법이 알고리즘 성능을 개선한다는 것도 배워보도록 하겠습니다. 편향과 분산에 대한 분석도 해볼 텐데요. 잠시 후 간략히 다뤄보도록 하겠습니다. 알고리즘이 인간수준에 못 미치는 이상 이런 주요 전략을 통해 알고리즘을 개선할 수 있습니다.

반면에 알고리즘이 이미 인간 수준 성능을 뛰어넘었을 경우 이 세 가지의 전략을 적용하는 것은 더 어려워집니다. 이런 이유 때문에 인간 수준 성능과 머신러닝을 비교하는 것 자체가 특히 인간이 잘 수행하는 업무 같은 경우에는 도움이 될 수 있습니다.

그리고 왜 머신러닝이 인간이 잘 하는 업무를 능숙히 복제하고 그 과정에서 인간 수준 성능마저 따라잡을 수 있는지도 잘 보여주고 있습니다. 특히, 편향과 분산이 이미 무슨 뜻인지 알고 있더라도 인간이 어떤 작업을 얼마나 잘 할 수 있는지 알면 편향과 분산을 얼마나 줄여야 하는지 더 쉽게 이해할 수 있습니다.


Aviodable Bias

앞서 학습 알고리즘이 훈련 세트에서 좋은 성능을 내면 좋다고 얘기했었는데요 가끔씩은 너무 잘하는 것이 별로 좋지 않을 수도 있습니다. 인간 수준 성능을 알면 그것에 따라 알고리즘이 훈련 세트에서 정확히 얼마나 좋은 결과를 내는 것이 바람직한지 알 수 있습니다. 무슨 뜻인지 자세히 설명드리도록 하겠습니다.


image

고양이 분류기를 자주 예시로 사용했었는데요. 사진을 보고 인식하는 과제에서 인간은 거의 완벽에 가까운 정확도를 가지고 있고 인간오류는 1%라고 해 봅시다. 이 경우 학습 알고리즘이 8% 훈련 오류 10% 개발 오류를 낸다면 훈련 세트에서 좀 더 좋은 결과를 내길 바랄 수 있습니다.

훈련 세트에서 알고리즘과 인간의 차이가 매우 크다는 것은 알고리즘이 훈련 세트에 잘 피팅되지 않고 있음을 보여줍니다. 그러므로 편향 또는 분산을 줄이기 위해 이번 경우에는 편향을 줄이는 데 중점을 둘 것 같은데요. 더 큰 신경망을 훈련하거나 훈련 세트를 더 오랫동안 돌려 볼 수 있습니다. 훈련 세트에서 더 잘하기 위해서요.

이번에는 같은 훈련 오류와 개발 오류를 보고 인간 수준 성능이 1%가 아니라고 가정해 봅시다. 그리고 다른 응용 프로그램 또는 다른 데이터 세트에서는 인간 오류가 7.5%라고 해 봅시다. 데이터 세트에 있는 이미지가 너무 흐려서 사람이 판단하기에도 고양이인지 여부를 알 수 없는 경우가 있을 수 있겠죠.

이 사례는 약간 부자연스러울 수 있긴 합니다. 인간은 사진을 보고 거기 고양이가 있는지 파악하는 데 아주 뛰어나기 때문이죠. 하지만 예시인 만큼 한번 보도록 하겠습니다. 데이터 세트에 있는 이미지가 너무 흐리거나 화질이 나빠 인간도 7.5%의 오류를 낸다고 가정해 봅시다. 이런 경우 훈련 오류와 개발 오류가 이전 예시들과 같긴 하지만 훈련 세트에서는 잘 하고 있는 것을 보실 수 있습니다. 인간 수준 성능에 약간 못 미치는 수준을 보이고 있습니다.

그리고 이 두 번째 예시에서는 이 요소를 조금 줄이는 데 집중하고 싶을 수 있습니다. 학습 알고리즘의 분산을 줄이는 겁니다. 이를 위해 정규화를 시도해 개발 오류를 훈련 오류와 비슷한 수준으로 만드는 것이죠. 이전 코스의 편향과 분산에 대한 내용에서는 주로 베이즈 오류가 0에 가까운 작업을 다뤘습니다. 여기서 일어난 일을 설명드리면 고양이 분류기를 예로 들면 인간 수준 오류를 베이즈 오류, 또는 베이즈 최적화 오류의 프록시 혹은 추정치로 생각하세요.

컴퓨터 비전 작업에서 이는 꽤 합리적인 프록시 값인데 사람은 컴퓨터 비전 영역에서 아주 능숙하고 인간 역량이 베이즈 오류 지점에 꽤 근접하기 때문입니다. 정의상 인간 수준 오류는 베이즈 오류보다 못합니다. 그 이유는 그 어떤 것도 베이즈 오류보다 나을 순 없기 때문이죠. 하지만 인간 수준 오류는 베이즈 오류에 근접할 수 있습니다.

여기서 놀라운 사실을 발견했는데요. 인간 수준 오류가 얼마인지에 따라 이 값은 베이즈 오류와 거의 같습니다만 무엇을 달성 가능하다고 생각하는가에 따라 이 두 사례의 동일한 훈련 오류와 개발 오류에 대해 집중하는 전략이 편향 감소 전략과 분산 감소 전략으로 달라집니다. 왼쪽 예시에서 8%의 훈련 오류는 굉장히 큰 값입니다. 1%까지 줄일 수 있다고 생각하면요. 이 경우 편향 감소 전략이 도움이 될 수 있죠.

반면 오른쪽 예시에서 베이즈 오류가 7.5%라고 생각하면 여기서는 인간 수준 오류를 베이즈 오류의 추정치 또는 프록시로 사용하고 있는데 만약 베이즈 오류가 7.5%에 가깝다고 생각되는 경우 훈련 오류를 더 줄일 수 있는 여력이 많지 않습니다. 7.5%보다 더 나은 값을 원하지는 않을 것인데 훈련 세트에 오버피트로 시작하는 것 만으로 대신 이 2% 차이를 줄이는 편이 훨씬 쉬울 것입니다.

정규화나 훈련 데이터를 더 수집해 분산을 줄이는 기술을 사용해 그 차이를 좁혀 볼 수 있을 것입니다. 여기서 관련 용어를 알아보면 자주 쓰이는 것은 아니지만 개인적으로 유용하기도 했고 이렇게 생각하는 편이 쉽기도 합니다. 베이즈 오류 또는 베이즈 오류의 근사치와 훈련 오류 간의 편차를 회피가능 편향이라고 부를 것입니다.

이제 훈련 성능을 오류가 베이즈 오류 값으로 내려갈 때까지 계속 개선시켜야 하는데요. 하지만 베이즈 오류보다 나으면 안 되겠죠. 사실 과적합을 하지 않는 이상 베이즈 오류보다 나을 수는 없습니다. 그리고 이 훈련 오류와 개발 오류의 차이는 알고리즘 분산 문제의 측정치입니다. 회피가능 편향이라는 용어는 편향이나 일부 최소 수준 오류가 있다는 것을 인정하는 셈이고 베이즈 오류가 7.5%인 경우 이 이하로 내려갈 수 없다는 뜻도 내포하고 있습니다. 이 오류값 밑으로 내려가면 좋지 않습니다.

따라서 훈련 오류가 8%라면 그 8%를 편향이라고 하는 것이 아니라 회피가능 편향이 0.5%이거나, 0.5%가 회피가능 편향이라고 말하는 것입니다. 반면 2%는 분산이므로 이 0.5%를 줄이는 것보다 2%를 줄이는 것이 훨씬 더 쉽습니다.

반대로 왼쪽 예시에서는 7%는 회피가능 편향이고 2%가 현재 갖고 있는 분산입니다. 따라서 왼쪽 예시에서는 회피가능 편향을 줄이면 더 큰 효과를 얻을 수 있겠죠.

이번 예시에서는 인간 수준 오류에 대해 다뤘는데요. 베이즈 오류 추정치를 이해하면 시나리오마다 각각 다른 전략으로 접근해 편향 회피나 분산 회피 전략을 사용할 수 있습니다.. 무엇을 중점을 둘지 결정할 때 인간 수준 성능을 얼마나 고려할지에 대해서는 좀더 세심한 고려가 필요합니다.

댓글남기기