Definition
가장 대표적으로 알려진 머신러닝의 정의는 다음과 같다.
어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것이다.
예를 들어 스팸 메일을 구분하는 머신러닝 프로그램을 제작했다고 하자.
위의 정의에 따르면 훈련 데이터(스팸 여부를 알고 있는 데이터)는 E에 해당하고, T는 스팸 여부를 판단하는 행위에 해당한다. P는 직접 정의하기 나름이지만 정확도 정도로 판단할 수 있다.
When we use machine learning?
기존의 프로그래밍 방식은 해당 경향성을 코더가 발견하고, 이를 코드에 반영시키는 방식으로 진행되었다.
반면, 머신러닝 기법으로 이 문제를 접근하게 되면, 패턴을 자동으로 감지하여 더 좋은 판단 방법을 학습하게 된다.
주로 머신러닝은
- 기존의 솔루션으로는 너무 많은 조정과 규칙이 필요한 경우
- 너무 복잡하여, 하드코딩 하기가 어려운 경우
- 데이터의 경향성을 파악해야할 때
와 같은 분야에서 효과적으로 처리할 수 있게 된다.
Classification of Machine learning
머신러닝의 경우 크게 3가지 기준으로 구분할 수 있다.
- 사람의 감독하게 훈련하는 것인지, 아닌지(지도, 비지도, 준지도, 강화 학습)
- 실시간으로 점진적인 학습을 하는지(온라인 학습과 배치 학습)
- 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을 발견하여 예측 모델을 만드는지(사례 기반 학습과 모델 기반 학습)
위 기준은 서로 배타적이지 않으며 복합적일 수 있다는 점을 유의하도록 하자.
각 기준에 대해 자세히 알아보면 다음과 같다.
지도 학습과 비지도 학습
위 기준은 머신러닝을 '학습하는 동안의 감독 형태나 정보량'에 따라 분류하는 것이다. 해당 기준에 의해 지도 학습, 비지도 학습, 준지도 학습, 강화 학습이라는 4가지 범주로 구분되게 된다.
첫 번째로 지Supervised learning
은 주입하는 훈련 데이터에 레이블(Label)이라는 원하는 답이 포함된다.
분류(Classification)와 회귀(Regression)가 전형적인 지도 학습 방법에 속한다. (이때, 예측 변수라 부르는 특성을 사용해 타깃 수치를 예측하는 작업을 회귀라고 한다.)
두 번째로 비지도 학습
은 지도 학습과 달리 훈련 데이터에 레이블이 없다. 즉 아무런 도움 없이 학습해야 한다.
예를 들어 블로그 방문자를 구분하는 알고리즘을 구현하려고 한다. 이때, 방문자가 어떠한 그룹에 속하는지 알려주는 데이터가 없는 경우 비지도 학습에 속한다. 즉 알고리즘이 스스로 방문자 사이의 연결고리를 찾는 것이다.
대표적으로 시각화(Visualization) 알고리즘이 위 범주에 속하는데, 레이블이 없는 대규모의 고차원 데이터를 넣으면 도식화가 가능한 2D나 3D 표현을 만들어 준다. 비슷한 예시로는 차원 축소(Dimensionality reduction)가 있다. 이는 상관관계가 있는 여러 특성을 하나로 합치는 것이다. 예를 들어 차의 주행거리와 연식은 상관관계가 높으므로 두 특성을 차의 마모 정도를 나타내는 하나의 특성으로 합칠 수 있다. 이를 특성 추출(feaature extraction)이라고 한다. 이외에도 여러 가지 비지도 학습에 속하는 것들이 존재한다.(자세한 것은 책을 참고하도록 하자.)
세 번째로 준지도 학습
은 지도 학습과 비지도 학습의 성격을 모두 가지고 있는 것으로 데이터의 일부만 레이블이 존재한다. 대표적인 예시로는 구글 포토 서비스가 있다. 구글 포토의 경우 사진을 올리면 얼굴을 인식해서 알아서 군집화 해주지만, 해당 얼굴이 누구인지는 데이터를 주입해주어야 한다. 따라서 사람마다 레이블을 하나씩만 추가하게 되면 사진에 존재하는 모든 사람의 이름을 알 수 있게 된다.
네 번째로 강화 학습
은 환경을 관찰해서 행동을 실행하고 그 결과로 보상이나 벌점을 받게끔 설계한 뒤, 시간이 지남에 따라 가장 큰 보상을 얻기 위해 정책(policy)라고 부르는 최상의 전략을 학습하는 방법을 의미한다. 여기에서 학습하는 시스템을 에이전트라고 부른다.
대표적으로 알파고가 위 방식을 활용한 대표적인 예시이다.
배치 학습과 온라인 학습
위 기준은 입력 데이터의 스트림으로부터 점진적으로 학습할 수 있는지 여부이다.
첫 번째로 배치 학습
의 경우 시스템의 점진적으로 학습할 수 없다. 일반적으로 위 방식은 시간고 자원을 많이 소모하므로 오프라인에서 수행되는 것이 일반적이다.(단, 2개의 개념이 동치가 아니므로 주의해야 한다.)
따라서 먼저 시스템을 훈련시키고 이후에는 더 이상의 학습이 없이 실행되게 된다. 이를 오프라인 학습(offline learning)
이라고 한다. 만약 새로운 데이터에 대해서 학습하고 싶으면 이전 데이터도 포함한 전체 데이터를 활용하여 새로운 버전을 처음부터 다시 훈련해야 한다.
두 번째로 온라인 학습
의 경우 데이터를 순차적으로 한 개 또는 미치 배치(mini-batch)
라 부르는 묶음 단위로 주입하여 시스템을 훈련시킨다. 따라서 배치 학습과 달리 데이터가 도착하는 대로 즉시 학습할 수 있다는 점에서 차이가 존재한다.
따라서 위 방식은 연속적으로 데이터를 받고 빠른 변화게 스스로 적응해야 하거나, 컴퓨팅 자원이 제한된 경우 좋은 선택이다. 왜냐하면, 배치 학습의 경우 새로운 데이터를 학습하기 위해서 이전 데이터도 보관해야 하기 때문이다.
이러한 온라인 학습에서 중요한 파라미터 중 하나는 학습률(learning rate)
인데, 해당 값이 높을수록 추가되는 데이터에 빠르게 대응하지만 예전 데이터를 금방 잊게 된다는 단점이 발생하게 된다. 만약 나쁜 데이터가 주입되었을 때 시스템 성능이 점진적으로 감소하게 된다. 이를 위해 성능 감소가 발견되면 학습을 중지시키는 방향으로 위 문제를 해결해야 한다.
사레 기반 학습과 모델 기반 학습
위 기준은 어떻게 일반화되는지 여부이다.
첫 번째로 사례 기반 학습
의 경우 유사도를 측정하여 새로운 데이터와 학습한 샘플을 비교하는 방식으로 일반화하는 것이다.
예를 들어 스팸 메일을 판단하는 과정에서 기존에 스팸 메일이라고 판단한 것과 얼마나 유사한지를 비교하여, 유사도가 높을수록 스팸으로 분류하는 것이다.
두 번째로 모델 기반 학습
의 경우 샘플들의 모델을 만들어서 예측에 사용하는 방식이다. 주어진 샘플들을 토대로 일종의 해당 데이터를 잘 표현할 수 있는 모델을 만들고 이를 바탕으로 예측을 하는 것이다.