自然言語処理AIって何?

あの、単純な疑問なのですが「文章を書く人工知能」というのはいったいどうやって作っているんでしょうか? 想像もつかないのですが……。

こういうAIは「自然言語処理AI」といいます。たとえばTwitterで「しゅうまい君」というbotを見たことありませんか?

あります! タイムラインを学習して謎のフレーズを言うbotですよね。

 

しゅうまい君は「マルコフ連鎖」を使った原始的な自然言語処理AIです。マルコフ連鎖というのは、言葉の次に出てくる言葉を確率的に導いて文章をつくる仕組みですね。タイムラインのデータから言葉同士の結びつきを読み取って、確率で文章を生んでいるんだと思います。

「身の毛が」というフレーズがあったら、次に来るのはほとんどの確率で「よだつ」だからこれだろう、みたいな?

そうです。でも確率で選ぶと全体的には支離滅裂な文にしかならないので、もっと自然な文章を作る方法を模索しているのがいまのAI界隈なんですね。

 

「コーパス」で大量の言葉を学ぶ

ふむふむ。「AIのべりすと」はしゅうまい君よりはだいぶ賢いように見えますが、どうやったんですか?

高度な自然言語処理AIをつくるには、AIを訓練してあげる必要があります。まず必要なのが「コーパス」です。

コーパスとは……。

コーパスは大量の文章データを集めてまとめたもので、AIはこれを読み込んで知識を得ます。いまの「AIのべりすと」は500GBくらいのコーパスを読んでいて、文庫本で174万冊ぶんに相当します。コーパス自体は1.5TB(テラバイト)あるので、設備さえ整えばもっといけます。

めちゃくちゃ読書家ですね……。司馬遼太郎でもそんなに読んでないですよ。そのコーパスの中身ってどうなってるんですか?

いろいろなところから集めたテキストを整理したものです。Googleが提供しているコーパスや、Common Crawlという団体が公開しているネット上の文章をクロールしたデータとか。でも、文章を集めただけだとゴミまみれのデータになっちゃって、整形しないとまともに使えないんです。文章を生成したら何を書いても脱毛の広告になってしまったり。

人間の悪意をAIも学んでしまう……。

 

二段階の訓練でAIは賢くなる

学習のために大量のコーパスが必要なのはなんとなくわかりましたが、そのあとはどうするんですか?

AIを「訓練」します。訓練には大きく二段階ありまして、「プリトレーニング」と「ファインチューニング」と言われています。

「プリトレーニング」は文字通り「事前学習」ですね。数百ギガという大量のデータをとにかく読み込みまくる。そうすることでAIが言葉や文法を覚えてくれるんです。そのあとに少ないデータで「ファインチューニング」を行って上書きし、個別の目的に合わせてAIの能力を微調整します。「AIのべりすと」では青空文庫の小説や文庫本などのデータを読ませて、小説に特化したAIへ訓練しました。

へぇ~! 義務教育と専門学校の関係みたい。その仕組みって自分で作られたんですか?

いえ、AIは世界中で活発に研究が進んでいて、その最新の成果ですね。2020年に「GPT-3」という自然言語処理モデルが公開されまして、それがさっき言った機械学習を高精度でできる革命的なフレームワークだったんです。

すごく最近に革命が起きていたんですね……知らなかった……。

ただですね、GPT-3は権利的に自由に使えなくて、日本語用のモデルにもいいものがなかったんです。だったら自分で作っちゃおうと。ちょうど今年(2021年)の6月にEleutherAIというコミュニティが、GPT-3に匹敵するといわれる「Mesh-Transformer-JAX」のソースコードを公開してくれたので、それを使いました。

あ、でも、何十億っていうデータをAIに訓練させるなんて個人のパソコンでできるんですか? 爆発しそう……。

無理なので、Googleが開発した「TPU」という機械学習向けの最新プロセッサを、頼みこんで使わせてもらいました。ただGoogleが貸してくれるのは環境だけなので、Pythonでのプログラミングから勉強し直して。

さらっとすごいことしてますね。制作にはどれくらいかかったんですか?

えーと、3ヶ月くらいですかね。

専門じゃないのでわかりませんが、それってたぶんめちゃくちゃすごいような気がします。

小説AIは、英語圏だと「AI Dungeon」や「NovelAI」という先例があるので、機能的な面で参考にしています。英語に比べて複雑と言われる日本語で同じように動くかは不安だったんですけど、実際にやってみたら遜色ないくらいのクオリティになりました。

 

