[論文レビュー] Deep Learning for Source Code Modeling and Generation: Models, Applications and Challenges
ソースコードモデリングと生成のための深層学習アプローチの総合的な調査で、プログラム学習タスクをエンコーダ–デコーダアーキテクチャの中に位置づけ、データセット、実践、課題、将来の方向性を概説する。
Deep Learning (DL) techniques for Natural Language Processing have been evolving remarkably fast. Recently, the DL advances in language modeling, machine translation and paragraph understanding are so prominent that the potential of DL in Software Engineering cannot be overlooked, especially in the field of program learning. To facilitate further research and applications of DL in this field, we provide a comprehensive review to categorize and investigate existing DL methods for source code modeling and generation. To address the limitations of the traditional source code models, we formulate common program learning tasks under an encoder-decoder framework. After that, we introduce recent DL mechanisms suitable to solve such problems. Then, we present the state-of-the-art practices and discuss their challenges with some recommendations for practitioners and researchers as well.
研究の動機と目的
- 従来のコードモデルの限界を強調することにより、Big Code に対する深層学習の活用を促す。
- ソースコードモデリングタスクをエンコーダ–デコーダフレームワークに体系的にマッピングする。
- コードモデリングと生成に適用できる最先端のDLモデルと機構をレビューする。
- 実務家と研究者に向けたデータセット、課題、推奨事項を特定する。
提案手法
- 柔軟性とスケーラビリティに対処するため、一般的なプログラム学習タスクをエンコーダ–デコーダフレームワークの下に定式化する。
- 伝統的アプローチ(DSL、確率文法、n-gram、単純なニューラルモデル)とそれらの限界を検討する。
- コードタスクのための深い系列モデリングモデル(RNN、CNN、Transformer)と手法(アテンション、外部メモリ、ビームサーチ)を説明する。
- 入力埋め込みと、サブワードおよび文字レベル表現を含む大規模コード語彙の扱いについて論じる。
- 系列モデルに特有の安定した学習技術(SGD の変種、ドロップアウトの変種、正規化、正則化)を概説する。
- Big Code タスクにおける DL ベースの実践の体系的レビューを提供し、データセットについて論じる。
実験結果
リサーチクエスチョン
- RQ1ソースコードモデリングと生成に適用可能な主要な DL ベースの手法は何か?
- RQ2エンコーダ–デコーダフレームワークを多様な Big Code タスクにどのように適用できるか?
- RQ3DLベースのソースコードモデリングと生成を支援するデータセットは何か?
- RQ4深層ソースコードモデルの現在の課題と今後の方向性は何か?
- RQ5構文、意味論、長期依存性の捕捉という観点で、DL アプローチは伝統的なモデルとどのように比較されるか?
主な発見
- DL アプローチは特徴を自動的に学習し、コード中の長期依存性を捉えることで伝統的なモデルを上回る。
- 注意機構/メモリ機構を備えたエンコーダ–デコーダフレームワークは、コード列の文脈処理に有効である。
- Transformer ベースのアーキテクチャや他の非再帰的構造は、コード関連タスクにおいて高い性能とより速い学習を提供する。
- 文字レベルおよびサブワードレベルの埋め込みは、大規模なコード語彙を管理し、より良いコード補完を実現する。
- さまざまなデータセットと実務的な推奨事項が存在し、スケーラビリティ、一般化、データセット品質などの課題が特定されている。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。