2014년 10월 26일 일요일

[Machine Learning] Large Scale Machine Learning


Large Scale Data Machine Learning

이 블로그 내용은 개인적으로 재가 이해한 대로 작성한 내용 입니다.
잘못된 부분이 있으시면 댓글이나 메일 달아주시면 감사하겠습니다.
부탁드립니다.

Learning with Large DataSets

Stochastic Gradient Descent

m(모델의 값)이 많아 졌을 경우 사용하는 방식으로
기존의 Batch Gradient Descent가 m이 있을 경우 1~m까지 순차적으로 돌았다고 한다면
Stochastic Gradient Descent는 기존의 방식과는 동일하고
// b_cost : 기존 Batch Gradient Descent 의 cost Function
// s_cost : Stochastic Gradient Descent 의 cost Function
 s_cost = b_cost / 2
Shuffle한 데이터를 돌면서 세타값을 찾고, 기존의 cost Funtion / 2 를 한 함수를 cost Function으로 사용합니다.
이를 통해 데이터의 평준화??가 좀 더 진행 되어 1~10배 정도의 빠름을 가진다고 합니다.

Mini-Batch Gradient Descent

Stochastic Gradient Descent 의 경우 m을 그대로 두고 데이터의 평준화를 통해 Large Scale Data의 기계학습을 해결했다면
Mini-Batch의 경우 b라는 batch 인자를 두어 m을 그룹화 하여 m을 줄여 기계학습을 좀 더 빠르게 해결할수 있는 방법입니다.
방법은
기존에 100개의 m이 존재하고 b가 10일 경우
m은 100/10 개가 존재하게 됩니다. 그리고 cost Function 에서 더해지는 값은 1~10 , 11 ~ 20 , 21~ 30 이런 식의 b 단위로 그룹 지어진 m(i)에 대한 cost Function을 사용해서 계산합니다.
b의 값은 2 ~ 100 사이가 적당하다고 합니다.

Stochastic Gradient Descent Convergence

???

online learning

???

Map Reduce and Data parallelism

Map Reduce 는 큰 데이터에 대한 분산 처리를 위해서 나온 개념 입니다.
Map은 데이터를 입력 할 때 사용하는 개념이고 Reduce는 그 데이터를 출력할 떄 사용하는 개념입니다.
Machine Learning에서는 Training Set을 여러개의 Block으로 나누어서 Map Reduce 방식으로 데이터를 입력하여 출력한 값을 종합하여 데이터 분석에 사용하고 있습니다.

댓글 없음:

댓글 쓰기