OpenAIはReptileを提案します:スケーラブルなメタ学習アルゴリズム



Openai Proposes Reptile



OpenAIブログから選択



著者:アレックスニコルジョン・シュルマン

マシンハートコンパイル




最近、OpenAIは、タスクを繰り返しサンプリングし、ランダムな勾配降下法を実行し、最終的なパラメーターが学習されるまで初期パラメーターを更新する、単純なメタ学習アルゴリズムReptileをリリースしました。この方法のパフォーマンスは、MAML(広く使用されているメタ学習アルゴリズム)に匹敵し、後者よりも実装が簡単で、計算効率が高くなります。




メタ学習は、学習方法を学習するプロセスです。メタ学習アルゴリズムは、タスクの分散を学習します。各タスクは学習の問題であり、速い学習者を出力します。学習者は、少数のサンプルから学習し、一般化を実行できます。よく研究されているメタ学習の問題は、各タスクが分類の問題である数ショットの分類です。学習者は1〜5個の入出力サンプル(各カテゴリ)しか見ることができず、学習者は新しい入力ソートに応答する必要があります。以下では、爬虫類を使用したOpenAIのワンショット分類インタラクティブデモを試すことができます。



[すべて編集]ボタンをクリックし、3つの異なる図形または記号を描画してから、背面の入力領域に図形の1つを描画すると、爬虫類の分類効果を確認できます。最初の3つの画像にはサンプルのラベルが付いており、それぞれがカテゴリを定義しています。最後の図は未知のサンプルを表しており、Reptileは各カテゴリに属する​​確率を出力します。 (インタラクションを体験するには、元のリンクをクリックしてください)


爬虫類のしくみ


MAMLと同様に、Reptileはニューラルネットワークのパラメーター初期化方法を学習するため、少量の新しいタスクデータでニューラルネットワークを調整できます。ただし、MAMLは勾配降下アルゴリズムの計算グラフを使用して差分計算プロセスを拡張しますが、Reptileは各タスクで標準形式の確率的勾配降下(SGD)を実行します。計算グラフを拡張したり、2次導関数を計算したりする必要はありません。したがって、ReptileはMAMLよりも少ない計算とメモリを必要とします。擬似コードは次のとおりです。



最後のステップでは、Φ-Wをグラデーションとして使用し、Adamなどのより複雑なオプティマイザーに挿入することもできます。


驚いたことに、この方法はうまく機能します。 k = 1の場合、アルゴリズムは「共同トレーニング」に対応します。SGDは複数のタスクで実行されます。共同トレーニングは多くの状況で有用な初期化を学習できますが、ゼロショット学習が不可能な状況(出力ラベルがランダムに配置されているなど)ではほとんど学習できません。爬虫類は、損失関数に依存する高階導関数を更新するためにk> 1を必要とします。 OpenAIが論文で示したように、k> 1の場合の爬虫類の行動は、k = 1の場合(共同トレーニング)とは大きく異なります。


爬虫類の動作原理を分析するために、OpenAIはテイラー級数を使用して更新を概算します。爬虫類の更新により、同じタスク内のさまざまなミニバッチの勾配内積が最大化され、一般化効果が向上します。この発見は、SGDの一般化パフォーマンスの説明など、メタ学習以外にも影響を与える可能性があります。 OpenAIの分析結果は、爬虫類とMAMLが、重みの異なる同じ2つのアイテムを含め、同様の更新を実行できることを示しています。


OpenAIの実験では、OmniglotベンチマークとMini-ImageNetベンチマークで数ショットの分類タスクを実行すると、ReptileとMAMLが同様のパフォーマンスを発揮することが実証されました。爬虫類は、更新の分散が小さいため、収束が速くなります。 OpenAIによる爬虫類の分析では、SGD勾配のさまざまな組み合わせを使用して、多数の異なるアルゴリズムを取得できることが示されています。次の図では、さまざまなバッチサイズのSGDを使用して、さまざまなタスクでK更新ステップを実行し、g_1、g_2、...、g_kk勾配を生成するとします。次の図は、Omniglotの学習曲線を示しており、勾配の合計によってメタ勾配として描画されます。 g_2は、元のMAMLペーパーで提案されたアルゴリズムである1次MAMLに対応します。分散が減少するため、より多くの勾配を使用すると、学習または収束が速くなります。ゼロショットのパフォーマンスを改善できないため、g_1(k = 1に対応)のみを使用しても、予測どおりにこのタスクは改善されないことに注意してください。



成し遂げる


実現されたGitHubアドレス:https://github.com/openai/supervised-reptile


この実装では、関連する計算にTensorFlowを使用し、コードはOmniglotとMini-ImageNetで再現できます。さらに、OpenAIはより小さなJavaScriptベースの実装(https://github.com/openai/supervised-reptile/tree/master/web)もリリースしました。これは、TensorFlowで事前トレーニングされたモデルを調整しました-上記のデモはに基づいていますこの。


最後に、10(x、y)ペアのランダムな正弦波を予測する数ショット回帰の簡単な例を次に示します。この例はPyTorchに基づいています。


import numpy as np


論文:爬虫類:スケーラブルなメタ学習アルゴリズム



アドレス:https://d4mucfpksywv.cloudfront.net/research-covers/reptile/reptile_update.pdf


要約:このペーパーでは、メタ学習の問題、つまりタスクの分散があることについて説明します。分散によってサンプリングされたタスク(モデルがこれまでに見たことのないタスク)で迅速に学習できるエージェントを見つけたいと考えています。新しいタスクで迅速かつ微調整できるパラメータ初期化方法を学習する、単純なメタ学習アルゴリズムReptileを提案します。 Reptileは、タスクを繰り返しサンプリングし、タスクのトレーニングを実行し、タスクのトレーニングされた重みの方向に初期化を移動します。爬虫類は、初期化も学習するMAMLとは異なります。最適化プロセスで微分可能である必要はないため、多くの更新ステップを必要とする最適化問題に適しています。私たちの調査によると、爬虫類は完全なベンチマークを使用して、いくつかのショット分類タスクでうまく機能することがわかりました。さらに、爬虫類がどのように機能するかを理解するのに役立ついくつかの理論的分析も提供します。


元のリンク:https://blog.openai.com/reptile/



詳細については、下の[オリジナルを読む]をクリックしてください ↓↓↓