機械学習エンジニアのためのTransformers ―最先端の自然言語処理ライブラリによるモデル開発

Book description

「Hugging Face Transformers」を使った自然言語処理の解説書。2017年の登場以来、Transformerと呼ばれるアーキテクチャを使った大規模なモデルが急速に普及しています。本書では、Hugging Faceの開発者らが、「Hugging Face Transformers」を使って、これらの大規模モデルを学習しスケールする方法をわかりやすく紹介します。テキスト分類、固有表現認識、テキスト生成、要約、質問応答といったタスクだけでなく、蒸留、量子化、枝刈り、ONNX Runtimeといったモデルの高速化技術、ラベル付きデータが少ないときに使えるゼロショット学習や少数事例学習、その他、多言語転移やドメイン適応といった類書では扱っていない技術についても解説しています。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  賞賛の声
  5.  序文
  6.  訳者まえがき
  7.  まえがき
  8.  1章 入門 Transformers
  9.   1.1 エンコーダ・デコーダのフレームワーク
  10.   1.2 アテンション機構
  11.   1.3 NLPにおける転移学習
  12.   1.4 入門 Hugging Face Transformers
  13.   1.5 Transformerの応用を巡る旅
  14.    1.5.1 テキスト分類
  15.    1.5.2 固有表現認識
  16.    1.5.3 質問応答
  17.    1.5.4 要約
  18.    1.5.5 翻訳
  19.    1.5.6 テキスト生成
  20.   1.6 Hugging Faceのエコシステム
  21.    1.6.1 Hugging Face Hub
  22.    1.6.2 Hugging Face Tokenizers
  23.    1.6.3 Hugging Face Datasets
  24.    1.6.4 Hugging Face Accelerate
  25.   1.7 Transformerの主な課題
  26.   1.8 まとめ
  27.  2章 テキスト分類
  28.   2.1 データセット
  29.    2.1.1 初めてのHugging Face Datasets
  30.      自分のデータセットがHubにない場合は?
  31.    2.1.2 データセットからDataFrameへ
  32.    2.1.3 クラス分布の確認
  33.    2.1.4 ツイートの長さはどれくらい?
  34.   2.2 テキストからトークンへ
  35.    2.2.1 文字トークン化
  36.    2.2.2 単語トークン化
  37.    2.2.3 サブワードトークン化
  38.    2.2.4 データセット全体のトークン化
  39.   2.3 テキスト分類器の学習
  40.    2.3.1 特徴抽出器としてのTransformer
  41.     2.3.1.1 事前学習済みモデルの使用
  42.      フレームワーク間の相互運用性
  43.     2.3.1.2 最後の隠れ状態の抽出
  44.     2.3.1.3 特徴行列の作成
  45.     2.3.1.4 学習データセットの可視化
  46.     2.3.1.5 単純な分類器の学習
  47.    2.3.2 Transformerのファインチューニング
  48.     2.3.2.1 事前学習済みモデルのロード
  49.     2.3.2.2 性能指標の定義
  50.     2.3.2.3 モデルの学習
  51.      Kerasを使ったファインチューニング
  52.     2.3.2.4 エラー分析
  53.     2.3.2.5 モデルの保存と共有
  54.   2.4 まとめ
  55.  3章 Transformerの詳細
  56.   3.1 Transformerのアーキテクチャ
  57.   3.2 エンコーダ
  58.    3.2.1 セルフアテンション
  59.     3.2.1.1 スケール化ドット積アテンション
  60.      クエリ、キー、バリューを理解する
  61.     3.2.1.2 マルチヘッドアテンション
  62.    3.2.2 順伝播層
  63.    3.2.3 レイヤー正規化の追加
  64.    3.2.4 位置埋め込み
  65.    3.2.5 分類ヘッドの追加
  66.   3.3 デコーダ
  67.      エンコーダ・デコーダアテンションの謎を解く
  68.   3.4 Transformer系モデルの紹介
  69.    3.4.1 Transformerの系統樹
  70.    3.4.2 エンコーダ系のモデル
  71.    3.4.3 デコーダ系のモデル
  72.    3.4.4 エンコーダ・デコーダ系のモデル
  73.   3.5 まとめ
  74.  4章 多言語の固有表現認識
  75.   4.1 データセット
  76.   4.2 多言語Transformer
  77.   4.3 トークン化の詳細
  78.    4.3.1 トークナイザーのパイプライン
  79.    4.3.2 SentencePieceトークナイザー
  80.   4.4 固有表現認識用のTransformer
  81.   4.5 Transformerモデルクラスの詳細
  82.    4.5.1 ボディとヘッド
  83.    4.5.2 トークン分類のためのカスタムモデルの作成
  84.    4.5.3 カスタムモデルのロード
  85.   4.6 固有表現認識のためのテキストトークン化
  86.   4.7 性能指標
  87.   4.8 XLM-RoBERTaのファインチューニング
  88.   4.9 エラー分析
  89.   4.10 言語間転移
  90.    4.10.1 ゼロショット転移が有効なのはどんなときか?
  91.    4.10.2 複数言語の同時並行的なファインチューニング
  92.   4.11 モデルウィジェットとのインタラクション
  93.   4.12 まとめ
  94.  5章 テキスト生成
  95.   5.1 一貫した内容のテキストを生成するための課題
  96.   5.2 貪欲法によるデコード
  97.   5.3 ビームサーチによるデコード
  98.   5.4 サンプリング手法
  99.   5.5 Top-kサンプリングとTop-pサンプリング
  100.   5.6 どのデコード手法が最適か?
  101.   5.7 まとめ
  102.  6章 要約
  103.   6.1 CNN/DailyMailデータセット
  104.   6.2 要約のパイプライン
  105.    6.2.1 要約のベースライン
  106.    6.2.2 GPT-2
  107.    6.2.3 T5
  108.    6.2.4 BART
  109.    6.2.5 PEGASUS
  110.   6.3 要約の比較
  111.   6.4 生成されたテキストの品質を測定する
  112.    6.4.1 BLEU
  113.    6.4.2 ROUGE
  114.   6.5 CNN/DailyMailデータセットでPEGASUSを評価
  115.   6.6 要約モデルの学習
  116.    6.6.1 SAMSumでPEGASUSを評価
  117.    6.6.2 PEGASUSのファインチューニング
  118.    6.6.3 対話の要約を生成
  119.   6.7 まとめ
  120.  7章 質問応答
  121.   7.1 レビューベースの質問応答システムの構築
  122.    7.1.1 データセット
  123.      スタンフォード質問応答データセット(SQuAD)
  124.    7.1.2 テキストから回答を抽出する
  125.     7.1.2.1 スパン分類
  126.     7.1.2.2 質問応答用のトークン化
  127.     7.1.2.3 長いパッセージへの対応
  128.    7.1.3 Haystackを用いた質問応答パイプラインの構築
  129.     7.1.3.1 ドキュメントストアの初期化
  130.     7.1.3.2 Retrieverの初期化
  131.     7.1.3.3 Readerの初期化
  132.     7.1.3.4 コンポーネントを組み合わせる
  133.   7.2 質問応答パイプラインの改善
  134.    7.2.1 Retrieverの評価
  135.     7.2.1.1 Dense Passage Retrieval
  136.    7.2.2 Readerの評価
  137.    7.2.3 ドメイン適応
  138.    7.2.4 質問応答パイプライン全体の評価
  139.   7.3 抽出型質問応答の先
  140.   7.4 まとめ
  141.  8章 Transformersの高速化
  142.   8.1 意図検出を事例として
  143.   8.2 性能ベンチマークの作成
  144.   8.3 知識蒸留でモデルを小さくする
  145.    8.3.1 ファインチューニングのための知識蒸留
  146.    8.3.2 事前学習のための知識蒸留
  147.    8.3.3 知識蒸留用のトレーナーの作成
  148.    8.3.4 良い生徒モデルの選択
  149.    8.3.5 Optunaによる良いハイパーパラメータの探索
  150.    8.3.6 蒸留されたモデルのベンチマーク
  151.   8.4 量子化によるモデルの高速化
  152.      浮動小数点数と固定小数点数についての入門
  153.   8.5 量子化モデルのベンチマーク
  154.   8.6 ONNXとONNX Runtimeを使った推論の最適化
  155.   8.7 重みの枝刈りでモデルをよりスパースにする
  156.    8.7.1 ディープニューラルネットワークにおけるスパース性
  157.    8.7.2 重み枝刈りの手法
  158.     8.7.2.1 Magnitude Pruning
  159.     8.7.2.2 Movement Pruning
  160.   8.8 まとめ
  161.  9章 ラベルのないまたは少ない状況への対応方法
  162.   9.1 GitHub Issueタガーの構築
  163.    9.1.1 データの取得
  164.    9.1.2 データの準備
  165.    9.1.3 学習データセットの作成
  166.    9.1.4 学習スライスの作成
  167.   9.2 ナイーブベイズによるベースラインの実装
  168.   9.3 ラベルのないデータへの対処方法
  169.   9.4 ラベルの少ないデータへの対処方法
  170.    9.4.1 データ拡張
  171.    9.4.2 埋め込みをルックアップテーブルとして使用する場合
  172.      FAISSによる効率的な類似度検索
  173.    9.4.3 通常のTransformerのファインチューニング
  174.    9.4.4 プロンプトを使ったインコンテキスト学習と少数事例学習
  175.   9.5 ラベルなしデータの活用
  176.    9.5.1 言語モデルのファインチューニング
  177.    9.5.2 分類器のファインチューニング
  178.    9.5.3 高度な手法
  179.     9.5.3.1 教師なしデータ拡張
  180.     9.5.3.2 不確かさを考慮した自己学習
  181.   9.6 まとめ
  182.  10章 Transformerをゼロから学習する
  183.   10.1 大規模データセットとその入手先
  184.    10.1.1 大規模コーパスを構築する際の課題
  185.    10.1.2 コードデータセットの自作
  186.     10.1.2.1 Google BigQueryを使ったデータセットの作成
  187.      ノイズを除去するかしないか?
  188.    10.1.3 大規模データセットの扱い方
  189.     10.1.3.1 メモリマッピング
  190.     10.1.3.2 ストリーミング
  191.    10.1.4 Hugging Face Hubへのデータセットの追加
  192.   10.2 トークナイザーの構築
  193.    10.2.1 トークナイザーモデル
  194.    10.2.2 トークナイザーの性能測定
  195.    10.2.3 Python用のトークナイザー
  196.    10.2.4 トークナイザーの学習
  197.    10.2.5 Hubにカスタムトークナイザーを保存する
  198.   10.3 ゼロから始めるモデルの学習
  199.    10.3.1 事前学習の目的の話
  200.     10.3.1.1 因果的言語モデル
  201.     10.3.1.2 マスク言語モデル
  202.     10.3.1.3 系列変換モデルの学習
  203.    10.3.2 モデルの初期化
  204.    10.3.3 データローダーの実装
  205.    10.3.4 学習ループの定義
  206.    10.3.5 学習の実行
  207.   10.4 結果と分析
  208.   10.5 まとめ
  209.  11章 Transformerの未来
  210.   11.1 Transformerのスケーリング
  211.    11.1.1 スケーリング則
  212.    11.1.2 スケーリングへの挑戦
  213.    11.1.3 アテンションプリーズ!
  214.    11.1.4 スパースアテンション
  215.    11.1.5 アテンションの線形化
  216.   11.2 テキスト以外への適用
  217.    11.2.1 画像
  218.     11.2.1.1 iGPT
  219.     11.2.1.2 ViT
  220.    11.2.2 テーブル
  221.   11.3 マルチモーダルTransformer
  222.    11.3.1 音声認識
  223.    11.3.2 画像とテキスト
  224.     11.3.2.1 VQA
  225.     11.3.2.2 LayoutLM
  226.     11.3.2.3 DALL-E
  227.     11.3.2.4 CLIP
  228.   11.4 この先の学び方
  229.  著者紹介
  230.  奥付

