一般社団法人 電子情報通信学会
THE INSTITUTE OF ELECTRONICS,
INFORMATION AND COMMUNICATION ENGINEERS

信学技報
IEICE Technical Report

機能等価メソッドデータセットを利用した
LLM によるコードクローン検出の精度向上
井上龍太郎†

肥後 芳樹†† 大阪大学大学院情報科学研究科
大阪府吹田市山田丘 1-5
E-mail: †{ry-inoue,higo}@ist.osaka-u.ac.jp
あらまし

コードクローンとはソースコード中の一致または類似した部分を持つコード片で，バグの拡散の原因となるため，効率的な検出とリファクタリングが必要である．また，LLM（大規模言語モデル）を用いたコードクロー
ン検出は，構文的な類似度の低いコードクローンに対して LLM を用いない既存ツールよりも高精度であるが改善の余地がある．そこで本研究では，FEMPDataset を用いたファインチューニングにより LLM の検出精度向上を試みた．性能評価には FEMPDataset および BigCloneBench を用いた．結果，FEMPDataset では精度向上が確認されたものの，BigCloneBench では精度の改善が見られなかった．
キーワード

1.

コードクローン，LLM（大規模言語モデル），ファインチューニング，FEMPDataset，BigCloneBench

まえがきの他にも，Google が開発した Gemini [10] など，多くのモデル
が日々開発されている [11]．

コードクローンとは，「ソースコード中に存在する互いにDou らの先行研究では，複数の LLM を用いてコードクロー

一致または類似した部分を持つコード片」のことである [1]．

ンを検出し，その性能を LLM 以外の既存ツールと比較していコードクローンに対するコーディングは一貫した変更が必要

る [12]．NiCad や Oreo といった既存のコードクローン検出ツーとなることがある．この場合，一貫性のない変更は変更もれに

ルでは構文的な類似度の低いコードクローンは，検出が難しく

よって欠陥の原因となる [2]．このように，コードクローンの精度が悪い．一方で GPT-3.5-trubo や GPT-4，Llama2-Chat-7B

生成はソースコードの修正に大きな障害となってしまい，シといった LLM を用いたコードクローン検出では構文的な類似

ステムの保守性を大きく損ねてしまう．このため，コードク

度の低いコードクローンに対して，LLM を用いない既存ツー

ローンを効率的に検出し，必要に応じてリファクタリングすルよりも高い精度での検出を実現している．しかしながら，る必要がある．

GPT-3.5-turbo や GPT-4 は構文的な類似度の低いコードクロー

コードクローンの検出を行うため，多くのツールが開発されンに対する LLM の検出精度は十分に高いとはいえず，改善のてきた．既存のコードクローン検出ツールとして CCFinder [3]，余地がある．また，Llama2 は，クローンペアとそうでないも

NiCad [4]，NIL [5] などのツールが挙げられる．これらのツーのの判断ができず，現状ほぼ全てのメソッドペアをコードク

ルは字句解析やメトリクスなどを用いて検出を行っている．しローンであると判断してしまっている．

かし，既存のツールでは構文的な類似度の高いコードクローン

そこで，本研究では LLM にファインチューニングを行い，の検出では高い精度を示すが，構文的な類似度の低いコード

構文的な類似度の低いコードクローンの検出の精度の向上をクローンの検出では精度が低いことが課題として挙げられる．

試みる．対象とする LLM は GPT-3.5-turbo と Llama2-Chat-7B，

一方で LLM (大規模言語モデル) を用いたコードクローン

CodeLlama-7B-Instruct である．GPT-3.5-turbo のファインチュー

検出では，構文的な類似度の低いコードクローンに対して既ニングは OpenAI が提供する API を用いて行い，必要に応じて存のツールよりも高い精度での検出を実現している．LLM は

エポック数，バッチサイズなどのハイパーパラメータを変更す

主に自然言語処理の分野で高い成果を上げており，現在，多る．また，LLM は推論やファインチューニングを行う際に多くの研究分野で注目されている．GPT といったモデルを Web

