The ML Mindset

머신러닝은 당신이 문제에 대해 생각하는 방법을 바꿉니다. 문제의 초점이 수학에서 자연과학으로 옮겨가면서 논리가 아닌, 실험과 통계에 기반하게 됩니다. - Perter Norvig

전통적인 방식의 소프트웨어 엔지니어링은 요구사항으로부터 실행가능한 디자인까지 추론해낼 수 있습니다. 그러나 머신러닝에서는, 실행가능한 모델을 찾기 위해서 실험이 필수적입니다.

많은 머신러닝 시스템은 인간과 다르게 신호를 해석함으로서 지식과 지능을 인코딩하는 모델을 만듭니다. Neural Network(인공신경망, 이하 NN)는 임베딩을 통해 단어를 해석할 수도 있을 겁니다. 예를들어, "tree"는 [0.37, 0.24, 0.2], "car"는 [0.1, 0.78, 0.9]와 같은 식으로 해석될 것입니다. NN은 이러한 결과를 번역이나 감정 분석등에 사용할 수 있겠지만, 이는 사람이 봤을 때에는 도무지 이해할 수 없는 형태일 것입니다. 이러한 부분들이 기계 입장에서의 지능을 인간 입장에서 상당히 이해하고 평가하기 어렵게 만듭니다. 아예 불가능하지는 않겠지만요.

모델은 왜곡된 교육 데이터부터 시작해, 예상치 못한 해석에 이르기까지, 여러가지 디버깅하기 어려운 실수들을 범합니다. 게다가, 이를 실제 제품에 적용하려면, 상호작용이 훨씬 복잡해질테고, 이런 이유로 가능한 모든 상황을 예측하고 테스트하는 것이 어려울 수 있습니다. 이러한 문제들을 해결하기 위해 제품을 담당하는 팀이 머신러닝 시스템의 기능과 개선 방법을 이해하는 데에 많은 시간을 투자하는 것이 필요합니다.

Experimental Design Primer

어느 정도의 불확실성에 대해서는 익숙해지세요.

단순히 문제를 다르게 생각하는 것을 넘어, ML의 구현은 기존의 프로그래밍 방식과는 다릅니다. 전통적인 방식에서의 프로그래밍은 매개변수를 설정하고 모든 것이 어떻게 동작하는지에 대해 개발자가 이해할 수 있습니다. 허나 ML에서는, 일반적으로 훨씬 더 적은 양의 코드를 작성하지만, 코딩 이외의 작업이 매우 복잡할 수 있습니다.

사용가능한 모델만 만들고 끝내고 싶다고요? 이런 생각은 처음부터 글러먹었습니다.

과학적 방법론

ML로 전환하는 문제를 해결하기 위해서, ML 프로세스는 테스트에 테스트를 거듭하여 실행 가능한 모델에 수렴해나가기 위한 실험 과정으로 이해하면 도움이 됩니다. 마치 실험과도 같이, 그 과정은 흥미롭고 도전적이고, 궁극적으로 가치있을겁니다.

StepExample
1. 연구 목표 설정주어진 날짜에 교통 체증이 얼마나 발생할지를 예측하고 싶다.
2. 가설 세우기아마 일기 예보가 좋은 정보가 될 것 같은데?
3. 데이터 수집각 날짜의 교통과 날씨 정보를 수집한다.
4. 가설을 테스트한다.수집한 데이터로 모델을 훈련시킨다.
5. 결과를 분석한다.지금보다 더 좋은 모델이 나올 수 있을까?
6. 결론을 도출한다.X, Y, Z 때문에, 이 모델을 사용해야(하지 말아야) 한다.
7. 새로운 가설을 세우고 다시 반복한다.1년을 기준으로 본 시간이 의미가 있을 수도 있어!