MITとIBMの研究者はディープラーニングに基づくコード処理モデルの弱点を発見し、モデルを再トレーニングして、攻撃に対する回復力を高める自動的な方法を発表した。
マサチューセッツ工科大学(MIT)は2021年4月15日(米国時間)、自動プログラミングツールに関する研究成果を発表した。
MIT電気工学・コンピュータサイエンス学部の大学院生シャシャンク・スリカント氏と、MIT-IBM Watson AI Labによる最新の論文では、ディープラーニングに基づくコード処理モデルの弱点を発見し、モデルを再トレーニングして、攻撃に対する回復力を高める自動的な方法を扱っている。
現在、コンピューティング能力の飛躍的向上や自然言語処理の発展、インターネットで無償公開されている膨大なソースコードのおかげで、コード処理モデルを用いたソフトウェア設計の一部を自動化することが可能になった。
GitHubのようなソースコード共有サイトで公開されているコードでコード処理モデルをトレーニングすることで、プログラムの生成を学習させる。学習後はスマートアシスタントとして機能し、開発者が次にすることを予測して、支援を行う。
コード処理モデルはタスクに適したプログラムを提案したり、プログラムの要約を生成したり、ソフトウェアの仕組みを文書化したりできる。さらにバグを発見、修正するようにトレーニングすることもできる。
コード処理モデルには開発生産性やソフトウェア品質を高める可能性があるものの、セキュリティリスクも伴う。ここが研究チームの注目した課題だ。
スリカント氏などが参加する研究チームは、まず、コード処理モデルを簡単にだませることを発見した。コード処理モデルが処理しようとするプログラムのコードで変数名を変更したり、偽の出力ステートメントを挿入したりといったごく小規模な操作を行うだけでよい。このようにわずかに改変されたプログラムは、正常に機能するものの、同時にコード処理モデルをだまして処理を誤らせ、間違った判断に導いてしまう。
こうしたミスは、さまざまなコード処理モデルで深刻な結果につながる恐れがある。例えば、「マルウェア検知モデルが悪意あるプログラムを見落とす」「コード入力補完モデルが間違った、または悪意ある候補を提案する」といった具合だ。
ディープラーニングに基づく言語モデルの常として、コード処理モデルには、一つの決定的な欠陥がある。それは、コード処理モデルが単語とフレーズの間の統計的関係に関するエキスパートではあるものの、それらの本当の意味については、ごく漠然としか「理解」していないことだ。
スリカント氏はこう指摘する。「コード処理モデルがプログラムの本質的な特性を本当に学習していれば、だますことは難しいだろう。だが、今は比較的簡単にだませる」
今回、研究チームは、自動的にプログラムを改変して、プログラムを処理するモデルの弱点を明らかにするフレームワークを提案した。このフレームワークが使用するアルゴリズムは、テキストの追加または置き換えによって、モデルに最大のミスを起こさせるプログラム中の位置を特定する。さらに、どんな編集を行うと、最大のミスが起こるのかも特定する。
Copyright © ITmedia, Inc. All Rights Reserved.