くの GPU メモリと時間を必要とする．よって実機での実行がサイトやアプリケーションを通して利用することができる

必要となる Llama2-Chat-7B と CodeLlama-7B-Instruct のファイ

ChatGPT は公開から約 2 か月でユーザー数が 1 億人を達する

ンチューニングは，GPU の使用メモリ削減の理由から Lora やなど，多くのユーザーに利用されている．また，Meta が開発

ZeRO といった技術を使用して行う．ファインチューニングでした Llama2 [6] は商用利用が可能なオープンソースとして注は，異構造で機能等価なコードクローンを集めた FEMPDataset

目されており，Llama2 の前身のモデルである Llama [7] をファを用いた．FEMPDataset は訓練データ，検証データ，テスト

インチューニングした Alpaca [8] や，Llama2 をファインチュー

データの 3 つに分割し，学習と FEMPDataset に対する検出精度ニングした code-llama [9] などのモデルが開発されている．そ向上の評価を行う．また，評価用のデータセットとして，大規This article is a technical report without peer review, and its polished and/or extended version may be published elsewhere.
Copyright ©2024 by IEICE

模なコードクローン検出のベンチマークである BigCloneBenchな類似度が近いクローンペアとそうでないペアからなり，コーを用いて，構文的な類似度の低いコードクローンに対する検ドクローン検出ツールにおいてこれらは正しく分類，検出さ出精度を比較する．

れる必要がある．

以下，第 2 章では，本研究の準備として，コードクローン

先述の BigCloneBench と異なる点は，BigCloneBench はメの定義や，LLM によるコードクローン検出に関する先行研究，

ソッド全体が機能等価なのではなくその一部に機能が同等と実験で使用するデータセットについて述べる．第 3 章では，本思われるコードを含んでいるのに対して，FEMPDataset はメ研究の実験方法について述べる．第 4 章では，実験結果についソッド全体の機能等価を見ている点である．

て述べる．第 5 章では，実験結果を踏まえた考察を行う．第 6

2. 4 LLM（大規模言語モデル）

章では，本研究のまとめと今後の課題について述べる．

LLM（大規模言語モデル）は，大規模なコーパスを用いて学

2.

準

備

この章では，本研究の背景として，コードクローンの定義
や，LLM によるコードクローン検出に関する先行研究，実験に使用するデータセットについて述べる．
2. 1

コードクローン

コードクローンとは，「ソースコード中に存在する互いに習した言語モデルである．2017 年に Transformer と呼ばれるモデルが発表され [17]，以後モデルの大規模化が進み，学習するデータの量が増えている．
2. 5

LLM のファインチューニング技術

ファインチューニングでは多くの GPU メモリが必要になる．
ファインチューニングにおいて GPU メモリを削減するいくつかの技術について述べる．

一致または類似した部分を持つコード片」のことである [1]．

2. 5. 1

コードクローンは，主にコピーアンドペーストなどの既存コー

Lora（Low-Rank Adaptation）[18] は，ファインチューニング

ドの再利用や，類似した機能を大規模システム内に再び実装

時に変更するパラメータ数を削減し，少ないリソースでファすることによってプログラム内に作られる [13]．また，コード

インチューニングを実現する技術である．

クローンの関係にあるコード片の組をクローンペアと呼ぶ．
2. 1. 1

コードクローンの分類

Roy らはコードクローンを類似度をもとに 4 つに分類し，定義した [14]．

Lora（Low-Rank Adaptation）

Lora では，ファインチューニング前後のパラメータの差分を低ランク行列で近似することで，パラメータ数を削減し効率的に学習する．また，ハイパーパラメータ r を指定し低ラン
ク行列の大きさを決定する．r が小さいほどパラメータ数が削減される．

Type-1（T1）

改行・スペース・コメントなどのレイアウトの違いを除いて一致するコードクローン．
Type-2（T2）Type-1 に加えて，識別子，リテラル，型の違いを除いて一致するコードクローン．

ZeRO（Zero Redundancy Optimizer）

2. 5. 2

