Coursera Machine Learning Week 10에서 대량의 데이터를 처리하는 Tips 4개 배우기

5547 단어 coursera기계 학습

개시하다


본 보도는 Coursera Machine Learning 과정의 Week 10에서 배운 것을 총결하였다.머신러닝을 배우고 싶은 사람을 위해 머신러닝을 이해하기 위해 코스라에 힘쓰는 사람을 대상으로 썼다.

Coursera Machine Learning Week 10을 듣기 전에.


Week 10의 학습 내용은 특히 Week 6의 학습 내용과 관련이 있습니다.개인적인 느낌은 Week6의 연장선상이다.이 때문에 아직 위크6의 학습 내용을 이해하지 못한 사람, 아직 위크6를 배우지 않은 사람은 위크6를 먼저 배우는 것을 추천한다.

학습 내용


위크10의 제목인'Large Scalle Machine Learning'에서도 다량의 데이터를 처리하는 법을 배울 수 있다.
구체적으로 다음 네 가지를 배울 수 있다.
  • Stochastic Gradient Descent
  • Mini-Batch Gradient Descent
  • Online Learning
  • Map Reduce and Data Parallelism
  • Stochastic Gradient Descent와 Mini-Batch Gradient Descent는 Week1에서 배운 Gradient Descent(Batch Gradient Descent)를 대량으로 데이터 처리를 개량했다.
    온라인 리어닝과 맵 리듀스, Data Paralleism은 한 번에 데이터를 모두 처리하는 것이 아니라 한 번에 한 개 또는 한 개의 데이터를 처리하려는 생각이다.
    그럼 각각 설명해 주세요.

    Stochastic Gradient Descent


    Stochastic Gradient Descent(확률의 최급 하강법)는 모든 데이터에서 한 번에 모델을 만드는 Batch Gradient Descent를 대상으로 한 번에 하나의 데이터와 기존 모델에서 새로운 모델로 업데이트하는 알고리즘이다.
    한 번에 하나의 데이터만 사용할 수 있기 때문에 신속하고 연속적으로 처리할 수 있다.그러나 사용된 데이터는 무작위로 선택을 흐트러뜨린다.
    다음은 Stochastic Gradient Descent의 목적 함수와 인자 ${theeta}가 업데이트한 계산 공식입니다.
    $$ J_{train}(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_{\theta}(x^{(i)})-y^{(i)})^2 $$
    $$ {\theta}_j := {\theta}_j - {\alpha} (h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)} $$
    지금까지 학습한 Batch Gradient Descent의 목적 함수와 매개 변수 업데이트 ${theeta}의 계산 공식은 다음과 같습니다.
    $$ J_{train}(\theta) =\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2 $$
    $$ {\theta}_j := {\theta}_j - {\alpha}\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)}) - y^{(i)})x_j^{(i)} $$
    Stochastic Gradient Descent와Batch Gradient Descent에 비해 목적 함수는 같지만, 인자 ${theta}의 업데이트식은 다르다.Stochastic Gradient Descent는 매개변수 업데이트에 데이터 1개만 사용하고, Batch Gradient Descent는 매개변수 업데이트에 모든 데이터를 사용합니다.

    Stochastic Gradient Descent의 목적 함수 수렴 검사


    Stochastic Gradient Descent는 모든 데이터 업데이트 매개 변수 ${theeta}이므로 목적 함수가 항상 작아지는 것은 아닙니다.따라서 목표 함수가 수렴되는지 확인해야 한다.
    목표 함수가 수렴되었는지 확인하기 위해 임의의 횟수의 원가 평균치를 취하여 검사하십시오.
    (예) 1000회 검사 시 1~1000회 평균치, 1001~2000회 평균치,...(이하 동일)
    그렇게 되면 끝이라고 생각해.

    수렴하지 않은 경우도 있어요.

    이때 평균치의 범위(1000→10000)를 확대하면 아래의 붉은 선처럼 개선할 수 있다.

    그 밖에 이 도표에서 알 수 있듯이 목적 함수는 항상 최소화되는 것이 아니다.세계 최소치에 근접해도 일치하지 않는다는 것이다.전 세계에서 가장 작은 부근에서 왔다갔다하다.전 세계 최소치에 가까워지기 위해서는 학습률을 ${alpha}보다 작게 설정해야 합니다.하지만 천천히 다가가세요.

    Mini-Batch Gradient Descent


    다음은 Mini-Batch Gradient Descent에 대한 설명입니다.Mini-Batch Gradient Descent는 모든 데이터의 일부를 사용하여 ${theta} 매개 변수를 업데이트합니다.
    Mini-Batch Gradient Descent의 매개 변수 ${theeta} 업데이트된 계산 공식은 다음과 같습니다.(목적 함수는 BatchGradient Descent, Stochastic Gradient Descent와 같기 때문에 생략됨)
    $$ {\theta}_j := {\theta}_j - {\alpha}\frac{1}{n}\sum_{k=i}^{i+n-1}(h_{\theta}(x^{(k)}) - y^{(k)})x_j^{(k)} $$
    ※ n은 매개 변수 업데이트에 사용되는 ${theeta} 한 번의 데이터 수입니다
    (예) 모든 데이터가 1000이고 매개 변수를 매번 10개씩 업데이트하는 경우 ${theeta}
    $$ {\theta}_j := {\theta}_j - {\alpha}\frac{1}{10}\sum_{k=i}^{i+9}(h_{\theta}(x^{(k)}) - y^{(k)})x_j^{(k)} $$
    ※ 모든 i에 대해 (i=1, 11, 21,....991) 진행
    한 번 처리하는 데이터 수를 늘리면 처리 시간이 길어지기 때문에 애니메이션에서 한 번 처리하는 데이터 수는 2~100이 가장 좋다.
    처리된 데이터에 따라 Stochastic Gradient Descent보다 빠를 때도 있습니다.

    Online Learning


    온라인 학습은 기존 모델에 데이터를 추가하고 모델을 계속 업데이트하는 알고리즘이다.항상 모델을 업데이트하므로 업데이트된 모델을 다시 사용하지 않습니다.또한 모델을 업데이트할 때 1개의 데이터만 사용하고 Batch 처리에 비해 고속과 낮은 메모리 처리를 사용할 수 있다.
    Stochastic Gradient Descent는 온라인 학습의 한 방법이다.그라디언트 데스센트뿐만 아니라 뉴럴네트워크, 로지스틱 리그레이션 등 다른 기법도 온라인 학습에 적응할 수 있다.

    온라인 Learning의 이점


    온라인 Learning의 장점은 새로운 모델을 자주 사용할 수 있다는 것입니다.
    새로운 모델을 자주 업데이트하면 더욱 높은 정밀도를 실현할 수 있다.특히 온라인 쇼핑의 리뷰 기능 등 역동적으로 변화하는 것을 배울 때 온라인 레어닝이 효과적이라는 평가를 받는다.

    Map Reduce and Data Parallelism


    Map Reduce와 Data Parallelism은 모든 데이터를 분할 처리하고 마지막으로 분할 처리한 데이터를 결합하는 방법이다.그럼 제가 절차를 설명해 드릴게요.
    우선, 데이터를 분할한다.

    ※ 4개로 나눌 필요 없음
    그리고 각 분할된 데이터의 가설 함수와 관측치 오차의 제곱을 계산한다.
    예를 들어 모든 데이터를 400으로 4개로 분할하는 경우를 고려한다.
    위의 그림에서 보듯이 데이터 1을 1호에서 100호, 데이터 2를 101호에서 200호, 데이터 3을 201~300호, 데이터 4를 301~400호 데이터로 분할한다.가설 데이터 1~4의 가설 함수와 관측 값의 오차의 제곱은temp1~4이다
    $$ temp^{(1)} =\sum_{i=1}^{100}(h_{\theta}(x^{(i)})-y^{(i)})^2x_j^{(i)} $$
    $$ temp^{(2)} =\sum_{i=101}^{200}(h_{\theta}(x^{(i)})-y^{(i)})^2x_j^{(i)} $$
    $$ temp^{(3)} =\sum_{i=201}^{300}(h_{\theta}(x^{(i)})-y^{(i)})^2x_j^{(i)} $$
    $$ temp^{(4)} =\sum_{i=301}^{400}(h_{\theta}(x^{(i)})-y^{(i)})^2x_j^{(i)} $$
    .
    마지막으로, 각temp를 조합해서 인자 ${theta}를 업데이트합니다.업데이트는 다음과 같습니다.
    $$ {\theta}_j := {\theta}_j - {\alpha}\frac{1}{400}(temp_j^{(1)}+temp_j^{(2)} + temp_j^{(3)} +temp_j^{(4)}) $$
    지금까지 Map Reduce and Data Paralleism의 아이디어였습니다.

    최후


    본 보도는 기계 학습을 진행하는 데 있어서 대량의 데이터를 어떻게 처리하는지 썼다.만약 이 보도가 기계를 배우고 싶은 사람을 도울 수 있다면 정말 좋겠다.

    좋은 웹페이지 즐겨찾기