AIが俵万智さんの歌集を学習したら 開発者が言語モデルを解説

メディア研究開発センター員・浦川通
[PR]

 朝日新聞社メディア研究開発センターが、短歌を生成する「短歌AI」をつくりました。これはいったい、どうやってつくられ、どんなふうに動くものなのか、解説します。

 みなさん、「短歌」って好きですか。私はけっこう好きです。最近流行(はや)っているなんてことも耳にします。きっと悪い印象はみなさん、お持ちでないでしょう。

 それからみなさん、「AI」って好きですか。私はどちらともいえませんが、最近、未来にヒトの仕事が奪われる、なんて文脈でよく耳にします。ひょっとするとみなさん、そんなに好きじゃないかもしれません。

 さて、この一見遠く離れたところにある二つのものが出会ったとき、なにが起こるでしょう。朝日新聞社メディア研究開発センターが開発した〈短歌AI〉を知ることで、「短歌」と「AI」の相性がちょっと見えてくるかもしれません。

短歌を「生成」する〈短歌AI〉

 短歌AIは、入力される言葉をもとに、それに続く短歌を生成することができる「言語モデル」です。

 言語モデル――聞き慣れない言葉かもしれません。これは、言語によって表現された「入力」から、その続き=「出力」を生成するモデル、といってよいでしょう。

 よりわからなくなった、という声が聞こえてくる気もします。たとえば、小説を生成する言語モデルをつかったアプリケーションに「AI BunCho」や「AIのべりすと」があります。これは、地の文や会話文からなる小説を入力すると、その続きを生成するモデルを用いることで、執筆の支援を行ってくれるというものです。

 また最近では、プログラムのソースコードの続きを書いてくれる「GitHub Copilot」が話題になりました。プログラムも文字の組み合わせ=テキストで表現されるわけですが、たとえば「get_date()」という関数名を入力すれば、実際に日付を計算するプログラムをその続きとして生成する、そんなモデルになっています。

 つまり、〈入力された内容の続きを書いてくれる〉言語モデルなのですが、〈短歌AI〉はこれを短歌という表現形態のなかで行います。

 短歌は文字によって表され、目で読むことができる表現であることに加えて、「音」を欠かせない要素としてもっています。三十一文字(みそひともじ)ともよばれる〈定型〉があり、5・7・5・7・7音でそれぞれ構成されたフレーズ(句)をつないで一つの歌がつくられます(あえてこのリズムを崩す場合もあります)。

 短歌AIでは、日本語版「Wikipedia」からこの短歌の〈定型〉を満たす文章を自動で抽出し、それらを学習データとしてモデルをつくっています。さらに、内部で日本語の「音」に対する学習も行っていて、「三十一文字まで、あと何音残りがあるかしら……」ということを気にしながら生成を行います。その結果、短歌の定型をみたすテキスト=短歌のようなもの、を出力することができるのです。

 ここまで長々と説明してきましたが、実際の動きを見てみることでより「それがなんなのか」わかるでしょう。たとえば以下では、「揺れている>」という入力を与え、その後に続く形での短歌生成を行っています。

 

 揺れている>構造物が>あるとする>場合に限り>地震の揺れは

 

 いかがでしょうか。短歌の定型を満たしながら、「続きを生成する」ことができているかとおもいます。一方で、結果として出力された短歌のようなものをみてみると、学習データである「Wikipedia」らしい、事物に対する説明文的な内容が生成されているように感じられるでしょう。

 そこで、例えば以下のように入力に「より短歌っぽい」内容を与えてみますと

 

 入力:揺れている>光の中で>  出力:見る夢は>過去の出来事>あるいは想起

 入力:揺れている>光の中で>車たち>  出力:人間が歩く>ようにも見える

 

 こんな結果が得られました。「夢」「過去」「想起」など、先程よりはすこし叙情的ともいえそうな語が登場し、また比喩表現なども生成されていることがわかるでしょう。

 このように、短歌AIは入力に与えられた言葉の表現する文脈を考慮しながら、三十一文字のテキスト=短歌を生成することができるモデルとなっています。

俵万智さんの全歌集を学習した〈万智さんAI〉

 さて、ここまで見てきたように短歌AIでは「短歌の定型を満たすテキストを生成する」ことができましたが、その内容は学習データである「Wikipedia」に近い、無味乾燥なものでした。この状態で、ほんとうの意味で「短歌を生成している」といえるでしょうか。

 言語モデルは、学習するデータによってその生成も変化するものです。ここでたとえば「ほんとうの短歌」を学習できれば、より「らしい」生成が期待できるわけですが、ここにはひとつの壁がありました。

 たとえば、おなじく日本語の定型詩である〈俳句〉には「現代俳句データベース」のように形の整ったデータセットがありますが、短歌にはそういったデータが存在しません。さらに対象を現代の人でも自然に読んで解釈することのできる「口語」短歌に絞ると、そのほとんどが最近の詠み手によるデータとなり、それをそのまま学習に用いてよいのか、法律やモラルの問題が絡んでくるでしょう。

 要するに、「データに乏しかった」のです。〈ほんとうの短歌〉を学習するには、たとえば〈実際に活躍する歌人の協力〉などが必要であることがわかってきました。

 ちょうどそのとき、でした。歌人の俵万智さんが「朝日賞」を受賞されたことをきっかけに、〈短歌AI〉を俵さんに紹介する機会を得ることができました。さらに、俵さん自身の歌集を学習データとすることにも、快く了承いただけたのです。

 こうして、「サラダ記念日」から「未来のサイズ」までの6冊、2300余りの歌を、学習データとして「短歌AI」にさらに学習させることで、〈万智さんAI〉が誕生しました。

 実際に生成したものを見てみましょう。

 

 入力:二週間>前に赤本>注文す  出力:この本のこと>きっと息子は

 入力:一人称>あまり使わぬ>日本語に  出力:君の心を>隠しているか

 入力:バンザイの>姿勢で眠り>いる吾子よ  出力:「いいんだ」という>言葉の向こう

 

 いかがでしょう。さきほどのモデルより「より短歌らしい」生成がおこなわれているように感じます。俵さんご本人も、生成されたものの結果をみて「私っぽい」と反応されていました。家族を思わせる単語や、会話体=かぎ括弧の用い方など、歌集に収められている俵さんの歌から語の使い方を学習しながら、より「らしい」生成をする〈万智さんAI〉ができたのです。

