大規模言語モデル入門

ご恵贈頂いた「大規模言語モデル入門」(llm-book)についての内容・感想まとめを書いていきます. (🌰 の後ろに感想を書いています)

🌰 全体を通しての感想

  • GPT3/4 ,ChatGPT の基盤になっている技術を網羅的に解説している本になっている.
  • 初学者にも勿論,NLP を一周勉強した人にとってもオススメできる内容になっていると感じた.
    • 基本的なアーキテクチャの話からめちゃくちゃ最新の話題まで触れらている.説明も硬すぎず,かと言って詳細を省いていないのでかなりわかりやすい.
    • 参考文献がかなり豊富(かつチョイスが最高)なので,本文以外にも NLP の最近の重要論文リストがまとまっている本としても使えそう.
    • (恐らく研究室の最初 or 二冊目の輪読本としてかなり適切だなと感じました)
      • 実際に,弊研究室でも llm-book を読んでいる人をかなり見かけます
  • 実装がめちゃくちゃ多い.手を動かしながら学びたい人にとってはこれ以上の本はないと思います.
    • トピックの散りばめ具合もちょうど良くて網羅的に勉強できそう.
      • 簡単な分類問題,少しむずかしい分類問題(スパン検出問題),生成問題についてバランスよく掲載されている.
    • 各トピックでの重要概念 + 実装がコンパクトにまとまっていてかなり良かった.
      • PEFT 周りの手法や,各種デコーディング方法など,明日にでもすぐ役に立ちそうな話題が多かった.
    • (著者達が第一線でバリバリに手を動かしている方々なので,その分内容も超実践的で個人的には大満足でした)

内容まとめ & 細かい感想

  • 第1章:はじめに
    • Transformers の基本的な使い方や word2vec 時代の単語埋め込み,Transformer 時代のタスクの解き方についての overview のまとめ.
  • 第2章:Transformer
    • Transformer の構成要素となっているパーツ(自己注意機構,残差結合,位置埋め込み…)の紹介.
    • Encoder,Decoder,Encoder-Decoder のアーキテクチャに分けてパーツを解説している.
      • 🌰: アーキテクチャの全体絵に各処理がフローチャート形式で書かれているのが分かりやすかった(cf. Vaswani et al. 2017 をコピペしただけの図).具体的な処理の流れがかなりイメージしやすい.
  • 第3章:大規模言語モデルの基礎
    • 第2章で紹介されたアーキテクチャに基づく具体的なモデル(BERT,GPT-2,T5 など)を見ていく章になっている.
      • 🌰: アーキテクチャを超えたモデル毎の objective や細かい工夫がコンパクトにまとめられていて,パッと設定を確認したい際の良い参照先になりそうだった.
    • 最後に各トークナイゼーション方法についてまとめられている.
      • 🌰: 他の書籍と比較して,各トークナイゼーション手法の説明がダントツで分かりやすかった.
  • 第4章:大規模言語モデルの進展
    • GPT3/ChatGPT/GPT4 などの大規模言語モデルでの重要なパラダイム(In-Context Learning, Chain-of-Thought prompting,Alignment,Instruction Tuning)などがまとまっている.
      • 🌰: 「古い(?)話題は良いから,とにかく大規模言語モデルの最新の話が知りたいんじゃ!」な方はこの章にパッと目を通すだけでかなりキャッチアップできそう
      • 🌰: 注釈にめちゃくちゃ最新のオモシロ話題が散りばめられていてかなり良かった.例えば,In-Context Learning as Gradient Descent 系の話題も触れらており,一度読んだ人でも注釈や参考文献を追うことで二度も三度も楽しめそうな内容になっていた.
      • (🌰: いわゆる “Emergent Ability” を表すグラフにも議論の余地があることが注釈で触れられており,めちゃくちゃ誠実に書かれていて良… となりました.)
(以降の章では実装の比重が多め)
  • 第5章:大規模言語モデルのファインチューニング
    • JGLUE を題材にして Transformers を使って実際にモデルのファインチューニングを行う方法が紹介されている.コード付き.
    • Gradient Accumulation や LoRA などの PEFT 手法についても説明されている
      • 🌰: GPU メモリが足りない状況は研究をやっていてもあるあるななので,実践にすぐ活かせそうな Practical な内容… アリガタヤ 🙏
  • 第6章:固有表現抽出
    • 固有表現抽出を題材にしてモデルを訓練していく話題
    • 🌰: スパンを検出するような問題は実際に実装をしてみないとわからないことが多い(意外とめんどくさかったりする).実際に動くコードベースで練習できるのは超ありがたい.
  • 第7章:要約生成
    • 要約を題材して,生成問題を解く方法を紹介.
    • BLEU,ROUGE などの各指標の紹介や,デコーディング手法(greedy, beam search, top k/p sampling, …)などがまとめられている.
      • 🌰: このあたりも普段から言語モデルで生成を行っていないと知らないであろうトピックがまとめられていて良かった.説明も分かりやすかった.
      • 🌰: デコーディング手法周りの話はモデルの訓練をしない人にとっても有益な話題であるなと感じた.例えば,OpenAI の API 経由で生成を行うときにもデコーディングに関するオプションがあるので,このあたりの話題だけでもパッと目を通すと良さそうだなと感じた.
  • 第8章:文埋め込み
    • SimCSE を題材として文埋め込みモデルを訓練する方法を紹介.
    • 訓練した文埋め込みモデルと FAISS を組み合わせて,最近傍検索をする実装も説明.
    • 🌰: 実装が圧倒的に分かりやすかった…! 文埋め込みに関しての概要を説明している記事などは沢山ありますが,ここまで実装に踏み込んだ解説を日本語でしているものはないのではないでしょうか.筆者は普段から文埋め込みモデルを触っていますが,それでもとても勉強になりました.
  • 第9章:質問応答
    • AI王を題材にした,BPR + ChatGPT のシステムでオープンドメインQA を解く手法を説明.
    • 🌰: 前章で SimCSE に触れていることで,QA で使われている DPR などの Retriever の理解がグッとしやすくなるように書かれている.
    • 🌰: AI王 では毎年コンペが開催されているので,llm-book で予習をしてから実際にコンペに突撃して実践で学ぶ,という使い方もできるなと思いました.
    •