머신러닝 초심자가 하는 실수들 (How Beginners Get It Wrong In Machine Learning)

SHARE

데이터 분석의 중요성이 높아지면서, 그 근간이 되는 머신러닝(Machine learning, a.k.a 기계학습)에 대한 관심도도 덩달아 높아지고 있습니다. 알고리즘을 통해 다양한 ‘예측’을 해 내는 머신러닝은, 그 방법론 중 하나인 딥러닝의 발달로 더욱 진일보한 발전을 이뤘는데요. 머신러닝이 주목을 받으면서 이를 배우고자 하는 이들도 폭발적으로 증가했습니다. 그러나, 머신러닝에 대해서 지나치게 이론에만 매몰된다거나, 머신러닝이 모든 것을 해결해줄 것이라는 믿음으로 과하게 맹신하다 보면 함정에 빠져서 쉽게 벗어나오지 못하게 됩니다.

호주의 머신러닝 연구 커뮤니티인 Machine Learning Mastery를 이끄는 머신러닝 전문가 Jason Brownlee 박사는 흔히 머신러닝 초심자들이 저지르는 위와 같은 실수들을 5가지로 정리하고, 이에 대한 해결책을 제시합니다. 단순히 머신러닝에 관심이 있던 개발자 출신으로 머신러닝 전문가가 된 그가 이야기하는 ‘머신러닝 초심자가 하는 실수들’을 아래에 소개합니다.

—–

[번역] 머신러닝 초심자가 하는 실수들 (How Beginners Get It Wrong In Machine Learning)
원문 링크 : https://machinelearningmastery.com/beginners-get-it-wrong/

저는 초심자들이 머신러닝을 잘 시작할 수 있도록 돕고 있습니다. 그들은 항상 사고방식과 행동 모두에서 같은 실수를 반복하고는 합니다. 이 글에서는 머신러닝 초심자들이 일반적으로 하는 실수들과 그것을 극복할 수 있는 5가지의 방법들을 이야기하려 합니다.

“저는 누구라도 기계학습을 시작할 수 있고, 잘 배울 수 있다고 믿습니다”

다행히 여러분은 아래의 최소 한 개 이상의 함정에서 본인이 처한 상황을 확인하고, 올바른 길로 가게끔 조치를 취할 수 있습니다. 한번 시작해 봅시다.


1. 머신러닝을 이론으로 시작하지 마세요

머신러닝의 전통적인 접근법은 ‘Bottom up’방식입니다.

1) 수학의 배경을 배우기 위해 열심히 노력하라
2) 머신러닝의 이론을 배우기 위해 열심히 노력하라
3) 처음부터 알고리즘을 구현하기 위해 열심히 노력하라
4) ??? (여기에 ‘마법’을 부립니다)
5) 마지막으로, 머신러닝을 시작합니다! (목표 달성!)

이 접근 방식은 느리고 힘듭니다. 그렇기 때문에, 이것은 최고 수준으로 그 영역을 확장하고픈 학자들에게 어울리는 방식입니다. 결과를 바로 얻기 원하는 실무자에게는 적합하지 않습니다.

함정
여러분 스스로가 아래와 같은 생각을 하고 있다면, 함정에 빠진 것입니다.
– 나는 선형대수학 과정을 먼저 이수해야 된다
– 박사 학위를 따는 것이 먼저라고 생각한다
– 이 교과서부터 읽어야겠다

해결책
4년 동안 수학 혹은 난해한 알고리즘 이론을 배우는 것이 여러분이 목표로 하는 곳에 닿을 수 있도록 해줄까요? 아마도 여러분은 배우는 것을 멈출 것입니다. 실패나 마찬가지입니다.
목표에 가까이 다가가기 어렵다고 생각합니다.

해결책은 그 모델을 뒤집는 것입니다.

머신러닝이 시장에 미치는 ‘가치 있는’ 기여가 정확한 예측 집합이라면, 문제를 모델링하고 정확하게 예측하는 방법을 배우세요. 여기서부터 시작하는 겁니다. 그럼 정말로 잘하고 있는 것입니다.

