見出し画像

今日からはじめるAI文芸実践入門:筆をえらぶ編

連載3回目となりました「今日からはじめるAI文芸実践入門」。今回は、言語モデルによる文章生成手法を「筆」と見立てて、その設定による書き味の違いをレビュー。筆のイメージ画にも注目です。

はじめに

こんにちは、朝日新聞社メディア研究開発センターの浦川です。

今回は「今日からはじめるAI文芸実践入門:筆をえらぶ編」と題して、言語モデルを用いた文章生成における「筆のえらび方」について書きます。

これまで2回にわたって文章生成の実践的な応用をみてきましたが、言語モデルがどのように文章を生成しているかについて細かくお話ししてきませんでした。そこで、言語モデルによる文章生成のしくみと手法を紹介しながら、実践のための筆選び=生成手法の選び方を提案してみます。

「今日からはじめる」とある通り、この記事は最近の研究や公開されている情報を元に、今できることを中心に書いていきます。また「実践」として、実際に使ってみることを主眼において、事例や技術に関する説明は簡単に紹介するか、省いています。

なお、今回は言語モデルとしてrinnna/japanese-gpt2-mediumを用い、分析と生成を行なっています。

なぜ、筆をえらぶ

これまで、言語モデルによる文章生成を「入力された文脈に沿って次の語を選ぶもの」としてきました。この〈次の語を選ぶ〉ということについて、もう少し詳しくみていきます。

例えば、今回の言語モデルに「今日の天気は」という入力を与えてみます。すると、次にくる語の候補として以下が得られました。

晴れ, 曇, 雨, 朝, 昨, いい, す, とても, 午後, あい, ...

実際には、モデルがもっている語彙の全てに確率が与えられるのですが、ここでは確率の高い順に10語を列挙しています。

「晴れ」「曇」「雨」といった、天気に関する語が挙げられているのがご覧いただけるでしょう。

また「昨日は晴れでしたが、今日は」と入れてみますと

曇, 雨, 朝, 昨, 風, ”, あい, 雲, 雪, 寒, ...

このように、「曇」「雨」「雪」といった悪天候を表す語に高い確率が振られているのがわかります(「あい」は「あいにく」の「あい」でしょう)。

さて、以上のように言語モデルのふるまいをみてきましたが、特に物語生成といった文章生成において、確率の高い語だけ選べばよい文章が得られるわけではない、ということが指摘されています(Fan et al., 2018; Holtzman et al., 2018)。

これはどういうことでしょうか。実際、先程の入力から確率が最大となる語だけを選んで生成(greedy decoding)してみますと

今日の天気は 晴れ 気温は 26°C 湿度は 60% です。 今日は 朝から 雨が降ったり止んだり で 気温は 26°C 湿度は 60% です。 今日は 朝から 雨が降ったり止んだり で 気温は 26°C 湿度は 60% です。...

こうして語がループにはまってしまう反復(repetition)が発生します。また生成内容が毎回同じになり、多様性(diversity)に欠けるとも言えます。

それでは、ということで、語をモデルの予測する確率分布に従い直接サンプリング(pure sampling)してみますと

今日の天気は  雨のち曇りの天気予報でしたが 朝から日差しが強いため 今日も天気が良いはずと・・・ 皆さん 体調管理には充分気を付けてください。 今日は、明日の 午前中までの雨が 午後から回復する 天気予報でした。雨の中 少しの時間ですが皆様に来て頂き 交流をして 皆... 今日も たくさんのご来場を 頂きありがとうございました。

内容に一貫性(coherency)のない、支離滅裂な文章が生成されてしまっています。

以上のように、言語モデルによる文章生成は一筋縄ではいかない、ことがおわかりいただけたでしょう。

そこで、さまざまに生成手法が提案されているわけですが、今日はそれらをみながら、実践に使える「筆」としての生成手法の選択とパラメータ設定を提案していきます。

生成手法をみてみましょう

以下では、「筆」の材料となる生成手法についてご紹介していきます。

beam search
beam searchは候補となる文を設定した幅bで複数探索した上で、文全体で確率の高いものを採用する探索アルゴリズムです。

確率が最大の語を貪欲に選択する場合に比べて、より尤もらしい文が得られる手法ですが、GPT-2といった大規模なモデルでも反復がみられることが知られています。

b=8として生成した文章が以下です。実際に、反復が起きていますね。

