Project/Area Number |
19K22840
|
Research Category |
Grant-in-Aid for Challenging Research (Exploratory)
|
Allocation Type | Multi-year Fund |
Review Section |
Medium-sized Section 60:Information science, computer engineering, and related fields
|
Research Institution | The University of Tokyo |
Principal Investigator |
千葉 滋 東京大学, 大学院情報理工学系研究科, 教授 (80282713)
|
Project Period (FY) |
2019-06-28 – 2022-03-31
|
Project Status |
Granted (Fiscal Year 2020)
|
Budget Amount *help |
¥6,500,000 (Direct Cost: ¥5,000,000、Indirect Cost: ¥1,500,000)
Fiscal Year 2020: ¥2,600,000 (Direct Cost: ¥2,000,000、Indirect Cost: ¥600,000)
Fiscal Year 2019: ¥3,900,000 (Direct Cost: ¥3,000,000、Indirect Cost: ¥900,000)
|
Keywords | プログラミング言語 / ソフトウェア工学 / 機械学習 / 開発環境 |
Outline of Research at the Start |
プログラミング言語の文法を GitHub 等のレポジトリから得たコーパスを機械学習することによって得ることができるだろうか、という問いに答えるのが本研究の目的である。プログラミング言語は人工言語であるので、普通、文法は既知であり、わざわざコーパスから探索的に抽出する必要はない。本研究では、いわゆる通常の形式文法に制限されない様々な新しい「文法」を考え、その獲得方法と応用を研究する。例えばプログラミング言語のコーディング規約や、ライブラリ関数の呼び出し順のようなものを文法とみなして取り扱う手法を研究する。
|
Outline of Annual Research Achievements |
大量のプログラムのトークン列を機械学習することにより、ある種の文法構造を獲得することができる。最新の機械学習技術を応用することで獲得する文法構造の精度を改善し、それを異なる言語で書かれたプログラムの間のクローン(同一の内容をもつプログラム片)を探す問題に適用した。異なるプログラミング言語で書かれたプログラムの場合、同一の内容のプログラムであってもプログラムの表面的な字面は異なる。このため類似性の判定にはプログラムからいわゆる抽象構文木に相当する構造を得て比較する必要がある。本研究ではこれを教師なし機械学習によって得た embedding を用いて表現し、比較した。この結果、我々の過去の研究成果に比して良い成果が得られた。単純な LSTM に始まり、Transformer の利用など様々な手法による学習を試し、優れた性能を示すモデルを探った。我々の過去の研究は、プログラミング言語の文法は既知のものとして通常の構文解析をおこない、得られた構文木を使って同様のクローン検出の問題を教師あり機械学習で解く研究であった。部分的には教師なし学習を用いたが、類似性の学習に教師データを用いたため、訓練データセットの品質に性能が大きく依存するという欠点があった。またモデルが二値の判定器であったため、膨大なプログラムの中から似ているコード片を探すためのの計算効率が著しく悪かった。本研究により、検出精度の点でも、また探すための全体的な計算効率の面でも過去の研究より優れた結果を得られた。
|
Current Status of Research Progress |
Current Status of Research Progress
3: Progress in research has been slightly delayed.
Reason
昨年度までの研究成果について同様の成果が海外の研究グループより先に発表されてしまったため、これまでに得られた研究成果を別の応用に向けるべく研究をおこなった。これにより当初の計画とは応用の方向が少し修正されたが一定の成果があげられた。進捗は計画とほぼ同等か、あるいは若干の遅れがあると認識している。
|
Strategy for Future Research Activity |
これまでの研究成果をさらに発展させて、教師なし機械学習によるプログラムの異なる言語への翻訳を試みる。これによってプログラミング言語分野における機械学習の可能性をさらに広げる。
|
Report
(2 results)
Research Products
(2 results)