Microsoft Research、バグを発見、修正するためのディープラーニングモデル「BugLab」を開発バグを自動的に埋め込み、それを発見することで学習

Microsoft Researchは、コード内のバグを発見、修正するためのディープラーニングモデル「BugLab」を開発した。BugLabではラベル付きデータを使わずに、バグを自動的に埋め込み、それを発見する“かくれんぼ”ゲームを通じてバグの検出と修正をトレーニングする。

» 2021年12月16日 17時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Microsoft Researchは2021年12月8日(米国時間)に公開したブログ記事で、開発したディープラーニングモデル「BugLab」について紹介した。BugLabはコードのバグを自動的に発見、修正できるAIの開発に向けたディープラーニングの研究成果だ。ラベル付きデータを使わずに、“かくれんぼ”ゲームを通じてバグの検出と修正をトレーニングできる。

 Microsoft Researchは、2021年12月に開催されたバーチャルイベント「NeurIPS 2021」で、BugLabを紹介した論文「Self-Supervised Bug Detection and Repair」のプレゼンテーションを行った。

コードの構造の他に自然言語をヒントとして使う

 コードのバグを見つけて修正するには、コードの構造を推論するだけでなく、コードコメントや変数名などに含まれる、自然言語によるヒントを理解する必要がある。例えば、次のコードスニペットは、GitHubにあったあるオープンソースプロジェクトのバグとその修正案だ(57行目)。

BugLabによる比較演算子の修正例(出典:Microsoft Research

 このコードスニペットを見れば、自然言語のコメントと高レベルのコード構造から、開発者の意図は明らかだ。だが、何らかの理由で間違った比較演算子が使われていた。BugLabはこの問題を正しく認識し、開発者に警告できた。

 同様に、別のオープンソースプロジェクトにあった例を示す。次のコードでは正しい変数「read_partition」ではなく、変数「write_partitions」が空であるかどうかを誤ってチェックしていた(67行目)。

BugLabによる変数の修正例(出典:Microsoft Research

 Microsoft Researchは、見つけるのが簡単そうに見えて、実は難しい場合が多いこのようなバグを自動的に発見して修正できる、優れたAIの開発を目指している。こうしたバグの発見、修正という厄介な作業から解放されれば、開発者はソフトウェア開発のより重要な、そして興味深い要素に取り組む時間を増やせるからだ。

細かいバグの修正は難しい、ではどうする?

 だが、コードの細かい部分には通常、どのような意図があるのか正式な仕様が示されていないため、一見小さなバグであっても、見つけ出すのは難しい。トレーニングデータが足りないため、バグを自動的に認識するように、マシンをトレーニングするのは至難の業だ。膨大なプログラムのソースコードがGitHubなどのサイトで公開されているものの、明示的に注釈されたバグのデータセットは、ごくわずかしかない。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。