개발자들을 위한 성공적인 머신러닝의 10가지 핵심 요소

ITWorld

머신 러닝이 데이터 깊숙이 묻혀 있는 패턴을 발견해준다는 점에서 애플리케이션의 성능을 높이고, 사용자의 수요에 더욱 민감하게 만들 수 있다는 잠재력이 있다. 제대로 고안한 알고리즘을 통해 인간의 사고와 분석적 한계를 뛰어넘어 엄청난 양의 이질적인 데이터로부터 가치를 뽑아낼 수 있다. 머신러닝은 개발자가 비즈니스에 필수적인 분석을 그 어떤 애플리케이션에도 적용하고, 고객 경험을 높이거나 제품 추천을 제공하고, 더욱 개인화된 콘텐츠를 제공하는 것까지 달성하게 해준다.

아마존과 마이크로소프트와 같은 클라우드 제공업체들은 개발자가 머신러닝을 손쉽게 통합할 수 있는 클라우드 기반의 솔루션을 제공함으로써 최근 화제를 불러일으켰다. 무엇인가 굉장해 보이기는 하나, 개발자들의 주의가 필요해 보인다.

클라우드 기반의 머신러닝 도구는 개발자가 머신러닝을 활용하여 참신한 기능을 구현할 수 있도록 한다. 하지만 이런 도구를 적절하게 활용하지 않으면 형편없는 결과로 사용자에게 좌절감을 줄 수 있다. 마이크로소프트의 나이 감지 머신러닝 도구를 시험해본 사람이라면 알겠지만, 사용 편의성이 뛰어난 만큼 중대한 정확도 문제가 대두한 바 있으며, 신뢰하거나 중요한 의사를 결정할 때 참조할 수 없는 경우도 많다.

머신 러닝을 자신의 애플리케이션에 도입하려는 개발자는 성공을 위한 일부 핵심 요소를 염두해야 한다.

1. 알고리즘의 데이터가 많으면 더욱 정확해진다. 따라서 가능하다면 부차 표본 추출은 피한다.

머신러닝 이론에는 예측 오차에 대한 매우 직관적인 특성이 있다. 쉽게 말해서 머신러닝 모델과 (이론상 최고의 오류를 달성하는) 최적 예측변수 사이의 예측 오차의 공백은 세 부분으로 분류할 수 있다.

1. 모델을 위한 적절한 기능적인 형태가 없기 때문에 발생하는 오차
2. 모델을 위한 최적의 파라미터가 없기 때문에 발생하는 오차
3. 모델에 충분한 데이터를 제공하지 않기 때문에 발생하는 오차

훈련 데이터가 제한된 경우 문제를 위해 필요한 모델 복잡성을 뒷받침하지 못할 수 있다. 통계의 기능적 법칙을 통해 우리는 가능하다면 부차 표본이 아닌, 우리가 가진 모든 데이터를 이용해야 한다.

2. 주어진 문제에 가장 적절한 머신러닝 학습법을 선택하는 것이 핵심이며, 이는 성공가 실패를 결정하기도 한다.
예를 들어, 정확도가 높은 GBT(Gradient Boosting Tree)는 업계 실무자들이 널리 활용하고 있는 인기 감독 학습 알고리즘이다. 하지만 그 높은 인기에도 불구하고 모든 문제를 위한 알고리즘으로써 맹목적으로 취급해서는 안 된다. 대신에 항상 가장 정확한 결과를 위해 데이터의 특성에 가장 적합한 알고리즘을 항상 사용해야 한다.

이 개념을 입증하기 위해 GBT와 선형 SVM(Support Vector Machine) 알고리즘 사이의 정확성을 인기 있는 텍스트 범주와 데이터세트 rcv1에서 비교하는 실험을 해봐도 된다. 실제로 실험해본 결과, 선형 SVM이 이 문제에 대한 오류율 측면에서 GBT보다 우월하다는 사실을 발견했다. 이는 텍스트 영역에서 데이터가 종종 고차원적이기 때문이다. 선형 분류자는 N개의 예시를 N-1 차원으로 완벽하게 분리할 수 있어, 단순한 모델은 이런 데이터에서 제대로 기능하게 된다. 게다가 모델이 간단할수록 한정된 수의 훈련 예제로 파라미터를 학습할 때 문제가 덜 발생하여 과적응을 방지하고 정확한 모델을 제공할 수 있다.

한편, GBT는 매우 선형적이며, 더욱 강력한 성능을 자랑하지만, 학습이 더 어렵고 이런 설정에서 과적응의 경향이 더욱 크다. 때로는 정확도가 떨어질 수도 있다.