今日の天気は 雨が降ったり止んだり 曇ったり 晴れたり 曇ったり 雨が降ったり 晴れたり 曇ったり 雨が降ったり 晴れたり 曇ったり 雨が降ったり ...

temperature
temperature(温度)は「確率の高い語はより高く、低い語はより低く」するような操作です。温度を下げることで、確率の高い語が選ばれやすくなります。

以下に、temperature=0.7で生成した文を載せました。先ほどのpure samplingよりは穏やかな文が生成されているのがわかります。一方で、ここでもまた反復が起きています。

今日の天気は 曇りのち雨 最高気温が22°C 最低気温が20°Cで肌寒いです。 本日は 午前中は 雨が降ったり止んだりで 風が冷たく 寒い1日でした。 今日は 午前中は雨が降ったり止んだりで 寒い1日でした。 昨夜は 気温が30°Cの予報でしたが 気温が下がって 寒い1日でした。 今日は 午前中は雨が降ったり止んだりで 寒い1日でした。 

top-k sampling
top-k samplingは、各ステップで選択する語を確率の高い上位k個に絞った上でサンプリングする手法です。

これにより、k+1以下の低確率語を選択することなく文章生成ができます。一方で、上位の数語に確率が集中している場合など、分布によっては確率の低い語を選んでしまうという問題があります。

以下では、k=100として文章を生成しました。一見よさそうです。が、最後の文では不自然な表現がみられます。

今日の天気は 午前中から雨と風が強まってきて 午後からは風が治まったので 予定通り出発 1時間半~2時間で 頂上に着きました 途中で 山頂まで登りたそうな人を見かけて 一緒に下りて行きましたが 昨日から天気が悪くて 写真があまりありませんでした。 雨が降ったりやんだりで 天気のいい今日 山頂付近に雨は降ってませんでしたので 雨にも降られずに滑ることもなかったので 良い写真がとれませんでした。

top-p (nucleus) sampling
top-p samplingは、top-kで固定で定めていた語の候補数kを、確率分布によって動的に変えるような手法です。

語を確率の高い順に並べた上で、確率の合計がpで定めた閾値を超えるまでを候補とします。確率分布がいかなる形であっても、それに合わせた数の候補を挙げることを目指します。

以下はp=0.8として生成した文です。内容はさておき、文章の一貫性はなかなかのものといえそうです。

今日の天気は いい感じに晴れてますね 今日の午後は、2件ご依頼がございました。 お客様は、とてもいい人で、信頼してます 僕も、お客様から、信頼され、お役に立てるように、一生懸命頑張ります。 いつも、ご利用いただき、ありがとうございます 今日は、お休みをいただいて、勉強会に行ってきました。 勉強会では、とても参考になり、今後の業務に活かしていきます。

4本の「筆」たち

さてここからは、これまで見てきた手法の組み合わせからrepetition(反復)/ coherency(一貫性)/ diversity(多様性)の3軸で特性の異なる4本の「筆(=生成パラメータ)」を、その個性を表すコピーとイメージ画(※)とともにご紹介します。

- 生真面目な友人

画像1

まず1本目は、top_p=0.8, temperature=0.8とした中 repetition、高 coherency、中 diversityの筆。

一貫性の高い設定である一方、ループに陥ることも。驚きはないが真面目に文章をつなぐ、しっかりとした書き心地です。

今日の天気は 晴れ 最高気温13°C 最低気温9°C 曇り 今日は朝から 暑い一日でした。 朝から 汗だくになりながら 頑張って 掃除をしていました。 さて 今日は 午後から 休みを頂いて 久しぶりに 海に行ってきました。 今日は 午前中 天気が良かったので 久しぶりに 海に行ってきました。 今日は 午前中 天気が良かったので 久しぶりに 海に行ってきました。 
今日の天気は 晴れ 昨日は 雪が降りました 今日は 良い天気 で 寒いです 雪が降る前に 家の周りを 掃除 しました 明日 は 天気が 回復し 暖かくなるみたいです 昨日 の 午後 は 雨が降ったので 今日は 天気が良いです 今日は 暖かくなるみたいです 今日は 暖かくなるみたいです 今日は 寒いです 今日は 天気が良いです 今日は 暖かいです 今日は 寒いです 今日は 天気が良い

- 滑らかでしなやかな猫足

画像4

