論文の概要: Embedding Java Classes with code2vec: Improvements from Variable
Obfuscation
- arxiv url: http://arxiv.org/abs/2004.02942v1
- Date: Mon, 6 Apr 2020 19:05:18 GMT
- ステータス: 処理完了
- システム内更新日: 2022-12-16 06:09:41.944491
- Title: Embedding Java Classes with code2vec: Improvements from Variable
Obfuscation
- Title(参考訳): Code2vecでJavaクラスを埋め込む - 可変難読化による改善
- Authors: Rhys Compton, Eibe Frank, Panos Patros, Abigail Koay
- Abstract要約: 本稿では,code2vecモデルのトレーニング中に変数名を難読化することで,特定の名前ではなくコード構造に頼らざるを得ないことを示す。
この結果から,変数名を難読化することは,変数の命名に不便で,より正確にコードの意味を反映した埋め込みモデルを生み出すことが示唆された。
- 参考スコア(独自算出の注目度): 0.716879432974126
- License: http://arxiv.org/licenses/nonexclusive-distrib/1.0/
- Abstract: Automatic source code analysis in key areas of software engineering, such as
code security, can benefit from Machine Learning (ML). However, many standard
ML approaches require a numeric representation of data and cannot be applied
directly to source code. Thus, to enable ML, we need to embed source code into
numeric feature vectors while maintaining the semantics of the code as much as
possible. code2vec is a recently released embedding approach that uses the
proxy task of method name prediction to map Java methods to feature vectors.
However, experimentation with code2vec shows that it learns to rely on variable
names for prediction, causing it to be easily fooled by typos or adversarial
attacks. Moreover, it is only able to embed individual Java methods and cannot
embed an entire collection of methods such as those present in a typical Java
class, making it difficult to perform predictions at the class level (e.g., for
the identification of malicious Java classes). Both shortcomings are addressed
in the research presented in this paper. We investigate the effect of
obfuscating variable names during the training of a code2vec model to force it
to rely on the structure of the code rather than specific names and consider a
simple approach to creating class-level embeddings by aggregating sets of
method embeddings. Our results, obtained on a challenging new collection of
source-code classification problems, indicate that obfuscating variable names
produces an embedding model that is both impervious to variable naming and more
accurately reflects code semantics. The datasets, models, and code are shared
for further ML research on source code.
- Abstract(参考訳): コードセキュリティなどのソフトウェアエンジニアリングの重要な領域におけるソースコードの自動解析は、機械学習(ML)の恩恵を受けることができる。
しかし、多くの標準mlアプローチではデータの数値表現が必要であり、ソースコードに直接適用することはできない。
したがって、MLを有効にするためには、可能な限りコードのセマンティクスを維持しながら、ソースコードを数値的な特徴ベクトルに埋め込む必要がある。
code2vecは先日リリースされた組み込みアプローチで、メソッド名予測のプロキシタスクを使用して、javaメソッドを機能ベクタにマッピングする。
しかし、code2vecを使った実験では、変数名を予測に頼ることを学び、タイプミスや敵攻撃によって簡単に騙されることが示されている。
さらに、個々のjavaメソッドのみを組み込むことができ、典型的なjavaクラスに存在するメソッドのようなメソッドのコレクション全体を組み込むことができないため、クラスレベルでの予測の実行が困難である(例えば、悪意のあるjavaクラスの識別など)。
どちらの欠点も,本論文で示された研究に対処する。
code2vecモデルのトレーニング中に変数名を難読化することにより、特定の名前ではなくコード構造に頼らざるを得なくなり、メソッド埋め込みの集合を集約してクラスレベルの埋め込みを作成するための簡単なアプローチを考える。
提案手法は,変数名の省略によって,変数の命名に支障をきたすような組込みモデルが生成され,コードのセマンティクスをより正確に反映できることを示す。
データセット、モデル、コードは、ソースコードに関するさらなるML研究のために共有される。
関連論文リスト
- STRIDE: Simple Type Recognition In Decompiled Executables [16.767295743254458]
そこで本研究では,デコンパイラトークンのシーケンスをトレーニングデータと一致させることで,変数名や型を予測する手法STRIDEを提案する。
3つのベンチマークデータセットで評価した結果、STRIDEは可変リタイピングとリネームの両方において、最先端の機械学習モデルに匹敵するパフォーマンスを実現していることがわかった。
論文 参考訳(メタデータ) (2024-07-03T01:09:41Z) - Variables are a Curse in Software Vulnerability Prediction [4.453430599945387]
本稿では、名前依存と呼ばれる新しいタイプのエッジ、名前依存に基づく抽象構文グラフ、および3プロパティ符号化方式と呼ばれる効率的なノード表現手法を紹介する。
これらの技術により、コードから具体的な変数名を取り除き、ディープラーニングモデルにより、多様なコード表現に隠されたソフトウェアの機能を学ぶことができます。
論文 参考訳(メタデータ) (2024-06-18T16:02:29Z) - Unlocking the Multi-modal Potential of CLIP for Generalized Category Discovery [50.564146730579424]
テキスト埋め込み合成器(TES)を提案する。
提案手法は,CLIPのマルチモーダルポテンシャルを解放し,すべてのGCDベンチマークにおいて,ベースライン手法よりも大きなマージンで性能を向上する。
論文 参考訳(メタデータ) (2024-03-15T02:40:13Z) - SparseCoder: Identifier-Aware Sparse Transformer for File-Level Code
Summarization [51.67317895094664]
本稿では,大規模なソースコードプロジェクトの理解と維持を支援するファイルレベルのコード要約について検討する。
長いコードシーケンスを効果的に処理するための識別子対応スパース変換器であるSparseCoderを提案する。
論文 参考訳(メタデータ) (2024-01-26T09:23:27Z) - Multi-Label Knowledge Distillation [86.03990467785312]
本稿では,新しい多ラベル知識蒸留法を提案する。
一方、マルチラベル学習問題をバイナリ分類問題に分割することにより、ロジットからの情報的意味知識を利用する。
一方,ラベルワイド埋め込みの構造情報を活用することにより,学習した特徴表現の識別性を向上する。
論文 参考訳(メタデータ) (2023-08-12T03:19:08Z) - Multi-Instance Partial-Label Learning: Towards Exploiting Dual Inexact
Supervision [53.530957567507365]
実世界のタスクでは、各トレーニングサンプルは、1つの基底真実ラベルといくつかの偽陽性ラベルを含む候補ラベルセットに関連付けられている。
本稿では,Multi-instance partial-label learning (MIPL) などの問題を定式化する。
既存のマルチインスタンス学習アルゴリズムと部分ラベル学習アルゴリズムはMIPL問題の解法に最適である。
論文 参考訳(メタデータ) (2022-12-18T03:28:51Z) - CLAWSAT: Towards Both Robust and Accurate Code Models [74.57590254102311]
比較学習(CL)と逆学習を統合して、コードモデルの堅牢性と精度を協調的に最適化する。
私たちの知る限りでは、これはコードモデルにおける(マルチビュー)コードの難読化の堅牢性と正確性について調査し、活用する最初の体系的な研究です。
論文 参考訳(メタデータ) (2022-11-21T18:32:50Z) - VarCLR: Variable Semantic Representation Pre-training via Contrastive
Learning [84.70916463298109]
VarCLRは変数名のセマンティック表現を学ぶための新しいアプローチである。
VarCLRはコントラスト学習に適しており、明示的に類似した入力間の距離を最小化することを目的としている。
VarCLRはBERTのような洗練された汎用言語モデルを効果的に適用できることを示す。
論文 参考訳(メタデータ) (2021-12-05T18:40:32Z) - BERT2Code: Can Pretrained Language Models be Leveraged for Code Search? [0.7953229555481884]
我々は,本モデルが埋め込み空間と改良のスコープに対するさらなるプローブの間に固有の関係を学習することを示す。
本稿では,コード埋め込みモデルの品質が,我々のモデルの性能のボトルネックであることを示す。
論文 参考訳(メタデータ) (2021-04-16T10:28:27Z) - Variable Name Recovery in Decompiled Binary Code using Constrained
Masked Language Modeling [17.377157455292817]
逆コンパイル(英: Decompilation)とは、バイナリプログラムをソースコードなどのハイレベルな表現に変換する手順である。
マスク型言語モデリング(byte-pair)に基づく逆コンパイルコードの変数名を推論する新しい手法を提案する。
トレーニングを受けたVarBERTモデルは、元のソースコードに存在する変数名と同じ変数名を最大84.15%まで予測できることを示しています。
論文 参考訳(メタデータ) (2021-03-23T19:09:22Z) - Exploiting Method Names to Improve Code Summarization: A Deliberation
Multi-Task Learning Approach [5.577102440028882]
コード要約のための新しいマルチタスク学習(MTL)アプローチを設計する。
まず,メソッド名の生成と情報性予測のタスクを紹介する。
新たな2パス審議機構をmtlアーキテクチャに組み込んで、より一貫性のある中間状態を生成します。
論文 参考訳(メタデータ) (2021-03-21T17:52:21Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。