ZeRO（Zero Redundancy Optimizer）[19] は複数の gpu を活用することで学習に必要な 1GPU あたりに必要な GPU メモリを削減する技術である．
ファインチューニング時には，学習率の動的変化の管理のType-3（T3）Type-2 に加えて，文の変更・挿入・削除などの違いを除いて一致するコードクローン．
Type-4（T4）

構文的な違いを持つが，同じ処理を行うコード

クローン．

情報，勾配，重みを GPU 上に保持し，計算する必要がある．
そこで ZeRO では，各 GPU が LLM の特定の層に対してパラメータ変更を行い，その結果をまとめて LLM 全体のパラメー
タの変更とする．各 GPU は特定の層に対するパラメータ変更のみを担当することから，従来の手法よりも 1GPU あたりに

2. 2

BigCloneBench

BigCloneBench [15] は Svajlenko らによって作成されたコー

必要な GPU メモリを削減することができる．
2. 6

検出精度指標ドクローン検出のベンチマークである．BigCloneBench では，

コードクローン検出や LLM の性能指標には Recall，Preci-

ファイルのコピーやバブルソートといった 45 の機能ごとに，

sion，Accuracy が用いられる．これらのメトリクスの意味と計その機能を持つメソッドを抽出し，クローンペアを作成して算式は以下の通りである．

いる．
また，BigCloneBench では検出したクローンペアを Type-1 から Type-4 まで分類している．本研究では Type-4 のコードクローンを評価用データセットとして使用する．
2. 3

Recall
実際にクローンであるメソッドペアのうち，コードクロー
ンであると判定されたメソッドペアの割合．

FEMPDataset

𝑅𝑒𝑐𝑎𝑙𝑙 =FEMPDataset [16] は異構造で機能等価なメソッドを集めた
データセットである．FEMPDataset はテストケースの相互実

𝑇𝑃𝑇𝑃 + 𝐹𝑁

Precision

行を利用し機能等価なメソッドペアの候補を特定し，人が目視

コードクローンであると判定されたメソッドペアのうち，で対象の機能を持つか判定することで真に機能等価なメソッ

実際にコードクローンであるメソッドペアの割合．

ドを集めたデータセットを作成する．FEMPDataset は構文的
—2—

𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 =𝑇𝑃
𝑇 𝑃 + 𝐹𝑃STEP2：LLM の実行
ファインチューニング前後の LLM に対して，FEMPDatasetのテストデータ，BigCloneBench のメソッドペアを与え，

Accuracy
正しい判定をしたメソッドペアの割合．
𝑇𝑃 + 𝑇𝑁𝑇 𝑃 + 𝐹𝑃 + 𝐹 𝑁 + 𝑇 𝑁
また，TP（True Positive），FP（False Positive），FN（False Neg𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 =ative），TN（True Negative）は以下を表す．
TP：実際にコードクローンであるメソッドのうち，コード
クローンと判定されたメソッドペア数．

回答を"Yes"または"No"で得る．
STEP3：性能評価
ファインチューニング前後の LLM の回答を集計し，性能の比較を行う．
3. 1

ファインチューニング

ファインチューニングには FEMPDataset を用いる．FEMPDataset は異構造で機能等価なメソッドペアを集めたデータ

FP：実際にコードクローンでないメソッドのうち，コード
クローンと判定されたメソッドペア数．
FN：実際にコードクローンでないメソッドのうち，コード
クローンでない判定されたメソッドペア数．
TN：実際にコードクローンであるメソッドのうち，コード
クローンでないと判定されたメソッドペア数．
2. 7

BigCloneBench と LLM に関する先行研究

