機械学習エンジニアのための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

マイクロサービスアーキテクチャ 第2版

by Sam Newman, 佐藤 直生, 木下 哲也

2014年にThoughtworksのマーチン・ファウラーとジェームス・ルイスによって提唱された「マイクロサービス」は、いまではすっかり市民権を得て、さまざまな手法やツールが開発されています。著者は、マイクロサービスに「賛成」でも「反対」でもないという中立的な立場から、マイクロサービスの仕組み、特徴、長所、短所、課題を丁寧に説明しています。Thoughtworks在籍中から数多くのマイクロサービスプロジェクトに携わっていた著者が共有する、自身の実体験から得た多くの知見は、システム設計、開発、デプロイ、テストといった技術的側面のみならず、人材をどのように活かし、生産性を上げるかといった組織面にも多くの示唆を与えてくれるものです。組織に適したアーキテクチャを選択し、信頼性が高く、堅牢性、安全性、柔軟性に優れたシステムを設計する上で指針となる一冊です。

book

SREの探求 ―様々な企業におけるサイトリライアビリティエンジニアリングの導入と実践

by David N. Blank-Edelman, 山口 能迪, 渡邉 了介

組織の大小を問わず、システムやアプリケーションの信頼性がビジネスにとって重要なこと、また市場が求めるスピードでイテレーション(反復)しながら、信頼性を維持するのは難しいことが認識されています。サイトリライアビリティエンジニアリング(SRE)は、この課題に対する取り組みです。 本書は、大規模なプロダクションシステムの運用において、様々な企業や組織がSREをどのように実践しているかについて紹介します。Microsoft、Dropbox、Google、SoundCloud、Spotify、Amazon、Facebook、LinkedIn、Netflix、Lyftなど、規模や業種、提供するプロダクトやサービスが異なる様々な企業でのSREの導入と発展、そこから得た課題について解説します。 全33章で約40名の著者陣が「SREの導入」「SREの周辺領域」「SREのベストプラクティスと技術」「SREの人間的側面」というテーマで執筆しており、対談やケーススタディ、アンチパターンなどを交えながら、SREに取り組む現場の人々の声を紹介します。

book

大規模データ管理 ―エンタープライズアーキテクチャのベストプラクティス

by Piethein Strengholt, 村上 列

データ管理と統合が急速に進化する中、複雑で緊密に結合したアーキテクチャから、現代のビジネスに対応できる、より柔軟なデータアーキテクチャへの移行が求められます。 本書は、変化が激しい時代でも長期的に持続可能な方法で大規模なデータ管理を行い、さまざまなユースケースに対応できる統合アーキテクチャを紹介します。この統合アーキテクチャを構成する、膨大なデータ利用に向けた「読み出し専用データストアアーキテクチャ」、リアルタイムなアプリケーションのための「APIアーキテクチャ」、大容量のスループットを実現する「ストリーミングアーキテクチャ」を詳述します。また技術開発、法規制、プライバシーに関する懸念など、データ管理全体を説明し、データガバナンスとセキュリティ、マスターデータ管理、セルフサービスとデータマーケットプレイス、メタデータの重要性について解説します。 企業のデータ戦略にかかわる本書は、アーキテクトはもちろん、経営者、ガバナンスチーム、データ分析・エンジニアリングチーム必携の一冊です。

book

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

by Dustin Boswell, Trevor Foucher, 角 征典

美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ。(本書「はじめに」より) コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。