Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
bert_introduction_with_python
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
payanotty
March 17, 2022
Technology
860
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
bert_introduction_with_python
payanotty
March 17, 2022
More Decks by payanotty
See All by payanotty
トークナイザー入門
payanotty
5
2.7k
LLM_Prompt_Recovery
payanotty
3
1.1k
Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説
payanotty
15
6.5k
Transformerによるテキストベクトル化を解説
payanotty
6
4.3k
Kaggle_LLMコンペの攻略法を解説.pdf
payanotty
1
1.7k
ManimMLでイケてるアニメーションを作ろう
payanotty
0
870
Lets Finetune LLM
payanotty
3
1.5k
Stable Diffusion Web UI, Let Your Fave Eat Ramen
payanotty
1
1.2k
Lets Finetune Stable Diffusion
payanotty
0
1.4k
Other Decks in Technology
See All in Technology
10分で知る最近のOmarchy
komagata
0
280
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
350
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
310
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.5k
Claude Code本って、 読む必要あるの?
oikon48
2
430
Sigmaで作る業務アプリ
kazushiro_honma
0
120
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
180
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
160
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
190
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
5
440
2026_devsumi_ozono.pdf
o3
3
450
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
150
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How to Ace a Technical Interview
jacobian
281
24k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
Producing Creativity
orderedlist
PRO
348
41k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Docker and Python
trallard
47
4.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Transcript
PythonでBERTに入門しよう 早野康太
自己紹介 • 名前 ◦ 早野 康太 • お仕事 ◦ 自然言語モデルの改善
• 趣味 ◦ 猫、犬 ◦ ゲーム ▪ ELDEN RING ▪ ウマ娘 ◦ アニメ ▪ 進撃, 明日ちゃんヤバE
アジェンダ • BERT紹介 ◦ どんなモデル? ◦ fine-tuneとは? • BERTモデルのfine-tune
◦ 実行例 (なろう風タイトル生成モデル) ◦ Pythonライブラリ(Transformers)の使い方
BERT紹介
深層学習による自然言語処理 • 翻訳 ◦ Google翻訳 ◦ DeepL • 質問応答 ◦
Alexa • 文章生成 ◦ AIのべりすと BERT紹介
最近のAIはすごい • AIのべりすと ◦ 入力した文章の続きをAIが 書いてくれる 出典: https://ai-novel.com 吾輩は猫である。名前はまだない。
BERT紹介
最近のAIはすごい • AIのべりすと ◦ 入力した文章の続きをAIが 書いてくれる 出典: https://ai-novel.com
吾輩は猫である。名前はまだない。 そんな冗談が脳裏をよぎるほど、その日、俺の 気分は沈んでいた。 「……」 時刻は午前十一時。場所は近所の公園だ。休 日なだけあってそれなりに人通りもあるが、遊 具で遊ぶ子供の姿はない。皆一様にベンチに 腰掛けて、何やら物思いに耽っているようだ。 BERT紹介
• Attention Is All You Need (Łukasz Kaiser et al.,
2017) ◦ 文章の単語同士の関連度を測る (Attention) 機構を組み込むことで 自然言語処理モデルの性能が大きく向上 チノ ちゃん かわいい 推し は 誰 ? 入 力 文 参考情報 チノ ちゃん 以外 ありえん Transformer BERT紹介 Query Target
• Attention Is All You Need (Łukasz Kaiser et al.,
2017) ◦ 文章の単語同士の関連度を測る (Attention) 機構を組み込むことで 自然言語処理モデルの性能が大きく向上 チノ ちゃん かわいい 推し は 誰 ? 入 力 文 参考情報 チノ ちゃん 以外 ありえん Transformer BERT紹介 Query Target BERTを含めて 深層自然言語モデルの多くが このTransformerから派生
• Bidirectional Encoder Representations from Transformers ◦ BERT: Pre-training of
Deep Bidirectional Transformers for Language Understanding ◦ Transformerによる双方向のエンコード表現 ▪ Transformerモデルの一部分を利用したモデル ◦ Googleが2018年に発表 • 当時の自然言語処理タスクの最高記録を軒並み塗り替えた • fine-tuningにより あらゆる自然言語処理タスクに応用可能な汎用性の高さ BERTモデル BERT紹介
BERTのアーキテクチャ BERT紹介 Embedding Attention Attention Output Sentence トークナイズされた文章 固定長のベクトルに埋め込み ×12層のSelf-Attention
固定長のベクトル
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 ベクトル化
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 ベクトル化 トークナイズ
BERTのアーキテクチャ BERT紹介 Embedding Attention Attention Output Sentence トークナイズされた文章 固定長のベクトルに埋め込み ×12層のSelf-Attention
固定長のベクトル • クエリ(Q)とキー(K)の 類似度を測る • Self-Attention → クエリとキーの文章が同一
• 事前学習モデルを、解きたいタスクに合わせてチューニング BERTのfine-tune Pretrained BERT Model Question Answering Named Entity
Recognition Sentiment Analysis Text Summarization BERT紹介
• 事前学習モデルを、解きたいタスクに合わせてチューニング BERTのfine-tune BERT紹介 BERT 全結合層 大量の文章(Wikipedia全文など)で 事前に学習されたモデル タスクに合った形式で 結果を出力する
出力
BERTのfine-tune実践例 ~なろう風タイトル生成モデル~
• 文章を入力したら なろう風のタイトルを生成してみたい ◦ BERTを転移学習(fine-tuning)して文章生成モデルを作ってみる やりたいこと BERTで あそんでみた
• 「小説家になろう」にありがちなタイトル ◦ 異世界転生しがち ▪ 無職転生~異世界行ったら本気出す ◦ 魔王とか勇者とか入りがち ▪
盾の勇者の成り上がり ▪ 魔王様、リトライ! ◦ めっちゃ説明してくれるじゃん ▪ (この世界はもう俺が救って富と権力を手に入れたし、女騎士や女 魔王と城で楽しく暮らしてるから、俺以外の勇者は)もう異世界に 来ないでください。 なろう風とは? BERTで あそんでみた
タイトル生成してみる BERTで あそんでみた あらすじ 時は大正。竈門炭治郎は、家族とともに山でつつましくも幸せな日々をおくって いた。ある日、町で炭を売りに出かけた炭治郎が山に戻ると、家族は鬼に襲わ れ血だまりの中で絶命していた。 生成されたタイトル
炭治郎の異世界血風録(三十と一夜短編第60回) ※Wikipediaより引用
タイトル生成してみる BERTで あそんでみた タイトル 名探偵コナン 生成されたタイトル 名探偵コナン 第36話「あたらしいバレンタイン」 ~推理小説を投稿していたらいつのまにか美少女に一目惚れされた件~
タイトル生成してみる BERTで あそんでみた タイトル ウマ娘 プリティーダービー 生成されたタイトル ウマ娘 プリティーダービー 優勝馬に転生したので、とりあえず競馬で勝つことを目指します!
fine-tuneの実装 ~Transformersライブラリを使って~
Transformers • huggingfaceが提供しているライブラリ ◦ アルゴリズムのTransformerが名前の元(たぶん) ◦ 自然言語系の深層学習モデルの実装では定番 ◦ https://github.com/huggingface/transformers
• Transformersは事前学習済みモデルをすばやくダウンロードし あなたが持っているデータセットでfine-tuneするためのAPIを提供します • TransformersはJax, PyTorch, TensorFlowといった ポピュラーなライブラリによる実行をサポートしています
Transformers • 主なクラス ◦ Tokenizer ▪ テキストの前処理 ◦ Model ▪
Transformer系統の自然言語モデル ▪ PyTorchまたはTensorFlow ◦ Trainer ▪ モデルの学習や保存
Transformers • 主なクラス ◦ Tokenizer ▪ テキストの前処理 ◦ Model ▪
Transformer系統の自然言語モデル ▪ PyTorchまたはTensorFlow ◦ Trainer ▪ モデルの学習や保存
• 「小説家になろう」からAPIで取得したタイトルとあらすじのペア ◦ 合計約10万件 • あらすじを入力として、タイトルをラベルとして使用した 学習データ
Input 女の子たちの 日常を描く Model Output きんいろ モザイク ご注文は うさぎですか? Label Loss
テキストの処理 • Tokenizer ◦ 文章を形態素解析し、トークンIDの系列に変換する
テキストの処理 • Tokenizer ◦ 文章を形態素解析し、トークンIDの系列に変換する 数あわなくね?
テキストの処理 • Tokenizer ◦ 文章を形態素解析し、トークンIDの系列に変換する ご注文はうさぎですか? [CLS]ご注文はうさぎですか?[SEP] 特別なトークンを追加してからトークナイズしている
• [CLS]: 文の始まりを表すトークン • [SEP]: 文と文の区切りを表すトークン
テキストの処理 • スペシャルトークン ◦ [UNK] ▪ トークナイザーの辞書に登録されてない単語を表す ◦ [CLS]
▪ 文の始まりを表す ◦ [SEP] ▪ 文と文の区切りを表す ◦ [PAD] ▪ 文の長さを揃えるために足されるトークン ◦ [MASK] ▪ MLMの学習時にトークンの予測箇所を表す
テキストの処理 • パディング ◦ データセット内の文章の長さを揃えるために[PAD]を足す ご 注文 は うさぎ
です か ? [PAD] ゆ ゆ 式 [PAD] [PAD] [PAD]
テキストの処理 • パディング ◦ データセット内の文章の長さを揃えるために[PAD]を足す
Transformers • 主なクラス ◦ Tokenizer ▪ テキストの前処理 ◦ Model ▪
Transformer系統の自然言語モデル ▪ PyTorchまたはTensorFlow ◦ Trainer ▪ モデルの学習や保存
モデルの利用 • Models - Hugging Face ◦ Transformersで利用可能なモデルたち ▪
BERT ▪ RoBERTa ▪ Longformer ▪ ELECTRA ▪ etc…
モデルの利用 • タスクに応じてモデルクラスが用意されている ◦ BertForMaskedLM ◦ BertForNextSentencePrediction ◦ BertForSequenceClassification
◦ BertForQuestionAnswering
モデルの利用 • タスクに応じてモデルクラスが用意されている ◦ BertForMaskedLM.from_pretrained(model_name_or_path) ◦ BertForNextSentencePrediction.from_pretrained(model_name_or_path) ◦ BertForSequenceClassification.from_pretrained(model_name_or_path)
◦ BertForQuestionAnswering.from_pretrained(model_name_or_path)
モデルの利用 • BertForSequenceClassification BERT 全結合層
モデルの利用 • BertForSequenceClassification.from_pretrained(model_name_or_path) BERT 事前学習済みの モデル 重みをロード 全結合層
出力
モデルの利用 • BertForSequenceClassification.from_pretrained(model_name_or_path) BERT 事前学習済みの モデル 重みをロード 全結合層
ランダムに重みを初期化 出力
• モデルクラス ◦ EncoderDecoderModel • from_pretrained ◦ 東北大の乾研究室が公開している事前学習済みモデル ▪
日本語Wikipediaの約1700万テキストで学習したもの ▪ https://huggingface.co/cl-tohoku モデルの利用 Encoder BERT Input ご注文は うさぎですか? Decoder BERT Output うさぎを注文したら 異世界に 転生した件について
• Trainer ◦ 学習の実行をよしなにしてくれるクラス ◦ ハイパーパラメータを設定して、実行するだけ ◦ 公式のチュートリアル
fine-tuneの実行
• 実行環境 ◦ 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
モデル保存 • 保存される情報 ◦ モデル ▪ モデル実体 ▪ 設定ファイル(json) ◦
トークナイザー ▪ 設定ファイル(json) ◦ 学習情報 ▪ optimizer ▪ scheduler ▪ 設定ファイル(json)
学習したモデルを使って推論する
まとめ • BERT ◦ 汎用的なタスクに応用可能な事前学習済みモデル • Pythonを使ったBERTのfine-tune ◦ Transformersを使った実装 (https://gitlab.com/payanotty/narou_title_generator)
▪ 事前学習済みモデルを簡単にダウンロードして利用できる ▪ タスクに応じたモデルクラスが用意されている ▪ トークナイザーを使った文章処理 ▪ Trainerクラスを使えばfine-tuneをよしなに実行できる • (今回は紹介していないが) • 自作callbackで細かい学習の挙動を制御することも可能 • MLflowやTensorboardとの連携も◦