LLM を用いたコードクローン検出に関する先行研究として，
Shihan Dou らの研究 [12] を紹介する．Dou らの研究では，単一のプロンプトを入力とし，LLM を用いない既存のツールとLLM を用いた場合の性能を BigCloneBench を用いて比較している．
結果を見ると，構文的な類似度の高いコードクローンは既存セットである．ファインチューニングのため，データセット
は訓練データ，検証データ，テストデータの 3 つに分割する．
ファインチューニングは訓練データと検証データを，性能評
価はテストデータを用いて行う．各データのメソッドペア数の内訳は表 1 の通りである．
GPT-3.5-turbo のファインチューニングは，OpenAI API を用いて行う．Llama2-Chat-7B と CodeLlama-7B-Instruct ファイン
チューニングは，GPU メモリ削減のため，Lora と ZeRO を利用して実行した．2. 5 節で説明した Lora のハイパーパラメー
タ r は 2 とした．学習には Quadro RTX 8000 と Tesla V100 の 2
つの GPU を用いた．
3. 2

LLM の実行ファインチューニング前とファインチューニング後の LLMの性能評価は以下の手順で行う．

のツールの方が高い Recall を示しているが，構文的な類似度の （ 1 ） BigCloneBench のメソッドペアを抽出
低いコードクローンは LLM の方が高い Recall を示している．
また，GPT-3.5-turbo と GPT-4 は構文的類似度が低い Type-4
コードクローンの検出において既存ツールより高い精度を示す

BigCloneBench から T4 に分類されるクローンペアと，ク
ローンではないペアを抽出する．この 2 種類のメソッド
ペアを正しく分類することができるかを評価する．

が，十分に高いとはいえず，改善の余地がある．Llama2-chat-7B
は高い Recall を示すが Precision が低く，ほぼ全てのメソッド （ 2 ） プロンプトの作成
抽出したメソッドペアはクローンペアであるかどうかを質
ペアをクローンペアと認識してしまっている．そこで，本研究では LLM のファインチューニングによる精度向上を目指す．

3.

実

験

問するプロンプトに変換し，LLM に入力する形式にする．
（ 3 ） プロンプトの入力，回答の取得
ファインチューニング前の LLM とファインチューニング

この章では，本研究の具体的な実験方法について述べる．

後の LLM に対して，作成したプロンプトを入力し，"Yes"

実験対象とする LLM は以下の通りである．

または"No"の回答を得る．

•

GPT-3.5-turbo•

Llama2-Chat-7B

3. 2. 1

評価用データセット

性能評価は BigCloneBench を用いて行う．BigCloneBench から構文的な類似度の低い T4 に分類されるクローンペアと，ク•

CodeLlama-7B-Instruct

ローンではないペアを用いて性能評価を行う．

また，実験では，ファインチューニングを用いて構文的な類

BigCloneBench に含まれる T4 のクローンペア数は 7,729,291

似度の低いコードクローンに対する検出精度の向上を試みる．

と膨大である．このため，データセットからランダムに 2,000

実験は以下の手順で行う．
表 1 分割後の各データのメソッドペア数の内訳

STEP1：ファインチューニング
FEMPDataset を用いて，LLM のファインチューニングを行う．

メソッドペア数

訓練データ

検証データ

1,755

220

テストデータ219
計 2,194—3—

個のメソッドペアを抽出し，実験に用いることとした．また，る．したがって，実験に用いるデータセットのメソッドペア

0.84
0.83

Recallクローンではないペアも同様に 2,000 個抽出し，実験に用い

0.69

Precision

ただし，メソッドペアの 2 つを Llama のトークナイザーで

0.69

Accuracy

トークナイズした際のトークン数の合計が 10,000 トークンを

0.84

0.69

数の内訳は表 2 の通りである．

0.00

0.20

0.40

0.60

0.92

0.81
0.76
0.80

1.00

超えるメソッドペアは，メソッドペア抽出の際に対象から除外
した．これは，Llama を実行する際に 10,000 トークンを超えるプロンプトを入力すると，GPU サーバーがメモリ不足で動GPT-3.5-Turbo

ファインチューニング後のGPT-3.5-Turbo

GPT-4-turbo

図 1 FEMPDataset による GPT-3.5-turbo と GPT-4-turbo の評価比較

かないためである．メソッドの抽出はランダム性を確保するからランダムにメソッドを順に取り出し，10,000 トークン以内

