brunch

You can make anything
by writing

C.S.Lewis

by 히말 Apr 07. 2021

[둔필승총] 머신러닝의 '기술적' 기본

출처: https://www.youtube.com/watch?v=gJ9NcxPUSPE


<Hands-On Machine Learning with Scikit Learn and TensorFlow>라는 책이 있다. 책에 나오는 코드가 자꾸 안 먹혀서 무슨 문제가 있나 하고 검색해 보니, 싸이킷 런이고 텐서플로고 다들 업뎃이 돼서 옛날 코드가 안 먹히는 것이었다. 그래서 내용이 업뎃된 2판이 있다는 사실도 알게 됐다. 사진에 보이는 붉은 책이 1판, 하얀 책이 2판이다.


오늘은 이 책 1장을 정리하면서 머신러닝의 기본에 대해 메모하고자 한다.


1. 머신러닝이란 무엇인가? 이 문제는 페드로 도밍고스가 <마스터 알고리즘>에서 거의 완벽한 대답을 내놨다. '이 결과를 출력하는 알고리즘은 무엇인가'하는 문제에 대답하는 것이 머신러닝이다. 1세대 인공지능이 '물고기 낚는 법'을 가르쳤다면, 머신러닝은 기계가 스스로 낚시를 하면서 노하우를 익히는 것이라 할 수 있다.


2. 페드로 도밍고스는 머신러닝 알고리즘을 다섯 가지 종족으로 분류하지만, 이 책에 나오는 것이 더 일반적인 분류다. 정답 제공 여부에 따라 지도학습과 비지도학습으로 나눌 수 있고, 모형을 만드는지 여부에 따라 사례 기반 또는 모형 기반 ML로 분류가 가능하며, 실시간 학습 여부에 따라 배치(batch) 학습과 온라인 학습으로 구별할 수 있다. (저자의 말에 따라, 온라인이라는 헷갈리는 용어보다는 '점진적' 학습이라 부르는 것이 좋다고 본다.)


3. 과대적합(overfitting)은 데이터에 비해 모형이 너무 복잡할 때 발생한다. 처음 보는 라틴계 아기를 보고 '아기 하녀'라고 불렀던 백인 소녀의 경우처럼, 적은 사례를 기반으로 지나친 일반화를 하는 오류다. 과대적합은 모형의 단순화 또는 규제(regularization)로 대처할 수 있는데, 규제에 필요한 것이 하이퍼패러미터(hyperparameters)다.


4. 하이퍼패러미터를 통해 모형을 규제하는 정도를 조절할 수 있다. 모형 자체가 사용하는 패러미터(예컨대 회귀모형의 기울기)에 대응하여, 학습 알고리즘 자체가 사용하는 것이 하이퍼패러미터다(예컨대 규제 정도를 조정하는 변수).


5. 데이터 셋(data set)을 보통 훈련 셋과 테스트 셋으로 나눈다. 훈련 셋으로 모형을 훈련시킨 후, 테스트 셋으로 검증하는 것이다. 그러나 다양한 하이퍼패러미터를 시험해보면서 테스트 셋을 사용하게 되면, 하이퍼패러미터 자체가 과대적합 문제를 일으키게 된다. 그래서 훈련 셋의 일부를 검증 셋(또는 개발 셋)으로 분리해서 하이퍼패러미터 미세조정(tuning)에 사용하는 것이 일반적이다. 이 경우 훈련 셋과 검증 셋을 다양한 조합으로 사용하는 교차검증(cross-validation)이 일반적으로 사용된다. 교차검증의 유일한 문제점이라면 시간이 많이 걸린다는 것.


6. 훈련 셋과 테스트 셋의 데이터가 실제로는 다른 유형의 데이터일 수가 있는데, 이를 데이터 미스매치라 한다. 예컨대 꽃 사진을 찍으면 꽃 이름을 알려주는 앱을 만든다고 하자. 이때 훈련 셋으로 구글로 긁어온 웹 이미지를 사용한다면 데이터 미스매치가 발생할 수 있다. 웹 이미지와 휴대폰 사진은 근본적으로 다른 성질을 지니기 때문이다. 데이터 미스매치가 문제되는 이유는, 모형이 잘 작동하지 않을 경우 그 원인이 과대적합인지 데이터 미스매치인지 알 수 없기 때문이다. 이를 우회하는 방법 중 하나는 훈련 셋의 일부를 '훈련-개발 셋(train-dev set)'으로 분리하여 검증용으로 사용하는 것이다. (그러니까 '검증 셋' 내지 '개발 셋'으로 검증하기 전에 한 번 더 검증하기 위해 사용하는 것이 '훈련-개발 셋'이다. 그러니까 이제 데이터 셋이 네 개다.) 모형이 '훈련-개발 셋'에 잘 맞으면 데이터 미스매치가 문제인 것이고, 그렇지 않다면 모형 자체의 문제, 즉 과대적합이다.

매거진의 이전글 이언 스튜어트, 강신주, 그리고 법륜
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari