自動微分ソリューション

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

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

nAGでは、お客様がご自身のコードベースに、自動微分を適用する際の専門的なヘルプ、サポート、トレーニング及びコンサルティングのサービスを提供しております。自動微分の適用には、大きなメリットがある一方で、自身のコードベースへの適用やメンテナンスは簡単な事ではありません。nAGでは、これまでに数多くのお客様の自動微分の適用をお手伝いし、様々な問題タイプ、ソフトウェア環境、ハードウェアプラットフォームに適したソリューションを提供してまいりました。本サービスは、これらの実践経験と強力な技術に基づいたコンサルティングサービスです。

自動微分とは?

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

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

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

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

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

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

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

自動微分が大きな利益をもたらす産業と分野

我々の世界は、ますますシミュレーションが利用されるようになっています。コンピュータプログラムはシステムの挙動をシミュレートし、その結果はビジネスの意思決定や機械の制御に利用されたり、さらなるシミュレーションに投入されたりします。そして、多くの産業では、シミュレーション値だけでなく、モデル入力に対する感度(数学的微分)も計算することが重要になってきています。

  • 機械学習 ー モデル誤差の感度を用いてネットワークパラメータを適合させる
  • 地震観測 ー 最小二乗法による逆時間移行(LS-RTM)のために、移行演算子の微分が必要とされる
  • 災害モデリング(洪水、津波、火災) ー 都市や田舎の形状に対するシミュレーションの感度が、防御の設計に役立つ
  • 金融 ー 感応度はリスクヘッジやエクスポージャーの説明に使われる
  • ポートフォリオ管理 ー 市場環境の変化に対するポートフォリオの堅牢性や,下落局面での価値の喪失の速さを感応度によって示すことができる
  • 空気力学(F1、自動車、航空宇宙、海洋、防衛) ー 抵抗、揚力、弾道などの形状に対する感度を用いて、車両の形状を最適化することができる
  • 洪水防御や河川管理 ー 小石の大きさに対する感度から、河川経路が時間と共にどのように変化するか、またその速さを知ることができる
  • 気候モデリング ー モデルの感応度から、気象パターンに新たな洞察が得られ、地域の状況がいかに早く、かつ深刻に変化し得るかが示される
nAG自動微分ソフトウェア

自動微分(AD)、および Adjoint 自動微分(AAD)は非常に強力なテクノロジーですが、実運用水準のコードに手作業でこれを適用することは大変な作業です。それだけではなくコードの保守や更新も、より複雑になります。そのため、ほとんどの場合何らかの AD ツールが用いられます。

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

(1)dco/c++

dco/c++は非常に効率的で多くの機能を提供する自動微分ツールです。本ツールは演算子オーバーロードを活用し、洗練されたAPIを提供します。これにより、ユーザはモデルやアルゴリズムを変更することなく、極めて効率的に微分の計算が可能です。また、習得が容易であるため、ユーザが自身のコードベースに自動微分を素早く適用し、ビルドやテストフレームワークに統合する事が可能です。

dco/c++の特徴

  • あらゆるコードの任意の次数の導関数が計算でき、機械精度まで正確に計算できます。本ツールは感度に関するあらゆる質問への答えを提供可能します。
  • 高度に最適化された内部データ構造と高度なテンプレートエンジンにより、顧客テスト及び社内テストの両方において、クラス最高のパフォーマンスを発揮します。
  • ベースラインのメモリ使用量は少なく、直感的なチェックポイント・インターフェースを用いて、メモリ使用量をほぼ任意に制御・制限することができます。
  • アジョイント自動微分の適用の神髄は、メモリ使用量と計算量のバランスをとることであり、ユーザーはdco/c++を用いて、とても自然な方法でこれを制御できます。
  • 大手及び中堅 の銀行で、本ツールをコアとなるプライシング及びリスクライブラリに適用し、実運用で使用しています。
  • 複数の異なるお客様の実運用コードで、(差分法と比較して)10倍~6000倍の計算スピードを達成した実績があります。
  • チェックポイント・インターフェースにより、コードのどの部分に対しても手書きのアジョイントを指定でき、GPUとのインタフェースを可能にするなど、様々な機能を備えています。
  • 並列アジョイントサポート:最新のアーキテクチャでは、並列性を効果的に利用することが重要ですが、dco/c++では、アドジョイントコードにも並列性を持たせることができます。

dco/c++の主な機能

  • ユーザー定義テープコールバック(外部アジョイント)
  • 生産性を重視した洗練されたインターフェイス
  • 式テンプレートと高度に最適化されたテープによる超高速計算
  • メモリ使用量の完全制御
  • 並列計算とGPUをサポート(dco/mapとの組み合わせで)。
  • ベクトルタンジェントおよびアジョイントモード
  • アクティビティ解析
  • スパースパターン検出
  • テープ圧縮
  • テープの直接操作
  • アジョイントMPIサポート

