Microsoft Research、バグを発見、修正するためのディープラーニングモデル「BugLab」を開発:バグを自動的に埋め込み、それを発見することで学習
Microsoft Researchは、コード内のバグを発見、修正するためのディープラーニングモデル「BugLab」を開発した。BugLabではラベル付きデータを使わずに、バグを自動的に埋め込み、それを発見する“かくれんぼ”ゲームを通じてバグの検出と修正をトレーニングする。
Microsoft Researchは2021年12月8日(米国時間)に公開したブログ記事で、開発したディープラーニングモデル「BugLab」について紹介した。BugLabはコードのバグを自動的に発見、修正できるAIの開発に向けたディープラーニングの研究成果だ。ラベル付きデータを使わずに、“かくれんぼ”ゲームを通じてバグの検出と修正をトレーニングできる。
Microsoft Researchは、2021年12月に開催されたバーチャルイベント「NeurIPS 2021」で、BugLabを紹介した論文「Self-Supervised Bug Detection and Repair」のプレゼンテーションを行った。
コードの構造の他に自然言語をヒントとして使う
コードのバグを見つけて修正するには、コードの構造を推論するだけでなく、コードコメントや変数名などに含まれる、自然言語によるヒントを理解する必要がある。例えば、次のコードスニペットは、GitHubにあったあるオープンソースプロジェクトのバグとその修正案だ(57行目)。
このコードスニペットを見れば、自然言語のコメントと高レベルのコード構造から、開発者の意図は明らかだ。だが、何らかの理由で間違った比較演算子が使われていた。BugLabはこの問題を正しく認識し、開発者に警告できた。
同様に、別のオープンソースプロジェクトにあった例を示す。次のコードでは正しい変数「read_partition」ではなく、変数「write_partitions」が空であるかどうかを誤ってチェックしていた(67行目)。
Microsoft Researchは、見つけるのが簡単そうに見えて、実は難しい場合が多いこのようなバグを自動的に発見して修正できる、優れたAIの開発を目指している。こうしたバグの発見、修正という厄介な作業から解放されれば、開発者はソフトウェア開発のより重要な、そして興味深い要素に取り組む時間を増やせるからだ。
細かいバグの修正は難しい、ではどうする?
だが、コードの細かい部分には通常、どのような意図があるのか正式な仕様が示されていないため、一見小さなバグであっても、見つけ出すのは難しい。トレーニングデータが足りないため、バグを自動的に認識するように、マシンをトレーニングするのは至難の業だ。膨大なプログラムのソースコードがGitHubなどのサイトで公開されているものの、明示的に注釈されたバグのデータセットは、ごくわずかしかない。
関連記事
- バグを修正するには「3ステップ」が必要、なぜか
GitHubのセキュリティ研究者、ケビン・バックハウス氏は同社の公式ブログで、ソフトウェアのバグ修正の際に踏むべきステップを解説した。バグの起きた箇所を修正しなければならないのは当然だが、それ以外にも2ステップの作業が必要だという。 - バグのないコードを作るにはオープンソースツールが役立つ、Microsoft Researchが紹介
Microsoft Researchはバグのないコードの迅速な作成を支援する目的で取り組んでいる4つのオープンソースプロジェクトの概要を紹介した。並列プログラムのバグを検出したり、クラウド向けにREST APIのファジングを助けたりするプロジェクトだ。 - MITとIBMの研究者、自動プログラミングツールの弱点を発見し修正する方法を提案
MITとIBMの研究者はディープラーニングに基づくコード処理モデルの弱点を発見し、モデルを再トレーニングして、攻撃に対する回復力を高める自動的な方法を発表した。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.