단지 목표를 이루기 위해서라면, 가치를 보다 잘 전달할 수 있다고 생각하는 경우에 이론을 읽고, 훔치고, 이용하세요.

 

2. 머신러닝의 ‘모든 것을’ 공부하려 하지 마세요
머신러닝은 매우 범위가 넓은 학습 분야입니다. 컴퓨터를 이용한 학습 과정의 자동화이며, 인공지능과 깊은 관련이 있습니다. 거기에다 심오한 학습 이론에서 로봇 공학까지 굉장히 넓은 필드에 존재합니다.

여러분이 그것을 다 배우기에 머신러닝 분야는 범위가 매우 넓습니다.

함정
여러분이 아래와 같은 말을 하거나 생각한다면, 바로 함정에 빠진 것입니다.
– 나는 새로운 사이트에서 언급되는 각각의 새로운 기술에 대해 배워야만 한다
– 컴퓨터 비전, 자연어 처리, 언어 표현 등에 대해 배울 필요가 있다
– 나는 ‘모든 것’의 ‘모든 것’을 알아야만 한다

해결책
작은 모서리를 하나 선택한 후 그것에 집중하세요. 그리고 나서 다시 좁히세요.
머신러닝의 가장 중요한 영역은 예측을 위해서 데이터에서 모델을 생성하는 ‘예측 모델링’입니다. 거기서부터 시작하세요.

그 다음에는 가장 관련성이 높거나 흥미로운 예측 모델링 유형에 초점을 맞추세요.
그리고 포기하지 마세요.

어쩌면 당신은 딥 러닝같은 ‘기술’에 의해 머신러닝의 분야 중 하나를 선택할 수 있습니다. 또는, 추천 시스템과 같은 ‘문제 유형’에 의해서 선택할 수도 있습니다.

잘 모르겠으면 한 가지만 고르세요. 잘 하거나, 최소한 능숙하게 할 수 있도록.
그런 다음에 다른 영역으로 돌아가세요.

 

3. 알고리즘에 손대지 마세요
머신러닝은 실제로 알고리즘에 관한 것입니다.

많은 알고리즘이 존재합니다. 각각의 알고리즘은 복잡한 시스템임과 동시에 자체적인 연구 분야이기도 합니다. 그것은 독립적인 생태계입니다.

여러분은 스스로 알고리즘에 빠질 수 있습니다. 다른 사람들 또한 마찬가지입니다.
그들은 흔히 학구적이라고 불리곤 합니다.

함정
여러분이 아래와 같은 말을 하거나 생각한다면, 바로 함정에 빠진 것입니다.
– 나는 그것을 사용하기 전에 왜 작동하는지 알아야겠다
– 나는 먼저 하이퍼 파라미터에 대해 깊이 이해해야 한다
– 튜닝할 때 원인과 결과를 설명해야 한다

해결책
알고리즘은 결과가 아닌, 결과에 의한 수단입니다.
사실, 머신러닝 알고리즘은 정말 중요한 필수품입니다.

그것들을 바꿔 나가세요. 당신의 문제에 대해 많이 시도해 보세요.
그리고 그것들을 조금씩 조정해 본 후, 다음 단계로 넘어가세요.

더 나은 결과를 얻기 위해 알고리즘에 대해 더 많이 배울 수는 있지만, 멈출 때가 언제인지는 알 수 있습니다. 체계적인 프로세스를 사용하세요. 튜닝 실험을 설계하고, 실행 및 분석을 자동화하세요.

머신러닝은 거의 대부분 알고리즘을 잘 사용하는 것을 다루고 있지만, 실제 적용된 머신러닝은 단지 알고리즘만을 다루지는 않습니다.

각 프로젝트의 결과를 전달하는 목표에 초점을 맞추세요. 이 목표는 그것을 실현할 수 있게 해주는 모델이거나 예측 세트입니다.

 

4. 처음부터 모든 것을 구현하려 하지 마세요
알고리즘을 처음부터 실행함으로서 많은 것을 배울 수 있습니다.

적절하거나 사용가능한 구현이 없기 때문에 때로는 기술을 구현해야 할 필요가 있습니다.
하지만 일반적으로 여러분은 그럴 일이 없고, 그러지 말아야 합니다. 그렇게 된다면 여러분이 구현하고자 하는 것은 엉망이 될 지도 모릅니다.