AIができること/AIだからできること

 〈短歌AI〉〈万智さんAI〉がどうやってつくられてきたのかをこれまで紹介してきましたが、これらの言語モデルとしての動作について、もう少し詳しくみていきたいとおもいます。

 まず、「言語モデル」は、与えられた入力に対して一つの出力のみを返すというわけではなく、生成の際のパラメータ設定によって、結果をさまざまに変化させることができます。

 たとえば、言語モデルが単語を選ぶ際の「候補の幅」を広げたり狭めたりすることで、入力された文脈からもっともらしい語を選んだり、そこからの飛躍を生んだりすることができます。〈「この味が>いいね」と君が>言ったから〉という入力に対する、二つの設定における出力を見てみましょう。

 ○もっともらしい語を選ぶ設定

 「この味が>いいね」と君が>言ったから>この店はいつも>満員になる

 「この味が>いいね」と君が>言ったから>この店はみんな>気に入るだろう

 「この味が>いいね」と君が>言ったから>この店はまず>成り立っている

 ○より飛躍のある語を選ぶ設定

 「この味が>いいね」と君が>言ったから>こうなったんだ>きっとそうだね

 「この味が>いいね」と君が>言ったから> それでいいんだ>うしろ姿の

 「この味が>いいね」と君が>言ったから> 俺もそれを言う>理由がある

 (いずれも〈短歌AI〉による出力)

 「優等生」と「じゃじゃ馬」とでもいいましょうか。パラメータの変化によって、まるでモデル自身の性格までもが変わったような生成を得ることができ、これを意図的に操作することで「ツール」のようにして言語モデルを扱うことができるでしょう。

 また、短歌AIのAIらしい特徴のひとつに、短時間でたくさんの短歌を生成できるという点があげられます。

 たとえば現在のモデルでは、約1秒の間に100首を生成することができます。これはいままで短歌を実際につくってきた現場ではみられなかった現象ともいえるでしょう。まるで、「わたし」ではないだれかが100人参加する歌会が開かれ、さまざまに「こんな歌になる可能性もあったかもね」と指摘してくれているようにもみえてきます。

 そしてこの、「わたし」ではない「もの」=AIが生成する、ということも「ならでは」の点として見逃せないでしょう。俵さんは、AI生成は人が詠んだものではないから詠み手も遠慮なく反応できる、といったことをおっしゃっていました。「わたし」でも「あなた」でもなく、あなたの「友達」でもなければ「先生」でもない、人ではない〈もの〉による生成だからこそ生まれる、新しい反応が引き出される可能性を秘めています。

ところで、どうして短歌を生成するの

 ここまで、〈短歌AI〉がどのように生まれ、それが学習データによってどのように変化し、また学習を終えたモデルにどんなことができるのか、それぞれみてきました。

 ところで、いったい、なぜ短歌をAIによって生成するのでしょうか。

 技術的にいえば、短歌が現在の言語モデルによってその最初から最後までを生成できるフォーマットをもっていた、ということがいえるでしょう。日本語による、比較的短い31音を基本とする文字列であり、モデルが学習から生成までを行いその結果をみる――ここまでをやりきることのできる文章表現として「短歌」がありました。

 では、実際に人が短歌を作歌するという現場において、なぜAIで短歌を生成するのか、その意味や意義を見いだすことはできるでしょうか。

 たとえば俵さんは、「伴走者としてのAI」といった付き合い方を提案されていました。仮に「上の句」までを書いて、その続きに悩む人がいるとします。そこに〈短歌AI〉があって、続きをいくつもいくつも生成させる。人が詠んだものではないので、気を使うことなく、それらに対して「これは違うな」といった、正直な反応ができる。その過程の中で、自分のほんとうに詠みたかったことを探す……そんな伴走相手としてのAI像が今後ありうるかもしれません。

 筆者は以前、短歌研究新人賞の最終選考を通過した「バニラ・シークエンス」という連作の中で、該当部分を明記した上で、一部AI生成によって得られた歌を収録する、といったことをしました。

 

 毒殺をはかられたことのない身体二つ並べて豆腐をつつく

 毒殺をはかられたことのない身体〈余生を送る_ことを望んで〉

 

 上は筆者自身による歌です。下は上の句だけ筆者と同じもので、AIによる「付句」を行った形になっています。当初はこれがなにを意味するものなのか、はっきりわからないでいたのですが、こういった形で両者を見比べることで、まるで私の歌に対してAIが「ちゃかし」を入れているようにも見えてくることに気づきます。結果として、〈私〉ではない〈もの〉が生成した結果と対比され、より〈私〉がどんな人間であるのか見えてくる、そんな連作となったとおもっています。より詠み手をさらけ出してしまうためのAI、といえるかもしれません。

 「伴走者として」「〈私〉を暴くものとして」のAIを例に挙げましたが、きっとこれら以外にも「どうして生成するの」という問いへの答えがあるでしょう。

 ぜひみなさんにも、短歌やAIに触れながら、あたらしい答えをみつけていただけたらとおもいます。(メディア研究開発センター員・浦川通)