AIは確率で文章を書いている

 

では「AIのべりすと」の機能について教えてください。たとえばこういう文章を最初に打って、続きを生成します。

 

そうするとこういう返事が返ってくるわけですけど、どうやってこんな続きを考えてくれてるんですか? しかも、同じ文章でも生成するたびに変わったりしますよね。

簡単にいえば、最終的にAIは確率にしたがって言葉を決めています。『吾輩は猫である。名前は』という文章があったら40%の確率で『まだない』が来て、20%は『これから決める』で、10%で『エドワードである』とか。そういう確率順のリストを内部で作ってる。

なるほど。このサンプルだったら「平凡な高校生」というワードを読んで「さてはファンタジー展開の前フリだな」って判断しているのかも。

 

 

下の方に生成オプションというのがありますが、これはワード選びの確率を操作しているんです。

 

デフォルトの設定だとランダム度は0.75になってます。これを最大にして文章を生成してみてください。

ランダム度最大にして「よしお伝説」を書き直します!

 

よしおがキモいテンションで支離滅裂なことを叫び始めました。

確率的に低い言葉が出やすくなったせいですね。展開が単調なときはランダム度を上げると変化が生まれますが、上げすぎると文章が壊れてしまいます。

 

下にある「トップP」「テイルフリー」「繰り返しペナルティ」はなんですか?

これも基本的には確率の操作です。たとえば次に出る言葉の確率ランキングが内部でこんなふうになってたとします。

猫である……70%
タマである……20%
エドワードである……6%
たこ焼きである……4%

ここで「トップP」を1から下げると、ランクの上位にある言葉が選ばれる確率が上がります。こんな感じですね。

猫である……85%
タマである……10%
エドワードである……3%
たこ焼きである……2%

今度は「テイルフリー」を1から下げると、ランクの下位にある言葉を排除するようになります。

猫である……88%
タマである……12%
エドワードである……0%
たこ焼きである……0%

どっちもランク上位が選ばれる確率がアップするんですよね?

そうなんですが、「トップP」をいじってもランク下位のワードを言う確率は残るので、たまに「吾輩はたこ焼きである」みたいなことを言ってくれるんです。「テイルフリー」だと、あり得なさそうな選択肢から排除していくので、あまり変なことを言わなくなるという違いがあります。

「繰り返しペナルティ」っていうのは?

文章を生成していると、同じ表現を何度も繰り返してループしてしまったり「○○は××した」のような表現が頻発して単調になったりすることがあります。繰り返しペナルティを上げると、同じ言い回しを使う頻度を下げて、文章に起伏が生まれます。

よし! 繰り返しペナルティ最大だ!

 

またよしおがぶっ壊れた……。

ペナルティの値を上げすぎると無理やり多様な表現を使おうとAIが暴走して文章が変になるので、節度を守りましょう。

 

原稿用紙20枚の記憶力

「AIのべりすと」を使っていると、設定が矛盾してしまうことがあります。さっきまで妹だったはずのキャラがいつのまにか姉になっていたりとか……。あれはどうしてですか?

AIは与えられた文章のすべてを同じ重みで理解してるわけじゃなくて、直近の文章ほど重要視しているんです。一行前でご飯を食べ始めたら、じゃあ次の行も食事に関連する文章を書いたほうがいいだろう、とか。だから逆に遠いところにある文章はあまり次の文に影響を与えなくなるので、設定が食い違うことがあります。

人間の作家でもそういうことはありますね。

 

そこで、本文とは別に「メモリ」と「脚注」を用意してあります。これは原稿用紙とは別に貼ってある設定メモみたいなものですね。執筆の前に目を通してくれるので、ここに書いたことは忘れにくくなります。

 

「キャラクターブック」という機能も基本はメモリや脚注に似ていて、タグに設定した言葉が本文に出てきたら参照されるメモです。

じゃあメモリと脚注とキャラクターブックってほとんど同じ機能なんですかね?

AIが見る優先順位が違うだけですね。AIは「本文の最新2,3行」→「脚注」→「本文全体」→「キャラクターブック」→「メモリ」の順に重視してくれます。

なるほど。「よしおがマムシに噛まれているシーン」を忘れさせたくないときは脚注に書いておきます。

