【本書の背景】
近年、深層学習に基づく自然言語処理技術は飛躍的な発展を遂げており、翻訳、文章生成、文章のグルーピングなど様々な業務に利用されています。自然言語処理技術の中でも特に注目を集めているのが「BERT」です。
【BERTとは】
BERTは2018年の後半にGoogleから発表された、自然言語処理のための新たなディープラーニングのモデルです。「Transformer」がベースとなっており、様々な自然言語処理タスクに合わせて調整可能な汎用性があります。
【本書の概要】
PyTorchとGoogle Colaboratoryの環境を利用して、BERTの実装方法について解説します。具体的にはAttention、Transformerといった自然言語処理技術をベースに、BERTのしくみや実装方法についてサンプルを元に解説します。章末には演習を用意しています。
【対象読者】
・一歩進んだ自然言語処理技術を身につけたい方
・BERTの実装を効率よくコンパクトに学びたい方
・BERTの概要を実装を通して把握したい方
【本書の特徴】
・サンプルを元にBERTの基礎から発展的な利用方法まで学べる
・Google ColaboratoryとPyTorchという人気の開発環境、フレームワークで学べる
・Transformersライブラリを利用してBERTを実装できる
【目次】
Chapter0 イントロダクション
Chapter1 BERTの概要
Chapter2 開発環境
Chapter3 PyTorchで実装する簡単な深層学習
Chapter4 シンプルなBERTの実装
Chapter5 BERTの仕組み
Chapter6 ファインチューニングの活用
Chapter7 BERTの活用
Appendix さらに学びたい方のために
【著者プロフィール】
我妻 幸長(あづま・ゆきなが)
「ヒトとAIの共生」がミッションの会社、SAI-Lab株式会社の代表取締役。AI関連の教育と研究開発に従事。
東北大学大学院理学研究科修了。理学博士(物理学)。
法政大学デザイン工学部兼任講師。
オンライン教育プラットフォームUdemyで、10万人以上にAIを教える人気講師。
多くのエンジニアの方が利用している人気の開発環境「Google Colaboratory」と、人気のフレームワーク「PyTorch」を利用して、BERTのしくみや実装方法を学ぶことができます。
ノートブック形式でサンプルを用意しています。サンプルを動かしながら、BERTの概要から基本的な実装手法、活用手法まで学ぶことができます。
Hugging Faceが提供するTransformersライブラリ(分類、情報抽出、質問回答、要約、翻訳、テキスト生成などの様々な自然言語処理のための事前学習モデルが100以上の言語で用意されている)を利用して、BERTの実装手法を解説します。
CHAPTER 0 イントロダクション
0.1 本書の特徴
0.1.1 Pythonの基礎を学ぶ
0.1.2 本書の構成
0.1.3 本書でできるようになること
0.1.4 本書の注意点
0.1.5 本書の対象
0.1.6 本書の使い方
CHAPTER 1 BERTの概要
1.1 深層学習とは
1.1.1 人工知能と機械学習、そして深層学習
1.1.2 ニューラルネットワークの構造
1.1.3 深層学習
1.2 自然言語処理の概要
1.2.1 自然言語処理とは?
1.2.2 自然言語処理の応用
1.2.3 形態素解析
1.2.4 単語のベクトル化
1.2.5 RNN(再帰型ニューラルネットワーク)
1.2.6 Seq2Seqによる系列の変換
1.2.7 自然言語処理をさらに学びたい方へ
1.3 Transformerの概要
1.3.1 Transformerとは?
1.3.2 Transformerの構造
1.4 BERTの概要
1.4.1 BERTとは?
1.4.2 BERTの学習の概要
1.4.3 BERTの事前学習
1.4.4 BERTの性能
1.5 Chapter1のまとめ
CHAPTER 2 開発環境
2.1 Google Colaboratoryの始め方
2.1.1 Google Colabortoryの下準備
2.1.2 ノートブックの使い方
2.1.3 ダウンロードしたファイルの扱い方
2.2 セッションとインスタンス
2.2.1 セッション、インスタンスとは?
2.2.2 90分ルール
2.2.3 12時間ルール
2.2.4 セッションの管理
2.3 CPUとGPU
2.3.1 CPU、GPU、TPUとは?
2.3.2 GPUの使い方
2.3.3 パフォーマンスの比較
2.4 Google Colaboratoryの様々な機能
2.4.1 テキストセル
2.4.2 スクラッチコードセル
2.4.3 コードスニペット
2.4.4 コードの実行履歴
2.4.5 GitHubとの連携
2.5 演習
2.5.1 コードセルの操作
2.5.2 テキストセルの操作
2.5.3 セルの位置変更と削除
2.6 Chapter2のまとめ
CHAPTER 3 PyTorchで実装する簡単な深層学習
3.1 実装の概要
3.1.1 「学習するパラメータ」と「ハイパーパラメータ」
3.1.2 順伝播と逆伝播
3.1.3 実装の手順
3.2 Tensor
3.2.1 パッケージの確認
3.2.2 Tensorの生成
3.2.3 NumPyの配列とTensorの相互変換
3.2.4 範囲を指定してTensorの一部にアクセス
3.2.5 Tensorの演算
3.2.6 Tensorの形状を変換
3.2.7 様々な統計値の計算
3.2.8 プチ演習:Tensor同士の演算
3.2.9 解答例
3.3 活性化関数
3.3.1 シグモイド関数
3.3.2 tanh
3.3.3 ReLU
3.3.4 恒等関数
3.3.5 ソフトマックス関数
3.4 損失関数
3.4.1 平均二乗誤差
3.4.2 交差エントロピー誤差
3.5 最適化アルゴリズム
3.5.1 勾配と勾配降下法
3.5.2 最適化アルゴリズムの概要
3.5.3 SGD
3.5.4 Momentum
3.5.5 AdaGrad
3.5.6 RMSProp
3.5.7 Adam
3.6 エポックとバッチ
3.6.1 エポックとバッチ
3.6.2 バッチ学習
3.6.3 オンライン学習
3.6.4 ミニバッチ学習
3.6.5 学習の例
3.7 シンプルな深層学習の実装
3.7.1 手書き文字画像の確認
3.7.2 データを訓練用とテスト用に分割
3.7.3 モデルの構築
3.7.4 学習
3.7.5 誤差の推移
3.7.6 正解率
3.7.7 訓練済みのモデルを使った予測
3.8 演習
3.8.1 データを訓練用とテスト用に分割
3.8.2 モデルの構築
3.8.3 学習
3.8.4 誤差の推移
3.8.5 正解率
3.8.6 解答例
3.9 Chapter3のまとめ
CHAPTER 4 シンプルなBERTの実装
4.1 Transformersの概要
4.1.1 Transformersとは?
4.1.2 Transformersを構成するクラス
4.1.3 BERTのモデル
4.2 Transformersの基礎
4.2.1 ライブラリのインストール
4.2.2 Transformersのモデル:文章の一部をMask
4.2.3 Transformersのモデル:文章の分類
4.2.4 PreTrainedModelの継承
4.2.5 BERTの設定
4.2.6 Tokenizer
4.3 シンプルなBERTの実装
4.3.1 ライブラリのインストール
4.3.2 欠損した単語の予測:BertForMaskedLM
4.3.3 文章が連続しているかどうかの判定:BertForNextSentencePrediction
4.4 演習
4.4.1 ライブラリのインストール
4.4.2 トークナイザーの読み込み
4.4.3 モデルの読み込み
4.4.4 連続性を判定する関数
4.4.5 連続性の判定
4.4.6 解答例
4.5 Chapter4のまとめ
CHAPTER 5 BERTの仕組み
5.1 BERTの全体像
5.1.1 BERTの学習
5.1.2 BERTのモデル
5.1.3 BERTの入力
5.1.4 BERTの学習
5.1.5 BERTの性能
5.2 TransformerとAttention
5.2.1 Transformerのモデルの概要
5.2.2 Attentionとは?
5.2.3 InputとMemory
5.2.4 Attention weightの計算
5.2.5 Valueとの内積
5.2.6 Self-AttentionとSourceTarget-Attention
5.2.7 Multi-Head Attention
5.2.8 Positionwise fully connected feed-forward network
5.2.9 Positional Encoding
5.2.10 Attentionの可視化
5.3 BERTの構造
5.3.1 ライブラリのインストール
5.3.2 BERTモデルの構造
5.3.3 BERTの設定
5.4 演習
5.4.1 ライブラリのインストール
5.4.2 BertForMaskedLMの構造
5.4.3 BertForNextSentencePredictionの構造
5.5 Chapter5のまとめ
CHAPTER 6 ファインチューニングの活用
6.1 転移学習とファインチューニング
6.1.1 転移学習とは?
6.1.2 転移学習とファインチューニング
6.2 シンプルなファインチューニング
6.2.1 ライブラリのインストール
6.2.2 モデルの読み込み
6.2.3 最適化アルゴリズム
6.2.4 トークナイザーの設定
6.2.5 シンプルなファインチューニング
6.3 ファインチューニングによる感情分析
6.3.1 ライブラリのインストール
6.3.2 モデルとトークナイザーの読み込み
6.3.3 データセットの読み込み
6.3.4 データの前処理
6.3.5 評価用の関数
6.3.6 TrainingArgumentsの設定
6.3.7 Trainerの設定
6.3.8 モデルの訓練
6.3.9 モデルの評価
6.4 演習
6.4.1 ライブラリのインストール
6.4.2 モデルとトークナイザーの読み込み
6.4.3 層の凍結
6.4.4 データセットの読み込み
6.4.5 データの前処理
6.4.6 評価用の関数
6.4.7 TrainingArgumentsの設定
6.4.8 Trainerの設定
6.4.9 モデルの訓練
6.4.10 モデルの評価
6.4.11 解答例
6.5 Chapter6のまとめ
CHAPTER 7 BERTの活用
7.1 BERTの活用例
7.1.1 検索エンジン
7.1.2 翻訳
7.1.3 テキスト分類
7.1.4 テキスト要約
7.1.5 その他の活用例
7.2 BERTの日本語モデル
7.2.1 使用するモデルとデータセット
7.2.2 ライブラリのインストール
7.2.3 欠損した単語の予測
7.2.4 文章が連続しているかどうかの判定
7.3 BERTによる日本語ニュースの分類
7.3.1 使用するデータセット
7.3.2 Googleドライブに訓練データを配置
7.3.3 ライブラリのインストール
7.3.4 Googleドライブとの連携
7.3.5 データセットの読み込み
7.3.6 データの保存
7.3.7 モデルとトークナイザーの読み込み
7.3.8 データの前処理
7.3.9 評価用の関数
7.3.10 TrainingArgumentsの設定
7.3.11 Trainerの設定
7.3.12 モデルの訓練
7.3.13 モデルの評価
7.3.14 モデルの保存
7.3.15 モデルの読み込み
7.3.16 日本語ニュースの分類
7.4 Chapter7のまとめ
Appendix さらに学びたい方のために
AP1.1 さらに学びたい方のために
AP1.1.1 コミュニティ「自由研究室 AIRS-Lab」
AP1.1.2 著書
AP1.1.3 News! AIRS-Lab
AP1.1.4 YouTubeチャンネル「AI教室 AIRS-Lab」
AP1.1.5 オンライン講座
AP1.1.6 著者のTwitterアカウント
AP1.1.7 最後に