2015年11月14日

Autograd > README.md

Autograd という Python 用の自動微分ツールというものがリリースされたとのことで、README.md を日本語直訳してみました。 Python もこの手の数学分野も馴染みが薄いので、語句や表現がこなれておらず申し訳ありません。なお、原文はこちらです。

Autograd

Autograd は、ネイティブの Python 及び Numpy コードを自動的に微分します。それは Python の機能の巨大なサブセットを取り扱うことができ、それはループ、分岐、再帰やクロージャを含み、微分の微分の微分さえも扱えます。それはリバースモード微分(バックプロパゲーション:誤差逆伝播法として知られるもの)を使っており、配列値引数に対するスカラー値関数の勾配を効果的に得ることができることを意味します。主に意図されるアプリケーションは、勾配に基づいた最適化です。より多くの情報のためには、チュートリアル実施例のディレクトリをチェックして下さい。

利用例:

>>> import autograd.numpy as np  # 薄くラッピングされた numpy
>>> from autograd import grad    # あなたが必要とするかもしれないのは autograd 関数のみ
>>>
>>> def tanh(x):                 # 関数を定義
...     y = np.exp(-x)
...     return (1.0 - y)  / ( 1.0 + y)
...
>>> grad_tanh = grad(tanh)       # その勾配関数を取得
>>> grad_tanh(1.0)               # x = 1.0 での勾配を評価
0.39322386648296376
>>> (tanh(1.0001) - tanh(0.9999)) / 0.0002  # 階差と比較
0.39322386636453377

我々は好きなだけ何回でも微分を続けることができます:

>>> grad_tanh_2 = grad(grad_tanh)           # 2階微分
>>> grad_tanh_3 = grad(grad_tanh_2)         # 3階微分
>>> grad_tanh_4 = grad(grad_tanh_3)         # などなど
>>> grad_tanh_5 = grad(grad_tanh_4)
>>> grad_tanh_6 = grad(grad_tanh_5)
>>>
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-7, 7, 200)
>>> plt.plot(x, map(tanh, x),
...          x, map(grad_tanh, x),
...          x, map(grad_tanh_2, x),
...          x, map(grad_tanh_3, x),
...          x, map(grad_tanh_4, x),
...          x, map(grad_tanh_5, x),
...          x, map(grad_tanh_6, x))
>>> plt.show()

コードに落とした tanh を例としたファイルを参照下さい。

ドキュメント

あなたはここでチュートリアルを読むことができます。

エンドツーエンドの例

インストール方法

pip install autograd を実行して下さい。

著者

Autograd は Dougal Maclaurin, David Duvenaud(訳注:リンク切れ) 及び Matt Johnson によって書かれ、我々は活発に開発を続けています。バグや機能に対するリクエストの投稿は自由にお願いします。我々はまた、一般的な autograd のあなたの経験を聞いてみたいです。我々にメールを下さい!

我々は Jasper Snoek 及び HIPS グループの他のメンバに対し、有益な貢献とアドバイスに感謝したいと思います;Barak Pearlmutter は、自動微分に対する基礎的な作業と、我々の実装に対するガイドに対して;そして Analog Devices Inc. (Lyric Labs) 及び Samsung Advanced Institute of Technology は、様々なサポートに対して。

posted by cbbandtqb at 03:19| Comment(0) | TrackBack(0) | 備忘録 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/429562692

この記事へのトラックバック