自動微分ソリューション

自動微分とは?

自動微分(Algorithmic Differentiation(また Automatic Differentiation や Computational Differentiation と呼ばれることもある))は、1次や高次の数学微分係数を計算する機能を用いて数値シミュレーションプログラムを向上させるための技術です。従来の数値微分と大きく異なり、自動微分は切り捨てを防ぐことにより、マシンの精度で勾配、ヤコビアンとヘッシアンを算出します。任意の複雑なシミュレーションのなかで個々の指示文の解析微分法を使用して行います。

自動微分は複雑さに関係なくあらゆる計算プログラムが算術演算(加算、減算、乗算、除算など)や初等関数(log, sin, cos など)を実行するという事実を利用しています。これらの演算に連鎖律(Chain Rule)を繰り返し利用することにより、任意次数の微分が自動的に計算され、実際の計算の精度で正確に算出できます。

自動微分について詳しくお知りになりたい方は、自動微分解説ページ「自動微分とは」をご覧ください。

自動微分は何に役立つか?

自動微分は特に最適化、パラメータ同定、非線形方程式、微分方程式の数値積分、更にこれらを組み合わせたものに利用されています。

アジョイントモード(あるいは、リバースモード)の自動微分は、大規模な感度解析や非線形最適化において特に関心がもたれています。

何年もかかる計算を数時間で行うことが可能であり、アジョイント自動微分の技術を利用できる問題に関しては勾配の計算の速度が大幅に速くなります。

お客様の自動微分の適用を支援いたします!

NAG は専門的なヘルプ、サポート、トレーニング及びコンサルティングサービスを提供します。強力な技術への十分な洞察を提供し、お客様の固有の自動微分アプリケーションに対して頑健性と効率性を実現します。

お客様の問題タイプ、ソフトウェア環境、ハードウェアプラットフォーム向けに最良の自動微分ソリューションを開発、実装、保守しますので、ニューメリカルアルゴリズムズグループを信頼いただけます。

NAG は RWTH Aachen(アーヘン工科大学)と協力しお客様に自動微分のソリューションを提供します。通常自動微分のプロジェクトでは、トレーニングを含むサービス、お客様自身のコード(C/C++ や Fortran)への自動微分ツールの適用、数値関数の自動微分バージョンの実装を組み合わせたものを提供しています。

自動微分ソフトウェア

自動微分(AD)、および Adjoint 自動微分(AAD)は非常に強力なテクノロジーです。産業実利用水準のコードに手作業でこれを適用することは、深刻で時間のかかる作業であり、専門家のチームが必要です。また、コードの保守や更新も、より複雑になります。そのため、シミュレーションコードの感度(入力変動に対する出力の変動の大きさ)を得るために、ほとんどの場合、何らかの AD ツールが用いられます。

NAG では以下のような AD ツールをご用意しております。

DCO ライブラリ

dco(オーバーロードによる微分コード)ライブラリは、演算子や関数のオーバーロード技術を使用している、ランタイムの自動微分ライブラリです。Fortran のほかに C++ で提供されており、任意のプログラムを1次および高次の微分コードに変換します。このライブラリは、非常にフレキシブルなインターフェース構造をもち、非常に効率的です。

dco/c++: Derivative Code by Overloading in C++

※ 演算子のオーバーロード:
プログラム言語の演算子のオーバーロード機能により、数値演算子(+, -, /, *)を変更できるようになります。したがって通常の基本演算関数のほかに微分の値を計算できます。

自動微分向け NAG Fortran コンパイラ

Fortran で書かれたシミュレーションプログラム用に、dco へのプリプロセッサとしての機能を果たすよう NAG Fortran コンパイラは拡張されています。自動微分を複雑なビルドシステムへシームレスに組み入れることが容易にできます。したがってオリジナルのソースコードをユーザーが修正する量を最小化することができます。あるいは完全に省くことができます。

技術情報
お客様事例
本サービスのご利用について

本サービスは有償のサービスとなります。
本サービスのお問い合わせは コンサルティングサービスのお問い合わせ をご利用ください。
なお,弊社製品の NAG ライブラリご使用の如何にかかわらず、本サービスをご利用いただけます。

関連情報
MENU
Privacy Policy  /  Trademarks