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

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

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

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

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

Hiroshi Kazato

December 18, 2023
Tweet

More Decks by Hiroshi Kazato

Other Decks in Technology

Transcript

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

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

    事を助けることができます。この講義では LLMのプログラミング能力を向上させ、ソフト ウェア開発に応用するための研究動向や効果・課題をご紹介します。 アジェンダ: • 大規模言語モデル (LLM) とは? • NTT版大規模言語モデル tsuzumi のご紹介 • プログラミングへの活用 • プログラミングを超える範囲のソフトウェア開発タスクへの応用
  3. 4 © NTT CORPORATION 2023 大規模言語モデル (LLM) とは 大規模な学習データを用いて事前に訓練された、膨大な数のパラメータ (数百万

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

    • ニューラルネットワークを構成する最小単位: 人工ニューロン 𝑏 𝑥1 𝑥𝑛 𝑦 𝜔1 𝜔𝑛 重み バイアス 𝑦 = 𝑓(𝜔1 𝑥1 + … + 𝜔𝑛 𝑥𝑛 + 𝑏) 活性化関数 (人工ニューロンの種類) 𝑓(𝑧) 人工ニューロンの出力値は入力の 重み付き和とバイアスの合計値 𝑧 (重み付き線形和) に活性化関数 𝑓 を適用したもの 入力 (1~n 個 の実数値) 出力 … パラメータ (人工ニューロンへ入力する枝 とノードに与える実数値) …
  5. 6 © NTT CORPORATION 2023 人工ニューロンの例 活性化関数としてシグモイド関数 𝜎を用いるものをシグモイドニューロンと呼ぶ 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
  6. 7 © NTT CORPORATION 2023 演習1: シグモイドニューロンの振る舞い • 前のページの人工ニューロンの例において、気温が30℃で暑く、気分がとても良くない (5段階のうち1)

    の場合にビールを飲む確率はどの程度になりますか。 • 気温が10℃とやや寒いものの、嬉しい出来事があり気分がよい場合 (5段階のうち4) に ついても、同様にビールを飲む確率を算出してください。 • バイアスや重みの数値を少しだけ変え、自分の感覚に合うように人工ニューロンの出力 を調整することができるか、試してみてください。ビールが飲めない場合には「アイス を食べたい確率」など、出力の定義を変更しても構いません。
  7. 8 © NTT CORPORATION 2023 ニューラルネットワークとは 複数の人工ニューロンを組み合わせることで、人間の神経回路を模した数式的なモデルに よってデータを処理するネットワーク構造 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年以降で手法 が整備されてきた。
  8. 9 © NTT CORPORATION 2023 ニューラルネットワークを用いた画像認識の例 手書きされた数字の画像を 3 層のニューラルネットワークで認識する例 MNIST

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

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

    OpenAI のトークナイザのページ (https://platform.openai.com/tokenizer) を 開いて好きな文字列を入力し、トークンの区切り方やトークンに割り当てられた数値を 観察してください。 ✓ 英語の場合、単語の大文字・小文字の違いや、単数形・複数形の違いはどう表現されますか? ✓ 日本語の文章を入力すると、どのようにトークンは区切られますか? • Meta が公開したオープンな大規模言語モデル LLaMA についてもトークナイザの動作 を確認できる Web サイト (https://belladoreai.github.io/llama-tokenizer-js/example-demo/build/) があります。 ✓ さきほど OpenAI のトークナイザに与えた文字列と同じものを与えて、トークンの区切り方を 比較してください。 ✓ OpenAI のトークナイザでエンコードされた文字列を、LLaMA の大規模言語モデルに入力する ことはできるでしょうか?
  11. 12 © NTT CORPORATION 2023 大規模言語モデルのしくみ 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 ここに文字列 (トークンの列) を入力 続きのトークン (の確率分布) が 出力される
  12. 13 © NTT CORPORATION 2023 自己注意機構 (Self-Attention) 私たちが言葉を話したり書いたりするとき、文のどの部分に注意を向けているか?と同様に 注意を向けた単語 (トークン)

    に重みを与え、文章の続きとなるトークンの推論に用いる Yahoo!知恵袋より質問・回答を引用 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1380487138 日本 で 一番 小さい イオン は 日本, イオン (ショッピング モールの話題?) 一番, 小さい, イオン (化学の質問?) … 現在の生成位置 (距離が離れたトークン にも注意が必要)
  13. 14 Copyright 2023 NTT CORPORATION 超大量のテキストデータ (3000億トークン) で事前学習した 96層の超巨大なTransformer デコーダに基づく言語モデル

    • パラメータ数は 175B = 1750億個(ファイルサイズでは 700 GB程度) • 参考:BERT は 24層,3.4 億個のパラメータ,約 3.3 億トークン GPT-3 [Brown(OpenAI)+, 2020/07, NeurIPS’20] <S> GPT-3は次単語予測で 事前学習する (自己教師あり学習) 𝑤1 𝑤2 𝑤3 𝑤4 𝑤5 𝑤1 𝑤2 𝑤3 𝑤4 𝑤5 https://papers.nips.cc/paper/2020/hash/1457c0d6bfcb4967418bfb8ac142f64a-Abstract.html
  14. 16 Copyright 2023 NTT CORPORATION タスク説明と少数の例を与えるのみで、パラメータの更新無しに新しいタスクが解ける GPT-3 の few-shot 学習

    ここまでを一つの系列としてGPT-3に入力し、 回答を続きの文章として出力させる Language Models are Few-Shot Learners https://arxiv.org/abs/2005.14165 パラメータ数が大規模なほど、少数の例に よる学習 (few-shot learning) の効果が高い 例: 英仏翻訳のタスク
  15. 17 Copyright 2023 NTT CORPORATION • 大規模言語モデル(Large Language Model; LLM)を活用した

    ChatGPT [OpenAI, 2022/11] により, 1つのモデルで様々な自然言語処理タスクを「特化した学習無し」に解けることが実証されてきている • GPT-4 [OpenAI, 2023/03] ではChatGPTをさらに上回り、人レベルの言語理解・生成能力を持つ LLMにより汎用人工知能が遠い夢では無くなる (タスクの指示) このプログラムの 誤りを直して >こちらは「Transformer」という深 層学習モデルを提案した論文です。 Transformerは、seq2seq(順方向 から順方向への変換)タスクや自然 言語処理タスクなどに... (情報の検索) 論文“attention is all you need”の要約を教えて (コンテンツの生成) ~~~に関する 学術論文を書いて > こちらが修正したコードになります. 新たな情報検索の体験 AIが人に変わり 任意の言語タスクを遂行 AIの文章を専門家も見破れない LLMによる論文執筆が禁止される
  16. 18 Copyright 2023 NTT CORPORATION • LLaMA のベースモデルが研究者向けに公開 (および一般にも流出) されたことで,オープン化が進む

    • LLaMA をチューニングして ChatGPT ライクなモデルを作る方法論の技術開発が加速中 • モデルに追加したパラメータのみを効率的に学習 (PEFT) することでも高い効果が得られる LLaMA [Touvron+, 2023/02/27] によるオープン化 フルパラメータのチューニング パラメータ効率的なチューニング PEFTの代表例: LoRA [Micrsoft, 2021/06] 学習済の重みを凍結して新たに LLMの各層に挿入した適応用の 低ランク分解行列(オレンジ色) のみを学習する [Chao+, 2023/06/29(v11)]
  17. 19 © NTT CORPORATION 2023 LLaMA 2 [Touvron+, 2023/07/19] オープン&商用可能モデルとしてMicrosoftのカンファレンス

    Inspire に合わせて発表 • Microsoft や Qualcommと協力してWindowsやスマートフォンへの最適化を目指すことも発表 • Microsoftは「クローズド路線のOpenAI」に加えて「オープン路線のMeta」ともパートナーシップの 拡大に成功 画像: https://ia.acs.org.au/article/2023/tech-giants-join-forces-on-ai.html
  18. 20 © NTT CORPORATION 2023 オープンな LLM を用いた文章の生成 オープンな LLM

    のパラメータの重みやその学習データは HuggingFace や GitHub などの Web サイトで数多く公開されており、わずか数行の Python コードで利用可能 import torch from transformers import AutoModelForCausalLM, AutoTokenizer # トークナイザとモデルの読み込み model_name = "meta-llama/Llama-2-7b-hf" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.float16).to("cuda") # プロンプト prompt = "Mt. Fuji is the highest mountain in Japan. Its peek is at" # プロンプトをトークン化し、モデルに入力 inputs = tokenizer(prompt, return_tensors='pt').to(model.device) outputs = model.generate(**inputs, max_new_tokens=32, do_sample=False) # モデルの出力を文字列にデコードして表示 response = tokenizer.decode(outputs[0], skip_special_tokens=True) print(response) d 例: Llama-2-7B を利用した文章の生成 Mt. Fuji is the highest mountain in Japan. Its peek is at 3,776 meters above sea level. It is located in the Fuji-Hakone-Izu National Park. It is a d 実行結果 プロンプトに追加 (生成) された部分 インストラクションチューニングを行う 前のベースモデルは適切なところで出力 を「止めること」を学習していないため、 最大長まで延々と出力することがある ※ このコードの実行には NVIDIA 社の GPU (VRAM 16GB程度) を搭載した計算機、Python, PyTorch, CUDA Toolkit の実行環 境、HuggingFace Hub へのログイン、LLaMA ライセンスへの 同意等の事前準備が必要です。
  19. Copyright 2023 NTT CORPORATION 22 鼓と「tsuzumi」 邦楽器 日本語が特に強い 小さい 小型軽量

    調べ緒により調律が容易 柔軟なチューニング 見た目、音、 演奏時の所作が美しい マルチモーダル
  20. Copyright 2023 NTT CORPORATION 23 日本語性能比較: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
  21. 24 Copyright 2023 NTT CORPORATION Rakudaベンチマーク 日本の地理・政治・歴史・社会の4カテゴリに関するオープン形式のQAによる評価セット GPT-4により LLM の出力の評価を自動的に行う

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

    平成時代から令和時代への移行期に見られた社会的、政治的な変化を挙げ、その意義について説明してください。 アシスタント1の回答は、平成から令和への移行期に見られた社会的、政治的な変化を具体的に5つのポイントで詳細に説明しています。 それぞれのポイントについて、その意義や影響を具体的に述べており、情報の有用性と関連性が高いと言えます。また、日本語の表現も 適切で、理解しやすい文章となっています。 (…) 両者ともに質問の意図を理解し、適切な回答を提供していますが、より具体的で詳細な情報を提供したアシスタント1の回答の方が優 れていると判断します。したがって、私の評価はアシスタント1(※tsuzumi)が高いです。 GPT-4の判定:有用性、関連性、正確性、詳細度、日本語能力 GPT-3.5 の回答 平成と令和の移行期には、いくつかの社会的、政治的な変化が起こ りました。以下にいくつか挙げて説明します。 ① 政治的変化:平成時代に比べ、令和時代は政治の安定が続い ています。また、現在の政権は若い世代の支持を得ています。これは、 政治の価値観が世代間で変化してきていることを示しています。 また、平成時代に比べ、令和時代は海外からの人口流入が増加し ており、外国人材を積極的に受け入れる政策が進んでいます。この流 れは、日本の人口減少問題やグローバル化に対応するために重要な 変化となっています。(…) tsuzumi-7B の回答
  23. Copyright 2023 NTT CORPORATION 26 日本語性能比較: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時点
  24. Copyright 2023 NTT CORPORATION 27 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
  25. 29 © NTT CORPORATION 2023 大量のテキストを用いた教師なし学習でベースモデルを構築し、その後インストラクション (指示・応答のペア) を追加学習させることで、汎用的なタスクへ対応できる性質を獲得する 大規模言語モデルの学習方法 事前学習用

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

    GPT-3 は 300B、LLaMA 2は2000Bトークンで事前学習 • tsuzumi-7b は 1000Bトークン以上のコーパス、専門文書からエンタメ系まで幅広く学習 事前学習コーパスの量・ドメイン [Chao+, 2023/06/29(v11)]
  27. 32 © NTT CORPORATION 2023 英語以外の言語をメインターゲットとする場合、どのような言語バランスが良いのか? • 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言語 主な国産モデルのコーパス ソースコード 日本語 英語
  28. 33 © NTT CORPORATION 2023 ベースモデルの規模・性質やファインチューニングの目的にもよるが、 概ね 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/
  29. 34 © NTT CORPORATION 2023 • タスクに特化して事前学習モデルをファインチューニングしたモデルは殆どのタスクに おいて ChatGPT を上回る

    • しかし、ChatGPT は学習無しで殆どのタスクで SOTA に近いレベルであり、汎用な自然 言語処理AIを誰しもが簡単に使える時代になった ChatGPTはベストな言語AIか?[Bang+,2023/02/08] https://arxiv.org/abs/2302.04023
  30. 35 © NTT CORPORATION 2023 • 分からない場合でも平然と嘘をつく、事実に基づかない応答をしてしまう問題がある • モデル内の知識に基づいて生成するため、質問応答のタスクなどで顕著に起こりやすい •

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

    [Zhuo, 2023/02] https://arxiv.org/abs/2301.12867 クナシル島はロシア連邦に属し、サハリン 州クナシル地区に属しています。クリル列 島の南側、イトゥルップ島と色丹島の間に 位置しています。 国後島は現在ロシアの支配下にあるが、 日本も同島とクリル列島の他の3島の領 有権を主張している。所有権をめぐる 争いは解決していない。 GPT-3.5 (Default) の実際の回答 (4/10時点)
  32. 37 © NTT CORPORATION 2023 LLMにどのように規範を持たせるか あなたは我々の会社に利益が出るように 自分で考えて行動してください わかりました、まず□□をします… 次に△△をします…

    ヒトの指示に従おうとするあまり、 社会全体の「規範」から外れたことをしてはならない 私は〇〇がしたいです。 やり方を教えてください。 〇〇をするためには、次のように… ヒトが「規範」から外れた行動をしようとした際に その指示に従ってはならない
  33. 38 © NTT CORPORATION 2023 • 幅広いカテゴリ・質問タイプでインストラクションチューニングデータを独自に整備 して学習に利用 • 有益性および安全性の両面から、こうしたインストラクションデータの整備を拡大中

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

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

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

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

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

    HumanEval や MBPP のベンチ マークが代表的なものとなっており、多言語に対応したベンチマークも行われる Big Code Models Leaderboard https://huggingface.co/spaces/bigcode/ bigcode-models-leaderboard • 多様な言語モデルや論文が 公開されており、開発競争 が激化 • GPT-3.5 を超えるスコアを 持つ言語モデルも存在
  39. 45 © NTT CORPORATION 2023 Hugging Face, ServiceNow らが主導する BigCode

    プロジェクトが提供する、真にオープンで 責任のある Code-LLM を開発するための一連の成果 オープンな Code-LLM の出現 [Li et al. 2023/5/4] 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) • モデルの無償・商用での利用をしやすいように条件を調整
  40. 46 © NTT CORPORATION 2023 例: GitHub リポジトリから再利用に寛容なOSSライセンスのコードを収集し、重複排除を 行った 1.5TB

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

    Python 等) では 50GB 超、ややマイナーな 言語でも 0.5~1GB 程度のコードを事前学習させている StarCoder [Li et al. 2023] (2023/5/4 公開) 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)
  42. 48 © NTT CORPORATION 2023 複数のプログラミング言語に対応したベンチマーク MultiPL-E において OpenAI CodeX

    の 初期版 (code-cushman-001) に伍する性能を発揮 StarCoder [Li et al. 2023] (2023/5/4 公開) StarCoder: may the source be with you! https://arxiv.org/abs/2305.06161
  43. 49 © NTT CORPORATION 2023 Stanford Alpaca 形式 (instruction, input,

    output 属性の組) で生成された 20K 件のコード向け のデータセットを用いて LLaMA をファインチューニング Code Alpaca [Chaudhary, 2023] Code Alpaca: An Instruction-following LLaMA model for code generation https://huggingface.co/datasets/sahil2801/ CodeAlpaca-20k/viewer/default/train • 著者自身が LLaMa をコード向 けにファインチューニング • Phind や WizardCoder などの 現時点で最高性能 (SOTA) の Code-LLM が Evol-Instruct を 用いる際の元データとしても利 用される
  44. 50 © NTT CORPORATION 2023 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} • Add new constraints and requirements to the original problem, adding approximately 10 additional words. • Replace a commonly used requirement in the programming task with a less common and more specific one. • If the original problem can be solved with only a few logical steps, please add more reasoning steps. • Provide a piece of erroneous code as a reference to increase misdirection. • Propose higher time or space complexity requirements, but please refrain from doing so frequently. ChatGPT への指示のテンプレート 「難しくさせる」 ためのパターン集 元のインストラクションチューニングのデータをここに入れる
  45. 51 © NTT CORPORATION 2023 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
  46. 52 © NTT CORPORATION 2023 演習3: オープンな Code-LLM を使ってみよう •

    Web ブラウザで DeekSeek-Chat 6.7B のデモページ (下記) を開いて、プログラミン グをするようにチャットで依頼してください。例をいくつか示します: https://huggingface.co/spaces/deepseek-ai/deepseek-coder-7b-instruct ✓ Python で感情分析を行うためのコードを書いてください。文字列型の引数 message が肯定的 な内容の場合は "ポジティブ", 否定的な場合は "ネガティブ", どちらでもない場合は "中立" とい う文字列を返してください。 ✓ Python でシグモイド関数を定義してください。また、この関数を -10 から 10 の範囲でグラフ にプロットしてください。 • ソースコードを出力させたあとに、そのコードに対するテストコードを作成したり、実 際にテストを実行するようにチャットで追加の依頼をしてください。 ✓ プログラムはあなたの意図や、Code-LLM の説明のとおりに動きましたか? ✓ Code-LLM とのチャットはどのように役立ちましたか? あなたのこれまでのプログラム開発の 経験と比較して、開発のやりかたや学習方法がどう変わるか、考えてみてください。
  47. 54 © NTT CORPORATION 2023 プログラマによる局所的な LLM の活用は既に一定の実用的な効果があるが、より広範囲・ 高度な工程・開発成果物の応用への期待が高い LLMを用いたソフトウェア開発のユースケース

    ユースケース 入力 出力 局所的な活用法 (プログラマの支援) 広範囲な活用法 (開発工程にまたがる支援) ソースコードの生成 Code Generation 自然言語 仕様書やソースコード上 のコメント文など ソースコード 仕様を実現するための ソースコード 関数・クラス・データ構 造など局所的な範囲での コーディングの効率化、 自動化 仕様書からシステム全体 のソースコードやテスト を生成 (≒ノーコード開発) ソースコードの補完 Code Completion ソースコード 書きかけ・未完成のソー スコードの断片 ソースコード ソースコードの続きの補 完、前後関係の穴埋め コーディングの効率化、 ライブラリやコーディン グ規約の習熟支援 仕様変更に対するコード 全体への変更の波及 (保守の自動化) ソースコードの自然 言語による説明 Code Explanation ソースコード 処理内容の理解や文書化 を行いたいソースコード 自然言語 ソースコードの処理内容 の説明 (自然言語) 維持・保守におけるソー スコード理解の支援、お よび文書化 ソースコード全体のリ バースエンジニアリング (仕様の復元) ソースコードの別言 語への翻訳 Code Translation / Migration ソースコード 古いプログラミング言語 で記述された処理 ソースコード 新しいプログラミング言 語で記述された処理 部分的な範囲のコードの 別言語への変換、新たな プログラミング言語の学 習支援 ソースコード全体の別言 語への書き換え (モダナ イズ、マイグレーショ ン) 現状の Code-LLM の活用範囲
  48. 55 Copyright 2023 NTT CORPORATION 最終ゴールを与えられると GPT-4 が自律的に必要なサブタスクに分解し、ネットやその他 ツールを使ってプランを修正しながらゴールを達成する Auto-GPT

    [Toran Bruce Richards and contributors, 2023/3/30〜] ユーザの入力した”Goals”の例 1. Do market research for different headphones on the market today 2. Get the top 5 headphones and list their pros and cons 3. Include the price for each one and save the analysis 4. Once you are done, terminate 実行結果 1. Google検索を”top 5 headphones 2023”で実施 2. 検索結果1位のページにアクセスして欲しい情報が無かったと認識 3. Google検索を”top 5 headphones 2023 with pros and cons”で再度実施 4. 検索結果1位のページにアクセスして欲しい情報を発見 5. 正規表現でページから情報抽出しようとするが失敗 6. BeautifulSoupに切り替えて抽出 7. 抽出結果をファイルに保存
  49. 56 Copyright 2023 NTT CORPORATION 開発ロールごとの LLM エージェントの 協調により自律的な開発を行う MetaGPT

    [Hong et al., 2023] MetaGPT: Meta Programming for Multi-Agent Collaborative Framework https://arxiv.org/pdf/2308.00352.pdf • 人間が従来行ってきた開発者の役割やタスク を LLM のプロンプトに与える
  50. 58 © NTT CORPORATION 2023 ソフトウェア開発の過程では多様な検討タスクがあり、図表を含む文書が作成される • Excel ファイル (いわゆる

    Excel 方眼紙、ネ申Excel) • PowerPoint 形式の提案書、報告資料 課題: 開発文書の読み込みと LLM への入力 画面設計における Excel 設計書の例。出典: 機能要件の合意形成ガイド (画面編) 全体 https://www.ipa.go.jp/archive/files/000004521.pdf
  51. 59 © NTT CORPORATION 2023 ソフトウェア開発でLLMを活用するための課題 OSSリポジトリ (GitHub 等) ソースコードと

    自然言語の両方に 対応した LLM (GPT-3.5, GPT-4等) 学習データとなる ソースコード 仕様書・ 要求文書 前処理 (プロンプト 組み立て) ソース コード プロンプト LLMの出力 (ソースコード や自然言語) プログラマ・ テスター お客様や 営業・コンサル等 後処理 (レスポンス 抽出・加工) ソフトウェア成果物 (ソースコード・仕様書・テストケース等) プロンプトの改善 (難易度: 低) 望ましい 結果か? 言語モデルの改善 (難易度: 中) Yes No 独自の言語モデルの トレーニング (難易度: 高) LLM が生成したデータを開発資産 (ファイル・フォルダ) へ反映 情報漏洩リスク (機密情報・ 個人情報) 生成データの誤り (ハルシネーション、 湧き出し) 第三者の権利侵害 (OSSライセンス違反、 著作権侵害) 特化タスクへの対応力 (日本語対応やCOBOL コードの生成など) タスクに応じた自然 なインタラクション とフィードバック データの整備・収集 とモデルの評価 トークン数の制限 (ソースコード・仕様書 の文字数の多さ) LLM 調律師 (データサイエン ティスト) LLMの性質や 微調整を前提と した新たな開発 ワークフロー
  52. 61 © NTT CORPORATION 2023 • 人と同等の入出力インタフェースを持ち、任意のマルチモーダル・身体行動タスク を実行できる AI •

    LLM を AI の核として設置し、様々な非言語情報のグラウンディングを狙う 人の社会に自然に溶け込むAI 非言語情報を LLMにグラウンディング(接地) 言語から学習 非言語情報を LLMにグラウンディング(接地)
  53. 62 © NTT CORPORATION 2023 • NTTでは言語モデルの知覚の拡張として、人と同じように視覚と言語を結び付けて 理解する技術に取り組み中 視覚と言語理解の融合 視覚的な文書の読解

    [Tanaka & Nishida+ AAAI’21, Tanaka+ ‘23]: Q. 製造番号は? A. 583D6A Q.何払いの伝票? A. 元払 Vision-and-Languageモデルの転移学習 [Hasegawa & Nishida+ EMNLP’23] 猫がノートパソコンの キーボードに手を置いている 同一空間へ 高精度に埋込 汎用画像 エンコーダ テキスト エンコーダ
  54. 63 © NTT CORPORATION 2023 tsuzumi+視覚的読解モデル により複雑な図表を含む文書の読解を実現 視覚と言語理解の融合 ▲45% 視覚的読解

    アダプタ 言語 視覚 汎用画像エンコーダ 入力画像 2040年における IOWNによる電力消費量削減の割合は?
  55. 64 © NTT CORPORATION 2023 同じ端末を一緒に操作しているような感覚でヒトと協働するコラボレータの実現を目指す 計算機の中のコラボレータ 行動 知覚 世界

    PC操作 アダプタ 明後日のWeb会議のIDを 田中さんに伝えてくれる? OKです!(Zoomで確認して, SlackのDMで送ろう)
  56. 67 © NTT CORPORATION 2023 講義のまとめ • 大規模言語モデルはテキストの生成タスクを得意とする、大規模なパラメータを持った 深層ニューラルネットワークの一種です。モデルの構造やパラメータが事前に与えられ ているため、利用者は日常的に用いる言葉でモデルに指示するだけで、様々なタスクを

    実行できることを学びました。 • 大規模言語モデルは自然言語の文章だけではなく、プログラミング言語によるソース コードを生成することが可能です。ソフトウェア開発の過程において、ユーザの要求、 設計、コーディング、テスト、運用を含む様々な工程で人間が行うコミュニケーション や文章の作成を支援することが期待されています。 • AI が汎用化して人間と会話したり、同じものを見たり聞いたりすることができるように なったとしても、みなさん自身の替わりにはなり得ません。AI を上手に活用しつつも、 自分自身の言葉、考えたこと、感じたことを大切にして、自分や周囲の人たちの幸福を 追求してもらえたら、と願います。 (講義レポートは自分の言葉で書きましょう!)
  57. 68 © NTT CORPORATION 2023 参考資料 • M. Nielsen, “Neural

    Networks and Deep Learning”, Online Book, Available at: 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/2023/wp-content/uploads/2023/08/SES2023_SES2023_チュートリアル.pdf