1.00

Recall

ために BigCloneBench のデータセットに格納されているデータ

0.78

Precision

0.58

Acurracy

0.58
0.63

0.66

のメソッドペアであれば，評価用のメソッドペアの一つとして採用した．これを 2,000 ペア取り出すまで繰り返した．クロー
ンペアは 2,068 ペアを抽出し 2,000 ペアを，クローンではない

0.00

ペアは 2,037 ペアを抽出し 2,000 ペアを最終的に取得した．
3. 2. 2

0.20

Llama2-Chat-7B

プロンプト

図2

0.40

0.60

0.80

1.00

ファインチューニング後のLlama2-Chat-7B

FEMPDataset による Llama2-Chat-7B の評価比較

LLM に入力するプロンプトは"system"と"user"，2 つのロールで構成される．system では，"Yes"または"No"のどちらかで回答するように回答方法を指定する．user では，提示した 2 つのメソッドが，クローンペアであるかを判定をするように指示を記述する．
LLM から得た回答を集計し，Recall，Precision，Accuracy の3 値を計算し性能を評価する．評価に使用するデータセット
は，FEMPDataset のテストデータ計 219 ペアと BigCloneBenchのメソッドペア計 4,000 ペアの 2 つである．

PDataset と BigCloneBench の 2 つのデータセットを用いて実行
する．
FEMPDataset によるファインチューニングの評価

GPT-3.5-turbo と Llama2-Chat-7B，CodeLlama-7B-Instruct について，ファインチューニング前後の評価比較を FEMPDatasetのテストデータを用いて行った．
4. 1. 1Chat-7B の Recall，Precision，Accuracy は表 4 の通りである．また，以上の結果をグラフにまとめたものを図 2 に示す．
ファインチューニング前の Llama2-Chat-7B では，すべてのメソッドペアをクローンペアと認識していた．しかし，ファでないペアを正しく判定することができるようになった．結この章では，実験の結果について述べる．実験結果を FEM-

4. 1

Llama2-Chat-7B の FEMPDataset による評価

4. 1. 2

インチューニング後の Llama2-Chat-7B では，一部のクローン

実験結果

4.

アを正しく判定するようになったことがわかる．
ファインチューニング前とファインチューニング後の Llama2-

性能評価

3. 3

ことから，ファインチューニングによってクローンでないペ果，Recall が低下したが，Precision が向上した分，Accuracy は
向上しており，ファインチューニング前の Llama2-Chat-7B よりも性能が向上していることがわかる．
CodeLlama-7B-Instruct の FEMPDataset による評価

4. 1. 3ファインチューニング前とファインチューニング後のCodeLlama-7B-Instruct の Recall，Precision，Accuracy は表 5 の通りである．また，以上の結果をグラフにまとめたものを図 3に示す．

GPT-3.5-turbo の FEMPDataset による評価

ファインチューニング前の GPT-3.5-turbo，ファインチューニ
ング後の GPT-3.5-turbo，GPT-4-turbo の Recall，Precision，Accuracy は表 3 の通りである．また，以上の結果をグラフにまとめたものを図 1 に示す．
ファインチューニング後の GPT-3.5-turbo とファインチュー
ニング以前の GPT-3.5-turbo を比較すると，Precision が大きく

表3

ファインチューニング前後の GPT-3.5-turbo と GPT-4-turbo の評価
モデル名

Recall Precision

GPT-3.5-turbo

0.84

0.69

0.69

FT1後の GPT-3.5-turbo

0.83

0.84

0.81

GPT-4-turbo

0.92

0.69

0.76

Accuracy

向上している．また，Recall はほぼ横ばいとなっている．この表4
表2

評価用データセットのメソッドペア数の内訳
クローンペアメソッドペア数

2,000

クローンではないペア
2,000

ファインチューニング前後の Llama2-Chat-7B の評価

モデル名

Recall Precision

Llama2-Chat-7B

1.00

0.58

0.58

FT 後の Llama2-Chat-7B

0.78

0.66

0.63

Accuracy