Product information

  • Title: 機械学習エンジニアのためのTransformers ―最先端の自然言語処理ライブラリによるモデル開発
  • Author(s): Lewis Tunstall, Leandro von Werra, Thomas Wolf, 中山 光樹
  • Release date: August 2022
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119953

You might also like

book

HBR Guide to Critical Thinking

by Harvard Business Review

Tackle complex situations with critical thinking. You're facing a problem at work. There are many ways …

book

機械学習による実用アプリケーション構築 ―事例を通じて学ぶ、設計から本番稼働までのプロセス

by Emmanuel Ameisen, 菊池 彰

機械学習は翻訳、推薦システム、異常および不正検出など、さまざまなアプリケーションで利用されています。しかし機械学習はモデルの学習や評価など、これまでのアプリケーションにはない処理が必要となるだけでなく、正常に動作しているかを単純なテストだけでは検証できないなど、特別な配慮が必要となります。本書は機械学習を利用するアプリケーションを設計、構築、デプロイするために注意すべき点をまとめました。繰り返しによりデータやモデルを漸進的に改善する方法、モデル性能の監視やモデルのデバッグを行う方法など、アプリケーションを構築、運用する上で、その品質を左右する一連のプロセスを詳しく解説します。

book

UXデザインの法則 ―最高のプロダクトとサービスを支える心理学

