GPT-2を使って小説を書いたよという話
工学部出身ですが、小説を書くのが趣味です。
純文学、と自分で言うのは恥ずかしいのですが、エンターテイメント性に乏しい小説なので、あえてカテゴリ分けするとそうなってしまいます。
自分で書いた小説を本にして、年に1回ほど 文学フリマ で売るのが、ライフワークです。
かつては新人賞に応募をしたこともありますが、箸にも棒にも引っかからず、今に至ります。
そんな僕ですが、工学部出身ということで、技術系、特に機械学習関連のトピックには関心があり色々と自然言語処理系のAIを調べていたところ、OpenAIという会社が作っているGPTという大規模言語処理モデルにたどりつきました。
さらに人に聞いたりネットを調べたりしたところ、hugging faceというプラットフォームでGPT2というバージョンの日本語モデルが公開されている!使ってみたい!
よし、次の小説は、AIを使いながら書いてみよう!
この安直な思い付きが今回の出発点です。
でも私はプログラマでもなければエンジニアでもありません。pythonで開発するための環境づくりも難しそうだし…。と思っていたところ、知人から「Google Colab」というサービスがあるよ!と教えてもらいました。
これなら面倒な環境構築なしで、ブラウザだけで文章生成が試せる!
ということで、まずは下記の本で、ちょっとだけpythonの練習。
そして下記ブログを頼りに、自分でも文章生成を試してみることにしました。
頼りにというよりも、そのまま。そりゃそうですよね。中身のpythonコードに何が書いてあるかなんて見てもわからないんですから。
ちょっとだけ変えたのは、ファインチューニングに用いるテキストを、過去に書いた自分の小説にしたということ。これは技術力が無い中で、どうやって自分の小説にいい感じで取り入れるかを苦心して考えた結果です。
プログラムを改造する技術は無い
自分がほしい小説に使えそうなテキストデータをウェブからかき集める技術も無い
でも、なんとかgpt2を自作小説に使いたい!
過去に自分が書いたもので学習させれば、自分が気に入るフレーズが出力されるのでは…?
AIっぽい存在と対話するような形にすれば、多少不自然なフレーズでも自然に見えるのでは…?
出力結果が変でも、たくさん出力して気に入ったものをピックアップすればいいさ!数うちゃ当たるだ!
・・・なんとも浅はかな発想ですが、こういうアホなモノを作る人もきっと世の中には必要ですよね。
というわけで実際にGoogle Colabを使って、書きかけのフレーズを入力して続きを出力させてみる、というのをやってみました。
生成してみた
ざっくり工程を分けると、、
ライブラリのインストールなどの下準備
ファインチューニング用のテキストの下ごしらえ
ファインチューニング
生成
という4つのステップに分かれます。終わってみると「なんだそんなことか」と思うのですが、わかるのとできるのとの間には高いハードルがありまして、なかなかに苦労しました…。
特に大変だったのは、2.ファインチューニング用のテキストの下ごしらえ です。
いろんな媒体に書いていて、テキストファイルを一か所にまとめて持っていないものだから、集めるのに一苦労でした。
生成結果は、例えばこんな感じです。
画像だと少々わかりづらいのですが、「喜びも哀しみも、」というフレーズを与えて、それに続く文章を生成しています。
このあたりのフレーズ、どうでしょう、なんだかかっこよくないですか?
今回の新作小説には、ところどころに、こんな風にAIが生成したフレーズをちりばめています。どこがAIが作った部分なのか、探してみてください。当たった方には拍手を送ります。
一か所だけ例をあげると、本文中でAIが生成したフレーズはこんな感じです。
例はすごく短いですが、もう少し長い部分もあります。
「どうぞ。どうか。」を2つ並べるというのは、思いつきそうでなかなか思いつかない発想で面白いですね。
今後のチャレンジについて
今回、僕にとってはかなり大きなチャレンジでした。実は仕事でもAIに関することをほんの少しだけ学んでいて、その中で「AIは発見的手法に使えるかも」と思ったのがきっかけでした。
ごく簡単な方法ではありましたが、思いがけない言葉のつながりがいくつか見つかったのは、書いていてとても楽しかったです。
よい編集者と出会うことで作家は変わる、などと言われたりしますが、編集者とはいかないまでも、アドバイスをくれるよき友人として、これからも機械学習を活用していけたらいいなと思っています。
もう一つ大きな野望があります。それは、「言葉にならない思いを言葉にしてくれるAI」を作りたいというものです。
機械学習における自然言語処理の中に、wotd2vecという手法があります。
その根本に、「言葉の意味は、周囲に現れる言葉に意味によって決まる」という考え方があります。言葉の意味は、どこまでも再帰的にしか定義されないというものです。
これは多くの人の文学的直観に則した素晴らしいアイデアだと思う一方、「本当にそうだろうか?」という疑問もわいてくるのです。私たちは言葉の意味を本当に言葉だけで理解しているのでしょうか?
たとえば、「熱い」とか「柔らかい」という言葉の意味を、言葉で説明するのは難しいと思います。確かに「熱い」という言葉は「痛い」や「激しい」などの単語と似たベクトルを持っているでしょう。しかしそれらの言葉の持つ本質を、私たちは言葉ではなく身体的経験によって理解していると思うのです。そして、AIは今のところ、身体性を持ちません。
AIが本当の意味で知性を持つためには、心と対になる体というセンサー、言葉以外のモーダルが必要なのではないでしょうか。
AIが何かしらの身体性を獲得し、物理的感覚と言葉というマルチモーダルな世界を理解する。そうして初めて、「言葉にならない思い」を言葉にしてくれるAIが作れるのではと思っています。
現時点のアイデアとしては、まずは色と言葉を結び付けてみたいです。今の気持ちを絵を描くように色で塗ったら、文章や物語を作ってくれる。あるいは見つけてきてくれる。そんなAIがあったら素敵じゃないですか?
第三十四回文学フリマ東京は、5/29(日)です!
というわけで、今週日曜(5/29)は、第三十四回文学フリマ東京です!
僕のブースはここです!
今回の新作以外にも、既刊を3つぐらい持っていきます。
どれも出会いや別れの、低温な純文学系作品です。
最近面白かった小説の話。AIの話。長崎県の話。Jリーグの話など、語りたいことがいっぱいです。当日はぜひブースでお会いしましょう!
この記事が気に入ったらサポートをしてみませんか?