2016-10-09 8 views
3

ReadmeのHLearnには、並列バッチトレーニングにMonoid typeclassが使用されていると記載されています。私はいくつかのファイルに記載されているtrainMonoidを見ましたが、私はこの巨大なコードベースを解読するのが難しいです。誰かが初心者に親しみやすい言葉で説明することができますか?私はそれが何らかの形で結合性の性質に関係していると思います。Monoidは並列訓練をどのように支援しますか?

答えて

13

this articleに記載されていますが、質問にリンクされたページにリンクされています。あなたが初心者のフレンドリーな記述をしたいので、私はあなたが記事を読んだ後に私が理解したものの非常に高いレベルの記述を与えます。これを考えの概要として考えてください。にはの研究があります。

基本的な考え方は、同じ作業を何度も何度もやり直すのを避けるために、代数プロパティを使用することです。彼らは、単調な操作と準同型性の連想を使ってそれを行います。

考える二組Aと2つの2進演算+*準同型とB機能f: A -> Bようf(x + y) = f(x) * f(y)、すなわち、それは2つのセットの間の構造を保存関数のです。 その記事の場合、関数fは、基本的に入力セットを訓練モデルにマップする関数です。

だから、アイデアはあなただけxyに研修を行い、その後、組み合わせることができますT(x + y)のようにあなたが異なる部分xyに入力されたデータを分割し、代わりに全部のモデルを計算するのでできることです結果:T(x) * T(y)

今のところこれはあまり役に立ちません。しかしは、しばしば作業を繰り返します。たとえば、クロスバリデーションでは、k回の間、トレーナー用の入力セットとトレーナーをテストするために使用されるデータセットにデータをサンプリングします。しかし、これは、これらのk反復では、入力の同じ部分に対して複数回Tを実行していることを意味します。

ここでは、ドメインを部分集合に分割し、これらの部分集合に対してTを計算し、次にクロス検証の結果を計算するだけで対応する部分集合の結果をまとめることができます。

のアイデアを与えるには:

  • T({1,2})プラステスト
  • T({1,3})プラス{2, 3}
{2, 4}
  • T({1,4})プラステストでテストを{3, 4}上:データは{1,2,3,4}k = 3代わりにやっている場合

    ここでわかります1を3回雨が降った。準同型を使用してT({1}),を計算し、結果を他の部分結果と組み合わせて最終的な訓練モデルを得ることができます。

    最終結果の正確さは、演算と準同型写像の結合によって保証されます。もしkグループに入力を分割し、並行してトレーニングを行い、その結果を、化合物:並列場合

    同じ考え方を適用することができるT(x_i)コールが完全に平行にのみあなたが持っている端部で行われるT(x_1 + x_2 + ... + x_k) = T(x_1) * T(x_2) * ... * T(x_k)結果を合成する。

    オンライントレーニングアルゴリズムについては、アイデアは、あなたが行って、オンライン1にそれを作ることができT「バッチ」学習アルゴリズム与えられたということです:

    mが既に訓練されたモデル(一般意志である
    T_O(m, d) = m * T(d) 
    

    をその時点まで訓練されたモデルとなります)、dはトレーニングに追加する新しいデータポイントです。

    m = T(x)次にm * T(d) = T(x+d)の場合、オンラインアルゴリズムはすべてのデータポイントでバッチアルゴリズムと同じ結果を返すという同型性によるものです。


    このすべてのもっと面白い(かつ複雑な)部分ははあなたが私はあなたの個人的な勉強にそれを残しておきます、このような準同型などとして訓練タスクを見ることができるかです。

  • +0

    良い最初の答え。 – MikeJRamsey56

    関連する問題