これらの機能により、高度なDAG操作が可能となり、高効率なアジョイント実装を実現することができます。

dco/c++ ダウンロード

dco/c++演算子オーバロードについての詳細(英国nAGサイトへのリンク dco/c++: Derivative Code by Overloading in C++)

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

(2)dco/map

dco/mapはC++11で、アクセラレータ(GPUなど)を利用できるように設計された、テープを用いないで演算子オーバーロードを行うための自動微分ツールです。 dco/map技術レポート(英国nAGサイトへのリンク)

(3)nAG ADライブラリ

nAG ADライブラリは世界最高水準のアジョイント数値・統計ソルバーです。

nAG ADライブラリの特徴

  • nAG AD LibraryはnAGのADツールであるdco/c++とシームレスに利用できます。またdco/c++に限らず、他のADツールでも利用可能です。
  • 有限差分を使用した場合と異なり、近似値ではなく正確な導関数を提供します。
  • ADを適用するnAGライブラリユーザは、nAGの高品質なアジョイントルーチンを使用できるようになりました。ライブラリルーチンのアジョイントバージョンを書いたり、劣悪な代替品に頼る必要はありません。
  • 記号的アジョイントとアルゴリズム的アジョイントは同じインターフェースで、素早く簡単に使用できます。
  • nAGはdco/c++とnAG AD Libraryの両方を利用することで、単一のADソリューションを提供します。
  • 内部表現(IR)を使用したルーチンコールツリーの逆順化が行えます。
  • 指定された入力変数のみに関して出力変数を微分します。
  • アジョイントは出力変数ごとに一度だけ解釈する必要があり、(多くの場合)出力数が入力数に対して少ない場合に計算時間を短縮します。
  • アジョイントルーチンは dco/c++ の組込み関数として使用できます(C++ で sin(x) を使用するのと同様)。
  • ユーザー提供関数によるルーチンのアルゴリズム的なアジョイントは、追加の開発時間なしで使用可能です。
  • dco/c++を使用しないソリューションからdco/c++を使用するソリューションへのスムーズな移行が可能です。
  • dco/c++で使用する場合、変数のコピーは不要(バイナリ互換性のあるデータ型使われています)です
  • nAG ADライブラリは完全にドキュメント化されており、計算の専門家によりメンテナンスとサポートが行われています:必要な時に第一線のテクニカルサポートを受けることができます。
本サービスのご利用について

本サービスのご利用の流れは以下のようになります。

①(無償)自動微分専門家によるオンライン・ヒアリング(英語)
英国nAG社在籍の自動微分専門家担当者が、お客様のご要望をオンラインでヒアリングいたします。 またその際に、nAG自動微分ツールであるdco/c++についてご紹介させていただきます。
②(有償)自動微分専門家によるオンライン・コンサルティング/トレーニング(英語)

nAGの自動微分専門家が、お客様の自動微分適用に向けた技術コンサルティング(最大6人日分)を行います。これにはnAG自動微分ツールdco/c++のトレーニング及び検証用ライセンス(全機能3か月間利用可能)が含まれます。本ステップの目的は、お客様が本格的な自動微分の適用を十分検討できるようにする事です。 尚、本ステップの費用は300万円(税別)となります。

お客様がご希望いただく場合、簡易モデルによる概念実証(PoC)を行う事も可能です。(別途お見積りいたします)

③(有償)ライセンス及びサポート費用について
dco/c++のご利用にはライセンスが必要です。マシン台数、規模などに応じてお見積りいたします。
一例として、デスクトップ用開発ライセンス(技術サポート(英語)込み)は40万円/年(税別)となります。
まずは、お問い合わせフォームよりお問い合わせください。
自動微分の誤った神話

以下に、自動微分に関してよくある誤った認識についての記事をご紹介します。

お客様事例
技術情報
関連情報
MENU
© 髫エ魃会スス�・髫エ蟷「�ス�ャ驛「譏懶スケ譁溽、シ�ケ譎「�ス�シ驛「譎「�ス�。驛「譎「�ス�ェ驛「�ァ�ス�ォ驛「譎「�ス�ォ驛「�ァ�ス�「驛「譎「�ス�ォ驛「�ァ�ス�エ驛「譎「�ス�ェ驛「�ァ�ス�コ驛「譎「�ソ�ス驛「�ァ�ス�コ驛「�ァ�ス�ー驛「譎「�ス�ォ驛「譎「�ス�シ驛「譎芽サク�ス�ス�ス�ェ髯溷床�ク闌ィ�ス�シ陞溘q�ス�、�ス�セ 2024
Privacy Policy  /  Trademarks