計 4,000（注 1）：FT はファインチューニングの略

—4—

0.51

Recall0.71

Precision

0.85
0.58

Acurracy

0.76
0

0.2

CodeLlama-7b-Instruct

0.4

0.6

0.8

0.50

Acurracy

0.50

0.61

0.59
0.00

ファインチューニング後のCodeLlama-7b-Instruct

0.07
0.03
0.08

0.52

Precision1

図 3 FEMPDataset による CodeLlama-7B-Instruct の評価比較

Recall1.00

Recall

0.73

Llama2-Chat-7B

0.74

0.80
0.82

0.00

0.20

0.40

0.80

図4

ファインチューニング後のGPT-3.5-Turbo

0.89
0.81
0.52
0.50

1.00

GPT-4-turbo

BigCloneBench による GPT-3.5-turbo と GPT-4-turbo の評価比較

BigCloneBench によるファインチューニングの評価

4. 2

1.00

ファインチューニング後のLlama2-Chat-7B

Acurracy

0.60

0.80

0.04
0.01

0.00

GPT-3.5-Turbo

0.60

Precision

0.52
0.51
0.53

Acurracy0.40

図 5 BigCloneBench による Llama2-Chat-7B の評価比較

RecallPrecision

0.20

GPT-3.5-turbo と Llama2-Chat-7B，CodeLlama-7B-Instruct につ

0.20

CodeLlama-7b-Instruct

図6

0.40

0.60

0.80

1.00

ファインチューニング後のCodeLlama-7b-Instruct

BigCloneBench による CodeLlama-7B-Instruct の評価比較

7 の通りである．また，結果をグラフにまとめたものを図 5 に示す．

いて，ファインチューニング前後の評価比較を BigCloneBench

ファインチューニング前の Llama2-Chat-7B は BigCloneBenchを用いて行った．対象のデータは BigCloneBench の T4 に分類のすべてのメソッドペアをクローンペアであると認識していされるクローンペアと，クローンでないペア各 2,000 ペア，計た．しかし，ファインチューニング後の Llama2-Chat-7B は一4,000 ペアである．

部のクローンでないペアを正しく判定することができるよう

4. 2. 1

GPT-3.5-turbo の BigCloneBench による評価

ファインチューニング前の GPT-3.5-turbo，ファインチューニになった．結果，FEMPDataset と同じように，Recall は低下したが Precision が向上し，Accuracy は向上が見られた．
CodeLlama-7B-Instruct の BigCloneBench による評価

ング後の GPT-3.5-turbo，GPT-4-turbo の Recall，Precision，Ac-

4. 2. 3

curacy は表 6 の通りである．また，結果をグラフにまとめたもファインチューニング前の CodeLlama-7B-Instruct，ファイン
チューニング後の CodeLlama-7B-Instruct の Recall，Precision，のを図 4 に示す．
ファインチューニング後の GPT-3.5-turbo とファインチュー
ニング以前の GPT-3.5-turbo を比較すると，Precision が少し向

Accuracy は表 8 の通りである．また，結果をグラフにまとめたものを図 6 に示す．

上しているが，あまり大きな変化は見られなかった．また，

ファインチューニング前の CodeLlama-7B-Instruct は Big-

GPT-4-turbo と比較すると，Recall，Precision，Accuracy の全て

CloneBench のすべてのメソッドペアをクローンペアであるとで劣っている．

認識していた．しかし，ファインチューニング後の CodeLlama-

Llama2-Chat-7B の BigCloneBench による評価

7B-Instruct は一部のクローンでないペアを正しく判定するこファインチューニング前の Llama2-Chat-7B，ファインチューとができるようになった．結果，FEMPDataset と同じように，

ニング後の Llama2-Chat-7B の Recall，Precision，Accuracy は表Recall は低下したが Precision が向上し，Accuracy は向上が見

4. 2. 2られた．
表 5 ファインチューニング前後の CodeLlama-7B-Instruct の評価
表 7 ファインチューニング前後の Llama2-Chat-7B の評価比較

