今日のディープラーニングと大規模モデルの急速な発展により、革新的なテクノロジーの絶え間ない追求がもたらされています。このプロセスにおいて、コードデータ拡張技術は大きな価値を示しました。 最近、モナシュ大学、シンガポール経営大学、ファーウェイノアの方舟研究所、北京航空航天大学、オーストラリア国立大学が過去5年間の関連研究論文89件を共同調査し、深層学習におけるコードデータ強化の応用に関する包括的なレビューを発表しました。
このレビューでは、ディープラーニング分野におけるコードデータ拡張技術の応用を詳細に検討するだけでなく、その将来の発展の可能性にも期待しています。新しいデータを収集せずにトレーニングサンプルの多様性を高める手法として、コードデータ拡張は機械学習の研究では広く使用されてきました。これらの技術は、リソースが乏しい領域におけるデータ駆動型モデルのパフォーマンスを向上させる上で重要な意味を持ちます。 ただし、コード モデリングの分野では、このアプローチの可能性はまだ十分に検討されていません。コード モデリングは、機械学習とソフトウェア エンジニアリングの交差点にある新しい分野であり、機械学習技術を適用して、コード補完、コード要約、欠陥検出などのさまざまなコード タスクを解決します。コード データのマルチモーダルな性質 (プログラミング言語と自然言語) により、データ拡張方法のカスタマイズに特有の課題が生じます。 複数のトップ学術機関と産業界が共同で発表したこのレビューレポートは、コードデータ拡張技術に関する詳細な洞察を提供するだけでなく、この分野における将来の研究とアプリケーションの方向性も示しています。このレビューにより、より多くの研究者が深層学習におけるコードデータ拡張の応用に興味を持ち、この分野でのさらなる探究と発展が促進されると信じています。 背景コード モデルの台頭と発展: コード モデルは大規模なソース コード コーパスに基づいてトレーニングされ、コード スニペットのコンテキストを正確にシミュレートできます。 LSTM や Seq2Seq などのディープラーニング アーキテクチャの初期の採用から、その後の事前トレーニング済み言語モデルの組み込みまで、これらのモデルはソース コード上の複数のダウンストリーム タスクで優れたパフォーマンスを示してきました。たとえば、一部のモデルでは、事前トレーニング フェーズ中にプログラムのデータ フローを考慮します。これは、変数間の関係をキャプチャするコードの意味レベル構造です。 データ拡張技術の重要性: データ拡張技術は、データ合成を通じてトレーニング サンプルの多様性を高め、さまざまな側面 (精度や堅牢性など) でモデルのパフォーマンスを向上させます。たとえば、コンピューター ビジョンの分野では、一般的なデータ拡張方法には、画像の切り抜き、反転、色調整などがあります。自然言語処理では、データ拡張は、単語を置き換えたり文を書き換えたりすることでコンテキストを変更できる言語モデルに大きく依存しています。 コード データ拡張の特殊性: 画像やプレーン テキストとは異なり、ソース コードはプログラミング言語の厳格な構文規則によって制約されるため、拡張の柔軟性は低くなります。ほとんどのコード拡張方法では、元のコード スニペットの機能と構文を保持するために、特定の変換ルールに従う必要があります。一般的な方法は、パーサーを使用してソース コードの具体的な構文ツリーを構築し、それを抽象構文ツリーに変換して、識別子や制御フロー ステートメントなどの重要な情報を保持しながら表現を簡素化することです。これらの変換は、ルールベースのデータ拡張方法の基礎であり、現実世界でより多様なコード表現をシミュレートし、拡張データでトレーニングされたコード モデルの堅牢性を向上させるのに役立ちます。 コードデータ拡張手法の詳細な調査コード データ拡張の世界を深く掘り下げたこの論文では、著者らはこれらの手法を、ルール ベースの手法、モデル ベースの手法、およびサンプル補間手法の 3 つの主要なカテゴリに分類しています。以下に、これらのさまざまなブランチの簡単な説明を示します。 ルールベースの手法: 多くのデータ拡張方法では、事前に定義されたルールを利用して、文法規則やセマンティクスに違反しないようにしながらプログラムを変換します。これらの変換には、変数名の置き換え、メソッド名の変更、デッドコードの挿入が含まれます。基本的なプログラム構文に加えて、一部の変換では、制御フロー グラフや使用定義チェーンなどのより深い構造情報を考慮します。ルールベースのデータ拡張技術のサブセットは、ドキュメント文字列やコメントを含むコードスニペット内の自然言語コンテキストの拡張に重点を置いています。 モデルベースの技術: コード モデル用のさまざまなデータ拡張技術は、さまざまなモデルをトレーニングしてデータを拡張するように設計されています。たとえば、いくつかの研究では、補助分類生成敵対ネットワーク (ACGAN) を使用して強化プログラムを生成しました。他の研究では、コード生成機能とコード検索機能の両方を向上させるために、生成的敵対的ネットワークをトレーニングしました。これらのメソッドは主にコード モデル専用に設計されており、さまざまな方法でコードの表現とコンテキストの理解を強化することを目的としています。 サンプル補間技術: このタイプのデータ拡張技術は Mixup から派生したもので、2 つ以上の実際のサンプルの入力とラベルを補間することによって動作します。たとえば、コンピューター ビジョンのバイナリ分類タスクと犬と猫の写真 2 枚が与えられた場合、これらのデータ拡張方法では、2 枚の写真の入力とそれに対応するラベルを、ランダムに選択された重みとともに混合できます。ただし、コード領域では、これらの方法の適用は、固有のプログラミング構文と関数によって制限されます。表面レベルの補間と比較して、ほとんどの例の補間データ拡張方法では、モデルの埋め込みによって複数の実際の例を単一の入力に融合します。たとえば、ルールベースの手法と Mixup を組み合わせて、元のコード スニペットと変換された表現を混合する研究があります。 戦略とテクノロジー実際のアプリケーションでは、コード モデルのデータ拡張手法の設計と有効性は、計算コスト、サンプルの多様性、モデルの堅牢性など、複数の要因によって影響を受けます。このセクションでは、これらの要素に焦点を当て、適切なデータ拡張方法を設計および最適化するための洞察と手法を提供します。 メソッドスタッキング: 前回の議論では、モデルのパフォーマンスを向上させることを目的として、単一の研究で多くのデータ拡張戦略が同時に提案されました。通常、この組み合わせには、同じタイプのデータ拡張または異なるデータ拡張方法の混合の 2 つのタイプが含まれます。前者は通常、ルールベースのデータ拡張技術に適用され、その出発点は、単一のコード変換では現実世界の多様なコードスタイルと実装を完全に表現できないということです。いくつかの研究では、複数のタイプのデータ拡張技術を融合することで、コード モデルのパフォーマンスを向上できることが示されています。たとえば、ルールベースのコード変換スキームとモデルベースのデータ拡張を組み合わせて、モデルトレーニング用の拡張コーパスを作成します。他の研究では、ルールベースの非キーワード抽出とモデルベースの非キーワード置換という 2 つのデータ拡張手法を含むプログラミング言語の強化が行われています。 最適化: 堅牢性の向上や計算コストの最小化などのシナリオでは、特定の拡張例の候補を選択することが重要です。著者らは、この目標指向の候補選択をデータ拡張における最適化と呼んでいます。この記事では主に、確率的選択、モデルベースの選択、ルールベースの選択という 3 つの戦略を紹介しています。確率的選択は確率分布からサンプリングすることによって最適化しますが、モデルベースの選択はモデルを使用して最も適切な例の選択をガイドします。ルールベースの選択では、特定の事前に決定されたルールまたはヒューリスティックを使用して、最も適切な例を選択します。 確率的選択:著者らは、MHM、QMDP、BUGLAB-Aug の 3 つの代表的な確率的選択戦略を具体的に選択しました。 MHM は、識別子の置き換えによって敵対的サンプルを選択するために、メトロポリス・ヘイスティングスの確率的サンプリング法、マルコフ連鎖モンテカルロ法を採用しています。 QMDP は Q 学習手法を使用して、ルールベースの構造変換を戦略的に選択して実行します。 モデルベースの選択: この戦略を採用する一部のデータ拡張手法では、モデルの勾配情報を使用して拡張サンプルの選択をガイドします。典型的な方法は、モデル損失を最適化し、変数の名前を変更して敵対的サンプルを選択および生成するデータ拡張 MP 法です。 SPACE は、プログラミング言語の意味的および構文的な正確性を維持しながら、モデルのパフォーマンスへの影響を最大化することを目的として、勾配上昇法によってコード識別子の埋め込みを選択および変更します。 ルールベースの選択: ルールベースの選択は、事前に決定された適応度関数またはルールを使用する強力なアプローチです。このアプローチは通常、意思決定指標に依存します。たとえば、IRGen は遺伝的アルゴリズム ベースの最適化手法と IR 類似性ベースの適応度関数を使用します。 ACCENT と RA データ拡張 R は、それぞれ BLEU や CodeBLEU などの評価メトリックを使用して選択と置換のプロセスをガイドし、最大の敵対的影響を実現します。 アプリケーションシナリオいくつかの一般的なコード シナリオでは、データ拡張メソッドを直接適用できます。 堅牢性に関する敵対的例: 堅牢性は、ソフトウェア エンジニアリングにおいて重要かつ複雑な側面です。コード モデルの脆弱性を特定して軽減するための敵対的サンプルを生成する効果的なデータ拡張手法の設計は、近年の研究のホットスポットになっています。複数の研究では、さまざまなデータ拡張方法を使用してモデルの堅牢性をテストおよび強化し、コード モデルの堅牢性をさらに強化しました。 リソースの少ない分野: ソフトウェア エンジニアリングの分野では、プログラミング言語のリソースが著しく不均衡になっています。 Python や Java などの人気のプログラミング言語はオープンソース リポジトリで大きな役割を果たしていますが、Rust などの多くの言語はリソースが不足しています。コード モデルはオープン ソースのリポジトリやフォーラムに基づいてトレーニングされることが多く、プログラミング言語リソースの不均衡により、リソースが乏しいプログラミング言語でのパフォーマンスに悪影響が出る可能性があります。リソースの少ない領域でデータ拡張手法を適用することは、繰り返し取り上げられるテーマです。 検索強化:自然言語処理とコードの分野では、検索強化のためのデータ拡張アプリケーションがますます注目を集めています。コード モデル用のこれらの検索強化フレームワークは、コード モデルの事前トレーニングまたは微調整時に、トレーニング セットからの検索強化例を組み込みます。この強化方法により、モデルのパラメータ効率が向上します。 対照学習: 対照学習は、データ拡張方法がコード シナリオに展開されるもう 1 つのアプリケーション領域です。これにより、類似のサンプルは互いに近く、類似しないサンプルは離れている埋め込み空間をモデルが学習できるようになります。データ拡張手法は、欠陥検出、クローン検出、コード検索などのタスクにおけるモデルのパフォーマンスを向上させるために、正のサンプルに類似した例を構築するために使用されます。 次に、クローン検出、欠陥検出と修復、コード要約、コード検索、コード生成、コード変換など、評価データセットにおけるいくつかの一般的なコードタスクとデータ拡張作業について説明します。 課題と機会著者らは、コードデータの拡張には多くの重大な課題があると考えています。しかし、まさにこうした課題こそが、この分野における新たな可能性と刺激的な機会への道を切り開くのです。 理論的議論: 現在、コード内のデータ拡張方法の詳細な調査と理論的理解の間には明らかなギャップがあります。既存の研究のほとんどは、画像処理と自然言語の分野に焦点を当てており、データ拡張をデータやタスクの不変量に関する既存の知識を適用する方法と見なしています。コードに目を向けると、これまでの研究では新しい手法が紹介されたり、データ拡張技術がどのように効果的であるかが実証されたりしましたが、特に数学的な観点から、その理由と方法が見落とされることがよくありました。コードの離散的な性質により、理論的な議論がさらに重要になります。理論的な議論により、実験結果だけではなく、より広い視点からデータ拡張を理解できるようになります。 事前学習済みモデルに関する研究のさらなる進展:近年、事前学習済みコードモデルはコード分野で広く利用されており、大規模コーパスの自己監視を通じて豊富な知識を蓄積してきました。多くの研究では、事前トレーニング済みのコード モデルを使用してデータ拡張が行われていますが、ほとんどの試みは、マスクされたトークンの置き換えまたは微調整後の直接生成に限定されています。コードの分野では、大規模言語モデルのデータ拡張の可能性を活用することが新たな研究機会となっています。 これらの研究は、データ拡張において事前トレーニング済みモデルを使用する従来の方法とは異なり、「ヒントベースのデータ拡張」の時代を切り開きました。しかし、コード領域におけるヒントベースのデータ拡張の調査は、比較的手つかずの研究領域のままです。 ドメイン固有のデータの処理: 著者らは、処理コードの一般的な下流タスクのためのデータ拡張技術の調査に重点を置いています。しかし、著者らは、コード領域における他のタスク固有のデータに関する研究がまだ少ししか行われていないことを認識しています。たとえば、API の推奨や API シーケンスの生成は、コード タスクの一部として考えることができます。著者らは、これら 2 つの異なるレベル間でデータ拡張技術にギャップがあることを確認しており、今後の研究で検討する機会を提供しています。 プロジェクト レベルのコードと低リソース プログラミング言語のさらなる調査: 既存の方法では、関数レベルのコード スニペットと一般的なプログラミング言語に関して十分な進歩が遂げられています。一方、低リソース言語向けの拡張方法は、需要は大きいものの、比較的少ないです。これら 2 つの方向の探究はまだ限られていますが、著者らはこれらが有望な方向である可能性があると考えています。 社会的偏見の緩和: ソフトウェア開発におけるコード モデルが進歩するにつれ、人事や教育などの人間中心のアプリケーションの開発に使用されるようになるでしょう。このようなアプリケーションでは、偏ったプログラミングによって、代表性の低い人々に対する不公平で非倫理的な決定がもたらされる可能性があります。 NLP における社会的バイアスは十分に研究されており、データ拡張によって軽減できますが、コードにおける社会的バイアスはあまり注目されていません。 小規模サンプル学習: 小規模サンプルのシナリオでは、モデルは従来の機械学習モデルに匹敵するパフォーマンスを達成する必要がありますが、トレーニング データは非常に限られています。データ拡張方法はこの問題に対する直接的な解決策を提供します。しかし、少数ショットのシナリオでデータ拡張手法を採用する研究は限られています。いくつかのサンプル シナリオでは、高品質の拡張データを生成することによって、モデルに高速な一般化と問題解決機能を提供する方法が興味深い問題です。 マルチモーダル アプリケーション: 関数レベルのコード スニペットだけに焦点を当てると、実際のプログラミング状況の複雑さとニュアンスを正確に表現できないことに注意することが重要です。このシナリオでは、開発者は通常、複数のファイルとフォルダーを同時に操作します。これらのマルチモーダル アプリケーションはますます普及していますが、データ拡張手法をそれらに適用することに関する研究はほとんど行われていません。課題の 1 つは、視覚言語マルチモーダル タスクで研究されてきたコード モデル内の各モーダリティの埋め込み表現を効果的に橋渡しすることです。 統一性の欠如: 現在のコード データ拡張に関する文献では、最も一般的な方法が補助的なものとして特徴付けられることが多く、困難な状況が示されています。いくつかの実証的研究では、コード モデルのデータ拡張方法を比較しようと試みてきました。しかし、これらの研究では、既存の高度なデータ拡張手法のほとんどが活用されていません。コンピューター ビジョン (PyTorch のデフォルトの拡張ライブラリなど) や NLP (NL-Augmenter など) 向けのデータ拡張フレームワークは認識されていますが、コード モデルの一般的なデータ拡張手法に対応するライブラリが著しく不足しています。さらに、既存のデータ拡張手法は通常、さまざまなデータセットを使用して評価されるため、その有効性を判断することは困難です。したがって、著者らは、さまざまな拡張方法の有効性を比較および評価するための標準化された統一されたベンチマークタスクとデータセットを確立することにより、データ拡張研究の進歩が大きく促進されると考えています。これにより、これらのアプローチの長所と限界をより体系的かつ比較的に理解できるようになります。 |
>>: ウルトラマンが解雇されるのは今回が初めてではない! YCを去った人物は「創設者から去るように言われた」
コンピューターに頼って悪者を即座に見つけることができれば素晴らしいのですが、問題は AI システムが...
[51CTO.comより引用] 2017年1月9日にWeChatミニプログラムが正式リリースされて以...
ユーザーがドローンを操作する方法を規制する法律が来週の木曜日(1月7日)に施行される。この法律はノル...
[[340407]]この記事はLeiphone.comから転載したものです。転載する場合は、Lei...
[[344407]] COVID-19パンデミックが世界を席巻する以前から、人工知能(AI)、特にそ...
順序上記に引き続き、このトピックについて話し続けましょう。バランス二分木: AVL 木 (1962)...
1. 現状と問題点1. 現状と問題点Cloud Music データ ウェアハウス プラットフォームは...
[[354264]]石油貯蔵所、ガソリンスタンド、石油荷降ろしトラックには大量の完成燃料が保管され...
人間の認知においては、汎用人工知能(AGI)を人工知能の究極の形、およびその開発の究極の目標として設...
農業は人類の生存の基盤であり、第三次産業の中核的位置を占め、経済社会の安定と発展に極めて重要な産業で...
人間の進化と発達は、脳の潜在能力を最大限に活用して世界を変えるプロセスです。その中で、インターネット...
人工知能の長年の目標は、これまで人間のみが実行していたタスクを機械が実行できるようにすることです。し...
レーダー点群のセマンティックセグメンテーションは、レーダーデータ処理における新たな課題です。このタス...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...