trybeetle

take it slow!!

大規模データを扱う場合


Posted on Aug. 1, 2018, 1:04 p.m.



大規模のデータを扱う場合、より効率的に処理できる様に注意する必要があります。
CourseraのMachine Learningコースを元にしています。

Gradient Descentの処理方法として、下記の4つがあります。

  • Batch Gradient Descent
  • Stochastic Gradient Descent
  • Mini Batch Gradient Descent
  • Online Learning

また、summation処理を複数のコンピュータで並列処理するMap Reduce approachもあります。


Batch Gradient Descent

Batch Gradient Descentは、いつもの通りの方法です。training用datasetがm個与えられた場合、iteration一回毎に、m個のsummationを実施する必要があります。


Stochastic Gradient Descent

Batch Gradient Descentでは、m個のsummation処理をした後にθの値にudpdateをかけます。一方で、Stochastic Gradient Descentは、dataset毎にθの値をupdateを実施し、Gradientを求めます。

  • datasetのexampleの順序をランダムにシャッフルする。
  • example毎に、θの値をupdateを実施し、Gradientを実施

Mini Batch Gradient Descent

Mini Batch Gradient Descentは、Batch GradientとStochastic Gradientの中間の様な形です。
Stochastic Gradientは、1つのexample毎にGradient Descentを実施していましたが、Mini Batch Gradientでは、複数のexample毎(2~100個)にGradient Descentを実施します。例:b=10

※因みにCost functionは、θをupdateする前に計算します。


Online Learning

常に新しいdatasetが流れ込んでくる様な場合には、online learningを実施します。
新しくdatasetが追加されるたびに、Gradient Descentを実施し、θの値を更新します。1回あたりのexampleの数が1という点については、Stochastic Gradientと同じです。


Map Reduce approach

Map Reduce approachでは、summationの計算処理の部分を複数のコンピュータに分割して負荷を分散します。各コンピュータで計算した結果を最終的に1つのコンピュータで合算して求める手法です。例え10台のコンピュータに分散した場合は、最大で10倍弱の処理速度向上が期待できます。

以上、大規模データを扱う場合の手法についてでした。


Category:ML
Tag: ML Octave
Aug. 1, 2018, 1:04 p.m.

Comments