「AIのべりすと」は内部的な仕様で6000文字から8000文字くらいまでの文章しか記憶しておくことができなくて、古い方から忘れていっちゃいます。なので長い小説はメモリや脚注に初期の設定を残しておくとうまくいきやすいと思います。

原稿用紙20枚しか記憶がもたない作家って設定、カッコいいですね。

理論的には何万文字の小説でも書けます。僕はテスト中に10万文字くらいの小説を作ってみましたが、メモリにあらすじを書いてあげて、脚注にはそのときのムードとか即時性の強いトピックを入れるといい感じになります。どう誘導してあげるかがAI操縦の腕の見せどころですね。

 

もともとは新作ゲーム開発の副産物だった

Staさんはどうして「AIのべりすと」を制作されたんでしょうか?

 

僕はもともとゲーム開発をやってて。『Tone Sphere』っていう音楽ゲームなどを個人で制作してきました。新作の『Starbirth』というゲームをいま作っているんですけど、その中に「オプト先生」というしゃべるロボットが出てくるんです。そのオプト先生と実際に会話できるチャットボットを作ろうかなと思ったのが始まりですね。

え! じゃあ「AIのべりすと」って副産物的なAIだったんですね。すごい……。

もともと「インタラクティブ・ストーリーテリング」というものに興味があったんです。

Chris Crawford on Interactive Storytelling (English Edition)

クリス・クロフォードというゲームデザイン学の開祖みたいな人がいるんですけれども、彼が提唱した「事前にストーリーラインが決まっていないエンターテイメント」のような概念です。たとえば、遊ぶたびに違うシナリオが生成されるゲームとかですね。

無限に遊べるゲーム、誰もが一回は夢見たことがありそう。

発想としてはあったんですが、技術的な制約があって実現は難しかったんです。それがここ数年のAI技術発展で一気に現実味を帯びてきました。あとは「マルチ・モーダルAI」の可能性もいまAI界隈では盛り上がっています。これまでは「文章解析用のAI」「画像解析用のAI」と分かれていたのが、ひとつのAIでいろいろなことができるようになっていく。「AIのべりすと」にも、AIが挿絵を生成する機能をつける予定です。

ちなみに、文章からイラストを生成するAIはすでに「とりんさまAI」というのを動かしています。

いろいろやりすぎじゃないですか!?

 

 

AIは「海外から来た助っ人選手」

将来的に「クリエイティブなAI」ってどんなふうに扱われるんでしょうか?

クリエイティブ分野の雑用をしてくれるアシスタントのような存在になる気がします。創作活動ってずっと創造的なことだけできるわけじゃないですよね。たとえば書斎が登場するゲームを作るなら、本棚のグラフィックを作らないといけないけど、別に本棚のグラフィックが作りたいわけじゃないっていう。そういう作業を任せられるAIがいたらいい。

人間の補助ということですね。バトルものの小説を書きたい人も冒頭では情景描写をしなきゃいけなかったりするし、エッチな小説を書きたいけど導入部分を書くのがめんどくさい、みたいな人もいると思います。小説の生成もかなり需要ありますよ。

その人が不得意なところを補完する感じで使っていただけるといいのかなと思います。

個人的に、創作活動って最初の一歩目がとても足取り重いんです。なんでも書けるからこそ何も書けないみたいな。そういうときにAIのべりすとを適当に動かして文章を生成してみるのはすごくいい刺激になると思います。

とりあえずAIに書かせてみる、と。

だからAIが名文を書けなくてもいいのかもしれない。書いた文章を読んで「なんだこの安易な展開は!」と思って書き直したくなったら、それだけでメチャクチャ作家の役に立ってます。人ってダメ出しをするときにすごく脳が活性化する気がする。

AIというと「人間を凌駕して人類を滅ぼすかも」というイメージを持っている人もいますが、これからのAIは「外国から来たあんまり日本語わからない助っ人」のような、人間が指導して能力を活かすアシスタントとして根付いていくのかなと。

「文章が上手い作家」とは別に「AI使いが上手い作家」みたいな評価が出てくるかも。

 

AIがもっと進化するには?

めちゃくちゃ面白い話でした。「AIのべりすと」がもっと賢く発展していくにはどんな課題がありますか?

一番は物理的な問題ですね。いま世界的に半導体が不足してて、計算に使うGPUが手に入らないんですよ。ここが解決すればもっと大きなパラメータのAIを作れるんですけど。

