entry-header-eye-catch.html
entry-title-container.html

entry-header-author-info.html
Article by

【人工知能×創作】AIで小説を書くのに挑戦(AIXオンラインセミナーに参加)してみた

pixivの小説サービスを改善している Webエンジニアの pawa と申します。本日は、国立大学法人 電気通信大学 人工知能先端研究センター(AIX)主催の「AIで小説を書こう!」セミナー(2020年8月23日,24日)の参加レポートお届けします。

なぜ参加するか

pixivのイラストサービスでは「着色」において既にAIが取り入れられています。近い将来、小説サービスでもpixivユーザーがAIを使うことになると想像できます。現状のAI技術で、あるいは、AIがより実用的になったとき、どういう価値をpixivのユーザーに届けられるか――それを考える良い機会になると思い、ハンズオンが充実している本セミナーに参加しました。

ハンズオンその1「30年後の未来をイメージした絵や写真をAIに取り込んで小説を書いてみよう」

画像を元にして単語リストをAIで生成

最初のハンズオンでは30年後の未来をイメージした色付きの絵や写真の事前提出を求められました。提出期日までにイメージに沿う絵や写真を自力で用意できなかった私は「イラストAC」というサイトからそれらしい画像を拝借しました。

画像をアップロードすると、図1のように、主催側が用意してくれたAIがその画像を分析して単語リストを返してくれました。

図1: アップロードされた画像から単語リストが生成されるまで
図1: アップロードされた画像から単語リストが生成されるまで

実際に返ってきた全単語リストは以下の通りでした。

社会集団 降る 蒼い 静か サヨナラ 見送る いつか 自分 嵐 ゲーム 写真 渚 思う 今度 失う 去る 真実 運ぶ 通る 瞬間 訪れる 軽い 飛び込む 船 鏡 グラス この世 切ない 映す 巡る 都会 渡る 波 傘 バス ガラス 片隅 雲 煙草 投げる 海 存在 北 放つ 街 指輪 年 世 他人 夜明け 許す 羽 他 溢れる 視線 浴びる 忘れる 長い スピード 時間 酒 地球 流れる 仕事 壁 銀河 それぞれ まわり 濡れる 眺める 側 消える 外 足りる 部屋 淋しい ため息 羽ばたく 寂しい 正直 場所 遠い 並ぶ 約束 考える 予感 飲む 先 一瞬 息 道 ページ 確か 彼方 別れ 時代 翼 自由 置く 景色 覚える 

使ったイラストが複数要素を詰め込んだ解釈の難しそうなものだったせいか、期待していたよりトンチンカンな単語リストが返ってきました。

単語生成アルゴリズムは、画像を45色の色彩ベクトルに変換した後、作成済みの単語-色彩データベースから類似した色彩ベクトルを持つ単語を検索するというものだそうです。

生成した単語を用いて文章を生成

「小説家になろう」(小説投稿サイト)にある約2000件のSF小説(10億字以上)をWord2Vec で学習したAI(学習済みモデル)が主催者側で用意されました。ハンズオン形式でこのAIを使って文章を生成していきました。

より具体的には、図2のように、Googleの「Colaboratory」というWebアプリケーション上に用意されたAI学習・起動プログラム(とでもいいましょうか)をクリックでポチポチと実行するだけでAIがセットアップされました。

図2: Colaboratory上にあるソースコードの一部
図2: Colaboratory上にあるソースコードの一部

このAIは図3のように単語を入力として類似した単語を含む文章を生成してくれます。

図3: 単語を入力として類似した単語を含む文章を生成するまで
図3: 単語を入力として類似した単語を含む文章を生成するまで

単語リスト1つ目の「社会集団」をAIに入力すると「登録されている単語ではありませんでした。」と出た(「イラスト→単語リストのAI」と「単語→文章のAI」で単語分割の基準が異なるためと思われる)ので「社会集団」を私が手動で「社会」と「集団」に分割して「社会」を入力してみました。これに対する文章生成結果は以下の通りでした。

