Skip to main content
QUICK REVIEW

[論文レビュー] Automatic differentiation in ML: Where we are and where we should be going

Bart van Merriënboer, Olivier Breuleux|arXiv (Cornell University)|Oct 26, 2018
Evolutionary Algorithms and Applications被引用数 39
ひとこと要約

この論文は、機械学習における自動微分(AD)のための、新しいグラフベースの中間表現(IR)を提案している。このIRは、高階関数、再帰、クロージャーを完全にサポートしており、既存のフレームワークでしばしば欠落している機能を補完する。ソース変換を用いて、MyiaはPythonコードを最適化された、テープを必要としないADパイプラインにコンパイルし、事前に最適化可能で、高階導関数をサポートする。その結果、TensorFlowと同等のパフォーマンスを達成しながら、PyTorchの柔軟性を維持する。

ABSTRACT

We review the current state of automatic differentiation (AD) for array programming in machine learning (ML), including the different approaches such as operator overloading (OO) and source transformation (ST) used for AD, graph-based intermediate representations for programs, and source languages. Based on these insights, we introduce a new graph-based intermediate representation (IR) which specifically aims to efficiently support fully-general AD for array programming. Unlike existing dataflow programming representations in ML frameworks, our IR naturally supports function calls, higher-order functions and recursion, making ML models easier to implement. The ability to represent closures allows us to perform AD using ST without a tape, making the resulting derivative (adjoint) program amenable to ahead-of-time optimization using tools from functional language compilers, and enabling higher-order derivatives. Lastly, we introduce a proof of concept compiler toolchain called Myia which uses a subset of Python as a front end.

研究の動機と目的

  • 配列プログラミングフレームワークにおける一般ADの制限、特に再帰や高階関数のサポートに関する課題を解決すること。
  • クロージャーや関数合成をネイティブにサポートするグラフベースの中間表現(IR)を設計し、より表現力があり、合成可能なMLモデルを可能にすること。
  • テープを必要とせず、関数型言語コンパイラ技術を用いた最適化に適した、ソース変換ベースのADを実現し、高階導関数をサポートすること。
  • Pythonのサブセットを効率的で最適化された導関数コードにコンパイルするプロトタイプコンパイラツールチェーン(Myia)を構築すること。
  • MLフレームワークと関数型言語コンパイラ研究の間のギャップを埋め、ADパイプラインに高度な最適化および型推論技術を統合すること。

提案手法

  • プログラムを1等値として表現するグラフベースの中間表現(IR)を設計し、関数呼び出し、クロージャー、再帰をサポートすること。
  • ソース変換(ST)を用いて、IRから随伴プログラムを生成し、クロージャー表現を活用することで、実行時テープの必要性を回避すること。
  • コルーチンを用いた型と形状推論システムを実装し、型アノテーションを必要とせずに型、値、形状を推論すること。
  • 関数型コンパイラツールチェーンのツールを用いて、導関数プログラムに標準的な関数型言語最適化(例:インライン展開、定数畳み込み)を適用すること。
  • 仮想マシンとGPUバックエンドを用いて、入力型ごとに特殊化された最適化された導関数コードを効率的な機械語にコンパイルすること。
  • Python関数を抽象構文木(AST)に解析し、IRに変換し、ソース変換によるADを適用し、結果の導関数グラフを最適化すること。

実験結果

リサーチクエスチョン

  • RQ1高階関数や再帰をサポートする配列プログラミングフレームワークにおいて、自動微分を効率的かつ汎用的に実装する方法は何か?
  • RQ2クロージャーや関数合成をネイティブに表現できるグラフベースの中間表現を設計できるか? これにより、実行時テープのオーバーヘッドなしに完全なADを実現できるか?
  • RQ3関数型言語コンパイラ最適化(例:A-正規形、永続的データ構造)をMLフレームワークの導関数プログラムにどの程度適用できるか?
  • RQ4ソース変換ベースのADシステムは、TensorFlowのようなコンパイル済みフレームワークと同等のパフォーマンスを達成できるか? また、PyTorchのような動的フレームワークの柔軟性を維持できるか?
  • RQ5型アノテーションを明示的に記述しなくても、Pythonのような動的型付け言語で型と形状推論を効率的に行う方法は何か?

主な発見

  • 提案されたグラフベースのIRは、高階関数、再帰、クロージャーをネイティブにサポートしており、現在のフレームワークよりも表現力があり、合成可能なMLモデルの実装が可能である。
  • クロージャー表現を活用したソース変換により、実行時テープの必要性を回避し、効率的で最適化された導関数コード生成が可能になった。
  • Myiaが生成する導関数プログラムは、関数型言語コンパイラ技術を用いた事前最適化に適しており、パフォーマンスの向上とオーバーヘッドの低減が実現された。
  • Myiaにおける型と形状推論は、型アノテーションを必要とせず、動的Pythonコードを記述したまま効率的なコンパイルと型チェックが可能である。
  • Myiaのプロトタイプは、静的計算グラフフレームワークに欠落している再帰や高階関数のような機能をサポートしながら、TensorFlowと同等のパフォーマンスを達成できることを示している。
  • クリーンで合成可能な表現により、高階導関数の計算が可能になり、従来のフレームワークが1階微分や非合成可能な形式に制限される問題を克服した。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。