머신러닝 시스템을 분류하는 또 다른 기준은 입력 데이터 스트림(stream)로부터 점진적으로 학습이 가능한지의 여부이다.
배치학습(batch learning
배치학습(batch learning)에서는 시스템이 점진적으로 학습할 수 없다. 가용한 데이터 모두 사용하여 훈련시켜야 하는데, 일반적으로 이 방식은시간과 자원을 많이 소모하기 때문에 오프라인에서 수행된다. 먼저 시스템을 훈련시키고 난 다음 제품에 적용하면 더 이상의 학습없이 실행된다. 다시 말해, 학습한 것을 단지 적용 만 하는 것이다. 그래서 오프라인 학습(offline learning)이라 한다.
배치학습 시스템이 새로운 데이터에 대해 학습하기 위해서는 이전 데이터도 포함한 전체 데이터를 사용하여 시스템의 새로운 버전을 처음부터 다시 훈련해야한다. 그런 다음 이전 시스템을 중지하고 새 시스템으로 교체해야한다.
다행히 머신러닝 시스템은 전통적인 방식과 달리 훈련, 평가, 런칭하는 전체 과정이 쉽게 자동화 될 수 있기에 배치 학습 시스템도 변화에 적응할수 있다. 필요할 때 마다 데이터를 업데이트하고 새 버전의 시스템을 자주 훈련시키면 된다.
이런 방식이 간단하고 잘 작동하지만 전체 데이터 셋을 사용하여 훈련하는데 몇 시간이 소요될 수 도 있고, 훈련 주기도 비교적 자주 해줘야 한다. 또한, 전체 데이터 셋을 이용하기 위해선 많은 컴퓨팅 자원이 필요하다.(CPU, 메모리 공간, 디스크 공간, 디스크 IO, 네트워크 IO등) 매일 처음부터 새롭게 훈련시키도록 시스템을 자동화한다면 큰 비용이 발생한다. 또 데이터의 양이 너무 많으면 배치 학습 알고리즘을 사용하는게 불가능해진다.
마지막으로 자원이 제한된 시스템(ex. 스마트폰/ 화성 탐사 로버)이 스스로 학습 해야할 때 많은 양의 데이터를 나르고 학습을 위해 매일 몇 시간씩많은 자원을 사용하게 되면 심각한 문제를 일으키게 된다. 그렇기 때문에 이런 경우, 점진적으로 학습이 가능한 알고리즘을 사용하는 것이 좋다.
온라인학습(online learning)
온라인 학습(online learning)에서는 데이터를 순차적으로 한 개씩 또는 미니-배치(mini-batch)라 불리는 작은 묶음 단위로 주입시켜 시스템을훈련시킨다. 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습이 가능하다.
온라인 학습은 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야하는 시스템에 적합하다. (예로 주식가격) 또한 컴퓨팅 자원이 제한된 경우에도 좋은 선택이다. 온라인 학습 시스템이 새로운 데이터 샘플을 학습하면 학습이 끝난 데이터는 더이상 필요하지 않게 되므로 버리면 된다. 이러면 많은 공간을 절약할 수 있다.
컴퓨터 한 대의 메인 메모리에 들어갈 수 없는 아주 큰 데이터 셋을 학습하는 시스템에도 온라인 학습 알고리즘을 사용할 수 있다. 이때 이것을 외부 메모리(out-of-core)학습 이라고 한다. 알고리즘이 데이터 일부를 읽어 들이고 훈련 단계를 수행하고, 전체 데이터가 모두 적용될 때까지 이 과정을 반복하는 것이다.
l 전체 프로세스가 온라인에서 실행되기에 온라인학습이라 부르는 것이 아니다. 실시간 시스템에서 실행되는 것이 아니라 오프라인으로 실행된다. 데이터를 조금씩 가져와 훈련을 수행하고 그 과정을 반복하여 전체 데이터가 모두 적용될 때까지 수행하는 시스템이기 때문에온라인 학습은 점진적 학습(incremental learning)이라 부른다.
온라인 학습 시스템에는 학습률(learning rate)이라는 것이 있다. 이것은 중요한 parameter 하나가 변화하는 데이터에 얼마나 빠르게 적응할 것인지 이다. 학습률을 높게 하면 시스템이 데이터에 빠르게 적응하지만 이전 데이터를 금방 잊어버릴 것이다. 반대로 학습률이 낮으면 시스템의 관성이 더 커져서 더 느리게 학습된다. 하지만 새로운 데이터에 있는 잡음이나 대표성 없는 데이터 포인트에 덜 민감해진다.
온라인 학습에서 가장 큰 문제점은 시스템에 bad data가 주입되었을 때, 시스템 성능이 점진적으로 감소한다는 것이다. 운영 중인 시스템이라면사용자가 눈치챌 지도 모른다. 예로 검색 엔진을 속여 검색 결과가 상위에 노출시키려는 누군가로부터 나쁜 데이터가 올 수 있다. 이러한 위험을 줄이기 위해 시스템을 면밀히 모니터링하고 성능 감소가 감지되면 즉각 학습을 중지시켜야 한다. 이상치 탐지 알고리즘을 사용해서 입력데이터를 모니터링해서 비정상 데이터를 잡아낼 수 도 있다.
<온라인 학습 과정>
빅데이터 ---- > 데이터1 , 데이터2, … 데이터 N (데이터 쪼개기)
|
↓
머신러닝
문제 연구 → 알고리즘 훈련 → 솔루션 평가 ---->(BAD,,) 문제연구(Back)
|
| GOOD!
↓
Launching!
|
|
↓
새로운 데이터(실시간) ---- > 실행 및 학습