続いてご紹介するのは、top_p=0.9, temperature=0.9で中 repetition、高 consistency、中 diversityな設定。

一貫性を保ったまま、多様な展開を目指した筆です。

今日の天気は 快晴 の1日でした ので、今日はお昼からお散歩に出かけました。 公園で 遊んでいたところ、お友達から「どこの公園?」と聞かれ、 のんびりお散歩しながら、楽しいひと時を過ごさせてもらいました。 お友達が 遊びに来てくれたので、近くの公園でお散歩しました 。
今日の天気は いいね で始まり、今日の気分は 明日への活力 です。 仕事もそうですが、スポーツや芸術など、何かをやっていれば気分が盛り上がるのは誰でも同じです。 今日は、特に仕事が忙しいというわけでもなく、むしろむしろ充実した一日でした。 今日は、朝から一日 やらなければいけないことをやっていたら、一日が終わってしまいました。 

- 虹色の書きごこち

画像2

3本目は、top_k=512, temperature=0.9。低 repetition、中 consistency、高 diversityな設定です。

一貫性もそこそこ。文脈から多彩に文章をつないで、自由なライティングを

今日の天気は とても優しいです!!暖かくなりました!! 今日サーフィンしてると、2人組のサーファー?が、海に入って行きました。 最近、僕のウインドサーフィンスクールの生徒さんが増えてきています! まだまだ、1本あたり30分位かかるんですが、このレベルでは、十分だと思います。 今日の天気はいいですね!!! 今日のウインドサーフィンスクールでは、お友達が何人か入って来ているようなので、 最近、面白い体験をしてきましたので、報告します!!! ここのポイント! 皆さん、やっぱり、本気です!!!
今日の天気は 曇り! 明日から明日にかけて雨が降るようです。 毎年この時期になると思い出すものがあります。子供の頃。 この日の朝、僕は新小岩の親戚の家に行った。 親戚の家っていうだけあって、確かに寒いくて、ちょっと息苦しかった。 それが寒すぎて 僕は窓の外の雪に埋もれてみることができた。 ずっと 雨が降ると心配だった。 夜中にも屋根を開けて換気したりしてたが、結局 風は止まらなかった。 翌朝 東の家の玄関の戸を開けようとして 玄関の鍵 を開けた時に その冷気

- ほとばしるインスピレーション

画像3

最後にご紹介するのは、top_k=4096, temperature=0.9の低 repetition、低 consistency、高 diversityな設定。

支離滅裂でも、とにかく想像を超えた文章を出力されたものを人手で直す前提で使う、書き手の計画をあえて乱す筆、となり得るでしょう

今日の天気は 台風一過の青空が広がっています。 朝4時半頃現在、見た限りではこの梅雨に口を開けて寝ている状態の コメント欄の席にお席の用意がございませんでした事に 謝罪申し上げます。 次は大阪で「日本酒好きな方は、ぜひ」日本酒飲みましょう。 6月24日(金)~27日(月)の五... 今日は6月12日(日)ですが、外は梅雨空。 今日の天気予報では、5月ほど気温が上がらないようです。
今日の天気は とても良く さわやかな風を 感じながら 教室に到着しました。 皆さんに作っていただくのは ベージュ色のドレスです。 今日は 皆さんに 作品を作っていただきました。 全員和服を着全身のバランスの 良い 着こなしができました。 皆さんの 作品の殆どが ベージュ色で とても 可愛く 仕上がっています。  

※画像はDALLE-miniへ各筆のコピー文(の英訳)を入力して生成しています

おわりに

今回は「筆をえらぶ編」と題して、言語モデルによる文章生成のしくみからさまざまな生成手法をご紹介の上、性質の違う4本の「筆」を提案しました。それぞれで異なる書き味を感じていただけたかと思います。

実際の出力は、言語モデル自体の性質はもちろん、入力する文脈によっても変化します。実用では、人手の関与度合いや、地の文や会話文といった文脈の性質で筆を変えるなど、状況による調整が必要でしょう。

また、生成文の〈3つの軸〉での向上は今回のような生成時における手法に限らず、モデル学習時での改善など、異なるアプローチが考えられます。

我々メディア研究開発センターでは、TSUNAに代表される見出し生成といったタスクのほか、今回のような言語モデルの創造的な応用に関しても日々研究を行なっております。興味を持たれた方は、ぜひこちらまでご連絡ください。

(メディア研究開発センター・浦川通)