Book description
「Hugging Face Transformers」を使った自然言語処理の解説書。2017年の登場以来、Transformerと呼ばれるアーキテクチャを使った大規模なモデルが急速に普及しています。本書では、Hugging Faceの開発者らが、「Hugging Face Transformers」を使って、これらの大規模モデルを学習しスケールする方法をわかりやすく紹介します。テキスト分類、固有表現認識、テキスト生成、要約、質問応答といったタスクだけでなく、蒸留、量子化、枝刈り、ONNX Runtimeといったモデルの高速化技術、ラベル付きデータが少ないときに使えるゼロショット学習や少数事例学習、その他、多言語転移やドメイン適応といった類書では扱っていない技術についても解説しています。
Table of contents
- 大扉
- 原書大扉
- クレジット
- 賞賛の声
- 序文
- 訳者まえがき
- まえがき
- 1章 入門 Transformers
- 1.1 エンコーダ・デコーダのフレームワーク
- 1.2 アテンション機構
- 1.3 NLPにおける転移学習
- 1.4 入門 Hugging Face Transformers
- 1.5 Transformerの応用を巡る旅
- 1.5.1 テキスト分類
- 1.5.2 固有表現認識
- 1.5.3 質問応答
- 1.5.4 要約
- 1.5.5 翻訳
- 1.5.6 テキスト生成
- 1.6 Hugging Faceのエコシステム
- 1.6.1 Hugging Face Hub
- 1.6.2 Hugging Face Tokenizers
- 1.6.3 Hugging Face Datasets
- 1.6.4 Hugging Face Accelerate
- 1.7 Transformerの主な課題
- 1.8 まとめ
- 2章 テキスト分類
- 2.1 データセット
- 2.1.1 初めてのHugging Face Datasets
- 自分のデータセットがHubにない場合は?
- 2.1.2 データセットからDataFrameへ
- 2.1.3 クラス分布の確認
- 2.1.4 ツイートの長さはどれくらい?
- 2.2 テキストからトークンへ
- 2.2.1 文字トークン化
- 2.2.2 単語トークン化
- 2.2.3 サブワードトークン化
- 2.2.4 データセット全体のトークン化
- 2.3 テキスト分類器の学習
- 2.3.1 特徴抽出器としてのTransformer
- 2.3.1.1 事前学習済みモデルの使用
- フレームワーク間の相互運用性
- 2.3.1.2 最後の隠れ状態の抽出
- 2.3.1.3 特徴行列の作成
- 2.3.1.4 学習データセットの可視化
- 2.3.1.5 単純な分類器の学習
- 2.3.2 Transformerのファインチューニング
- 2.3.2.1 事前学習済みモデルのロード
- 2.3.2.2 性能指標の定義
- 2.3.2.3 モデルの学習
- Kerasを使ったファインチューニング
- 2.3.2.4 エラー分析
- 2.3.2.5 モデルの保存と共有
- 2.4 まとめ
- 3章 Transformerの詳細
- 3.1 Transformerのアーキテクチャ
- 3.2 エンコーダ
- 3.2.1 セルフアテンション
- 3.2.1.1 スケール化ドット積アテンション
- クエリ、キー、バリューを理解する
- 3.2.1.2 マルチヘッドアテンション
- 3.2.2 順伝播層
- 3.2.3 レイヤー正規化の追加
- 3.2.4 位置埋め込み
- 3.2.5 分類ヘッドの追加
- 3.3 デコーダ
- エンコーダ・デコーダアテンションの謎を解く
- 3.4 Transformer系モデルの紹介
- 3.4.1 Transformerの系統樹
- 3.4.2 エンコーダ系のモデル
- 3.4.3 デコーダ系のモデル
- 3.4.4 エンコーダ・デコーダ系のモデル
- 3.5 まとめ
- 4章 多言語の固有表現認識
- 4.1 データセット
- 4.2 多言語Transformer
- 4.3 トークン化の詳細
- 4.3.1 トークナイザーのパイプライン
- 4.3.2 SentencePieceトークナイザー
- 4.4 固有表現認識用のTransformer
- 4.5 Transformerモデルクラスの詳細
- 4.5.1 ボディとヘッド
- 4.5.2 トークン分類のためのカスタムモデルの作成
- 4.5.3 カスタムモデルのロード
- 4.6 固有表現認識のためのテキストトークン化
- 4.7 性能指標
- 4.8 XLM-RoBERTaのファインチューニング
- 4.9 エラー分析
- 4.10 言語間転移
- 4.10.1 ゼロショット転移が有効なのはどんなときか?
- 4.10.2 複数言語の同時並行的なファインチューニング
- 4.11 モデルウィジェットとのインタラクション
- 4.12 まとめ
- 5章 テキスト生成
- 5.1 一貫した内容のテキストを生成するための課題
- 5.2 貪欲法によるデコード
- 5.3 ビームサーチによるデコード
- 5.4 サンプリング手法
- 5.5 Top-kサンプリングとTop-pサンプリング
- 5.6 どのデコード手法が最適か?
- 5.7 まとめ
- 6章 要約
- 6.1 CNN/DailyMailデータセット
- 6.2 要約のパイプライン
- 6.2.1 要約のベースライン
- 6.2.2 GPT-2
- 6.2.3 T5
- 6.2.4 BART
- 6.2.5 PEGASUS
- 6.3 要約の比較
- 6.4 生成されたテキストの品質を測定する
- 6.4.1 BLEU
- 6.4.2 ROUGE
- 6.5 CNN/DailyMailデータセットでPEGASUSを評価
- 6.6 要約モデルの学習
- 6.6.1 SAMSumでPEGASUSを評価
- 6.6.2 PEGASUSのファインチューニング
- 6.6.3 対話の要約を生成
- 6.7 まとめ
- 7章 質問応答
- 7.1 レビューベースの質問応答システムの構築
- 7.1.1 データセット
- スタンフォード質問応答データセット(SQuAD)
- 7.1.2 テキストから回答を抽出する
- 7.1.2.1 スパン分類
- 7.1.2.2 質問応答用のトークン化
- 7.1.2.3 長いパッセージへの対応
- 7.1.3 Haystackを用いた質問応答パイプラインの構築
- 7.1.3.1 ドキュメントストアの初期化
- 7.1.3.2 Retrieverの初期化
- 7.1.3.3 Readerの初期化
- 7.1.3.4 コンポーネントを組み合わせる
- 7.2 質問応答パイプラインの改善
- 7.2.1 Retrieverの評価
- 7.2.1.1 Dense Passage Retrieval
- 7.2.2 Readerの評価
- 7.2.3 ドメイン適応
- 7.2.4 質問応答パイプライン全体の評価
- 7.3 抽出型質問応答の先
- 7.4 まとめ
- 8章 Transformersの高速化
- 8.1 意図検出を事例として
- 8.2 性能ベンチマークの作成
- 8.3 知識蒸留でモデルを小さくする
- 8.3.1 ファインチューニングのための知識蒸留
- 8.3.2 事前学習のための知識蒸留
- 8.3.3 知識蒸留用のトレーナーの作成
- 8.3.4 良い生徒モデルの選択
- 8.3.5 Optunaによる良いハイパーパラメータの探索
- 8.3.6 蒸留されたモデルのベンチマーク
- 8.4 量子化によるモデルの高速化
- 浮動小数点数と固定小数点数についての入門
- 8.5 量子化モデルのベンチマーク
- 8.6 ONNXとONNX Runtimeを使った推論の最適化
- 8.7 重みの枝刈りでモデルをよりスパースにする
- 8.7.1 ディープニューラルネットワークにおけるスパース性
- 8.7.2 重み枝刈りの手法
- 8.7.2.1 Magnitude Pruning
- 8.7.2.2 Movement Pruning
- 8.8 まとめ
- 9章 ラベルのないまたは少ない状況への対応方法
- 9.1 GitHub Issueタガーの構築
- 9.1.1 データの取得
- 9.1.2 データの準備
- 9.1.3 学習データセットの作成
- 9.1.4 学習スライスの作成
- 9.2 ナイーブベイズによるベースラインの実装
- 9.3 ラベルのないデータへの対処方法
- 9.4 ラベルの少ないデータへの対処方法
- 9.4.1 データ拡張
- 9.4.2 埋め込みをルックアップテーブルとして使用する場合
- FAISSによる効率的な類似度検索
- 9.4.3 通常のTransformerのファインチューニング
- 9.4.4 プロンプトを使ったインコンテキスト学習と少数事例学習
- 9.5 ラベルなしデータの活用
- 9.5.1 言語モデルのファインチューニング
- 9.5.2 分類器のファインチューニング
- 9.5.3 高度な手法
- 9.5.3.1 教師なしデータ拡張
- 9.5.3.2 不確かさを考慮した自己学習
- 9.6 まとめ
- 10章 Transformerをゼロから学習する
- 10.1 大規模データセットとその入手先
- 10.1.1 大規模コーパスを構築する際の課題
- 10.1.2 コードデータセットの自作
- 10.1.2.1 Google BigQueryを使ったデータセットの作成
- ノイズを除去するかしないか?
- 10.1.3 大規模データセットの扱い方
- 10.1.3.1 メモリマッピング
- 10.1.3.2 ストリーミング
- 10.1.4 Hugging Face Hubへのデータセットの追加
- 10.2 トークナイザーの構築
- 10.2.1 トークナイザーモデル
- 10.2.2 トークナイザーの性能測定
- 10.2.3 Python用のトークナイザー
- 10.2.4 トークナイザーの学習
- 10.2.5 Hubにカスタムトークナイザーを保存する
- 10.3 ゼロから始めるモデルの学習
- 10.3.1 事前学習の目的の話
- 10.3.1.1 因果的言語モデル
- 10.3.1.2 マスク言語モデル
- 10.3.1.3 系列変換モデルの学習
- 10.3.2 モデルの初期化
- 10.3.3 データローダーの実装
- 10.3.4 学習ループの定義
- 10.3.5 学習の実行
- 10.4 結果と分析
- 10.5 まとめ
- 11章 Transformerの未来
- 11.1 Transformerのスケーリング
- 11.1.1 スケーリング則
- 11.1.2 スケーリングへの挑戦
- 11.1.3 アテンションプリーズ!
- 11.1.4 スパースアテンション
- 11.1.5 アテンションの線形化
- 11.2 テキスト以外への適用
- 11.2.1 画像
- 11.2.1.1 iGPT
- 11.2.1.2 ViT
- 11.2.2 テーブル
- 11.3 マルチモーダルTransformer
- 11.3.1 音声認識
- 11.3.2 画像とテキスト
- 11.3.2.1 VQA
- 11.3.2.2 LayoutLM
- 11.3.2.3 DALL-E
- 11.3.2.4 CLIP
- 11.4 この先の学び方
- 著者紹介
- 奥付
Product information
- Title: 機械学習エンジニアのためのTransformers ―最先端の自然言語処理ライブラリによるモデル開発
- Author(s):
- Release date: August 2022
- Publisher(s): O'Reilly Japan, Inc.
- ISBN: 9784873119953
You might also like
book
マイクロサービスアーキテクチャ 第2版
2014年にThoughtworksのマーチン・ファウラーとジェームス・ルイスによって提唱された「マイクロサービス」は、いまではすっかり市民権を得て、さまざまな手法やツールが開発されています。著者は、マイクロサービスに「賛成」でも「反対」でもないという中立的な立場から、マイクロサービスの仕組み、特徴、長所、短所、課題を丁寧に説明しています。Thoughtworks在籍中から数多くのマイクロサービスプロジェクトに携わっていた著者が共有する、自身の実体験から得た多くの知見は、システム設計、開発、デプロイ、テストといった技術的側面のみならず、人材をどのように活かし、生産性を上げるかといった組織面にも多くの示唆を与えてくれるものです。組織に適したアーキテクチャを選択し、信頼性が高く、堅牢性、安全性、柔軟性に優れたシステムを設計する上で指針となる一冊です。
book
SREの探求 ―様々な企業におけるサイトリライアビリティエンジニアリングの導入と実践
組織の大小を問わず、システムやアプリケーションの信頼性がビジネスにとって重要なこと、また市場が求めるスピードでイテレーション(反復)しながら、信頼性を維持するのは難しいことが認識されています。サイトリライアビリティエンジニアリング(SRE)は、この課題に対する取り組みです。 本書は、大規模なプロダクションシステムの運用において、様々な企業や組織がSREをどのように実践しているかについて紹介します。Microsoft、Dropbox、Google、SoundCloud、Spotify、Amazon、Facebook、LinkedIn、Netflix、Lyftなど、規模や業種、提供するプロダクトやサービスが異なる様々な企業でのSREの導入と発展、そこから得た課題について解説します。 全33章で約40名の著者陣が「SREの導入」「SREの周辺領域」「SREのベストプラクティスと技術」「SREの人間的側面」というテーマで執筆しており、対談やケーススタディ、アンチパターンなどを交えながら、SREに取り組む現場の人々の声を紹介します。
book
大規模データ管理 ―エンタープライズアーキテクチャのベストプラクティス
データ管理と統合が急速に進化する中、複雑で緊密に結合したアーキテクチャから、現代のビジネスに対応できる、より柔軟なデータアーキテクチャへの移行が求められます。 本書は、変化が激しい時代でも長期的に持続可能な方法で大規模なデータ管理を行い、さまざまなユースケースに対応できる統合アーキテクチャを紹介します。この統合アーキテクチャを構成する、膨大なデータ利用に向けた「読み出し専用データストアアーキテクチャ」、リアルタイムなアプリケーションのための「APIアーキテクチャ」、大容量のスループットを実現する「ストリーミングアーキテクチャ」を詳述します。また技術開発、法規制、プライバシーに関する懸念など、データ管理全体を説明し、データガバナンスとセキュリティ、マスターデータ管理、セルフサービスとデータマーケットプレイス、メタデータの重要性について解説します。 企業のデータ戦略にかかわる本書は、アーキテクトはもちろん、経営者、ガバナンスチーム、データ分析・エンジニアリングチーム必携の一冊です。
book
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ。(本書「はじめに」より) コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。