그것은 버그가 있을 것입니다
그것은 느릴겁니다
그것의 메모리 용량은 비대해질 것입니다
그것은 엣지 케이스(알고리즘이 처리하는 데이터의 값이 알고리즘의 특성에 따른 일정한 범위를 넘을 경우에 발생하는 문제)는 제대로 처리할 수 없을 것입니다
심지어 잘못된 것일 수도 있습니다

함정
여러분이 아래와 같은 행동을 하고 있다면, 함정에 빠진 것입니다.
– CSV파일 로드를 위해 코딩을 하고 있다 (도대체 왜?)
– 선행 회귀와 같은 표준 알고리즘을 위해 코딩을 하고 있다
– 교차 유효성 검사 또는 하이퍼 매개변수 튜닝을 위한 코딩중이다

해결책
당장 멈추세요.

‘범용 라이브러리’를 사용하세요. 범용 라이브러리는 모든 특수 케이스까지 처리할 수 있는 정확한 방법으로 알려져 있으며, 이미 다른 개발자 수만, 수십만명이 사용중인 검증된 라이브러리입니다.

하드웨어의 모든 마지막 주기와 메모리의 마지막 바이트를 압축하는 고도로 최적화된 라이브러리를 사용하십시오. 자기 자신의 프로젝트에서 그래픽 사용자 인터페이스(GUI)를 사용하고 코드를 사용하지 않습니다.

여러분이 무언가를 사용하고 싶을 때마다 모든 것을 구현하는 것은 머신러닝을 시작하는 아주 느린 방법입니다.

학습을 위해서 그것을 구현하고 있다면, 본인에게 솔직해지고 이미 적용된 머신러닝으로 가치를 전달하는 방법을 배우시기 바랍니다.

 

5. 도구를 자꾸 바꾸려고 하지 마세요
훌륭한 머신러닝 도구가 이미 많이 있습니다.

사실 데이터 가용성, 빠른 하드웨어와 더불어 훌륭한 도구들이 있기 때문에 요즘 머신러닝의 ‘르네상스’가 다가왔다고 볼 수 있습니다.

하지만 이럴 때일수록 새로운 툴로 옮겨다니면서 함정에 빠질 수 있습니다.

함정
이런 본인을 발견한다면, 함정에 빠진 것입니다.
– 새로운 툴을 사용할 때마다 새로운 것을 듣게 됩니다
– 매주 혹은 매달 새로운 도구 또는 언어를 배웁니다
– 한 라이브러리를 배우자마자 그것을 뒤로 하고 새로운 라이브러리를 배우는 과정을
이미 반 정도 마칩니다

해결책
새로운 도구를 배우고 사용하세요. 하지만, 전략적이어야 합니다.
새로운 도구를 체계적인 프로세스에 통합하여 머신러닝 문제를 해결합니다.
여러분은 큰 주요 플랫폼 중 하나를 선택해서 그 플랫폼에 익숙해질 때까지 학습하는 것이 머신러닝 문제를 해결하는 데 훨씬 더 효율적일 것입니다.

추천하는 플랫폼은 아래와 같습니다.
Weka Workbench (웨카 워크벤치)
Python Ecosystem (파이썬 생태계)
R Platform (R 플랫폼)

여러분이 종사하고 있는 분야에 따라 또 다른 특수한 도구들이 있을 수 있습니다.
그 다음에 이어지는 과정은 취미와 전문가 정도의 차이가 있습니다.


전체 요약

본 글에서는, 머신러닝 초보자가 흔히 할 수 있는 5가지의 실수들에 대해 알아봤습니다.

이론으로 시작하지 마세요
모든 머신러닝을 배울 생각을 하지 마세요
알고리즘에 손대지 마세요
처음부터 모든 것을 구현하려 하지 마세요
도구를 항상 바꾸려고 하지 마세요

함정에 빠져 있거나 나가는데 도움이 필요하다면 저를 찾으세요.

■ 이론+실습으로 머신러닝을 배우는 패스트캠퍼스의 데이터분석 강의 보러가기 (Click)

Facebook Comments