Tensorflowで実装されているような自動微分の使用例は何ですか?なぜそれが重要なのですか?


7

ニューラルネットワーク、バックプロパゲーション、チェーンルールを適切に理解していますが、自動微分を理解するのに苦労しています。

以下は、逆伝播のコンテキスト外の自動微分に言及しています。

  • 自動微分は行列から勾配をどのように計算しますか?
  • 勾配を計算するための要件は何ですか?関数を指定する必要がありますか?
  • これの使用例は何ですか(それ以外の場合は逆伝播)?
  • なぜそれが重要であり、代替案は何ですか?

何か不足していますか?


3
自動微分は、アルゴリズム微分とも呼ばれ、コンピュータープログラムによって指定された関数の導関数を数値計算する自動化された方法ですが、関数はコンピュータープログラムによって間接的に定義できます。特に、数値最適化で使用するための勾配、ヤコビアン、ヘッセ行列の計算に役立ちます。バックプロパゲーションニューラルネットワークの最適化問題を参照の勾配計算するための自動微分の逆モードの実装である en.wikipedia.org/wiki/Automatic_differentiationを
マークL.ストーン

3
代替案は、記号による微分と有限差分であり、どちらも通常は遅く、有限差分は精度が低くなる可能性があります。人間が派生物を理解できる場合は、手動でコーディングした派生物を使用できますが、多くの場合、人間のミスが発生しやすくなります。
マークL.ストーン

実装例を確認するための簡単な例はどこにありますか?それはtf.gradient私が見てしなければならない方法?
グレッグ

3
Wikipediaリンクの自動微分ソフトウェアとツールのリスト、および使用例を含むリンクを参照してください。自動微分の別の代替方法は、複雑なステップ微分(微分)aero-comlab.stanford.edu/Papers/martins.aiaa.01-0921.pdfです。これは、自動微分のフォワードモードとほとんど同じです。
マークL.ストーン

回答:


12

自動微分システムでは、ほとんどの場合、演算子(加算、減算など)が微分と一緒に定義されます。

したがって、一連の演算子をスタックして関数を記述した後、通常は計算グラフとチェーンルールを使用して、対応する導関数をどのように計算するかをシステムが自動的に判断できます。

自動微分は、グラジエントベースの最適化(たとえば、勾配降下を使用したニューラルネットワークのトレーニング)に役立ちます。これは、数学の計算、コードの実装、およびケースバイケースで導関数を数値的に検証する手間を省くためです。

TheanoTensorflowで演算子(op)を定義する方法を次に示します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.