by Jon Yablonski, 相島 雅樹, 磯谷 拓也, 反中 望, 松村 草也

本書は、著者Jon YablonskiがUXデザインと交差する心理学の法則をまとめたウェブサイト「Laws of UX」を元に構成されています。「意思決定にかかる時間は選択肢の数と複雑さで決まる」、「タッチターゲットに至るまでの時間はターゲットの大きさと近さで決まる」などの10の法則を、各章において、ポイント、概要、起源、事例、結論にまとめ紹介します。ノンデザイナーにもデザインセンスが求められる時代に欠かせないハンドブックです。

book

統計クイックリファレンス 第2版

by Sarah Boslaugh, 黒川 利明, 木下 哲也, 中山 智文, 本藤 孝, 樋口 匠

本書は統計の基本概念から応用的手法まで、幅広い情報を網羅したリファレンスです。情報の時代の現代、膨大なデータを収集・分析・解釈・説明するための知識とテクニックが求められています。本書は、「統計的に考える」ことを念頭に、データをしっかり理解し、データの誤用を避け、数字に惑わされないための考え方と知識、テクニックを身に付けられるよう執筆されています。複雑な専門用語に関してもよく整理されており、わかりやすく解説。後半では、ビジネス、医療、教育などのさまざまな専門に特化した部分にも触れて概略がわかるよう工夫されています。新しい情報も数多く盛り込み、時代に即した内容となっています。