弊社有志メンバー執筆論文紹介："Inductive-bias Learning: Generating Code Models with Large Language Model"

*本記事は[BrainPad Advent Calendar 2023](https://qiita.com/advent-calendar/2023/brainpad)に参加しております.

# 本記事の目標
弊社有志メンバーで執筆した論文["Inductive-bias Learning: Generating Code Models with Large Language Model"](https://arxiv.org/abs/2308.09890)の雰囲気をお伝えする事.

## 論文リンク
https://arxiv.org/abs/2308.09890

https://paperswithcode.com/paper/inductive-bias-learning-generating-code

# はじめに
私のQiita記事は[3年前](https://qiita.com/t-ymbys/items/f204dfbb484cbbc9e91e)[^1], [2年前](https://qiita.com/t-ymbys/items/cd2e23950b606915952d), [昨年](https://qiita.com/t-ymbys/items/456bff8962da2cf70ed2)の弊社Advent Calendar記事に引き続き4つ目となりました[^2]. 1つ目の記事は弊社のリファラル制度, 2つ目の記事は入社から1年半までの業務記録, 3つ目の記事はDiffusion Modelに関する論文を紹介させていただきましたが, 今回は遂に(?)弊社メンバー[^3]で執筆した論文["Inductive-bias Learning: Generating Code Models with Large Language Model"](https://arxiv.org/abs/2308.09890)について雰囲気をお伝えさせていただきます[^4].

[^1]: こちらに自己紹介などの情報がありますので私自身にご興味ありましたらご参照いただけますと幸いです.
[^2]:相変わらず中々筆が進まずAdvent Calendarを理由に何とか年に1本執筆しています.
[^3]:弊社メンバーによる研究ですが, 業務終了後の時間を使って有志で研究した内容となります.
[^4]:本論文は雑誌, 会議への投稿準備中ですが, [A Survey of Large Language Models for Code: Evolution, Benchmarking, and Future Trends](https://arxiv.org/abs/2311.10372)や[arXivを用いた研究プレイヤーの調査手法 - LLM関連論文を例に](https://note.com/hayataka88/n/n9b2a477e8d87)に引用, ご紹介いただいています.

# 概要
私達の論文(以降本論文と呼ぶ)では"LLMの持つIn-Context Learning(以下ICLと書く)[^5]とコード生成の2つの能力を組み合わせ, 与えられたラベル付きデータセットに対する予測モデル[^6]を**機械学習を用いず**表現するPythonコードを生成する手法:Inductive-bias Learning(以下IBLと書く)"を提案しています(Fig. 3):

![スクリーンショット 2023-12-09 14.35.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920464/61b7c9d0-9fe6-95ef-12d2-33e50347d3b8.png)

本論文で生成する予測モデルとして"機械学習を用いない事"を強調した理由は以下の通りです：

1. LLM自身の"データ間の関係を読み取る能力"(〜論理構造を明らかにする能力)について興味があった
2. 機械学習は, 

    a. "モデルの選択バイアス"(〜Inductive-bias)を必要とする事(Fig. 2)
    b. モデルがデータ間の関係の論理構造をどの様に読み取っているのかを把握する事(〜モデル解釈)が難しい事
    c. 学習や処理に時間がかかる
    
    等の課題を抱えており, データ間の関係を直接コードとして生成する事ができれば, 上記課題をa.モデルの選択は不要, b. コードは論理構造の表現である, c. ナイーブなコードの処理は比較的軽い処理で済む, といった具合に解決できると考え, 実務応用上も有益と考えた

![スクリーンショット 2023-12-14 13.57.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920464/39d2ffbc-3dbf-fc0f-fb44-3fd8d1ecf81a.png)

また, 本論文では以下の取り組みは実施していません：

- 理論的解析
- 2値分類以外のタスク
- プロンプトエンジニアリングやエージェントを用いた精度向上の取り組み
- GPT-4以外のモデルとの比較

本記事の残りのパートでは本論文の概要をお伝えするために, 先行研究で最も関係のあるICLとその疑問点をご紹介し, その解決策として本論文の提案手法についてご紹介させていただきます. 

[^5]:ICLについては本記事でも簡単に紹介しますが[こちらのSurvey論文](https://arxiv.org/abs/2301.00234)などもご参照ください.
[^6]:特に論文中では2値分類.

# 手法

## ICL
まず前提となるICLについてざっくばらんに説明させていただきます(Fig. 1). 

![スクリーンショット 2023-12-14 13.56.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920464/d89d87fb-f483-4c34-f262-8e2154bde331.png)

ICLとは, LLMにデータ間の関係を表す例(例えば"{(1, 2), (2, 4), (3, 6)}")を与える事で, 希望の入力(例えば"(5, ?)")に対する出力が得られる能力のことです[^7]. 下記はGPT-4に生成させた結果です：

![スクリーンショット 2023-12-14 15.01.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920464/25be8ae8-ac9e-87c3-f663-524bc84b19df.png)

この様にICLとは, 与えられた入力と出力のペアの集合からデータ間の関係を読み取り, 希望の入力に対する出力を得るアーキテクチャ, 或いは, その能力の事と考える事ができます. 


また, GTP-4の出力を見ていただければお分かりになるかと思いますが, ICLが成功する為には**LLMがデータからデータ間の関係, 即ち, その論理構造を明らかにする能力が備わっている事**が重要です(上記の例では"第二成分は第一成分の2倍"を読み取れている)[^8].

[^7]:ICLとは広義にはFew-Shot Learningと同じものと考えていただいて大きな問題はないかと思います. Few-Shot Learningについては[こちらのSurvey論文](https://arxiv.org/abs/2205.06743)などもご参照ください.
[^8]:この能力はLLM自身のモデルアーキテクチャは勿論ですが, どんな学習データを用いているかにも依存しており, この能力の獲得条件についてはまだ詳しい事がわかっていないのではないかと思います(もし何かご存知の方がいらっしゃいましたらご教示いただけますと幸いです).

## ICLへの疑問と提案手法
ここで幾つか疑問が生じます:

1. ICLはデータ間の関係の論理構造を明確に記述できるか(解釈性)[^9]
2. 一度解けた問題は再度解かせる事ができるか(再現性)[^10]

これらの疑問に関する回答として, 解釈性が獲得できれいれば再現性も獲得できる, と考えるのは自然でしょう. そこで本論文では, データ間の関係の論理構造をコードという"再利用可能な"形で表現する手法, IBL[^11]を提案しました. 

ここでは詳細に立ち入らないために非常に簡単な例で恐縮ですが, ICLの例を用いたIBLの実行例を示します[^12]:

![スクリーンショット 2023-12-16 17.15.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920464/52af5757-45f4-bc8d-90d1-1c0a3566cd3d.png)


[^9]:上記の例では問題が簡単だったこともあり, 特に指定せずにGPT-4が"$y=2x$という関係があります"と推論根拠を述べてくれていますが, 一般的なデータセットでは特に指定せずこの様な推論根拠を述べてくれるることは多くありません. つまり"LLMが何を根拠に推論したかは判らないが何故か上手くいく"状態になってしまいます.

[^10]: LLMの出力は確率的であり, seed値やtemperatureなどのパラメータが完全に固定できれば良いのですが, 研究当時GPT-4のseed値を固定する事ができなかった為, 再現性は大きな課題でした.

[^11]:この名称は"LLMが獲得しているInductive-biasを利用したデータ構造学習"をいう意味を込めています.

[^12]:詳細にご興味をお持ちいただけましたら, お手数ですが本論文をご参照ください. ご存知の方も多いかと思いますが, arXivのリンク[https://arxiv.labs.arxiv.org/abs/2308.09890](https://arxiv.labs.arxiv.org/abs/2308.09890)のxを5に置き換えた[https://ar5iv.labs.arxiv.org/abs/2308.09890](https://ar5iv.labs.arxiv.org/abs/2308.09890)にアクセスする事でhtml形式で論文を閲覧する事ができるので, Chromeなどの翻訳機能で日本語で読む事ができます.

# 結果
詳細は論文に譲りますが, Kaggleで有名なTitanicデータセットを含む, いくつかのデータセットに対し, 提案手法がICLの性能だけでなく, 簡単な機械学習アルゴリズム(k-NNやSVM)の精度を超えるケースを観測[^13]する事ができました.


即ち, 単にICLを実行するよりも, その論理構造を表現させる事で性能を向上できたのではないか, IBLは既存の機械学習アルゴリズムを代替できる可能性があるのではないか, ということを示唆していると考えています.

[^13]:繰り返しになりますがLLMの出力は確率的であるため, 毎回超えられる訳ではありませんでした.

# まとめ
本記事では弊社有志メンバーで執筆した論文["Inductive-bias Learning: Generating Code Models with Large Language Model"](https://arxiv.org/abs/2308.09890)について詳細に立ち入る事なく紹介させていただきました.

今後は本研究を継続し, IBLの汎用なタスクへの適用や精度向上はもちろん, "LLMが獲得する論理構造把握能力"についての深掘りなど, 多くの課題を一つずつ解決していきたいと考えています.

研究の動機や, 研究, 及び, 論文執筆を実施した経緯や過程(特に会社に所属しながら同僚たちと論文を書く事)についてはまた別な機会にお話しできればと思いますが, 最後に私個人の感想を述べさせていただき結びとしたいと思います:

生成AI隆盛の時代において最先端を追いかけるのは至難です. 特に最近は多くの人々が最新技術を紹介してくださる様にはなってきましたが"自分たちで研究して最先端になろう"という人はあまり多くない様に思います. 私個人としては"特殊な分野であっても自身の分野を開拓し最先端に立つことに意義を感じ"研究を実施しました. 結果的にICLやコード生成に関する理解は勿論, LLMを用いた研究の設計などについて多くの学びがありました. 

本記事を通して, 私たちの論文の内容はもちろんですが, 1人でも多くの方が"こんなことから始められるなら自分も研究してみよう！"と思っていただけたら, この上ありません[^14]. 

最後までご清覧いただきありがとうございました.

[^14]: 共同研究や技術相談(議論)などお気軽にご連絡いただけますと幸いです!