3. 뛰어난 모델을 얻기 위해서는 방법과 그 방법에 관한 파라미터를 반드시 잘 선택해야 한다.
데이터가 공학자가 아닌 사람들에게는 간단하지 않을 수 있다. 현대의 머신러닝 알고리즘은 변경할 수 있는 부분이 많다. 예를 들어, 인기 있는 GBT 알고리즘 단독으로도 트리(Tree) 크기 제어 방법, 학습률, 행이나 열의 샘플 채취 방법론, 손실 함수, 조직화 옵션 등을 포함하여 최대 12개의 파라미터를 설정할 수 있다. 일반적으로 프로젝트에서는 각 파라미터에 대한 최적값을 찾아 주어진 데이터 세트에 대해 가장 높은 정확도를 얻어야 하는데, 그리 쉬운 일이 아니다. 직관과 경험이 도움되긴 하지만, 데이터 공학자는 최선의 결과를 위해 다수의 모델을 훈련하면서 교차 검증 점수를 파악하고, 다음에 시도할 파라미터를 결정하는 일을 고민해야 할 것이다.

4. 머신러닝 모델이 데이터와 마찬가지일 수도 있다. 부적절한 데이터 수집과 청소로 일반화가 가능한 예측 가능한 머신러닝 모델을 구축하는 능력이 저하될 수 있다.
주제와 관련된 전문가와 데이터를 신중하게 검토하여 데이터와 그 이면의 생성 프로세스에 대한 통찰력을 얻는 것이 좋다. 종종 이 과정으로 기록, 기능, 값, 샘플 채취 등과 관련된 데이터 품질 문제를 식별할 수 있다.

5. 데이터의 특징을 이해하고 (새로운 기능을 만들어내면서 기존의 것들을 없애) 향상시키면 예측 가능성을 높일 수 있다.
머신러닝의 기본적인 역할 중 하나는 머신러닝 알고리즘을 효과적으로 활용할 수 있는 풍부한 기능 공간에서 미가공 데이터를 표현하는 것이다. 예를 들어, 수학적 변화를 통해 기존의 기능을 토대로 새로운 기능을 개발하는 '기능 변화'는 이를 인기 있는 방법이다. 그 결과 기능 공간(즉, 데이터를 특징짓기 위해 사용하는 기능의 집합)은 (여러 기능들 사이의 비선형성과 상호작용 등) 데이터의 여러 복잡한 특성을 잘 잡아내며, 이는 다음 학습 프로세스에 중요하다.

6. 기업 가치에 부합하는 적절한 목적/손실 함수의 선택은 애플리케이션의 궁극적인 성공에 중요하다.
거의 모든 머신러닝 알고리즘이 최적화 문제로 표현되고 있다. 기업의 특성에 기초하여 최적화의 목적 함수를 적절히 설정하거나 조정하는 것이 머신러닝의 성공을 위한 핵심이다.

그 예로, SVM은 모든 유형의 오류의 가중치가 동등하다고 가정함으로써 바이너리 분류 문제에 대한 일반화의 오류를 최적화한다. 이는 고장 감지 등 특정 유형의 오류의 비용이 다른 것보다 더욱 중요할 수 있는 비용에 민감한 문제에 적합하지 않다. 이때, 가중치를 고려하기 위해 특정 유형의 오류에 더 많은 패널티를 더함으로써 SVM 손실 함수를 조정하는 것이 좋다.

7. 적절한 훈련 및 시험 데이터를 취급함으로써 모델을 제품에 배치할 때 시험 데이터를 유입되는 데이터처럼 보이도록 한다.
이 점이 시간에 의존하는 데이터일 경우 얼마나 중요한지 알 수 있다. 이때, 훈련, 조율, 시험 모델을 위해 표준 교차 검증 접근방식을 사용하면 잘못되거나 정확하지 않은 결과로 귀결될 수 있다. 그 이유는 배치 단계에서 유입되는 데이터의 특성을 적절히 모방하지 않기 때문이다. 이를 바로잡기 위해서는 배치 시 모델이 사용되는 방식을 반드시 모방해야 한다. 훈련한 모델을 시간의 측면에서 더욱 새로운 데이터에 대해 검증하는 시간 기준 교차 검증을 이용해야 한다.

