目次
第1章 はじめに
- 1.1 transformersを使って自然言語処理を解いてみよう
- 1.1.1 文書分類
- 1.1.2 自然言語推論
- 1.1.3 意味的類似度計算
- 1.1.4 固有表現認識
- 1.1.5 要約生成
- 1.2 transformersの基本的な使い方
- 1.3 単語埋め込みとニューラルネットワークの基礎
- 1.4 大規模言語モデルとは
第2章 Transformer
- 2.1 概要
- 2.2 エンコーダ
- 2.2.1 入力トークン埋め込み
- 2.2.2 位置符号
- 2.2.3 自己注意機構
- 2.2.4 マルチヘッド注意機構
- 2.2.5 フィードフォワード層
- 2.2.6 残差結合
- 2.2.7 層正規化
- 2.2.8 ドロップアウト
- 2.3 エンコーダ・デコーダ
- 2.3.1 交差注意機構
- 2.3.2 トークン出力分布の計算
- 2.3.3 注意機構のマスク処理
- 2.4 デコーダ
第3章 大規模言語モデルの基礎
- 3.1 単語の予測から学習できること
- 3.2 GPT(デコーダ)
- 3.2.1 入力表現
- 3.2.2 事前学習
- 3.2.3 ファインチューニング
- 3.2.4 transformersで使う
- 3.3 BERT・RoBERTa(エンコーダ)
- 3.3.1 入力表現
- 3.3.2 事前学習
- 3.3.3 ファインチューニング
- 3.3.4 transformers で使う
- 3.4 T5(エンコーダ・デコーダ)
- 3.4.1 入力表現
- 3.4.2 事前学習
- 3.4.3 ファインチューニング
- 3.4.4 transformers で使う
- 3.5 多言語モデル
- 3.6 トークナイゼーション
- 3.6.1 バイト対符号化
第4章 大規模言語モデルの進展
- 4.1 モデルの大規模化とその効果
- 4.2 プロンプトによる言語モデルの制御
- 4.2.1 文脈内学習
- 4.2.2 chain-of-thought推論
- 4.3 アライメントの必要性
- 4.3.1 役立つこと
- 4.3.2 正直であること
- 4.3.3 無害であること
- 4.3.4 主観的な意見の扱い
- 4.4 指示チューニング
- 4.4.1 データセットの再利用
- 4.4.2 人手でデータセットを作成
- 4.4.3 指示チューニングの問題
- 4.5 人間のフィードバックからの強化学習
- 4.5.1 報酬モデリング
- 4.5.2 強化学習
- 4.5.3 REINFORCE
- 4.5.4 指示チューニングとRLHF
- 4.6 ChatGPT
第5章 大規模言語モデルのファインチューニング
- 5.1 日本語ベンチマーク:JGLUE
- 5.1.1 訓練・検証・テストセット
- 5.1.2 大規模言語モデルのためのベンチマーク
- 5.1.3 JGLUEに含まれるタスクとデータセット
- 5.2 感情分析モデルの実装
- 5.2.1 環境の準備
- 5.2.2 データセットの準備
- 5.2.3 トークナイザ
- 5.2.4 データセット統計の可視化
- 5.2.5 データセットの前処理
- 5.2.6 ミニバッチ構築
- 5.2.7 モデルの準備
- 5.2.8 訓練の実行
- 5.2.9 訓練後のモデルの評価
- 5.2.10 モデルの保存
- 5.3 感情分析モデルのエラー分析
- 5.3.1 モデルの予測結果の取得
- 5.3.2 全体的な傾向の分析
- 5.3.3 モデルのショートカットに注意
- 5.4 自然言語推論・意味的類似度計算・多肢選択式質問応答モデルの実装
- 5.4.1 自然言語推論
- 5.4.2 意味的類似度計算
- 5.4.3 多肢選択式質問応答
- 5.5 メモリ効率の良いファインチューニング
- 5.5.1 自動混合精度演算
- 5.5.2 勾配累積
- 5.5.3 勾配チェックポインティング
- 5.5.4 LoRAチューニング
- 5.6 日本語大規模言語モデルの比較
- 5.6.1 LUKE
- 5.6.2 DeBERTa V2
- 5.6.3 性能比較
第6章 固有表現認識
- 6.1 固有表現認識とは
- 6.2 データセット・前処理・評価指標
- 6.2.1 データセット
- 6.2.2 前処理
- 6.2.3 評価指標
- 6.3 固有表現認識モデルの実装
- 6.3.1 BERTのファインチューニング
- 6.3.2 固有表現の予測・抽出
- 6.3.3 検証セットを使ったモデルの選択
- 6.3.4 性能評価
- 6.3.5 エラー分析
- 6.3.6 ラベル間の遷移可能性を考慮した予測
- 6.3.7 CRFによるラベル間の遷移可能性の学習
- 6.4 アノテーションツールを用いたデータセット構築
- 6.4.1 Label Studioを用いたアノテーション
- 6.4.2 Hugging Face Hubへのデータセットのアップロード
- 6.4.3 構築したデータセットでの性能評価
第7章 要約生成
- 7.1 要約生成とは
- 7.2 データセット
- 7.3 評価指標
- 7.3.1 ROUGE
- 7.3.2 BLEU
- 7.3.3 BERTScore
- 7.4 見出し生成モデルの実装
- 7.4.1 T5のファインチューニング
- 7.4.2 見出しの生成とモデルの評価
- 7.5 多様な生成方法による見出し生成
- 7.5.1 テキスト生成における探索アルゴリズム
- 7.5.2 サンプリングを用いたテキスト生成
- 7.5.3 長さを調整したテキスト生成
第8章 文埋め込み
- 8.1 文埋め込みとは.
- 8.1.1 文埋め込みの目的
- 8.1.2 文埋め込みの性能評価
- 8.1.3 文埋め込みモデルの必要性
- 8.1.4 文埋め込みモデルを使わずに文ベクトルを得る
- 8.2 文埋め込みモデルSimCSE
- 8.2.1 対照学習
- 8.2.2 教師なしSimCSE
- 8.2.3 教師ありSimCSE
- 8.3 文埋め込みモデルの実装
- 8.3.1 教師なしSimCSEの実装
- 8.3.2 教師ありSimCSEの実装
- 8.4 最近傍探索ライブラリFaissを使った検索
- 8.4.1 最近傍探索ライブラリFaiss
- 8.4.2 Faissを利用した最近傍探索の実装
- 8.4.3 類似文検索のウェブアプリケーションの実装
第9章 質問応答
- 9.1 質問応答システムのしくみ
- 9.1.1 質問応答とは
- 9.1.2 オープンブック・クローズドブック
- 9.2 データセットと評価指標
- 9.2.1 AI王データセット
- 9.2.2 評価指標
- 9.3 ChatGPTにクイズを答えさせる
- 9.3.1 OpenAI API
- 9.3.2 効率的なリクエストの送信
- 9.3.3 クイズ用のプロンプトの作成
- 9.3.4 API使用料金の見積もり
- 9.3.5 クイズデータセットによる評価
- 9.3.6 文脈内学習
- 9.3.7 言語モデルの幻覚に注意
- 9.4 文書検索モデルの実装
- 9.4.1 文書検索を組み込んだ質問応答システム
- 9.4.2 質問応答のための文書検索モデル
- 9.4.3 BPRの実装
- 9.4.4 BPRによるパッセージの埋め込みの計算
- 9.5 文書検索モデルとChatGPTを組み合わせる
- 9.5.1 検索モデルの準備
- 9.5.2 検索結果のプロンプトへの組み込み