こんにちは、このチュートリアルを歓迎します。
大丈夫。
だから前回のチュートリアルでは脳を作りました。もしA-3の頭脳が必要ならば、今この脳を鍛える必要があります。
しかし、彼の脳を訓練するためには、このツールの使用であるオプティマイザが必要であり、予測とターゲットとの間の誤差にどのくらい寄与しているかに応じて重量を取るために、タバコを中心に置く必要があります。
そして今まで、第1と第2のモジュールで、トーチによる原子オプティマイザをトレーニングに使用しました。
しかし私があなたに言ったように、私たちは非常に挑戦的な問題に取り組んでおり、A-380アルゴリズムだけではこの問題を解決するには十分ではありません。
この問題を解決するには、カスタマイズされたオプティマイザと、さまざまなトリックが必要です。
これがこれを行う目的であり、それがなぜ原子オプティマイザに基づいた別個のカスタムオプティマイザを持つのかです。
そして、それはこの共有された敵のクラスに含まれ、なぜ共有原子。
それは実際には原子オプティマイザですが、それは共有状態で動作するからです。
だから私たちはそれがどのように働くのかを説明するつもりです。それで、それは人を殺さずに、ここでさまざまな機能を実行するつもりです。私たちが次のエネルギーを保つことを知っているからです。これは100行以上のコードを必要とします。
だから、その準備ができている。
したがって、ここではStatoil Statoilで何が起こっているのかを説明しようとします。
そして今すぐ始めましょう。
まず最初に、initが共有メモリ関数とステップ関数の3つの関数を含むこのクラス共有アトムを紹介します。
だから私たちが最初にやることは、原子オプティマイザである原子と、トーチライブラリからのUptonモジュールから得られる原子をoptinから継承することです。
ここでは、原子オプティマイザに関連するすべてのツールを取得するための単純な継承を行い、次にinit関数から始めます。
では、ここで何が起こるのですか？
まずスーパーファンクションを使用して、すべてのツールとAtomクラスの原子からのすべての基本パラメータを継承します。これらの基本パラメータはここにあります。
Haramsはレースベイトを学びますEpsilonと体重減少。
その後フォローアップを開始します。
この最初のフォルケは、Paramoグループのグループそのもののためのものです。
だから私たちのためにグループの周りに設定されたパルムグループは、オプティマイザのすべての属性を含んでいます。
これらの属性の中には、これらのパラメータを最適化するためのパラメータがあり、セルフパルムグループに含まれるネットワークの他の方法をアトマイズする必要があります。
だから、グループは自助グループに属している。
ここでは、最適化したいパラメータを得る2番目のFaltuがあります。おそらく、おそらく自己疑惑パルムグループに含まれています。
基本的には、すべてのパラメータを含むセルフヘルプグループと、各グループのパラメータと、最適化するパラメータを通過するグループからの自己話し合いを行います。
したがって、グループのParamoは、ここで最適化したいと思う重みの各Tancerを意味します。
したがって、最適化したいセンサーの重みと、これらの4行のコードでこのグループ内で何が起きるかを調べます。
基本的には、オプティマイザによる更新は、勾配の指数移動平均に基づいて行われます。
これがこのコード行です。
これは、瞬間1の勾配の指数関数的移動平均であり、次数1である。
しかし、原子によって作られたオブジェクトは、勾配の二乗の指数的な移動平均にも基づいているということに基づいているだけではありません。
これは運動量の勾配の指数関数的な移動平均です。
だからここに指数関数的な移動平均があります。
EMJが劣化しているそれぞれについて、2つの指数移動平均があります。
ここで何が起こるか
指数関数的な移動平均がどのようにうまく機能するかをもっと深く知りたいのであれば、私たちが現在実装している原子オプティマイザは、基本的には確率的最適化のためのこの研究論文Adamメソッドを見てみることを強くお勧めします。ここでアルゴリズム1。
アルゴリズムがどのようにうまく機能するかについて詳しく知りたければ、この論文は間違いなく有用です。
そして、あなたは原子とルールを使ってアルゴリズムについてさらに説明します。
それで、あなたはそれを攻撃してから、その後になる大きな列車の機能を攻撃したい場合にのみ、それが分かります。
さて、バイソンに戻りましょう。
そして、2番目の関数shared memoryに移りましょう。
だから今私はちょっと言葉を言うつもりです。
この共用メモリ関数のアイデアは、あなたが知っているクーダが視点に基づくアクセラレータであるようなテンソルのようなものです。
そして、基本的にはここで何が起こるのかということは、ここではここでここでメモリを共有する状態のテンソルを持っているため、テンソーのように動作して、高速な計算を加速することができます。
しかし違いは、ここではメモリを共有するセンサーが、麻痺したすべての脅威にアクセス可能なGPの一部に計算を送信することです。
それは基本的にここで行われていることです。
これは九のようなものですが、並列化された脅威にアクセスできるようにGPの一部に送信されます。
大丈夫。
それから、最後の機能ステップがあります。
したがって、この関数は、このコースで使用している原子オプティマイザのステップメソッドに似ています。
そしてこれもまた以前に見たのと同じ論文のアルゴリズム1に基づいています。
したがって、このアルゴリズム。
したがって、次のコード行を詳細に理解したいと思います。
もう一度私はIngridがこの論文でこのアルゴリズムを見ています。
そして、ここで行われていることは、実際には、その原子クラスを動作させるステップメソッドのコピーペーストであるため、完全に強制的ではありません。
それで基本的にはここで何が行われているのですか？私たちは継承を使用してそれを行うことができました。ここではActonからAdamと継承を継承しています。これを行う代わりにできることはここに書きます。私たちが共有しているAdamクラスに適用するスーパーファンクションは、オブジェクトそのものであり、ここでは括弧のついたステップを追加するだけで、そのクラスの行為のメソッドであり、まったく同じです。
だからこそ、ここではAtomクラスの行為のステップメソッドのコピー貼りだけだと言っています。
だから私はあなたがアダムとステップメソッドを共有するために適用されたこのスーパー関数でこれをすべて置き換えるなら、まったく同じことを得るかもしれないと思います。
それをすばやく見るのは面白かったです。
基本的には、これをAdamオプティマイザとして見ることができます。
それはもっと深く見たようなものです。
しかし、もしあなたがこのすべての詳細を知りたいのであれば、シーンの後ろで何が起こっているのかを理解したいのであれば、私はこの研究論文を見ることをお勧めします。
ここにコメントのリンクを貼ります。
あなたはすべてのコードが詳細に接続されることを覚えています。
あなたがそれを見ることができるなら、それは本当に良いです。
そして、私たちは、この巨大な列車機能を含む列車ファイルに移動し、基本的に私たちのオプティマイザを持っているので私たちが行うことができる頭脳を鍛えることになるので、あなたには大きな力があることを願っています。
だから今は良い休憩を取る。
良い睡眠と、あなたが素晴らしい形で感じるたびに。
次のステップに進みましょう。
それまではAIをお楽しみください。