Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
言語モデルにおける推論パラメータと小説生成への適用について
Search
MIZUTANI RYOTA
May 01, 2023
Programming
790
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
言語モデルにおける推論パラメータと小説生成への適用について
23/4/6の社内勉強会で使用した資料です。
MIZUTANI RYOTA
May 01, 2023
More Decks by MIZUTANI RYOTA
See All by MIZUTANI RYOTA
Claude Codeのログから 学びを得る
rmizuta3
5
6.1k
JPEGの仕組みと圧縮品質が CV性能に与える影響について
rmizuta3
1
1.2k
PythonユーザによるRust入門
rmizuta3
15
8.5k
プロテニスにおいて疲れが勝敗に与える影響を定量化してみる
rmizuta3
2
1.3k
Other Decks in Programming
See All in Programming
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
250
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
120
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
Oxcを導入して開発体験が向上した話
yug1224
4
310
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
2
680
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
200
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
260
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
Lessons from Spec-Driven Development
simas
PRO
0
200
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
160
Featured
See All Featured
The Curse of the Amulet
leimatthew05
1
13k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
Marketing to machines
jonoalderson
1
5.4k
For a Future-Friendly Web
brad_frost
183
10k
The Cult of Friendly URLs
andyhume
79
6.9k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
How to make the Groovebox
asonas
2
2.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
Embracing the Ebb and Flow
colly
88
5.1k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Typedesign – Prime Four
hannesfritz
42
3.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Transcript
AI 2023.04.06 水谷 亮太 株式会社ディー・エヌ・エー + GO株式会社 言語モデルにおける推論パラメー タと小説生成への適用について
AI 2 目次 1. 言語モデルについて 2. Transformerにおける推論パラメータ 3. 言語モデルを用いた小説生成について
AI 3 目次 1. 言語モデルについて 2. Transformerにおける推論パラメータ 3. 言語モデルを用いた小説生成について
AI ▪ ある文を入力としたときに、その次の単語を予測するモデル 4 言語モデルとは 最も単純なマルコフモデルもGPTもこの確率の計算をしているのは同じ。 赤い 魚 を 食べる Y ↑ここに出現する単語を予測 ▪ Yに入る単語は、以下のような条件付き確率の式において、最も確率
が大きくなるものが選択される
AI 5 手法名 手法概略 長所 短所 マルコフ連鎖 ある単語の出現が、その 1つ前の単語に依存する と仮定し、文の生成を行う
手法 - 簡単に実装できる - シンプルで解釈しやすい - 生成された文章が単調 - 長期的な文脈を考慮できないため、文 章の流れが不自然になることがある n-gram マルコフ連鎖で考慮する 文字をn個に拡張したも の - マルコフ連鎖よりも長期的な文脈を 考慮できる - nが大きくなると学習コストが指数的に増 大する - nが小さいと生成された文章が不自然に なることがある RNN RNNを利用したモデル - n-gramより長期的な文脈を考慮でき るため、より自然な文章を生成できる - 勾配消失問題により文が長くなると依存 関係が取得できない。 - 並列計算ができず、学習に時間がかか る Transformer Transformerを利用した モデル - RNNよりも高速に学習できる - 長期的な文脈を考慮できる - 解釈性が低い これまでの言語モデルの概略
AI 6 魚 を 食べる Transformer と 12.2% の 7.66%
とこで 5.69% 習慣 5.41% 。 3.86% encoder decorder 出力は全単語候補に対する確率 Transformerにおける単語生成イメージ
AI 7 ▪ 最も確率の高いものを選択するだけだと単調 ▪ 前後の文を考慮した確率の評価をする ▪ 繰り返しを発生しにくくする ▪ 自然な文になるよう確率値が低い単語も取り入れる
出力される確率をどう調整して文を生成する? パラメータを用いて調整 と 12.2% の 7.66% とこで 5.69% 習慣 5.41% 。 3.86%
8 目次 1. 言語モデルについて 2. Transformerにおける推論パラメータ 3. 言語モデルを用いた小説生成について
AI 9 ▪ ここで紹介するパラメータは下記に記載のあるtransformerのgenerate関数で使用で きるもの ▪ https://huggingface.co/docs/transformers/main_classes/text_generation 紹介するパラメータについて 文章生成コード例(GPT2)
AI 10 ▪ WebのGUI版は設定不可 ▪ 固定値が割り当てられてる? ▪ APIだと設定可能なものもある ▪ https://platform.openai.com/docs/api-reference/chat/create
ChatGPTだとどうなの? ChatGPTでも極端な設定にすると回答が壊れる。
AI 11 Transformerにおける推論パラメータ(抜粋) • 文章生成戦略を制御するパラメータ ◦ num_beams ◦ num_beam_groups ◦
penalty_alpha ◦ do_sample • モデルの出力ロジットを制御するパラメータ ◦ temperature ◦ top-k ◦ top-p • その他 ◦ no_repeat_ngram_size ◦ repetition_penalty
AI 12 greedy search (num_beams=1 and do_sample=False) 出力された確率が最も高いものを常に選択する手法 と 12.2%
の 7.66% とこで 5.69% 、 14.04% 幸せ 1.95% 胃 1.52% その 8.82% 魚 2.47% 胃 1.61% 魚 を 食べる と 、 その
AI 13 beam search (num_beams>1) 魚 を 食べる と の
ことで 、 胃 幸せ が は が好き 12.2 7.66 5.69 27.0 24.4 7.90 14.04 1.95 1.52 選択されたnum_beamsの数だけ累計確率の高い経路を保持する手法 赤線がnum_beams=2とした場合に 各ステップで保持される経路。 greedyより長期的な視点での確率を 考慮できるので、より自然の文が生 成される可能性が高い。
AI 14 通常のbeam searchだと似たような文が複数生成されるため、groupを作り、 group毎に共起がある場合はペナルティが発生するようにする。 group beam search(num_beam_groups>1) https://arxiv.org/pdf/1610.02424.pdf
AI 15 contrastive search (penalty_alpha>0 and top_k>1) https://arxiv.org/pdf/2210.14140.pdf • 生成済みの単語とは性質の異なる単語が出力されやすくなり、一貫性を保ちつつ流暢な文が生
成できる • (話が飛びやすくなる気もするが、そういうものはそもそも候補に上がってこないか?) 生成済みの単語列とは類似度が低い単語を生成する手法 生成される単語 候補の集合 生成候補vに対する モデルの出力確率 縮退ペナルティ 候補となる単語と生成済みの単語 の類似度の最大値
AI 16 ある指定の単語を出力に含めたい場合に用いる制約付きのビームサーチ。各ス テップで残したい単語を含む候補を必ず残すようにする。 constrained beam search(force_words!=None) 魚 を 食べる
と の 猫 、 胃 幸せ 12.2 7.66 11.5 10.6 14.04 1.95 1.52 例:beam数2で”猫”を出力に含めたい場合 猫 0.05 15.1 は の が 0.06 文脈に沿わない単語を入れると末尾にそ の単語が含まれるだけの文になることも
AI 17 確率が最も高い単語が生成される方法では入力に対して必ず同じ文が生成され る。それでは不自然なため単語の生成を確率分布を用いて選択する sampling p と 12.2% の 7.66%
とこで 5.69% 魚を食べる モデルの出力xに対しsoftmaxをかけたものが確率 この確率をそのまま選択される確率とする。
AI 18 確率分布に重みをつけるパラメータ。出力の多様性に寄与する。 temperture T → ∞ :確率が均一になる T →
0 :確率の傾斜がより大きくなる。0だとサンプリングなしと等価 https://arxiv.org/pdf/1909.05858.pdf
AI 19 Top-k sampling 確率の高いものからk個を選択されるターゲットとする方法 魚 を 食べる と 12.2%
の 7.66% とこで 5.69% 習慣 5.41% 。 3.86% 魚 2.09% ことは 2.02% こと 1.89% k=3の場合、上位3つがsamplingの対象となる
AI 20 Top-p (nucleus) sampling 確率の高いものから累計してp%のものまでを選択されるターゲットとする方法 魚 を 食べる と
12.2% の 7.66% とこで 5.69% 習慣 5.41% 。 3.86% 魚 2.09% ことは 2.02% こと 1.89% p=0.3の場合、累計確率が30%を超える最小集 合である上位4つがsamplingの対象となる
AI 21 ▪ no_repeat_ngram_size ▪ 指定した数以上のngramに対し、生成を一回までに制限する ▪ repetition_penalty ▪ 生成済みの単語に対し、ペナルティをかける
繰り返しを防ぐためのパラメータ θ : repetation penalty https://arxiv.org/pdf/1909.05858.pdf
AI 22 目次 1. 言語モデルについて 2. Transformerにおける推論パラメータ 3. 言語モデルを用いた小説生成について
AI 23 ▪ 海外 ▪ NovelAI ▪ AI Dungeon ▪
国内 ▪ AIのべりすと ▪ AI BunCho 言語モデルを用いて文の生成を行うサービスの例 モデルはGPT2又は3をweb上にある小説等で用途に合うよう fine tuningしているケースが多い。
AI 24 ▪ モデルに入力できる文量に制限がある ▪ 文章量が制限を超えると書いた内容が反映されなくなり、設定が変わっ たり矛盾した行動が発生したりする ▪ 大局的な視点を持たない ▪
都度確率的に単語を生成するだけなので、文章としては破綻はしない が、所謂面白い文になりにくい 言語モデルで小説を生成する際の課題
AI 25 ▪ GPTではtokenという単位が使用される。 ▪ token数の制限 ▪ gpt-3: 4097token ▪
gpt-4: 8000 or 32000token ▪ この制限は入力と出力を足したもの ▪ 漢字一文字で2~3token消費するので日本語は不利 ▪ 「メロスは激怒した」→10token ▪ 「Melos was enraged」→4token 文量の制限についての補足 https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them https://help.openai.com/en/articles/7127966-what-is-the-difference-between-the-gpt-4-models
AI 26 ▪ AI Dungeon の例 ▪ 主要な情報は別枠で作成し入力に加える ▪ Momory
▪ 記述した内容が本文の先頭に追加される ▪ 全体的なストーリー(要約) ▪ 登場キャラクター ▪ Author’s Note ▪ 記述した内容が本文の末尾近くに追加される ▪ 物語のジャンル ▪ 好ましい文体 ▪ 何が起こっているかの一般的なプロット ▪ 入力は末尾の方が参照されやすい 入力制約に対する工夫 https://help.aidungeon.io/faq/what-is-the-authors-note
AI 27 ▪ 現状だと人間がコントロールするしかない ▪ 登場人物やシーンを人間が指定して、良さげな文章が出てくるまでtry and error ▪ 生成したい内容にあったパラメータも探索した方が良い
▪ tempertureやtop-k等のパラメータはそのとき記述したい内容によって最適 なものが変わるためそこも探索した方が良い。 ▪ 現状はGPTによる小説生成サービスは自動生成というより執筆支援とい う意味合いが強い。 大局的な視点をもたないことへの対策
AI 28 ▪ 言語モデルは推論時に複数のパラメータを用いて文章の生成を制御し ている。またそのパラメータにより傾向に変化をつけることが可能 ▪ 現状の言語モデルでは一定以上の長さの小説を自動生成することはで きない(できなくもないが異常につまらないものができる) ▪ ChatGPTの学習では出力の好ましさを人間が評価して強化学習を行
う工程が存在するが、その部分を小説に特化して設定できればもう少 し良いものがつくれるかも?(文章による人間の感情のhack) まとめと感想