[論文レビュー] Automatically generating features for learning program analysis heuristics
本稿では、プログラムリダクショナーを用いて代表的なプログラムクエリペアを縮小・抽象化することで、データ駆動型静的プログラム解析のための特徴を自動生成するフレームワークを提示する。この手法により、コンパクトで一般化可能なコードスニペットとしてのブール値特徴が得られ、機械学習を用いて有効な解析ヒューリスティクスを導出可能となる。実験の結果、3つのCプログラム解析において、手作業で設計された特徴と同等の性能を達成した。
We present a technique for automatically generating features for data-driven program analyses. Recently data-driven approaches for building a program analysis have been proposed, which mine existing codebases and automatically learn heuristics for finding a cost-effective abstraction for a given analysis task. Such approaches reduce the burden of the analysis designers, but they do not remove it completely; they still leave the highly nontrivial task of designing so called features to the hands of the designers. Our technique automates this feature design process. The idea is to use programs as features after reducing and abstracting them. Our technique goes through selected program-query pairs in codebases, and it reduces and abstracts the program in each pair to a few lines of code, while ensuring that the analysis behaves similarly for the original and the new programs with respect to the query. Each reduced program serves as a boolean feature for program-query pairs. This feature evaluates to true for a given program-query pair when (as a program) it is included in the program part of the pair. We have implemented our approach for three real-world program analyses. Our experimental evaluation shows that these analyses with automatically-generated features perform comparably to those with manually crafted features.
研究の動機と目的
- データ駆動型プログラム解析における主なボトル neck である、人的に手間がかかる、専門知識に依存する入力特徴の設計を解消すること。
- 精度の向上が解析の結果に顕著に影響を与えるパターンを捉える意味のある、一般化可能な特徴の自動生成を実現すること。
- ドメインの専門知識に依存せずに、手作業による特徴工学を必要とせず、効果的な解析ヒューリスティクスの学習を可能にすること。
- 抽象化されたプログラムスニペットを特徴として用いることで、さまざまな静的解析タイプ(例:区間解析、ポインタ解析、Octagon解析)に一般化できること。
- 自動生成された特徴が、手作業で設計された特徴から得られるヒューリスティクスと同等の性能を示すことを実証すること。
提案手法
- コードベースからのプログラムクエリペアに対して、プログラムリダクショナー(例:C-Reduce)を適用し、高い精度の解析動作を引き起こす最小限で代表的なコードスニペットを生成する。
- 各還元されたプログラムを、そのプログラムが特定のプログラムクエリペアに存在する場合に真となるブール値特徴として扱う。
- 還元されたプログラムをデータフローグラフに抽象化することで、パターンを一般化し、再利用可能で言語に依存しない特徴を生成する。
- 抽象化された特徴を用いて機械学習モデルを訓練し、パrametric静的解析の最適なパrameter設定を学習する。
- 特徴生成とヒューリスティクス学習を統合したフレームワークを提供し、無限の抽象ドメインを有するさまざまなCプログラム解析に適用可能である。
- 静的解析の内部論理にアクセスを必要としないブラックボックスアプローチを採用することで、一般化性が向上する。
実験結果
リサーチクエスチョン
- RQ1プログラム還元を用いることで、プログラム解析ヒューリスティクスの学習に有効な意味のある最小限のコードスニペットを自動生成できるか?
- RQ2還元されたプログラムから得られる抽象化されたデータフローグラフは、多様なプログラムパターンに一般化され、強固で再利用可能な特徴として機能するか?
- RQ3自動生成された特徴を用いて学習したヒューリスティクスは、手作業で設計された特徴を用いて学習したヒューリスティクスとどの程度性能が同等になるか?
- RQ4本手法は、区間解析やOctagon解析のように無限の抽象ドメインを有するさまざまな静的解析タイプにスケーリング可能か?
- RQ5本フレームワークは、分析固有の深い知識を必要とせずに、実世界のコードベースに効果的に適用可能か?
主な発見
- 提案手法は、部分的にフローセンシティブな区間解析およびポインタ解析、および部分的Octagon解析という3つの異なる静的解析に対して、関連する特徴を効果的に生成した。
- 自動生成された特徴を用いて学習したヒューリスティクスは、LinuxおよびGNUパッケージの60のプログラムを用いた検証で、手作業で設計された特徴を用いたものと同等の性能を達成した。
- 抽象化されたプログラムスニペットを特徴として用いることで、無限の抽象ドメインを有する解析タイプを含む、さまざまな解析タイプに一般化可能であることが示された。
- プログラムリダクショナーを用いて最小限で動作的に重要なコードスニペットを生成する手法が、精度向上が顕著に効果を発揮するパターンを的確に捉えるのに有効であった。
- 熟練者による特徴工学の必要性が著しく低下し、データ駆動型静的解析手法の採用の障壁が大幅に低下した。
- 文字レベルのCNNを用いたディープラーニングベースラインは、フローセンシティブ性の必要性を予測する際、27%の精度と93%の再現率にとどまり、本手法の特徴生成法の優位性が浮き彫りになった。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。