Upgrade to Pro — share decks privately, control downloads, hide ads and more …

bert_introduction_with_python

 bert_introduction_with_python

payanotty

March 17, 2022
Tweet

More Decks by payanotty

Other Decks in Technology

Transcript

  1. 自己紹介
 • 名前
 ◦ 早野 康太
 • お仕事
 ◦ 自然言語モデルの改善


    • 趣味
 ◦ 猫、犬
 ◦ ゲーム
 ▪ ELDEN RING
 ▪ ウマ娘
 ◦ アニメ
 ▪ 進撃, 明日ちゃんヤバE

  2. アジェンダ
 • BERT紹介
 ◦ どんなモデル?
 ◦ fine-tuneとは?
 
 • BERTモデルのfine-tune


    ◦ 実行例 (なろう風タイトル生成モデル)
 ◦ Pythonライブラリ(Transformers)の使い方
 

  3. 最近のAIはすごい
 • AIのべりすと
 ◦ 入力した文章の続きをAIが
 書いてくれる
 
 出典: https://ai-novel.com 


    吾輩は猫である。名前はまだない。 そんな冗談が脳裏をよぎるほど、その日、俺の 気分は沈んでいた。 「……」 時刻は午前十一時。場所は近所の公園だ。休 日なだけあってそれなりに人通りもあるが、遊 具で遊ぶ子供の姿はない。皆一様にベンチに 腰掛けて、何やら物思いに耽っているようだ。 BERT紹介

  4. • Attention Is All You Need (Łukasz Kaiser et al.,

    2017)
 ◦ 文章の単語同士の関連度を測る (Attention) 機構を組み込むことで
 自然言語処理モデルの性能が大きく向上
 チノ
 ちゃん
 かわいい
 推し
 は
 誰
 ?
 入 力 文
 参考情報
 チノ
 ちゃん
 以外
 ありえん
 Transformer 
 BERT紹介
 Query
 Target

  5. • Attention Is All You Need (Łukasz Kaiser et al.,

    2017)
 ◦ 文章の単語同士の関連度を測る (Attention) 機構を組み込むことで
 自然言語処理モデルの性能が大きく向上
 チノ
 ちゃん
 かわいい
 推し
 は
 誰
 ?
 入 力 文
 参考情報
 チノ
 ちゃん
 以外
 ありえん
 Transformer 
 BERT紹介
 Query
 Target
 BERTを含めて
 深層自然言語モデルの多くが
 このTransformerから派生

  6. • Bidirectional Encoder Representations from Transformers
 ◦ BERT: Pre-training of

    Deep Bidirectional Transformers for Language Understanding
 ◦ Transformerによる双方向のエンコード表現
 ▪ Transformerモデルの一部分を利用したモデル
 ◦ Googleが2018年に発表
 • 当時の自然言語処理タスクの最高記録を軒並み塗り替えた
 • fine-tuningにより 
 あらゆる自然言語処理タスクに応用可能な汎用性の高さ
 
 BERTモデル
 BERT紹介

  7. BERTのアーキテクチャ
 BERT紹介
 Embedding
 Attention
 Attention
 Output
 Sentence
 トークナイズされた文章
 固定長のベクトルに埋め込み
 ×12層のSelf-Attention


    固定長のベクトル
 ご注文はうさぎですか?
 ご, 注文, は, うさぎ, ですか, ?
 0, 1, 2, 3, 4, 5
 形態素解析
 トークンID化
 E 0 , E 1 , E 2 , E 3 , E 4 , E 5 
 ベクトル化

  8. BERTのアーキテクチャ
 BERT紹介
 Embedding
 Attention
 Attention
 Output
 Sentence
 トークナイズされた文章
 固定長のベクトルに埋め込み
 ×12層のSelf-Attention


    固定長のベクトル
 ご注文はうさぎですか?
 ご, 注文, は, うさぎ, ですか, ?
 0, 1, 2, 3, 4, 5
 形態素解析
 トークンID化
 E 0 , E 1 , E 2 , E 3 , E 4 , E 5 
 ベクトル化
 トークナイズ
  9. BERTのアーキテクチャ
 BERT紹介
 Embedding
 Attention
 Attention
 Output
 Sentence
 トークナイズされた文章
 固定長のベクトルに埋め込み
 ×12層のSelf-Attention


    固定長のベクトル
 • クエリ(Q)とキー(K)の
 類似度を測る
 • Self-Attention
 → クエリとキーの文章が同一

  10. • 「小説家になろう」にありがちなタイトル
 ◦ 異世界転生しがち
 ▪ 無職転生~異世界行ったら本気出す
 
 ◦ 魔王とか勇者とか入りがち
 ▪

    盾の勇者の成り上がり
 ▪ 魔王様、リトライ!
 
 ◦ めっちゃ説明してくれるじゃん
 ▪ (この世界はもう俺が救って富と権力を手に入れたし、女騎士や女 魔王と城で楽しく暮らしてるから、俺以外の勇者は)もう異世界に 来ないでください。
 なろう風とは?
 BERTで
 あそんでみた

  11. Transformers
 • huggingfaceが提供しているライブラリ
 ◦ アルゴリズムのTransformerが名前の元(たぶん)
 ◦ 自然言語系の深層学習モデルの実装では定番
 ◦ https://github.com/huggingface/transformers
 


    • Transformersは事前学習済みモデルをすばやくダウンロードし
 あなたが持っているデータセットでfine-tuneするためのAPIを提供します
 
 • TransformersはJax, PyTorch, TensorFlowといった
 ポピュラーなライブラリによる実行をサポートしています

  12. Transformers
 • 主なクラス
 ◦ Tokenizer
 ▪ テキストの前処理
 ◦ Model
 ▪

    Transformer系統の自然言語モデル
 ▪ PyTorchまたはTensorFlow
 ◦ Trainer
 ▪ モデルの学習や保存

  13. Transformers
 • 主なクラス
 ◦ Tokenizer
 ▪ テキストの前処理
 ◦ Model
 ▪

    Transformer系統の自然言語モデル
 ▪ PyTorchまたはTensorFlow
 ◦ Trainer
 ▪ モデルの学習や保存

  14. • 「小説家になろう」からAPIで取得したタイトルとあらすじのペア
 ◦ 合計約10万件
 • あらすじを入力として、タイトルをラベルとして使用した
 
 
 
 学習データ


    Input
 女の子たちの
 日常を描く
 Model
 Output
 きんいろ
 モザイク
 ご注文は
 うさぎですか?
 Label
 Loss

  15. テキストの処理
 
 • スペシャルトークン
 ◦ [UNK]
 ▪ トークナイザーの辞書に登録されてない単語を表す
 ◦ [CLS]


    ▪ 文の始まりを表す
 ◦ [SEP]
 ▪ 文と文の区切りを表す
 ◦ [PAD]
 ▪ 文の長さを揃えるために足されるトークン
 ◦ [MASK]
 ▪ MLMの学習時にトークンの予測箇所を表す

  16. Transformers
 • 主なクラス
 ◦ Tokenizer
 ▪ テキストの前処理
 ◦ Model
 ▪

    Transformer系統の自然言語モデル
 ▪ PyTorchまたはTensorFlow
 ◦ Trainer
 ▪ モデルの学習や保存

  17. モデルの利用
 
 • Models - Hugging Face
 ◦ Transformersで利用可能なモデルたち
 ▪

    BERT
 ▪ RoBERTa
 ▪ Longformer
 ▪ ELECTRA
 ▪ etc…
 

  18. • モデルクラス
 ◦ EncoderDecoderModel
 • from_pretrained 
 ◦ 東北大の乾研究室が公開している事前学習済みモデル
 ▪

    日本語Wikipediaの約1700万テキストで学習したもの
 ▪ https://huggingface.co/cl-tohoku
 
 
 
 モデルの利用
 Encoder
 BERT
 Input
 ご注文は
 うさぎですか?
 Decoder
 BERT
 Output
 うさぎを注文したら
 異世界に
 転生した件について

  19. • 実行環境
 ◦ Windows(WSL2)
 ◦ CPU:
 ▪ AMD Ryzen9 3900


    ▪ メモリ: 32GB
 ◦ GPU:
 ▪ NVIDIA GeForce RTX 3070
 ▪ メモリ: 8GB
 • 16GB以上あった方がいい 
 • 学習時間
 ◦ 50 hour (/13エポック)
 
 実行環境や学習パラメータなど
 BERTで
 あそんでみた
 ハイパーパラメータ
 値
 Epochs
 13
 Learning rate
 5e-5
 Batch size
 4
 Gradient Accumulation Steps
 16
 Scheduler
 Linear
 Warmup fraction
 0.06

  20. モデル保存
 • 保存される情報
 ◦ モデル
 ▪ モデル実体
 ▪ 設定ファイル(json)
 ◦

    トークナイザー
 ▪ 設定ファイル(json)
 ◦ 学習情報
 ▪ optimizer
 ▪ scheduler
 ▪ 設定ファイル(json)

  21. まとめ
 • BERT
 ◦ 汎用的なタスクに応用可能な事前学習済みモデル
 • Pythonを使ったBERTのfine-tune
 ◦ Transformersを使った実装 (https://gitlab.com/payanotty/narou_title_generator)


    ▪ 事前学習済みモデルを簡単にダウンロードして利用できる
 ▪ タスクに応じたモデルクラスが用意されている
 ▪ トークナイザーを使った文章処理
 ▪ Trainerクラスを使えばfine-tuneをよしなに実行できる
 • (今回は紹介していないが)
 • 自作callbackで細かい学習の挙動を制御することも可能
 • MLflowやTensorboardとの連携も◦