モデル名

Recall Precision

CodeLlama-7B-Instruct

0.51

0.71

0.58

モデル名

Recall Precision

FT 後の CodeLlama-7B-Instruct

0.73

0.85

0.76

Llama2-Chat-7B

1.00

0.50

0.50

FT 後の Llama2-Chat-7B

0.52

0.61

0.59

Accuracy

Accuracy

表 6 ファインチューニング前後の GPT-3.5-turbo と GPT-4-turbo の評
表 8 ファインチューニング前後の CodeLlama-7B-Instruct の評価比較

価比較
モデル名

Recall Precision

Accuracy

モデル名

Recall Precision
0.04

0.89

0.52

0.01

0.81

0.50

GPT-3.5-turbo

0.07

0.74

0.52

CodeLlama-7B-Instruct

FT 後の GPT-3.5-turbo

0.03

0.80

0.51

FT 後の CodeLlama-7B-Instruct

GPT-4-turbo

0.08

0.82

0.53

Accuracy

—5—

5.

考

この章では，実験結果について順に考察する．
5. 1

善することで，モデルの性能向上が見込めると考える．

察

GPT-3.5-turbo，
CodeLlama-7B-Instruct で BigCloneBench
に対して精度向上が見られなかった理由

謝辞を得て行われた．
文

GPT-3.5-turbo と CodeLlama-7B-Instruct を FEMPDataset を使用してファインチューニングを行った．しかし，BigCloneBench[1]

に対して精度向上が見られなかった．

[2]

これは，FEMPDataset と BigCloneBench のデータセットが異なるためであると考える．

[3]

BigCloneBench 内のデータセットのクローンペアは，等価な機能の持つメソッドペアを抽出しているため，メソッド全体として完全に機能的に等価であるとは限らない．一方で，ファ[4]インチューニングに使用した FEMPDataset は，異構造で機能等価なメソッドペアを集めたデータセットであり，メソッド全体で同じ結果を出力する完全に機能等価なメソッドペアを[5]集めたデータセットである．
この 2 つのデータセットの特徴の違いが，ファインチュー[6]

ニングの効果に影響を与えたと考えられる．
5. 2 Llama2-Chat-7B で BigCloneBench に対して精度向上[7]が見られた理由
Llama2-Chat-7B は学習以前，BigCloneBench に対して Yes を[8]

返すだけのモデルで，コードクローンに対しての理解に乏しかった．しかし，ファインチューニングを行うことで，Big-[9]

CloneBench に対して精度向上が見られた．このことから，本研究のファインチューニングによって Llama2-Chat-7B がコー[10]

ドクローンに対しての理解を向上させたことがわかる．

6.

まとめと今後の課題

[11]
[12]

本研究では，FEMPDataset を用いて GPT-3.5-turbo にファイ
ンチューニングを行い，BigCloneBench に対するコードクロー
ン検出性能の向上を試みた．GPT-3.5-turbo に対してファイン
チューニングを行った結果，訓練に使用した FEMPDataset に

[13]
[14]

対してモデルが適合したことが確認できた．BigCloneBench を用いた性能評価においては，Llama2-Chat-7B では精度向上が[15]見られたが，GPT-3.5-turbo では精度向上が見られなかった．
今後の課題として，以下の 3 点が挙げられる．

[16]

調査対象の追加
本研究で扱わなかったモデルに対しても同様の実験を行うことで，モデル間の性能比較を行うことができると考

[17]
[18]

える．
BigCloneBench 以外のベンチマークに対しての性能評価[19]

本研究で使用した BigCloneBench 以外のベンチマークに対しても同様の実験を行うことで，ファインチューニン
グの性能評価をより詳細に行うことができると考える．
プロンプトの工夫

本 研 究 は JSPS 科 研 費（JP20H04166，JP21K18302，

JP21K11829，JP21H04877，JP22H03567，JP22K11985）の助成

[20]

献

