Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模言語モデルとそのソフトウェア開発に向けた応用 (2024年版)

大規模言語モデルとそのソフトウェア開発に向けた応用 (2024年版)

南山大学で2024年12月17日に実施した「ソフトウェア工学特別講義 」の講義資料です。

アジェンダ:
・NTT版大規模言語モデルtsuzumi のご紹介
・大規模言語モデル(LLM) とは?
・プログラミングへの活用
・プログラミングを超える範囲のソフトウェア開発タスクへの応用

Hiroshi Kazato

December 26, 2024
Tweet

More Decks by Hiroshi Kazato

Other Decks in Technology

Transcript

  1. 1 © NTT CORPORATION 2024 講師紹介 かざ と ひろ し

    風戸 広史 日本電信電話株式会社 人間情報研究所 主任研究員 博士 (工学) • 2003年 株式会社NTTデータ入社。ソフトウェア開発における ソースコードの自動生成やプログラム解析による保守支援技術 に関する研究開発に従事。 • 2023年7月より現職。NTT版大規模言語モデル tsuzumi の開 発チームに所属し、ソフトウェア開発への大規模言語モデルの 応用に関する研究開発を実施中。
  2. 2 © NTT CORPORATION 2024 講義概要 ChatGPT等に代表される大規模言語モデル (LLM) は自然言語で文章や会話を生成するだけ でなく、プログラミング言語を用いてソースコードやテストコードを生成し、開発者の仕事

    を助けることができます。この講義では LLM のプログラミング能力を向上させ、ソフト ウェア開発に応用するための研究動向やその効果・課題をご紹介します。 アジェンダ: • NTT版大規模言語モデル tsuzumi のご紹介 • 大規模言語モデル (LLM) とは? • プログラミングへの活用 • プログラミングを超える範囲のソフトウェア開発タスクへの応用
  3. Copyright 2024 NTT CORPORATION 4 鼓と「tsuzumi」 邦楽器 日本語が特に強い 小さい 小型軽量

    調べ緒により調律が容易 柔軟なチューニング 見た目、音、 演奏時の所作が美しい マルチモーダル
  4. Copyright 2024 NTT CORPORATION 5 日本語性能比較:Rakudaベンチマーク tsuzumi-7Bは、世界トップクラスの性能を達成(評価スコア:1225) より大規模と思われるGPT-3.5とほぼ同等、国産LLM中トップ 2023.10.26時点 ※rakudaベンチマーク:https://yuzuai.jp/benchmark

    2023.10.26実施 日本の地理・政治・歴史・社会に関する40問の質問 2023/09/27付リーダーボード記載の全モデルとtsuzumi-7bをGPT-4による2モデルの比較評価を行い、Bradley-Terry strengthsにてランキングした結果 tsuzumi-7b以外のモデル出力はサイトにアップロードされているものを利用 GPT-3.5 20B? 175B? (OpenAI gpt-3.5-turbo-0301) Elyza 7B (ELYZA elyza-7b-fast-instruct) Ja Stable 7B (Stability AI ja-stable-7b-alpha instruct) Weblab 10B (東大松尾研 weblab-10b-instruct) tsuzumi 7B (NTT tsuzumi-7B) LINE 3.6B (LINE line-3.6b) Rinna 3.6B (Rinna rinna-3.b(SFT)) 0 200 400 600 800 1000 1200 1400
  5. 6 © NTT CORPORATION 2024 Rakudaベンチマーク 日本の地理・政治・歴史・社会の4カテゴリに関するオープン形式のQAによる評価セット GPT-4により LLM の出力の評価を自動的に行う

    (LLM-as-a-Judge) 質問例 地理 • 四国地方の4つの都道府県名と、それぞれの県庁所在地を列挙してください。 • 日本の最北端と最南端に位置する地名を答えてください。また、それぞれどの都道府県に所属 するかも記述してください。 政治 • 日本の三権分立について説明し、それぞれの権力がどのように機能しているか述べてください。 • 戦後の日本政治において最も影響力のあった政治家を一人挙げ、その貢献について詳しく述べ てくださ 歴史 • 古代日本における最初の政体である「ヤマト政権」の特徴を3つ述べ、それらが当時の日本社 会にどのような影響を与えたか詳しく説明してください。 • 平安時代に成立した貴族社会の特徴を述べ、それが日本文化(文学、芸術、宗教など)にどの ように影響を与えたかについて論じてください。 社会 • 平成時代から令和時代への移行期に見られた社会的、政治的な変化を挙げ、その意義について 説明してください。 • 日本の「三位一体改革」について述べ、その経済に対する影響について解説してください。
  6. Copyright 2024 NTT CORPORATION 7 Rakudaベンチマーク:tsuzumi-7B vs GPT-3.5 判定例 質問

    平成時代から令和時代への移行期に見られた社会的、政治的な変化を挙げ、その意義について説明してください。 アシスタント1の回答は、平成から令和への移行期に見られた社会的、政治的な変化を具体的に5つのポイントで詳細に説明し ています。それぞれのポイントについて、その意義や影響を具体的に述べており、情報の有用性と関連性が高いと言えます。 また、日本語の表現も適切で、理解しやすい文章となっています。 (…) 両者ともに質問の意図を理解し、適切な回答を提供していますが、より具体的で詳細な情報を提供したアシスタント1の回答の 方が優れていると判断します。したがって、私の評価はアシスタント1(※tsuzumi)が高いです。 GPT-4の判定:有用性、関連性、正確性、詳細度、日本語能力 GPT-3.5 の回答 平成と令和の移行期には、いくつかの社会的、政治的な変化が起こ りました。以下にいくつか挙げて説明します。 ① 政治的変化:平成時代に比べ、令和時代は政治の安定が続い ています。また、現在の政権は若い世代の支持を得ています。これは、 政治の価値観が世代間で変化してきていることを示しています。 また、平成時代に比べ、令和時代は海外からの人口流入が増加し ており、外国人材を積極的に受け入れる政策が進んでいます。この流 れは、日本の人口減少問題やグローバル化に対応するために重要な 変化となっています。(…) tsuzumi-7B の回答
  7. Copyright 2024 NTT CORPORATION 8 日本語性能比較:Rakudaベンチマーク ※rakudaベンチマーク:https://yuzuai.jp/benchmark 2023.10.22実施 日本の地理・政治・歴史・社会に関する40問の質問 GPT-4による2モデルの比較評価(40問×提示順2)で採点

    llm-jpを除くモデル出力はサイトにアップロードされているものを利用 llm-jpはhuggingfaceのモデルカード記載の設定による 入力の繰り返しおよび終端トークンは後処理により除外した。 評価スコアは、2023/09/27付リーダーボード記載の全モデルとtsuzumi-7bをGPT-4による2モデルの比較評価を行い、Bradley-Terry strengthsにてランキングした結果 対 GPT-3.5 175B? (OpenAI gpt-3.5-turbo-0301) 対 Elyza 7B (ELYZA elyza-7b-fast-instruct) 対 Ja Stable 7B (Stability AI ja-stable-7b-alpha instruct) 対 Weblab 10B (東大松尾研 weblab-10b-instruct) 対 LLM-JP 13B (Nii LLM勉強会 vs. llm-jp-13b-instruct- full-jaster-dolly-oasst-v1.0) WIN DRAW LOSE 勝率50% 97.5% 52.5% 7.5% 40.0% 71.3% 8.8% 20.0% 86.3% 11.3% 91.3% 7.5% tsuzumi-7Bは、世界トップクラスの性能を達成(評価スコア:1225) より大規模と思われるGPT-3.5とほぼ同等、国産LLM中トップ 2023.10.26時点
  8. Copyright 2024 NTT CORPORATION 9 tsuzumi 7B (NTT tsuzumi-7B) LLaMa2

    7B (Meta llama2-7b-chat) Elyza 7B (ELYZA elyza-7b-chat) PlaMo 13B (PFN plamo-13b-base) 英語性能比較:lm-evaluation-harness 同サイズで英語をメインとした世界トップクラスLLMのLLaMA2 7Bと同程度の性能を実現 英語以外にも、中韓仏独など多言語・プログラミング言語を拡充予定 ※1: 評価方法 lm-evaluation-harness: https://github.com/EleutherAI/lm-evaluation-harness rinna/bilingual-gpt-neox-4bのモデルカード記載の英語10タスク(commonsense reasoning分野)におけるスコアの平均値 評価指標はaccおよびacc_norm(両方存在する場合はacc_normを優先) llama2-7b, elyza-7b, tsuzumi-7bは全てchat/instructモデルを利用 plamo-13bはbaseモデルの数値 英語性能 20 40 60 80 英語ベンチマーク10タスク平均 * PLaMoのみベースモデルの結果 62.8 61.5 61.0 60.6
  9. 10 © NTT CORPORATION 2024 Microsoft Azure AI 上で tsuzumi

    の推論や LoRA によるファインチューニングを従量課金型で 利用可能なサービスを NTTデータが 2024年11月20日より提供開始 Azure AI 上での Model-as-a-Service https://www.nttdata.com/global/ja/news/topics/2024/112000/ https://ai.azure.com/explore/models/tsuzumi-7b/version/2/registry/azureml- nttdata?tid=72f988bf-86f1-41af-91ab-2d7cd011db47
  10. 12 © NTT CORPORATION 2024 大規模言語モデル (LLM) とは 大規模な学習データを用いて事前に訓練された、膨大な数のパラメータ (数百万

    ~数十億以上) を持つニューラルネットワーク 例: OpenAI 社の GPT-n シリーズ • Generative テキストなどのデータを生成することが得意な • Pretrained パラメータを事前学習済みの (すぐに利用できる) • Transformer Transformer という構造のニューラルネットワーク 大規模言語モデルと関係のありそうな言葉である ニューラルネットワークやパラメータって何でしょうか?
  11. 13 © NTT CORPORATION 2024 人工ニューロン (人工神経) • 大規模言語モデルが出力する文字列は「ニューラルネットワーク」と呼ばれる 人間の神経細胞間の結合を模したグラフ構造を用いて計算される

    • ニューラルネットワークを構成する最小単位: 人工ニューロン 𝑏 𝑥1 𝑥𝑛 𝑦 𝜔1 𝜔𝑛 重み バイアス 𝑦 = 𝑓(𝜔1 𝑥1 + … + 𝜔𝑛 𝑥𝑛 + 𝑏) 活性化関数 (人工ニューロンの種類) 𝑓(𝑧) 人工ニューロンの出力値は入力の 重み付き和とバイアスの合計値 𝑧 (重み付き線形和) に活性化関数 𝑓 を適用したもの 入力 (1~n 個 の実数値) 出力 … パラメータ (人工ニューロンへ入力する枝 とノードに与える実数値) …
  12. 14 © NTT CORPORATION 2024 人工ニューロンの例 活性化関数としてシグモイド関数 𝜎を用いるものをシグモイドニューロンと呼ぶ 0~1 の範囲の値を出力するため、確率を表現する場合などに用いられる

    • 推論: 入力値から出力値を得るための計算 • 学習: 入力値・出力値 (現実のデータ) に基づいて重みとバイアスを調整する計算 −5 20 4 0.9 今日の気温 (℃) 今日の気分 (1~5段階) ビールを飲む確率 (0~1) 0.2 0.8 重み バイアス 𝑦 = 𝜎 𝜔1 𝑥1 + 𝜔2 𝑥2 + 𝑏 = 𝜎 2.2 ≈ 0.90 活性化関数 (シグモイド関数) 𝜎(𝑧) シグモイド関数 𝜎 𝑧 = 1 1 − 𝑒−𝑧 0.90
  13. 15 © NTT CORPORATION 2024 演習1: シグモイドニューロンの振る舞い • 前のページの人工ニューロンの例において、気温が30℃で暑く、気分がとても良くない (5段階のうち1)

    の場合にビールを飲む確率はどの程度になりますか。 • 気温が10℃とやや寒いものの、嬉しい出来事があり気分がよい場合 (5段階のうち4) に ついても、同様にビールを飲む確率を算出してください。 • バイアスや重みの数値を少しだけ変え、自分の感覚に合うように人工ニューロンの出力 を調整することができるか、試してみてください。ビールが飲めない場合には「アイス を食べたい確率」など、出力の定義を変更しても構いません。
  14. 16 © NTT CORPORATION 2024 ニューラルネットワークとは 複数の人工ニューロンを組み合わせることで、人間の神経回路を模した数式的なモデルに よってデータを処理するネットワーク構造 d 𝑏1

    1 𝑏2 1 𝑏3 1 𝑥1 𝑥2 𝑏1 2 𝑏2 2 入力層 出力層 隠れ層 𝜔11 1 𝜔21 1 𝜔23 1 𝜔13 1 𝜔22 1 𝜔12 1 𝜔11 2 𝜔21 2 𝜔32 𝜔22 2 𝜔12 2 𝜔31 2 𝑦1 𝑦2 • 適切にパラメータを決定する ことで、あらゆる連続関数を 近似的に表現できる (万能近似定理) • 大量の入力・出力のデータに よりニューロンのパラメータ を学習させることが可能 • 隠れ層を2層以上持つものは 深層ニューラルネットワーク (DNN; Deep Neural Network) と 呼ばれ、より複雑なモデルを 表現できる。その学習は困難 だったが、2006年以降で手法 が整備されてきた。
  15. 17 © NTT CORPORATION 2024 ニューラルネットワークを用いた画像認識の例 手書きされた数字の画像を 3 層のニューラルネットワークで認識する例 MNIST

    (えむにすと) というデータセットを用いた機械学習の入門的な例題 入力: 784 次元の 実数ベクトル 隠れ層: 15ニューロン 出力層: 10ニューロン 出力層の活性化関数に Softmax 関数を用いると 出力層の全ニューロンの 合計値が 1 になるような 確率分布を出力できる。 28p x 28p x 𝑦𝑗 = 𝑒𝑧𝑗 σ 𝑘 𝑒𝑧𝑘 出力層の 𝑗 番目のノード における重み付き線形和 が 𝑧𝑗 のとき: Softmax 関数 M. Nielsen, “Neural Networks and Deep Learning” http://neuralnetworksanddeeplearning.com/ 28×28ピクセルの画像の 各ピクセルの色の濃さ (グレースケール)
  16. 18 © NTT CORPORATION 2024 ニューラルネットワークへの文字列の入出力 ニューラルネットワークは実数の値 (ベクトル) を入力し、計算結果も実数で出力するため、 文字列を扱う場合には一定のルールで文字列を区切り、実数値のベクトルと対応付ける

    • 文字列とトークンを相互に変換するプログラムをトークナイザといい、文字列を数値の ベクトルに変換する処理をエンコード、その逆の処理をデコードと呼ぶ • 例: OpenAI (GPT 3.5 および 4) に文字列を入力するためのトークンの確認方法 https://platform.openai.com/tokenizer トークンの区切り ごとに異なる色で 塗り分け トークンを表す 実数値の列 同じ部分文字列には同一の 数値が割り当てられる
  17. 19 © NTT CORPORATION 2024 演習2: トークンを観察してみよう • Web ブラウザで

    OpenAI のトークナイザのページ (https://platform.openai.com/tokenizer) を 開いて好きな文字列を入力し、トークンの区切り方やトークンに割り当てられた数値を 観察してください。 ✓ 英語の場合、単語の大文字・小文字の違いや、単数形・複数形の違いはどう表現されますか? ✓ 日本語の文章を入力すると、どのようにトークンは区切られますか? • Meta が公開したオープンな大規模言語モデル Llama3 についてもトークナイザの動作 を確認できる Web サイト (https://belladoreai.github.io/llama3-tokenizer-js/example-demo/build/) があります。 ✓ さきほど OpenAI のトークナイザに与えた文字列と同じものを与えて、トークンの区切り方を 比較してください。 ✓ OpenAI のトークナイザでエンコードされた文字列を Llama3 に入力するできるでしょうか?
  18. 20 © NTT CORPORATION 2024 大規模言語モデルのしくみ Transformer*と呼ばれる深層ニューラルネット ワークの構造のうち、テキスト生成タスクでは デコーダ (右側部分)

    のみを利用 • GPT-3 は175億のパラメータと96層のレイヤから 構成される膨大なネットワーク • エンコーダは翻訳や分類などのタスクで利用 文字列は以下の手順で再帰的に生成される: 1. 図の右下の Outputs に入力する文字列 (トークン の列) を与える 2. 最上部の Softmax レイヤから元の文章の続きと なるトークンが 1 つ返される 3. 元のトークン列に 2. で得られたトークンを追加 し、1. に戻ってさらに続きのトークンを生成 4. 文末を表す <eos> トークンを推論する、または 文の長さが最大長に到達すると生成を停止する エンコーダ (大規模言語モデル では使わない) デコーダ * Attention Is All You Need: https://arxiv.org/pdf/1706.03762.pdf ここに文字列 (トークンの列) を入力 続きのトークン (の確率分布) が 出力される
  19. 21 © NTT CORPORATION 2024 自己注意機構 (Self-Attention) 私たちが言葉を話したり書いたりするとき、文のどの部分に注意を向けているか?と同様に 注意を向けた単語 (トークン)

    に重みを与え、文章の続きとなるトークンの推論に用いる Yahoo!知恵袋より質問・回答を引用 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1380487138 日本 で 一番 小さい イオン は 日本, イオン (ショッピング モールの話題?) 一番, 小さい, イオン (化学の質問?) … 現在の生成位置 (距離が離れたトークン にも注意が必要)
  20. 22 © NTT CORPORATION 2024 Web ブラウザ上で GPT-2 モデルを動作させて Transformer

    の仕組みを視覚的に学習できる https://poloclub.github.io/transformer-explainer/ (※ 約 600MB 程度のデータをダウンロードするので注意) Transformer Explainer [Cho et al, 2024/08] Transformer Explainer: Interactive Learning of Text-Generative Models https://arxiv.org/abs/2408.04619 入力する トークンの列 次の単語 (トークン) の確率分布
  21. 23 © NTT CORPORATION 2024 膨大なパラメータ数と事前学習により、大規模言語モデルには人間のような「少数の例示に よる学習」の能力が発現する 文脈内学習 (In-context Learning)

    大量のテキストに よる事前学習 同一タスクの 繰り返しを含む系列 https://arxiv.org/abs/2005.14165 数値演算 スペル修正 翻訳
  22. 24 © NTT CORPORATION 2024 文脈内学習を利用してプロンプトを工夫し、様々なタスクへ LLM を適応させる技術体系 LLM を日常的に活用したり、研究・応用する上で身につけておくと役立つ

    プロンプトエンジニアリング Prompt Engineering Guide https://www.promptingguide.ai/jp 例: CoT (Chain-of-Thought) プロンプティング この一言を入れるのが重要!
  23. 26 © NTT CORPORATION 2024 大量のテキストを用いた教師なし学習でベースモデルを構築し、その後インストラクション (指示・応答のペア) を追加学習させることで、汎用的なタスクへ対応できる性質を獲得する 大規模言語モデルの学習方法 事前学習用

    テキストデータ ①教師なし 学習 ベース モデル ②インストラクション チューニング (教師あり学習) タスク応用 モデル インストラクション データ アノテーションなしの大規模な テキストコーパスで事前学習 正解情報ありの学習データで ファインチューニングを行い 応用的なタスクに対応
  24. 27 © NTT CORPORATION 2024 LLM ごとに「どのようなデータ」を「どれぐらいの量」で配合して学習するかは異なるが、 質の良いテキストをたくさん学習させることが重要 • 例えば

    GPT-3 は 300B、LLaMA 2は2000Bトークンで事前学習 • tsuzumi-7b は 1000Bトークン以上のコーパス、専門文書からエンタメ系まで幅広く学習 事前学習コーパスの量・ドメイン [Chao+, 2023/06/29(v11)]
  25. 28 © NTT CORPORATION 2024 英語以外の言語をメインターゲットとする場合、どのような言語バランスが良いのか? • LLaMA-2 など多くの海外製 LLM

    において、事前学習コーパスにおける日本語の割合は少ない • Elyza や StabilityAI など、既存の海外製LLMをベースとして日本語の継続事前学習をするアプローチも有望 事前学習コーパスに含まれる言語の比率 LLaMA 2 のデータセットの言語判定結果 モデル コーパス line-3.6b 日本語メイン750GB weblab-10b 日英メイン600Bトークン stableLM-7b-alpha 日英メイン750Bトークン (コード2%含む) plamo-13b 英語1320Bトークン +日本語180Bトークン elyza-7b LLaMA2-7b+日本語18B stableLM-7b-gamma Mistral-7b+日本語100Bトークン tsuzumi-7b 合計1000Bトークン以上~ 日英を中心にコード・他21言語 主な国産モデルのコーパス ソースコード 日本語 英語
  26. 30 © NTT CORPORATION 2024 • 幅広いカテゴリ・質問タイプでインストラクションチューニングデータを独自に整備して 学習に利用 • 有益性および安全性の両面からインストラクションデータの整備を拡大中

    インストラクションチューニング: データ作成 ChatGPT の出力例 作成データ 件名:面接について、お断りのご連絡 お世話になっております。◦◦株式会社の採用担当者です。 この度は、当社の面接にご応募いただき、誠にありがとうござい ました。 しかしながら、私事でございますが、一身上の都合により、面接 の日程に参加することができなくなりました。誠に恐れ入ります が、ご了承いただけますようお願い申し上げます。 今後も、ご縁がございました際には、またご検討いただけますよ うに心より願っております。 何卒、ご理解いただけますようお願い申し上げます。 敬具 ◦◦株式会社 採用担当者 件名:【面接辞退のご連絡】名前 本文: 株式会社◯◯ ••部 △△様 お忙しい中、失礼いたします。 【日時】より面接のお時間を頂戴しております、名前と申します。 誠に申し訳ございませんが、一身上の都合により就業することが 難しくなってしまったため、面接を辞退させていただきたくご連 絡いたしました。 この度は、お忙しいところ、貴重な時間を割いていただいたにも かかわらず、身勝手なお願いとなり、誠に申し訳ございません。 また、面接の辞退がメールでのご連絡となってしまいましたこと、 重ねてお詫び申し上げます。 末筆ながら、貴社の益々のご発展とご活躍を祈念しております。 名前 住所 Q. 面接を都合によりお断りするメールを作ってください。次の言葉を入れてください * 一身上の都合
  27. 31 © NTT CORPORATION 2024 ベースモデルの規模・性質やファインチューニングの目的にもよるが、 概ね 1.5万~150万件程度のインストラクション (指示・回答のペア) を教師データで準備

    LLMのファインチューニングに用いるデータ件数 Using LangSmith to Support Fine-tuning (langchain.dev) https://blog.langchain.dev/using-langsmith-to- support-fine-tuning-of-open-source-llms/
  28. 32 © NTT CORPORATION 2024 • 分からない場合でも平然と嘘をつく、事実に基づかない応答をしてしまう問題がある • モデル内の知識に基づいて生成するため、質問応答のタスクなどで顕著に起こりやすい •

    一方で,翻訳や要約の入力と出力で数値や固有名詞が変わるなどの矛盾はかなり少ない 課題:嘘 (Hallucination) [Bang+,2023/02] https://arxiv.org/abs/2302.04023 赤文字の数字はすべて誤り
  29. 33 © NTT CORPORATION 2024 • 大量データから学習しているため性別、人種、宗教などでバイアスが発生してしまう • 下記のように、扱う言語によって回答の内容が変わることもある 課題:バイアスの存在

    [Zhuo, 2023/01] https://arxiv.org/abs/2301.12867 クナシル島はロシア連邦に属し、サハリン 州クナシル地区に属しています。クリル列 島の南側、イトゥルップ島と色丹島の間に 位置しています。 国後島は現在ロシアの支配下にあるが、 日本も同島とクリル列島の他の3島の領 有権を主張している。所有権をめぐる 争いは解決していない。 GPT-3.5 (Default) の実際の回答 (4/10時点)
  30. 34 © NTT CORPORATION 2024 LLMにどのように規範を持たせるか チャット モデル 人がフィードバック (ランキング)

    Output 1 Output 2 プロンプト 作成 出力を 複数生成 教師あり 学習 報酬モデル 報酬モデルが高いスコアを出すようにモデルを学習 人のフィードバックによる強化学習 (RLHF) あなたは親切で、尊敬に値する誠実なアシスタントです。 常に安全でありながら、可能な限り役に立つ回答をしてください。 あなたの回答には、有害、非倫理的、人種差別的、性差別的、危険、違法な内容が含まれてはいけません。 社会的に偏りのない、前向きな回答を心がけてください。 質問が意味をなさない場合、または事実に一貫性がない場合は、正しくないことを答えるのではなく、その 理由を説明してください。 質問の答えを知らない場合は、誤った情報を共有しないでください。 システムプロンプト( Meta「LLaMA-2」のものを和訳)
  31. 35 © NTT CORPORATION 2024 ① 教師なし学習(自己教師あり学習)により、大量のテキストコーパスからベースのLLMを学習 ② 自然言語による指示で様々なタスクを解けるようにインストラクションチューニングし、LLMを更新 ③

    プリファレンスデータを作成し、報酬モデリングを実施する ④ 同データで報酬モデルが高い評価値を出す (人にalignする) ように強化学習でLLMを更新(③に戻る) 大規模言語モデルの学習方法 (まとめ) 事前学習用 テキストデータ ①教師なし 学習 ベース モデル ②インストラクション チューニング (教師あり学習) チャット モデル インストラクション データ プリファレンス データ 入力 ③プロンプト 作成 ④強化学習 (RLHF) 報酬 (評価値) モデル出力 更新 ③教師あり 学習 報酬 モデル 2つ 出力 ③比較評価
  32. 37 © NTT CORPORATION 2024 LLM のソフトウェア開発領域への応用 OSSリポジトリ (GitHub 等)

    ソースコードと 自然言語の両方に 対応した LLM (GPT-3.5, GPT-4等) 学習データとなる ソースコード 仕様書・ 要求文書 前処理 (プロンプト 組み立て) ソース コード プロンプト LLMの出力 (ソースコード や自然言語) プログラマ・ テスター お客様や 営業・コンサル等 後処理 (レスポンス 抽出・加工) ソフトウェア成果物 (ソースコード・仕様書・テストケース等) プロンプトの改善 (難易度: 低) 望ましい 結果か? 言語モデルの改善 (難易度: 中) Yes No 独自の言語モデルの トレーニング (難易度: 高) LLM が生成したデータを開発資産 (ファイル・フォルダ) へ反映 大規模言語モデルは文章 (テキスト) の生成が得意 なため、自然言語とプログラミング言語の両方を 扱えるように事前学習させることができる コード生成が可能な LLM を Code-LLM と呼ぶ LLM 調律師 (データサイエン ティスト) LLMの性質や 微調整を前提と した新たな開発 ワークフロー
  33. 38 © NTT CORPORATION 2024 例: GitHub Copilot によるコード補完 LLM

    に入力するプロンプトとその応答が IDE のプラグインによって自動処理されるため、 プログラマは LLM の入出力を意識せず、自然なコーディング作業の中で利用可能 https://github.com/features/copilot プログラマがライブラリのインポートや 関数宣言を記述する LLM がコードの続きを生成し、 エディタのカーソルの位置に 補完候補として提示 Copilotが自動的に プロンプトを作成 プログラマは Tab キーで補完を 採用するか、他のキーをタイプ して自分で続きを書く ソースコードと 自然言語の両方に 対応した LLM (GPT-3.5, GPT-4等)
  34. 39 © NTT CORPORATION 2024 大規模モデルのコード生成能力の評価 Code-LLM の性能は Python コードの生成タスクへの対応能力を評価する

    HumanEval や MBPP 等のベンチマークで評価することが標準的 Big Code Models Leaderboard https://huggingface.co/spaces/bigcode /bigcode-models-leaderboard • 多様な言語モデルや学習の手法 に関する論文が公開されており、 開発競争が激化 • 満点 (100 点) に近いスコアを示 すモデルも出現しており、ベン チマークの飽和や学習データへ の汚染が課題
  35. 40 © NTT CORPORATION 2024 Python の関数宣言とコメント (docstring) を LLM

    に与え、関数を完成させるために必要な コードの続きを求める「コード補完タスク」に関する 164 件の評価用データセット • 完成した関数が満たすべきテストケースが付属しており、生成したコードを Python で実行して評価 • テストケースを拡充した HumanEval+ も評価に用いられる HumanEval [Chen et al., 2021/7] Evaluating Large Language Models Trained on Code https://arxiv.org/abs/2107.03374 生成すべきコードは関数の終わりまでのため、数行程度と短いものが多い 生成されたコードを開発者が都度確認するようなコード補完の評価に適する
  36. 41 © NTT CORPORATION 2024 Python の関数が満たすべき仕様と テストケースを与え、関数定義を 生成させる「コード生成タスク」 に関する評価用データセット

    • MBPP とは Python の初学者が解け るレベルのプログラミング問題 (Mostly Basic Programming Problems) • 974 件の問題をクラウドソーシング で作成し、うち 426 件を著者らが 人手で精査したサブセットを作成 MBPP [Austin et al., 2021/08] Program Synthesis with Large Language Models https://arxiv.org/abs/2108.07732
  37. 42 © NTT CORPORATION 2024 Hugging Face, ServiceNow らが主導する BigCode

    プロジェクトが真にオープンで責任のある Code-LLM を開発するための一連の成果を公開 オープンな Code-LLM の出現 [Li et al. 2023/05] StarCoder: may the source be with you! https://arxiv.org/abs/2305.06161 検討事項 公開・提供する成果 モデル StarCoderBase (および Python 向けファインチューニングした StarCoder) • 15.5B パラメータ, 最大トークン数 8K • 初期の OpenAI Codex (code-cushman-001) を超えるコード生成の性能を発揮 学習用データ セットの整備 The Stack (1兆トークン) + Python コード 3B • GitHub から収集した再利用に寛容な OSS ライセンスのソースコードから Jupyter Notebooks, GitHub Issues を収集 • Google BigQuery から取得した GitHub のコミットログ Code-LLM の 評価 Code Generation LM Evaluation Harness • HumanEval (OpenAI), MBPP (Google) 等の主要な Code-LLM のベンチマークを 含む 評価用ハーネス 安全・公正な 利用 • StarEncoder をファインチューンし、個人を特定できる情報 (PII) を除去するた めの編集ツールを提供 • コードの帰属を追跡するためのツールを提供 • 開発者は自身のコードを The Stack からオプトアウト可能 ライセンス Open Responsible AI Model license (OpenRAIL-M) • モデルの無償・商用での利用をしやすいように条件を調整
  38. 43 © NTT CORPORATION 2024 例: GitHub リポジトリから再利用に寛容なOSSライセンスのコードを収集し、重複排除を 行った 1.5TB

    のデータセット (The Stack) で StarCoder を事前学習 [Kocetkov et al. 2022] The Stack: 事前学習に用いるコードの収集 ServiceNow Research: BigCode collaboration introduces The Stack https://www.servicenow.com/blogs/2022/big-code-collaboration-introduces-the-stack.html 重複データはモデルの性能を劣化させるため、 単純な重複排除だけでなく、類似するコードも 排除する (near-deduplication)
  39. 44 © NTT CORPORATION 2024 メジャーな言語 (C/C++/C#, Java, JavaScript, PHP,

    Python 等) では 50GB 超、ややマイナーな 言語でも 0.5~1GB 程度のコードを事前学習させている StarCoder [Li et al. 2023/05] StarCoder: may the source be with you! https://arxiv.org/abs/2305.06161 Table 1: StarCoder の学習データの概要 (※ Ocaml 以降の言語は Table 2 に掲載。Python は1200万ファイル/64GB、PHP は1500万ファイル/67GB)
  40. 45 © NTT CORPORATION 2024 非営利団体 The Software Heritage との提携により、

    The Stack v1 の10倍以上のソースコード (67.5TB) を事前学習データとして収集 • OSS ライセンスの種別によるフィルタ、近似重複排除、 個人識別情報のマスキング、コード所有者からの除外 申請の適用などのクリーンアップ処理を適用し、3.2TB の学習データを作成 • ServiceNow, HuggingFace, NVIDIA が事前学習を行って それぞれ 3B, 7B, 15B モデルを作成 StarCoder2 and The Stack V2 [Lozhkov et al. 2024/02] StarCoder 2 and The Stack v2: The Next Generation https://arxiv.org/abs/2402.19173 The Stack v1 The Stack v2 full 6.4TB 67.5TB dedup 2.9TB 32.1TB train (full) ~200B tokens ~900B tokens
  41. 46 © NTT CORPORATION 2024 LLM のパラメータ数や学習データ量が増えるほど性能が高まるスケール則が知られているが、 生成 AI のために利用できる

    “良質な” 学習データは 2026 年ごろまでに枯渇する 学習データの枯渇 [Villalobos et al. 2022/10] Will we run out of data? Limits of LLM scaling based on human-generated data https://arxiv.org/abs/2211.04325 • データ効率のよい学習方法を探求 したり、検索エンジンでは収集が できないプライベートなデータを 活用する • テキスト以外のマルチモーダルの 学習データ (例: 画像や動画) から の転移によりテキストに相乗効果 を与えるか調査する • 学習データの合成がモデルの性能 に与える影響に注意しながら、合 成したデータに多様性を持せたり、 検証可能にする方法を探求する 学習データの枯渇を回避するには?
  42. 47 © NTT CORPORATION 2024 生成 AI によって生成されたデータを無差別に次の世代の学習に利用した場合に、モデルに 不可逆的な欠陥 (モデルの崩壊)

    が生じることを指摘 生成データの学習によるモデル崩壊 [Villalobos et al. 2023/05] The Curse of Recursion: Training on Generated Data Makes Models Forget https://arxiv.org/abs/2305.17493v3
  43. 48 © NTT CORPORATION 2024 例: Opt-125m (1.2億パラメータ) に対して、モデルの生成したデータを複数世代にわたって 学習させた場合のモデル崩壊の様子

    学習データの崩壊 [Villalobos et al. 2023/05] The Curse of Recursion: Training on Generated Data Makes Models Forget https://arxiv.org/abs/2305.17493v3 入力: 1360年以前に一部始まっていた - Poyntz Wrightによると、 これは通常、熟練の大工と少数の巡回大工チームによって行われ、 地元の教区労働者が補佐していた。しかし、他の著者はこのモデ ルを否定し、代わりに有力な建築家が初期の垂直出力の例に基づ いて教区教会の塔を設計したと示唆している。 第0世代: ロンドンのセント・ジョン大聖堂のような復興建築。 垂直復興建築の現存する最古の例は、18世紀後半から19世紀初 頭に建てられた18世紀のガーンジーの聖母教会である。垂直教会 には2つのタイプがある。 第1世代: ローマのサン・ピエトロ大聖堂やブエノスアイレスの サン・ピエトロ大聖堂のような建築様式。これらの建築物がイン ノケンティウス3世の治世中に建てられたという証拠はないが、 彼の後継者であるインノケンティウス4世の治世中に建てられた 可能性はある。 第7世代:イングランドの建築。 ライトはニューヨーク・タイム ズ紙とのインタビューで次のように語っている。「自分がやりた いことをやれることに問題があるとは思わない。ただ、自分には 合わないだけだ。」さらに、「それを面白いと言えるかどうかは わからないが」と付け加えた。 第9世代: 建築。 また、世界最大のブラック・テイル・ジャック ラビットの生息地でもある。
  44. 49 © NTT CORPORATION 2024 LLM の学習には大量のデータが必要となるため、データの拡張や合成に関する様々な手法が 提案されている 学習データの拡張と合成 [Wang

    et al. 2024/10] A Survey on Data Synthesis and Augmentation for Large Language Models https://arxiv.org/abs/2410.12896 ▪ General Model Distillation 強力な (よりパラメータ数の大きい) 汎用 的なモデルを用いて学習データを合成し、 弱い汎用モデルの学習に用いる ▪ Domain Specific Model Distillation モデルを特定の問題領域 (例えばコーディ ングや数学など) に対応させるために学習 データを生成させる ▪ Model Self-Improvement モデルに自分自身の能力を向上させるた めの学習データを生成させる ▪ Data Augmentation 元のデータの本質的な性質を保ったまま、 データの多様性や量を増やす プログラミングは合成 データが検証しやすい 問題領域 (コンパイル、 実行、テストができる)
  45. 50 © NTT CORPORATION 2024 コード生成タスク 21 件を GPT-3 を用いて

    20K 件に 拡張し LLaMA をファイン チューニング Code Alpaca [Chaudhary, 2023/03] Code Alpaca: An Instruction-following LLaMA Model trained on code generation instructions https://github.com/sahil280114/codealpaca 多様なコード生成タスク指示を20種類作成してください。これらのタスク指示はGPTモデルに与えられ、その 指示を完了するためにGPTモデルを評価します。 要件は以下の通りです。 1. 指示ごとに動詞を繰り返さないようにして、多様性を最大限に高める。 2. 指示に使用される言語も多様であるべきである。例えば、質問と命令的な指示を組み合わせるべきである。 3. 指示の種類は多様であるべきです。 リストには、オープンエンドな生成、分類、編集、最適化など、多様 なプログラミングタスクの種類を含める必要があります。 2. GPT言語モデルは、指示を完了できる必要があります。 例えば、視覚または音声出力を作成するようアシ スタントに指示しないでください。 別の例としては、アシスタントはアクションを実行できないため、午後5 時に起こすよう指示したり、リマインダーを設定したりしないでください。 3. 指示は英語で記載してください。 4. 指示は少なくとも1~2文の長さが必要です。命令文または質問文のいずれかを使用できます。 5. 指示には適切な入力を作成してください。入力フィールドには、指示の例となる具体的な内容を含める必要 があります。現実的なデータを含める必要があり、単純なプレースホルダーは使用できません。指示に十分な 内容を含める必要がありますが、理想的には100語を超えないようにしてください。 6. すべての指示が入力フィールドを必要とするわけではありません。例えば、一般的な情報を求める指示、 「ファイルを読み込むためのPythonプログラムを作成しなさい」の場合、特定のコンテクストを提供する必要 はありません。この場合、入力フィールドに「<noinput>」と入力するだけです。 7. 出力は、指示と入力に対する適切な応答であるべきです。 8. すべてのタスクは、コーディングまたはプログラミングに関連するものであるべきです。 20のタスクのリスト: ### 1. 指示: {instruction} 1. 入力: {input} 1. 出力: {output} … コード生成タスクから数件を サンプリングして繰り返す 20,000 件の インストラクション チューニングデータ GPT-3 (text-davinci-003)
  46. 51 © NTT CORPORATION 2024 Code Alpaca のタスクを LLM に与えて「少し難しく」変化させるタスク

    (Evol-instruct) により 増強し、StarCoder をファインチューニングした結果、GPT-3.5 レベルまで性能を向上 WizardCoder [Microsoft, 2023/06] WizardCoder: Empowering Code Large Language Models with Evol-Instruct https://arxiv.org/abs/2306.08568 プログラミングテストの問題の難易度を少し上げてください。 難易度を上げるために、以下の方法を使用できますが、これら に限定されません。 {method} {question} • 元の問題に新しい制約や要件を追加し、約10語を追加 する。 • プログラミングタスクで一般的に使用されている要件 を、あまり一般的ではなく、より具体的な要件に置き 換える。 • 元の問題がわずか数ステップの論理ステップで解決で きる場合は、より多くの推論ステップを追加する。 • 誤ったコードの例を参考として提供し、ミスディレク ションを増やす。 • より高い時間的または空間的複雑性の要件を提案する が、頻繁に行うことは避ける。 ChatGPT への指示のテンプレート 「難しくさせる」 ためのパターン集 元のインストラクションチューニングのデータをここに入れる
  47. 52 © NTT CORPORATION 2024 Code Alpaca のタスクを LLM に与えて「少し難しく」変化させるタスク

    (Evol-instruct) により 増強し、StarCoder をファインチューニングした結果、GPT-3.5 レベルまで性能を向上 WizardCoder [Microsoft, 2023/06] WizardCoder: Empowering Code Large Language Models with Evol-Instruct https://arxiv.org/abs/2306.08568 Please increase the difficulty of the given programming test question a bit. You can increase the difficulty using, but not limited to, the following methods: {method} {question}
  48. 53 © NTT CORPORATION 2024 OSS のコードの断片から LLM に着想 (インスピレーション)

    を得させて問題・回答のペアを 生成する手法 OSS-Instruct を提案し、モデルの重みと学習データを公開 • Evol-Instruct ではシードの タスクや複雑化させるため のLLMへの指示に潜在的な バイアスの可能性がある • Evol-Instruct とは直交する データ合成手法であるため 併用が可能 (右図: MagicoderS-CL) • Google CodeGemma でも 同手法を採用 Magicoder [Wei et al., 2023/12] Magicoder: Source Code Is All You Need https://arxiv.org/abs/2312.02120
  49. 54 © NTT CORPORATION 2024 ベースモデルを用いた OSS Instruct によりインストラクションチューニングデータを自動的 に合成し、そのベースモデル自身の追加学習に用いる手法

    SelfCodeAlign [Wei et al., 2024/10] SelfCodeAlign: Self-Alignment for Code Generation https://arxiv.org/abs/2410.24198 提供されたコードの断片から、 プログラミングの主要概念を 抽出してください。 プログラミングの概念とは、 プログラミングで使用される 基礎的な原則やテクニックを 指し、開発者が習得すべき重 要なものです。これらの概念 をカンマで区切った形式で列 挙してください。 論理的思考力を養うために、独創的で、明確で、多様性があり、 質の高い独立した一連のコーディングタスクを作成してくださ い。各タスクは以下の指定された特性を満たす必要があります。 カテゴリ: タスクの種類(例:関数実装、クラス実装、プログ ラム実装など) 言語: 使用するプログラミング言語 難易度: タスクの複雑さのレベル (例:簡単、中程度、難しい) 概念: タスクに含めるように設計した基本原則と技術。開発者 は、タスクを効果的に解決するためにそれらを理解している必 要があります。 あなたは非常に賢いAIコーディン グアシスタントです。各ユーザー の指示に対して、正確で信頼性の 高い応答を提供してください。 応答を返した後に一連の実行可能 なテストを作成し、応答の一貫性 と正確性を検証してください。
  50. 55 © NTT CORPORATION 2024 学習データがオープンな Code-LLM として最高水準 (SOTA) 、OpenAI

    を用いて学習データを 生成したモデルや学習方法が非公開のモデルにも迫る性能を発揮 SelfCodeAlign [Wei et al., 2024/10] SelfCodeAlign: Self-Alignment for Code Generation https://arxiv.org/abs/2410.24198 OpenAI で学習データを生成した モデル (利用規約に違反するため 使えない) インスラクションチューニングの データが非公開のモデル パラメータ数が大きいモデルとも SelfCodeAlign はよい勝負 同じ 7B 規模のライバル
  51. 57 © NTT CORPORATION 2024 プログラマによる局所的な LLM の活用は既に一定の実用的な効果があるが、より広範囲・ 高度な工程・開発成果物の応用への期待が高い LLMを用いたソフトウェア開発のユースケース

    ユースケース 入力 出力 局所的な活用法 (プログラマの支援) 広範囲な活用法 (開発工程にまたがる支援) ソースコードの生成 Code Generation 自然言語 仕様書やソースコード上 のコメント文など ソースコード 仕様を実現するための ソースコード 関数・クラス・データ構 造など局所的な範囲での コーディングの効率化、 自動化 仕様書からシステム全体 のソースコードやテスト を生成 (≒ノーコード開発) ソースコードの補完 Code Completion ソースコード 書きかけ・未完成のソー スコードの断片 ソースコード ソースコードの続きの補 完、前後関係の穴埋め コーディングの効率化、 ライブラリやコーディン グ規約の習熟支援 仕様変更に対するコード 全体への変更の波及 (保守の自動化) ソースコードの自然 言語による説明 Code Explanation ソースコード 処理内容の理解や文書化 を行いたいソースコード 自然言語 ソースコードの処理内容 の説明 (自然言語) 維持・保守におけるソー スコード理解の支援、お よび文書化 ソースコード全体のリ バースエンジニアリング (仕様の復元) ソースコードの別言 語への翻訳 Code Translation / Migration ソースコード 古いプログラミング言語 で記述された処理 ソースコード 新しいプログラミング言 語で記述された処理 部分的な範囲のコードの 別言語への変換、新たな プログラミング言語の学 習支援 ソースコード全体の別言 語への書き換え (モダナ イズ、マイグレーショ ン) 現状の Code-LLM の活用範囲
  52. 59 © NTT CORPORATION 2024 CEO、プログラマ、テスターなど異なる役割を持つ LLM エージェントたちがクライアント (人間) の依頼を受けてお互いにチャットしながら開発し、コードやドキュメントを納品

    ChatDev [Zhou(Tsinghua U)+, 2023/07] ChatDev: Communicative Agents for Software Development https://arxiv.org/abs/2307.07924 五目並べゲームを作るための開発会議の例:
  53. 60 © NTT CORPORATION 2024 開発ロールごとの LLM エージェントの 協調により自律的な開発を行う MetaGPT

    [Hong et al., 2023/08] MetaGPT: Meta Programming for Multi-Agent Collaborative Framework https://arxiv.org/abs/2308.00352 • 人間が従来行ってきた開発者の役割やタスク を LLM のプロンプトに与える
  54. 61 © NTT CORPORATION 2024 最終ゴールを GPT-4 が必要なサブタスクに分解し、実行計画を修正しながらゴールを達成 Auto-GPT [Toran

    Bruce Richards and contributors, 2023/03] ユーザの入力したゴールの例 1. 現在市場に出回っているさまざまなヘッドホンの市場調査 2. トップ5のヘッドホンを入手し、その長所と短所をリストアップ 3. それぞれの価格を記載し、分析結果を保存 4. 完了したら終了 Example of AutoGPT https://www.youtube.com/watch?v=z2P9ravT1vg エージェントの実行計画と修正結果 1. Google で ”top 5 headphones 2024” をキーワード検索 2. 検索結果1位のページにアクセスして欲しい情報が無かったと認識 3. Google検索を”top 5 headphones 2024 with pros and cons”で 再度実施 4. 検索結果1位のページにアクセスして欲しい情報を発見 5. 正規表現でページから情報抽出しようとするが失敗 6. BeautifulSoupに切り替えて抽出 7. 抽出結果をファイルに保存
  55. 62 © NTT CORPORATION 2024 OpenAI やその他の LLM と連携し、ターミナル内で開発ツールや Git

    リポジトリと連携し、 自動的にソフトウェアを開発するオープンソースの AI エージェント Aider [Gauthier and contributors, 2023/06] Aider is AI pair programming in your terminal https://aider.chat/ LLM が実行計画を出力 LLM が実行計画に沿って、ソースコード の差分 (パッチ) を生成 ツールを利用して Git リポジトリに差分を 適用し、コミット操作を自動的に実行 ユーザからチャットで目的・指示を与える
  56. 63 © NTT CORPORATION 2024 LLM が生成したコードに対し、マルチターンで実行結果や開発者による フィードバックを与えてコードを改善する手法 • マルチターン対話のためのツールや学習データを公開

    • 学習データを用いて CodeLlama, DeepSeekCoder の追加学習して SOTA を達成 OpenCodeInterpreter [Zheng et al., 2024/02] OpenCodeInterpreter: Integrating Code Generation with Execution and Refinement https://arxiv.org/abs/2402.14658 人間による フィードバック 実行フィードバック マルチターン インストラクションの学習データでは 人間によるフィードバックを擬似的に生成
  57. 64 © NTT CORPORATION 2024 LLM が生成したコードに対する実行結果や開発者による フィードバックを元にコードを改善する手法 • マルチターン対話のためのツールや学習データを公開

    • CodeLlama, DeepSeekCoder を追加学習し SOTA を達成 OpenCodeInterpreter [Zheng et al., 2024/02] OpenCodeInterpreter: Integrating Code Generation with Execution and Refinement https://arxiv.org/abs/2402.14658
  58. 65 © NTT CORPORATION 2024 エージェントの仕組みを取り入れることで HumanEval, MBPP は満点近いスコアに到達 Code-LLM

    向けベンチマークの飽和 Code Generation on HumanEval (https://paperswithcode.com/sota/code-generation-on-humaneval) Code Generation on MBPP (https://paperswithcode.com/sota/code-generation-on-mbpp)
  59. 66 © NTT CORPORATION 2024 GitHubリポジトリから自動的に抽出した変更要求 (Issue)、修正内容 (パッチ)、テストケース を用いて LLM

    に現実の開発タスクを実施させるベンチマーク SWE-Bench [Jimenez et al., 2023/10] SWE-bench: Can Language Models Resolve Real-World GitHub Issues? https://arxiv.org/abs/2310.06770 開発者が実際に GitHub で行った 修正内容 (= 正解パッチ) 機能追加やバグ修正を行った際に 適切にテストを追加して検証する フローの整ったリポジトリを選定 する必要がある LLM が生成した修正内容 (パッチ) 修正内容は正解パッチに対応して 開発者が追加したテストケースを 実行して検証する この例では正解パッチのうち一部 (if 文の true 節) のみ生成したため、 テストの一部が失敗している
  60. 67 © NTT CORPORATION 2024 2024年6月時点で SWE-Bench および SWE-Bench Lite

    の最高スコア 18.9 % を獲得 SWE-Bench の提案時の最高スコアは 4% 程度だったが、新たな手法・ツールが急速に発展 例: Aider + GPT-4o による SWE Bench スコア Aider is SOTA for both SWE Bench and SWE Bench Lite https://aider.chat/2024/06/02/main- swe-bench.html
  61. 68 © NTT CORPORATION 2024 OpenAI が SWE-Bench の著者らと協力し、自動生成された問題のうち 500

    件について変更 要求やテストの妥当性、難易度を 93 人のプロ開発者により人手で検証 SWE-Bench Verified [Chowdhury et al., 2024/08] Introducing SWE-bench Verified https://openai.com/index/introducing-swe-bench-verified/ Q. 問題文の説明は適切だったか? Q. 評価基準は妥当か? (単体テストが正解を却下しないか)
  62. 71 © NTT CORPORATION 2024 講義のまとめ • 大規模言語モデルはテキストの生成タスクを得意とする、大規模なパラメータを持った 深層ニューラルネットワークの一種です。モデルの構造やパラメータが事前に与えられ ているため、利用者は日常的に用いる言葉でモデルに指示するだけで、様々なタスクを

    実行できることを学びました。 • 大規模言語モデルは自然言語の文章だけでなく、プログラミング言語で記述したソース コードも生成することが可能です。公開されているソースコードを大規模に収集したり、 学習データを拡張・合成する研究を通じて、関数やクラスなどの局所的な範囲のプログ ラムを実用的なレベルで生成できる能力を獲得しています。 • 今後はプログラミングの範囲を超え、ユーザの要求、設計、コーディング、テスト、運 用を含めたソフトウェア開発の多様な工程を AI で効率化することが期待されています。 評価指標となる新しいベンチマークが提案され、大規模言語モデルを頭脳に据えた AI エージェントの仕組みによって高度な課題を解決する研究が急速に発展しています。
  63. 72 © NTT CORPORATION 2024 その他の参考資料 • M. Nielsen, “Neural

    Networks and Deep Learning”, http://neuralnetworksanddeeplearning.com/ http://nnadl-ja.github.io/nnadl_site_ja/index.html (日本語版) • 情報処理推進機構, “自然言語処理技術の進化:AIによる「ことば」の処理から汎用AIへ 最新の動向について”, https://www.ipa.go.jp/digital/chousa/trend/ai.html • 西田京介, 西田光甫, 風戸広史, “大規模言語モデル入門”, ソフトウェア工学シンポジウム 2023 チュートリアル, https://ses.sigse.jp/2024/wp-content/uploads/2024/08/SES2024_SES2024_チュートリアル.pdf • 太田真人,“ICLR2024 LLMエージェントの研究動向”, https://speakerdeck.com/masatoto/iclr2024-llmezientonoyan-jiu-dong-xiang • Wang et al., “Agents in Software Engineering: Survey, Landscape, and Vision”, https://arxiv.org/abs/2409.09030 • Xi et al., “The Rise and Potential of Large Language Model Based Agents: A Survey”, https://arxiv.org/abs/2309.07864 • Wang et al., “A Survey on Large Language Model based Autonomous Agents”, https://arxiv.org/abs/2308.11432