↓の1つ前の文
「社会」似た単語を含む文(AIがランダムに1文選択,似た単語は「社会」に置換される
↑の1つ後の文

ここに、実際には執筆欲を掻き立てられる文章が表示されます*1。この執筆欲を掻き立てられる文章からインスピレーションを受けて地の文を人手で書いていきました。

ハンズオンその1の所感

書きたいものがある人には回りくどいやり方だと感じられますが、何を書けばいいか分からない多くの人にとっては、AIによってインスピレーションを受けて「書き出す」ことを強力に後押ししてくれる良いシステムであるように感じました。もっと例示できればこの魅力が伝わるのですが、引用される側の作者の心情への配慮と著作権法上の理由で割愛します。AIを利用せずに書く場合でもいろんな作品にインスピレーションを受けて書くので、まっとうなAI活用方法であると感じました。

ハンズオンその2「AI同士を対話させて小説を書いてみよう」

地の文はハンズオンその1でAIと協同で書けるようになりました。ハンズオンその2では会話文をAIと協同で書いていきました。

今回のハンズオンでは、青空文庫の小説から対話データを収集した用例ベースの対話システムが用いられました。

用例ベースの対話システムとは、例えば、「腹いっぱいで、眠い」→「まだ、シャーベットがあるのよ」という対話例を学習済みの場合、「お腹いっぱい」という入力に対して、AIがこの学習済みの用例の発話と意味が大体同じと判断して、「まだ、シャーベットがあるのよ」を返す――というような具合です。

最初は ElasticSearch というテキスト検索エンジンで類似する用例テキストを検索して対話させるとどうなるかを体験して、その後、BERT という深層学習モデルを用いたものも合わせて利用して、対話として適切さの高い用例を対話の選択肢に出すとどうなるかを体験しました。

深層学習を利用する理由は、

  • ElasticSearch で類似度が高い用例が必ずしも応答として妥当とは限らない(例えば、使われている単語の一致度は高いが言わんとすることは逆のケースなど)
  • 類似度が高い用例が存在するとは限らない

などがハンズオン開始前の説明で挙げられました。

事前学習済みの BERT を青空文庫の対話データで Fine-tuning(タスクに依存した情報を学習)することで、AIが用例の適切さを判定できるようになるようです。

実際のAI同士の対話

実際のAI同士の対話を見てみましょう。(タイトルは対話を生成した後で私がそれらしいものを手動で付けました)

ElasticSearchのみのバージョン

タイトル:人工知能って知ってる?

「人工知能って知ってる?」
「何時か御兄さんから伺いましたよ」
「そう」
「――?」

タイトル:繃帯のことを略して鉢巻きというんじゃ*2

「お腹いっぱい」
「まだ、シャーベットがあるのよ」
「あれ、まいったな」
「カン詰の塔みたいだよ。あの中に、なにがはいっているのかしらん」
「だんな、ほんとうですかい。ほんとに人間があの塔の中にいますか」
「いるとも。ちゃんと見える」
「はて、何者かしらん。このあたりの衆はだれひとり近づかないはず。だんな、その人はどんな姿をしていますか」
「ちゃんと服を着ているよ。頭のところに白い布で鉢巻きをしている。鉢巻きではなくて繃帯かもしれんが……。ちょいと君、これで見てごらん」
「繃帯ぐらい、わしは知っているよ。繃帯のことを略して鉢巻きというんじゃ」
「強情だの、おまえは」
「強情ではござりませぬ。」
「目をつぶろう……」
「はあ」
「なにが、はあはあじゃ。もう、教えてやろうかと思ったが、やっぱり教えないでおくか」
「よくそんな事がわかるな」

ElasticSearch+BERTバージョン

タイトル:人工知能って知ってる?

「人工知能って知ってる?」
「ああ、名は知らなかったけれど、その仕掛なら、知っていますよ」
「ナニ前からこの仕掛があった? 誰から買ったのかネ」
「さあ、そいつは誰だったか覚えていないが、とにかく何処の国にもある人売稼業の男から買った」
「あっはっは、その顔色じゃ知っていると見えるな。」
「はい、それは……」
「変じゃないか。どうも君らしくないが……。一体君はどこで話をしているのだ。本当に生きているのかね。それとも……」
「ああ、そうですか。しかし三ヶ月前まで生きていたことが分かっても、大したことではありませんね。」
「そうでしょうね」
「はっはっはっ。そうですよ。あなたのおいでを待っていたのです」
「ああ、そうですか」
「そうです。博士は、ひところ、警視庁でも活躍していた人ですが、今は、自分の研究所に立て籠っています」
「あ、そうですか。それは、実にありがたい。アーガス博士でしたね」
「えっ、博士を、……」

ElasticSearchのみのバージョンよりは発展しました。青空文庫にある作品が書かれている時代には人工知能という言葉すらなかったのかもしれませんが、「仕掛け」として知ってもらえました。(しかも人売稼業の男が売っているという…)

タイトル:「繃帯のことを略して鉢巻きというんじゃ」までたどり着かないのじゃ

「お腹いっぱい」
「何だったんです」
「べつに……何も……」
「ふふうん!」

違和感のない対話が行われましたが、こちらはいまいち発展しませんでした。

対話システムUI

対話システムは、最初の発言だけ人手で入力してやるとあとはAIが応答文を10個挙げてくれるので、そこから良さそうなのを人手で選ぶというものでした(図4)。もし良さそうな応答文がなければ入力欄に人手で入力して進めることもできる仕様でした。(その後にまたAIが10個応答文をくれます)

図4: 対話システムUI
図4: 対話システムUI

AIの応答候補の「えっ、味噌汁?」や「お口に合って接待係も…(略)」などの別ルートを選択するとどうなるかもすぐに試すことができます。(無限に遊べます)

BERTを使うか使わないか

BERT版だと奇想天外なものが出にくくなるので、ElasticSearch単独版のほうが良いケースもあるかも――という主旨のことを主催者側で言われていました。「この次の応答は無難なのがいいからBERTありで」とか、あるいは、その逆みたいに都度選べるようにしてもいいかもしれませんね。

ハンズオンその2の所感

AI同士の対話で良さそうなのを選んでいくだけで進行していくことに感動しました。別の小説作品群で学習したらどんな対話が行われるかなど夢が広がります。地の文がまったくなくても、AI対話をベースに構想を練って小説を書き始めることもできてしまうと感じました。

招待講演と特別対談

ハンズオン以外にも、招待講演と特別対談もありました。東京大学大学院 情報理工学系研究科 次世代知能科学研究センター教授の松原仁さんの招待講演では、創造性のプロセスは generation & test であるとすれば、

  • コンピュータは generation が得意(人間は不得意)
  • コンピュータは test は不得意(人間は得意)

であるという説明が印象に残りました。ヒトとAIがこの得意・不得意を補い合える世界になるといいですね。

作家の石田衣良さんと電気通信大学 副学長の坂本真樹さんとの特別対談では、「小説を書く上でAIに何ができたら使ってみたいですか?」の質問に対して石田衣良さんの「アンチパターンをAIに教えてほしい」との回答が興味深かったです。書籍の『ベストセラーコード』や『数字が明かす小説の秘密』でもいくつかアンチパターンが示されています。これらのアンチパターンを将来的に執筆サポートに生かしていくのはどうだろうかなど思案させられました。

総評

「AIと一緒に小説を書く」ことがどういうものかが分かり、セミナー2日目には期待を大幅に上回るものになっていました。これを無料で受講できていることに恐ろしささえ感じました。大変ありがたいことです。

何をもって良い作品とみなすかをAIには判定できないために、まだAI単独では良い小説を生み出せません。しかし、ヒトとAIが協同で良い小説を生み出すことは現時点でも十分に可能であるという所感を得ました。

現在でここまで出来るなら、pixivの小説サービスでもAIで小説執筆を支えてみたいと私個人として強く感じました。

以上、「AIで小説を書こう!」セミナー参加レポートでした。

*1:伝わりづらくて申し訳ないのですが作者の心情に配慮して引用せずに伏せることとしました。

*2:この特徴的なセリフは海野十三の『超人間X号』に用例があります。

20191219021115
pawa
2015年10月に新卒入社。言葉を扱うWebアプリケーションを作るのが好き。好きなCGIスクリプトはWeB DoRaMa。