AIのべりすとのキャラクターブックでの≡の効果について
はてダから移行して初めてのまともな投稿ですよ。何年ぶりだ。
前書き
ヤドリ氏のnote記事にて、キャラクターブックにおいて「≡」を使うと効果的であるという紹介がなされています。
note.com
これについて、≡はAIのべりすとでのトークン外文字(<unknown>トークンに変換される)であるため、効果が無いという主張を見かけます。
ですが、あまり出力データをベースにした議論を見かけません。あまり統計的な比較をベースにした議論を見かけません。
そこで「は」と「≡」(<unknown>トークン)を使う場合について、実際に適当な数出力して、軽く比較を行ってみました。
なお、実験条件、評価方法はかなりざっくり決めたものであるため、条件・方法に対する疑義や追試あって然るべきです。
そもそも以下の実験ではt検定を使っていますが、標本数が少なすぎるため信頼できるデータとは言いがたいと思います。
標本データはあと5,6倍は欲しいですが、AIのべりすとにそんなに出力させるのはとても時間がかかるので、とりあえずこの数にしています。
ですので何かありましたらツッコミお願いします。
実験条件
「は」を使ったキャラクターブックと、「≡」を使ったキャラクターブックを用意し、1セット100回として交互に出力する。
これを5セットずつ行い、各セットについて、あらかじめ決めておいた単語が何件含まれているかをカウントする。
各セット/各単語の出現数を標本として、「は」の標本群と「≡」の標本群でt検定(両側・非等分散)を行い、有意差があると言えるかを確かめる。
なお、有意水準は0.05とする。
カウントする単語
上記12単語について確かめる。
前半9単語については「は」/「≡」のすぐ後ろにある単語なので、出力文に含まれることがある程度期待できるため、選出した。
後半3単語(「文学部」「社会学部」「両親」)については、「は」/「≡」のすぐ後ろにある単語から、比較的容易に導出可能であると考えられるため、選出した。
なお、単語カウントは1セットの出力内容を全て書いたテキストファイルに対して行うため、1つの出力に対象の単語が2回含まれる場合には、出現回数は2として数えるとする。
共通するAIのべりすとのパラメータ等の条件
- モデルはやみおとめ20B V3
- プリセットはノベルス
- モードはデフォルト
- 出力長さは150
- メモリ・脚注・禁止ワードはなし
- 禁止ワードで必ず出力を切るはオン
- コンテントフィルターはオフ
- 本文は次の通り
【カノコのプロフィール】
名前:
結果
それぞれのパターンについて、単語出現回数を以下の表に示す。
「は」のキャラクターブック
単語 | 1セット | 2セット | 3セット | 4セット | 5セット | 平均 |
---|---|---|---|---|---|---|
桑之島 | 69 | 73 | 71 | 71 | 72 | 71.2 |
父 | 16 | 6 | 5 | 4 | 10 | 8.2 |
母 | 14 | 6 | 6 | 6 | 8 | 8 |
弟 | 17 | 5 | 14 | 9 | 15 | 12 |
文化人類学 | 6 | 3 | 6 | 2 | 2 | 3.8 |
古本屋 | 17 | 14 | 12 | 16 | 5 | 12.8 |
セミロング | 0 | 0 | 0 | 0 | 0 | 0 |
茶髪 | 0 | 0 | 1 | 0 | 0 | 0.2 |
反抗期 | 1 | 0 | 1 | 0 | 1 | 0.6 |
文学部 | 33 | 30 | 31 | 38 | 36 | 33.6 |
社会学部 | 0 | 3 | 0 | 0 | 1 | 0.8 |
両親 | 12 | 2 | 10 | 10 | 11 | 9 |
考察
t検定の結果を見ると、「桑之島」「父」「母」「弟」「反抗期」については有意差があると言える。
その他7単語については、有意差があるとは言えない。
有意差があるものの中で、「桑之島」については「は」での出現回数の平均値が大きい。
残りの「父」「母」「弟」「反抗期」については、「≡」が大きい。
これらのことから、少なくともこの実験条件では、「≡」の方がよりキャラクターブックの内容が本文に出力されやすい。
しかしながら、7単語については有意差があるとは言えず、常に「≡」が「は」より優位であるとは言えない。
特に「桑之島」の場合は、平均値を比較すると、「≡」では圧倒的に出力に現れないため、全く相性の良くない単語が存在することを示していると言えるだろう。
他の有意差のある4単語については、「≡」の平均値は「は」の2から4倍程度であるが、「桑之島」ほどの大差は出ていない。
結論
「は」と「≡」の効果の違いを確かめるため、一定回数の出力に含まれる単語の出現回数の平均値から、二者間に有意差があると言えるかを確認した。
その結果、4単語について「≡」を使ったキャラクターブックがより良く本文にその中に含む単語を出力し、1単語については「は」の方がより良く出力した。
ただし、「≡」を使うことによる出力数向上の程度と、「≡」を使うことによる出力数低下の程度では、後者の方が顕著である。
この結果から、次の方法を採ると良いと考える。
- まずは
「は」を使って「≡」または「は」を使ってキャラクターブックを作成する。 - 100回程度出力してみて、あまり反映されないと思われる要素について、1カ所だけ
「≡」に変える。「≡」ならば「は」、「は」ならば「≡」に変える。 - さらに100回程度出力してみて、出力が改善されたかどうか確認する。
- 改善されていれば
「≡」を使ったままにして、そうでなければ「は」に戻す。そのままにして、そうでなければ元に戻す。 - これを繰り返す。
以上の操作により、最適なキャラクターブックの構築が可能だろう。
資料
この実験で出力したデータは以下のURLからダウンロード可能。
https://ai-novelist-share.geo.jp/ainovelist_test_data_20220813.zip
コメントへの返信
コメントを頂きましたので、返信します。
実験レポートへのダメ出しの回答を久々にしたので、返信まで時間がかかってしまい申し訳ないです。
また回答に合わせて、上のレポートに微修正を加えています。
修正前のものは打ち消し線で消しています。
ヤドリさん
回答日時:2022/08/18 3:08
1.「桑之島」が異常値、外れ値である可能性が高くないか?
唯一、「名前:」という誘導があり、実際に結果も他の傾向から乖離しています。
他の11単語による結果と同一視して良いのか疑問があります。
「名前:」を削るか、「名前:桑之島カノコ」まで書いてスタートした方が
各単語の比較という点で妥当だと思うのですが、どうでしょうか。さすがに異常値かも知れない一例のみで、出力数低下の程度が顕著という断定は厳しいと思いましたね。
せめて他と同じ条件で二つほど例が欲しくなります。
おっしゃるとおりです。
一例では「下がる場合がある」という例にはなっても、「一般に下がる」とは言えません。
AIのべりすとの公式Discordでも「本名は」で1トークンであるとの指摘があり、サンプルとして用いるのに適切ではありませんでした。
ただ言い訳をさせていただきますと、この実験はあくまでも定量ベースの議論をするためのたたき台として、ごく小さな出発点として行ったつもりでした。
しかし、せっかくレポートを書くなら論文風にしようという思いが中途半端に入り、その辺りの説明に気が回っていませんでした。
このレポートにおける最大のミスです。
申し訳ありません。
2.「桑之島」と「父」「母」「弟」「反抗期」は等価か?
レアな苗字に過ぎない前者に比べて、プロフィールで頻出する単語複数を同等として良いのか問題。「は」の使用を推奨するよ! なぜなら「桑之島」が出やすいからね!
とか言われても、自分ならうーんってなります。
いくら出力回数が高かろうと、他の4単語を犠牲にしたいとは思いません。
もちろん、苗字やフルネーム全般が出やすいと判明すれば別ですが、それを調べるのは相当大変でしょう。ただ「≡」が家族系の単語と相性が良いだけなのを三重、四重取りしている可能性も否定できないです。
「桑之島」と「父」「母」「弟」「反抗期」の関係については、出現割合の平均値の合計から、ある程度相当と見なせるのではないかと考えました。
しかしながら、あくまでこのサンプルセットでは、ということで、結論部分にその注釈を強調して書かなかったのは不適切でした。
「≡」と、他トークンとの関係を語るには、データ不足でした。
3.出力数低下の評価は適正か?
なんというか「≡」桑之島の14.6ですが、「は」側の平均と比べると勝るのは桑之島、文学部だけです。
それに対して、「≡」側の平均だと勝るのは4単語。
つまり、あくまで「≡」側としては低いだけで、「は」側の基準だと上から三番、しかも文学部の値は
有意差を認められなかったもので、有意差があるものだけ抜き出せば「は」桑之島の次になる訳です。「は」側の弟や古本屋よりは高い確率で出力されるのに、低下を問題視するのは妥当でしょうか。
「は」をフラットであると考える事に根拠があるのか?
出力率は高ければ高いほど良いのか? 一定以上を満たしていれば十分ではないか?
みたいな問題も内包されるように思えます。
それぞれのキャラクターブックの結果の中で、異なる単語同士の平均を比較することは、あまり意味の無いことだと私は考えます。
なぜなら、各単語には「は」や「≡」に依らない「既定の出やすさ」のようなものがそれぞれある、と想定しているからです。
この考えに立つと、異なる単語はそもそもの「既定の出やすさ」が異なるのだから、そこから「は」や「≡」で変化した値だけを比較しても、それほど有用な値は出てこない、となります。
この想定もまた正しいのかどうか分かりませんが、このレポートではそう仮定しています。
上記のことから、「桑之島」についてその差分だけに注目するのは妥当だと考えます。(ただし、1の回答の通り「本名は桑之島」という文が外れ値であるので、その観点では妥当ではありません。)
「は」をフラット(基準)とすることの根拠ですが、自然に文章を綴った場合は、助詞に「は」を使うだろうと考えられるので、それがある程度の根拠にはなると思います。
しかし「既定の出やすさ」の観点からすると、もう一軸として「助詞無し」の出力も行い、それを基準にすべきだったかもしれません。
出力割合がどの程度であるのが望ましいかについては、今後の検討項目にすべきだと思います。
4.やっぱり結論が実用的ではないというか……大変?
実行しろ、という意味ではないのは分かります。
それに人気作品のキャラクターブックを複数人で作って共有するなら、ありでしょう。ただ結局、「は」と「≡」のどちらを使えばいいの? という話をするなら、
「≡」を薦める事はそれほど妙な話ではないように思えます。
反論材料が特殊例の可能性がある「桑之島」だけで考慮に入れて良いかどうか分かりませんし、
実際に小説を書く場合、使用頻度の点では「桑之島」よりは、「父」「母」「弟」の方が高いはずで、
頻出単語で2~4倍は十分に根拠のある話ではないでしょうか。自分なら先に「≡」で作って、困ったら要所で「は」を試せば良いように思えます。
本当に「桑之島」ぐらい伸びが顕著なら、体感で分かりそうなので。
はい、実際小説などを書きながら検討していくのは大変だと思います。
しかし、ここを起点にして、今後より効率的な検討手法を調査・開発できれば良いと思い、この実験によって分かった部分のまとめとして結論を書きました。
「は」より先に「≡」を試すべきではというのはその通りです。
個人的な習慣として、キャラクターブックを書くとき、『入れたい項目をとりあえず普通の文章で書いてから削る』という方法を取っているため、そこに「≡」の使用を入れ込むと思って書いたため、あのような描き方になってしまいました。
客観的視点が足りていませんでした。
5.後半3単語が有意差のない単語数の水増しになっていないか?
うーん、導出した理由が評価できないので何とも言い難いのですが。
考察に7単語と書いてある以上、指摘せざるを得ないです。
「≡」が大きいのが4単語として、有意差がないのが同じ4単語か7単語では印象に差がありますよね。
「常に」というと大げさですが、「概ね」優位とは言えたりしないでしょうか。
その可能性は否定できません。
このレポートを書く前の予備実験で何度か出力した際に、『類推される単語も含んだ方がより差が明確になるかも知れない』と思いついたため、それらの単語を対象に加えたのですが、いざ実験を終えてみると有意差を示すことが出来ず、結果的に水増しになってしまいました。
このレポートでは、その3単語についての妥当性を一切検証していないため、今後は類推される単語の選出基準の明確化、もしくは使用しないことが必要かもしれません。
または出力に対して形態素解析を行い、各品詞を機械的に抽出・比較を行うことも方法の一つかもしれません。
「≡」がおおむね優位というのは、私も同意するところです。
と申しますか、このレポートでも「≡」はおおむね優位であると書いていたつもりなのですが、ヤドリさんに限らず、いただいた反応を見るとあまりそのように受け取られていないので、自分の文章力のなさを痛感しています。
0.出力データをベースにした議論を見かけません?(記事の主旨に関係ない)
えっと、じゃあ皆さん他に何を根拠に主張しているでしょうか……?
に変換される事と、 だから効果がないという事には隔たりがある訳で。 ぶっちゃけ、検証回数を明示していない個人研究を各所で紹介されるのが気に食わない、という
気持ちは分かってしまうのですが、さすがに無根拠で噛み付くまで行くと人格を疑いますね。
申し訳ありません。
形だけ論文風にしようとするあまり、先行事例に対する配慮が欠けておりました。
「出力データをベースにした」というのは、本レポートで行っているような量的比較という意味でした。
非公式wikiや5ch、ふたばなどのコメント見ている限り、それぞれの方が「≡」を試行して、使わない場合と比較し、その結果を基に発言されていると認識しています。
それも「出力データをベースにした」には違いないでしょう。ただそれは各人の経験によるものであると、私は考えます。
そのため、本来その違いと、何故違うと考えるのかから説明するべきであるのに、それを怠ってしまいました。
重ね重ね、申し訳ありません。
ただ、他の方に噛みついたり、蔑んだりする意図は無かった、とだけ弁明させてください。
ところで余談なのですが、技術の発展において経験は重要な要素ですが、その技術を安定させるには理論的であったり、量的な裏付けが必要です。
例えば、PID制御のパラメータ調整は経験的に知られた方法、または熟練の職人の技が必要でした。
それに対して様々の方法が検討され、今日では数値解析的、統計的に自動調整が可能になっています。
それに倣うというと大げさですが、出来るだけ少ない手間でよりよい結果を得られる手法(もしくはシステム)を実現したい、というのが私の無謀な目標です。
(ただ、以前AIのべりすと作者のStaさんが、文章を出力するAIと、文章を評価するシステムを合わせて使うのは筋が良くない、的なお話をされていたので、そもそも有用な物になるかは甚だ不明です。)