井上克郎, 神谷年洋, 楠本真二. コードクローン検出法. コン
ピュータソフトウェア, Vol. 18, No. 5, pp. 529–536, 2001.
M. Mondal, C. Roy, and K. Schneider. A Fine-Grained Analysis on
the Inconsistent Changes in Code Clones. In 2020 IEEE ICSME, pp.
220–231, 2020.
T. Kamiya, S. Kusumoto, and K. Inoue. CCFinder: a multilinguistic
token-based code clone detection system for large scale source code.
IEEE Trans. Software Engineering, Vol. 28, No. 7, pp. 654–670, 2002.
C. Roy and J. Cordy. NICAD: Accurate Detection of Near-Miss Intentional Clones Using Flexible Pretty-Printing and Code Normalization.
In 2008 16th IEEE International Conference on Program Comprehension, pp. 172–181, 2008.
T. Nakagawa, Y. Higo, and S. Kusumoto. NIL: large-scale detectionof large-variance clones. ESEC/FSE 2021, p. 830 ‒ 841, New York,NY, USA, 2021. Association for Computing Machinery.
H. Touvron, L. Martin, K. Stone, P. Albert, A. Almahairi, Y. Babaei,
and … T. Scialom. Llama 2: Open Foundation and Fine-Tuned Chat
Models, 2023.
H. Touvron, T. Lavril, G. Izacard, X. Martinet, M. A. Lachaux, B. Rozière …, and G. Lample. Llama: Open and eﬃcient foundation language
models, 2023.
R. Taori, I. Gulrajani, T. Zhang, Y. Dubois, X. Li, C. Guestrin, andT. … Hashimoto. Alpaca: A strong, replicable instruction-following
model. Stanford Center for Research on Foundation Models, 2023.
B. Rozière, J. Gehring, F. Gloeckle, S. Sootla, I. Gat, X. E. Tan, and… G. Synnaeve. Code Llama: Open Foundation Models for Code,2023.
Gemini Team. Gemini: A Family of Highly Capable Multimodal
Models, 2023.
W. X. Zhao, K. Zhou, J. Li, T. Tang, X. Wang, Y. Hou, and … J. R.
Wen. A Survey of Large Language Models, 2023.
S. Dou, J. Shan, H. Jia, W. Deng, Z. Xi, W. He, and … X. Huang.
Towards Understanding the Capability of Large Language Models on
Code Clone Detection: A Survey. 2023.
C. Roy and J. Cordy. A Survey on Software Clone Detection Research.
School of Computing TR 2007-541, pp. 3–7, 01 2007.
C. Roy, J. Cordy, and R. Koschke. Comparison and evaluation of code
clone detection techniques and tools: A qualitative approach. Scienceof Computer Programming, Vol. 74, No. 7, pp. 470–495, 2009.
J. Svajlenko, J. Islam, I. Keivanloo, C. Roy, and M. Mia. Towards a Big
Data Curated Benchmark of Inter-project Code Clones. pp. 476–480,
09 2014.
肥後芳樹. 自動テスト生成技術を利用した機能等価メソッドデー
タセットの構築. ソフトウェアエンジニアリングシンポジウム
2023 論文集, Vol. 2023, pp. 30–38, 08 2023.
A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N.
Gomez, and … I. Polosukhin. Attention Is All You Need, 2023.
E. J. Hu, Y. Shen, P. Wallis, Z. Allen-Zhu, Y. Li, S. Wang, L. Wang, andW. Chen. LoRA: Low-Rank Adaptation of Large Language Models,
2021.
S. Rajbhandari, J. Rasley, O. Ruwase, and Y. He. ZeRO: Memory
optimizations Toward Training Trillion Parameter Models. In SC20:International Conference for High Performance Computing, Networking, Storage and Analysis, pp. 1–16, 2020.
J. Wei, X. Wang, D. Schuurmans, M. Bosma, B. Ichter, F. Xia, and… D. Zhou. Chain-of-Thought Prompting Elicits Reasoning in Large
Language Models, 2023.

本研究では，プロンプトの工夫は行わなかった．今後，Chain of thought [20] などの技術を用いてプロンプトを改—6—