---
# System prepended metadata

title: B4近藤：研究打ち合わせ

---

# 6/18

# ～6/7
コメント、識別子名の作成 → プログラム修正
適切な識別子名、コメントの作成を自動で行いプログラム修正を行う
問題点
・バグを含んだコードに対してコメント、識別子名の作成をするとそのバグを反映してしまうのではないか。
・テストを考慮した上で作成を行う必要があるのではないか。
・修正タスクと識別子、コメントの生成を合わせるために、バグの種類を選ぶ必要があるのではないか。

既存の識別子名、コメントの生成ツール、もしくはLLMの利用をしてから、LLMによる修正を行う。

# ～5/30
堀さんから研究について話を伺った
・悪い識別子を付けた場合の調査を行う
・識別子関連での調査を進めていく
・Java parserというツールで構文解析を行いマスクする作業を行う
・バグの生成手法はMutaneratorを引き続き利用
・修正したかどうかを目視からテストの利用に変更
・サンプル数も大幅に増加した
・LLMの対象をもしかしたら増やすかも

問題点
・よい識別子の作成手法
・各プログラムに対して確認するにはかなりの時間を要するのではないか




# ～5/23 

https://sdl.ist.osaka-u.ac.jp/pman/pman3.cgi?D=829
・仕様、メソッド名、変数名によるLLMの自動修正能力への影響について知ることができて面白かった
・仕様、メソッド名、変数名の8パターン全て検証のしがいがあると感じた
・仕様、メソッド名、変数名に関しても、JavaDocの通りとのことだったのでもう少し詳しく調べたい
　→LLMにとって適した識別子名の調査
　→・標準的なコーディング規約にあるような識別子名
 　・自然言語的な意味を多く含む識別子名
 　・類似の問題をLLMに解いてもらった際に生成された識別子名
　→識別子名に対するプロンプトチューニングなども考えられる
　 識別子名は単語のような簡単な情報しか与えられないことが多いため

　発展的な研究課題にあったように意味的情報を左右するソースコードの特徴の調査はかなり気になる
　LLMに与える自然言語プロンプトとして適切なものは研究されているはずなので、その研究のアプローチをうまく活用したい
　gpt-3.5-turboに対しての調査だったため他のLLMやCodeLLMなどで違いがみられるか

CodeLLMの自然言語指示チューニングに関する研究の紹介
https://tech.preferred.jp/ja/blog/i23-otake-llmforcode/
WizardCoder, CodeM：StarcoderなどのCodeLLMに対して指示チューニングを行った際、HumanEvalの正答率が向上
タスクに対して自然言語とコードの両方を用いて答えを導いてもらうようにすると、そのタスクへの正答率の上昇がみられた
数学的な問題だけでなく自然言語の推論タスクにおいてもスコアが向上した

上で紹介されている論文を読み進めたい

コーディングに対する問題に自然言語を用いた補助を行う方法だけでなく、その逆もあるのだということがわかった

LLMの評価指標：HumanEval,MBPPについて
https://note.com/fukudawataru/n/n745412f5659d
自動生成的な内容なので修正タスクへの修正率の調査


初回

研究したい内容ですが、自動プログラム修正や自動プログラム生成関連の分野をやってみたいです。

kGenProg
https://github.com/kusumotolab/kGenProg
https://sdl.ist.osaka-u.ac.jp/pman/pman3.cgi?DOWNLOAD=520

https://program-repair.org/

kGenProgを使用した。
簡単なソースコードの修正はできているが、クイックソートで無限ループが発生するバグを修正することはできていなかった。
また、簡単な修正においても、どうしてもテストケースを元に修正を加えていることがわかる。
遺伝的アルゴリズムの利用であるため、それはそう。
そのため、最低限の修正であったり、余計なコードが残ってしまうことがあった。
一方、チャットGPT3.5に同じコードとそのコードの目的を投げると、バグの内容を指摘し、修正し、しかも無駄のないコードが送られてきた。

簡単なコードの修正では大規模言語モデルの有用性がすさまじいと感じる。
大規模言語モデルの利用や、大規模言語モデルに対して優位性のあるプログラム修正、生成について考える必要がある。

https://arxiv.org/pdf/2309.00608v1

大規模言語モデルと現在の大規模言語モデルを使用しないプログラム修正の比較の調査、大規模言語モデルに対する優位性がどこにあるのかを調べる
現在のプログラム修正の手法、特に深層学習の利用法などを調査したい