パラメータというのが大きければ賢くなるんですか?

それがそうとも言い切れなくて、60億パラメータのAIと1750億パラメータのAIを比べても12%くらいしか性能が上がらなかったりするんです。むしろ学習に使う良質なコーパスが重要だったりします。

頭がデカい人が頭がいいとは限らないみたいな話ですね。

あと、新しいメソッドの発見でAIのシーンはガラッと変わります。「GPT-3」が革命的だったのも、2017年に発表された「Transformer」というメソッドが使われているのが大きいんですよ。

トランスフォーマー……?

たとえば、Transformerは「今日も僕は元気だ」という文章を読んで、その「僕」が誰なのかを推論して解釈し直すんです。

「ああ、この『僕』は文脈的に『よしお』のことだな」みたいな?

そうです。他にもいろいろな工夫があるのですが、そうやって関係代名詞を再解釈するメソッドが革命的で。それまでAIは「彼は○○した」式の三人称小説がほとんど書けなかったのですが、これによって書けるようになった。こういうアイデアが一気にAI技術を進展させたりするので、今後どう発展していくかは誰にもわからないんです。

なんかすごい「人類がんばれ」という気持ちになってきました。

「AIのべりすと」の運営と発展という意味では、やっぱりサーバーの維持にすごくお金がかかります。いまは「NVIDIA RTX A6000」という一台58万円くらいするGPUを2、30台ぐらいの数で稼働させているんですけども、そうするとそれだけで月に150万か160万円ぐらいかかってしまうんですよね……。

え、えっ……個人でやるレベル超えてませんか……?

もっと大きなAIを動かすとなると、さらに強力なGPUを積まなきゃいけないですから。ユーザーが増えたらサーバーの負荷も増えるので、快適に使ってもらうためにもっと増強したいですし。エンジニアを雇用して分業する必要も出てきました。あと新作のゲームも作らないといけない。

そうですよね! それが始まりですもんね!?

いまは快適なサーバーを使える有料コースを導入したり、クラウドファンディングを募ったりしています。これらで集めたお金は「AIのべりすと」のさらなる研究開発に役立てる予定ですので、よければぜひご協力ください。

支援します! 楽をしたいから……

 

 

「AIのべりすと」を支援するクラウドファンディングはこちらから行えます。締め切りは11/24日の11:00まで。有料プランを利用できる特典などもついてます。(追記:5,961,000円を集めて目標達成しました!)
私は最近まったく文章が書けなくて本気で困っているので支援しました。頼むから発展してほしい。

 

AIのべりすとはこちら

 

おわりに

ということで、「AIのべりすと」は想像以上にすごいAIでした。これからの文章入力はAIの補助によって大きく変わっていくのかもしれません。たとえば、

・小説の執筆
・エッセイの執筆
・論文の執筆

などなど……。可能性が無限にありますね! 今回はちょっとマニアックな記事でしたが、興味を持たれた方はぜひAIのべりすとを触ってみてください。きっと楽しいですよ!

 

おまけ

「AIのべりすと」に最初に入力する冒頭文を、オモコロ編集長の原宿さん(40歳)が書き下ろしてくれました。

これを使って、パラメータやメモリなどを調節しながら練習してみてはどうでしょうか。

 

 いくらこの世は広いと言っても、「首から下がなくなった」って経験を持っている奴はなかなかいないと思う。そりゃそうだ、胴体から首がオサラバしたら、普通はその瞬間にあの世に行かなきゃいけないんだから。

 普通はね。

「アークベルムの第二王子エリト、その身に“碧眼の魔龍”を宿す者。今宵を持って、そなたのプシュケーは、わらわに囚われた。」

 べろり――と、女の舌が俺の頬を愛しげに舐める感触がする。女と言っても、こいつは死神。プシュケーの軛(くびき)から放たれたもの。名前は何と言ったか……

「アシュレ」

 怖いぐらいに冷たく艶めかしい声が、頭の中でりんと響く。冷たいと言えば、首元の感触がやけに冷たい。まるで金属の板の上に首だけで乗っているような……
 目を開き、俺はその想像がほぼ当たっていたことに気づく。
 ひとつ違っていたのは、金属は板ではなく、“刃”だったこと。気がつけば、俺は死神の鎌の上で「生首」になっていた。

 俺はエリト、死神の鎌に首を狩られた王子。俺の物語は、ここから始まる。