[論文レビュー] Unifying the Perspectives of NLP and Software Engineering: A Survey on Language Models for Code
この論文はコードの言語モデルの動向を概観し、NLPとソフトウェア工学の視点を結びつけ、分類法、タスクの網羅、コード特有の特徴と将来の方向性に関する洞察を提供する。
In this work we systematically review the recent advancements in software engineering with language models, covering 70+ models, 40+ evaluation tasks, 180+ datasets, and 900 related works. Unlike previous works, we integrate software engineering (SE) with natural language processing (NLP) by discussing the perspectives of both sides: SE applies language models for development automation, while NLP adopts SE tasks for language model evaluation. We break down code processing models into general language models represented by the GPT family and specialized models that are specifically pretrained on code, often with tailored objectives. We discuss the relations and differences between these models, and highlight the historical transition of code modeling from statistical models and RNNs to pretrained Transformers and LLMs, which is exactly the same course that had been taken by NLP. We also go beyond programming and review LLMs' application in other software engineering activities including requirement engineering, testing, deployment, and operations in an endeavor to provide a global view of NLP in SE, and identify key challenges and potential future directions in this domain. We keep the survey open and updated on GitHub at https://github.com/codefuse-ai/Awesome-Code-LLM.
研究の動機と目的
- コードの言語モデル研究において、NLPとソフトウェア工学のコミュニティ間の架け橋を促進する。
- 一般的なLMからコード特化モデルまで、コード指向LLMの包括的な分類法を提供する。
- トレーニングと評価で用いられる下流タスク、評価ベンチマーク、およびコード特有の特徴を要約する。
- SEワークフローでのコード言語モデリングとデプロイメントに関する課題、機会、および将来の方向性を明示する。
提案手法
- コード用の事前学習済み言語モデルの分類法を提示し、一般ドメインLM、コード事前学習モデル、専門的なアーキテクチャを区別する。
- AST、CFG、ユニットテストなどのコード特有の特徴およびNLPから採用されたトレーニング目的(インフィリング、命令調整など)を論じる。
- 5つの入出力モダリティ(テキスト→コード、コード→コード、コード→テキスト、コード→パターン、テキスト→テキスト)にわたる下流タスクと評価ベンチマークをレビューする。
- コード処理における統計/ RNN手法から TransformerベースのLLMsへの歴史的な推移を統合する。
- SEコンテキストでの自律エージェントとの統合と本番デプロイメントの観点を概説する。
実験結果
リサーチクエスチョン
- RQ1コードモデリングに用いられる異なるモデルファミリーとトレーニングパラダイムは何であり、それらはNLPとSEの伝統とどう関連するか?
- RQ2コード言語モデルの標準的な下流タスク、ベンチマーク、評価指標は何であり、インフィリングや命令調整のような新たな能力とともにどう進化するか?
- RQ3コード理解と生成を向上させるために活用されるコード特有の特徴(例:AST、データフロー)は何か?
- RQ4コードLLMsにおけるNLPとSEの交差点での主要な課題と今後の方向性は何か?
主な発見
- 本調査は50以上のモデル、30以上のタスク、170以上のデータセット、700以上の関連研究を網羅しており、分野の広さを浮き彫りにしている。
- コードモデリングは統計/RNNモデルから事前学習済みTransformerと大規模言語モデルへと歴史的に移行しており、NLPの傾向を反映している。
- AST、CFG、ユニットテストなどのコード特有の特徴が、コードLLMsのトレーニングと評価にますます組み込まれている。
- 最近の進展には、指示調整、インフィリング目的、スケーリング則、アーキテクチャの改善、コードモデリングにおける自律エージェント研究が含まれる。
- SEにおけるコードエンジニアリング要件は、LLM開発を実運用準備へと推進する実世界のテストベッドを提供する。
- 本研究はNLP技術とSEのニーズの継続的な整合を強調し、統一ビューとオープンなGitHubリソースによる継続的な更新を提唱する。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。