8. 배치 전 모델의 일반화의 오류를 이해한다.
일반화의 오류는 모델이 보이지 않는 데이터를 얼마나 잘 처리하는지를 측정한다. 모델이 훈련 데이터를 잘 처리한다고 해서 반드시 보이지 않는 데이터에 잘 일반화되는 것은 아니다. 모델의 일반화의 오류를 예측하기 위해 실제 배치 용법을 모방한 신중하게 설계한 모델 평가 프로세스가 필요하다.

인지하지도 못한 채 교차 검증의 규칙을 위반하기 쉬우며, 교차 검증을 올바르지 않게 수행하는 방식이 명확하지 않아 연산을 위한 지름길을 이용하려 시도할 때 자주 발생한다. 배치 성능에 대한 과학적인 예측을 얻기 위해 모델을 배치하기 전에 적절하고 성실한 교차 검증에 주목하는 것이 중요하다.

9. 텍스트, 시계열, 공간, 그래프 데이터, 이미지 등의 비구조화 및 준구조화 데이터를 처리하는 방법을 파악한다.
대부분의 머신러닝 알고리즘은 각각 객체의 특성을 기술하는 일련의 기능으로 객체를 표현하는 기능 공간에서 데이터를 다룬다. 실제로 이런 형식으로 해당 세트에 도입되는 대신 데이터는 종종 미가공 형태로 유입되며, 머신러닝 알고리즘의 소비를 위해 반드시 바람직한 형태로 만들어야 한다. 예를 들어, 이로부터 다양한 특징을 추출하기 위해 다양한 컴퓨터 비전 기법을 사용하는 방법이나 텍스트를 특징짓기 위해 자연어 처리 기법을 적용하는 방법을 알아야 한다.

10. 기업 문제를 머신러닝 알고리즘으로 변화하는 문제를 학습한다.
사기 감지, 제품 추천, 표적 광고 등 기업에서 중요하게 여기는 일부 문제를 실제적으로 해결한 '표준' 머신러닝 공식이 있다. 이런 잘 알려진 문제뿐만 아니라, 덜 알려졌지만 예측 정확성이 더 높은 더욱 강력한 공식이 존재한다. 블로그와 포럼에서 일반적으로 논의하는 일련의 소규모 예시 외의 기업 문제의 경우 적절한 머신러닝 공식이 덜 명확하다.

개발자에게 있어서 이런 성공을 위한 10가지 핵심 요소를 학습하기가 것이 쉽지 않아 보일 수 있지만 낙담할 필요는 없다. 사실 개발자들은 데이터 공학자가 아니다. 개발자가 머신러닝이 제공하는 모든 도구를 활용할 수 있다고 생각하는 것 자체가 무리일 수 있다. 하지만 그렇다고 해서 개발자가 자신의 애플리케이션의 성능을 높이기 위해 일정 수준의 데이터 공학을 배우지 않아도 된다는 것은 아니다. 적절한 기업 솔루션과 향상된 자동화가 있으면 개발자는 높은 정확성을 보유한 머신러닝 모범 사례를 이용해 모델 구축부터 배치까지 모든 것을 할 수 있다.

자동화는 애플리케이션 내 머신러닝 확산의 핵심이다. 개발자와 밀접히 협력할 수 있는 소수의 데이터 공학자를 확보할 수 있다 하더라도 충분한 인력을 확보할 수는 없다. 스카이트리(Skytree)의 오토모델(AutoModel)의 사례가 모델 정확성 최대화를 위한 최적의 파라미터와 알고리즘을 자동으로 결정하는 데 도움이 될 수 있다. 사용이 간편한 인터페이스를 통해 개발자는 훈련, 조율, 시험 모델의 과정을 거치면서 통계적 실수를 방지할 수 있다.

머신러닝 프로세스 내의 자동화는 여러 측면에서 데이터 공학자나 개발자를 위해 인공지능의 원리를 통합하고, 알고리즘이 생각하고 학습하는 모델 구축 작업의 부담을 크게 덜어줄 수 있다. 즉, 데이터 공학자를 머신러닝과 분리하여 생각할 수 있다는 생각이 실수이며, 특히 업무에 필수적인 모델의 경우에는 더욱 그렇다. 기초 기술의 정확함, 정교함, 확장성 등에 대한 생각 없이 적용할 수 있는 간편한 머신러닝 기능의 가능성을 인지하자. 이를 통해 높은 예측 정확성과 머신러닝이 제공해야 하는 이로 인한 높은 비즈니스적 가치를 얻을 수 있다. 게다가 애플리케이션에서 형편없는 모델을 제공하면 실제로 역효과를 낳고 사용자들 사이에서 제품이나 서비스에 대한 불신이 신속하게 쌓일 수 있다. editor@itworld.co.kr