[Hands-On-Machine Learning]에서 머신러닝 시스템을 분류하는 기준에 대해 다루었었다. 특별히 따로 글을 작성해서 제대로 정리하려고 한다.
종류가 많으면 항상 분류하는 기준이 존재한다.
1.4.1 ) 훈련 지도 방식 (학습하는 동안의 지도 형태나 정보량에 따라 분류)
1.4.2 ) 실시간으로 점진적인 학습을 하는지 아닌지
1.4.3 ) 예측 방식에 따른 차이
학습하는 동안의 지도 형태나 정보량에 따라 분류
지도 학습, 비지도 학습, 준지도 학습, 자기 지도 학습, 강화 학습
| 구분 | 방식 | 활용예시 |
|---|---|---|
| 지도 학습 | 알고리즘에 주입하는 훈련 데이터에 label이라는 원하는 답이 포함됨 | 분류, 회귀 |
| 비지도 학습 | 훈련 데이터에 레이블이 없음, 스스로가 연결고리를 찾음 | 계층 군집, 시각화 알고리즘, 차원 축소, t-SNE 시각화, 이상치 탐지, 특이치 탐지, 연관 규칙 학습 |
| 준지도 학습 | 레이블이 일부만 있는 데이터를 다룸, 지도 학습과 준지도 학습의 조합으로 이루어짐 | 구글 포토 서비스 |
| 자기 지도 학습 | 레이블이 전혀 없는 데이터셋에서 "레이블이 완전히 부여된 데이터셋을 생성하는 것", | 손상된 이미지 복원, 사진에서 원치 않는 물제 삭제 |
| 강화 학습 | 환경을 관찰해서 보상과 벌점을 받으며, 최상의 전략을 스스로 학습 | 오프라인학습, 알파고 |
이상치 탐지 vs 특이치 탐지
이상치 탐지의 예 : 신용카드 부정거래 감지, 제조 결함 잡아내기, 학습 알고리즘에 주입하기 전에 데이터셋에서 이상한 값을 자동으로 제거
이상치 탐지의 방식 : 훈련하는 동안 대부분 정상 샘플 만나며, 새로운 샘플 봤을 때 정상인지 이상치인지 판단
특이치 탐지 : 훈련 세트에 있는 모든 샘플과 달라 보이는 새로운 샘플 탐지가 목적, 따라서 알고리즘으로 감지하고 싶은 샘플을 모두 제거한 후 매우 깨끗한 훈련 세트가 필요함.
ex) 1% 치와와 + 다른 강아지 99%
이상치 : 치와와가 매우 드물고 다른 강아지와 다르니까 이상치!
특이치 : 새로운 치와와 사진을 특이치로 처리 X
입력 데이터의 스트림(stream)으로부터 점진적으로 학습할 수 있는지 여부
점진적 학습 불가, 가용한 데이터 모두 사용해서 훈련
시간과 자원을 많이 소모하기에 오프라인에서 수행 <오프라인 학습(offline learning)>
당연히 세상은 빠르게 변하기에 과거의 데이터로 학습된 모델의 성능은 시간이 지남에 따라 천천히 감소하는 경향이 있다.
이를 모델 부패(model rot) 또는 데이터 드리프트(data drift)라고 한다.
결국 오래된 데이터를 사용해서 훈련한 모델의 문제점을 고치려면, 최신 데이터에서 모델을 정기적으로 재훈련 해줄 수밖에 없다! 모델 훈련 주기는 상황에 따라 달라진다.
데이터 훈련 시간, 주어진 컴퓨팅 자원 등을 고려하여 잘 학습해야 하는데,
위와 같은 한계에 부딪힌다면 점진적으로 학습할 수 있는 알고리즘을 사용하는 것이 훨씬 낫다.
온라인 학습이라는 용어보다는 점진적 학습이란 용어를 핸즈온에서는 권장했다. 확실히 온라인이라는 용어는 오해할 소지가 크다고 느껴서 온라인 학습보다는 점진적 학습(incremental learning)이란 단어로 이해하려고 했다.
온라인 학습에서는 데이터를 순차적으로 한 개씩 또는 미니배치(mini-batch)라 부르는 작은 묶음 단위를 주입하여 시스템을 훈련시키는데, 확실히 한 번에 학습하는 양이 줄어서 매 학습 단계가 빠르고 비용이 적게 든다. 그래서 데이터가 도착하는 대로 즉시 학습이 가능하다고 한다. 그래서 주식 시장 같은 금융권 쪽에 더 유리하다고 하는 것 같다. 또한 컴퓨팅 자원이 매우 한정된 모바일 디바이스에서 모델 훈련 시 유리하다고 한다.
또한 매우 큰 데이터셋에서 모델을 훈련할 수도 있다고 한다. 이를 외부 메모리 학습(out-of-core learning)이라고 한다.
온라인 학습 시스템에서중요한 파라미터는
변화하는 데이터를 얼마나 빠르게 적응할 것인지 보는 학습률(learning rate)이다.
학습률을 높게 설정하면 최신의 것을 반영하기에 더 좋을 것 같아 보이지만, 그만큼 예전 데이터를 금방 잊어버리게 될 것이기에 좋진 않다.(욕 대신 사용하는 초성만 밴 되는 경우를 생각했다. 이 초성만 밴 된다면, 오리지널 욕이 그대로 사용될 것이다.)
반대로 학습률이 너무 낮으면 시스템의 관성이 더 커져서 더 느리게 학습된다고 한다.
그럼 어떻게?
온라인 학습에서 가장 큰 문제점은 시스템에 나쁜 데이터가 주입되면 급격히 성능이 떨어지는 것이라 한다. 이런 위험성을 줄이기 위해 시스템을 평소에 잘 들여다보면서 나쁜 데이터가 학습되지 않도록 주의해야 한다. 또한 입력 데이터를 모니터링(이상치 탐지 알고리즘 등)해서 비정상 데이터를 잡도록 해야한다.
어떻게 일반화(generalization)되는가?
머신러닝의 작업은 예측을 만드는 것!
이 예측이 곧 일반화의 의미라 보면 좋을 것 같다.
훈련 데이터에서도 물론! 높은 성능을 내어야 하지만, 진짜 목표는 새로운 샘플에 잘 작동하는 모델을 만드는 것이다.
단순히 기억하는 것
예시 ) 스팸 메일과 유사한 메일을 구분하도록 스팸 필터 프로그래밍
이 경우 두 메일 사이의 유사도(similarity)를 측정해야 한다.
(보통 매우 간단한 유사도 측정 시엔 공통으로 포함된 단어를 세는 경우가 있다)
샘플들의 모델을 만들어 예측에 사용하는 것
데이터가 흩어져 있지만(=무작위성이 있지만)
어떤 모델을 선택하고, 그 모델의 파라미터를 조절해서
결국 그 모델이 최상의 성능을 내도록 하는 값을 알아낼 수 있다.
이때 최적의 파라미터의 최적값을 찾는 과정을 모델을 훈련(training)이라고 한다.
이때 모델의 성능을 나타내는 지표로는 여러 가지가 있다.
모델이 얼마나 좋은 지 측정 : 효용 함수(utility) = 적합도 함수(fitness function)
모델이 얼마나 나쁜 지 측정 : 비용 함수(cost function)