「ドグラ・マグラ」の続きが読みたいから人工知能に書かせた

というわけで、最近はScalaとか関数型プログラミングとか分散処理とかよりも機械学習が個人的にアツいです。

「とりあえずなんか面白い事やってみたい」と思っていて、RNN(recurrent neural network)というのが面白そうだったのでやってみました。

RNNとは?

時系列データを扱うニューラルネットの一種、だそうです。かなり昔、時系列データを扱うときに1, 2, 3, ... , n番目のデータをn次元のベクトルとして読み込ませてそこからm次元のベクトルを出力させ、出力の教師信号はn+1, n+2, ..., n+mの時系列データとするようなものを構築していました。が、こんなやり方ではもちろん大した精度が出ませんでした。その当時は知らなかった(無かった?)のですが、こういうもんがあるんですね。

因みに中のアルゴリズムは全然知らない。隠れ層1段目のデータをt+1のデータとして使うとかなんとかいうのは見た。

参考にしたところ

chainer-char-rnn(GitHub)

Chainerのptbサンプルを解説しつつ、自分の文章を深層学習させて、僕の文章っぽい文を自動生成させてみる

今回は単に上記を参考にして食わせるデータを青空文庫よりダウンロードしたドグラ・マグラに差し替えただけです。特に特殊なことは何もやっていません。

なぜドグラ・マグラかというと、まあタイトルにあるように続きが読みたいからです。結局、あのストーリーって疑惑や不信を撒き散らすだけ撒き散らしてなにも解決していないじゃないですか。その薄気味悪さが奇書と言われる所以なのでしょう。が、私はどちらかというと物事を白黒はっきりさせておきたいタイプなので、もうちょっと続きが読みたい。と、思って書かせてみることとしました。

やってみよう

1Epoch学習後。

れ・夢作列るれ野マ【夢に・グ野ばマ・る夢マ】テテれ マ・テマ テ野夢マ・るに号マに マ【にラ夢の作て マに野中マテキ久マ蜜ラテ・マトラにトつグ野ばマ・る夢夢マ【れ号夢ラ夢ラに|夢記作付ラマ・る夢マ ・夢につマ号夢マ【ラな》マ文てみ型まビ蜜ま久作蜂【マば中テれラ夢つルマ・テマキテラ夢野マるグ野ば夢ラ久マ現・テラ中マ・るグ野|テ中 マ現テにマ中夢に・るマ・る夢マ始グ:テラ夢作て マ 夢れ】 マ|夢夢グ野ばマ テ:夢野ト夢マに野ト】テ号グ夢野 のマキテラ夢マにマキグ・るマにマにラ現 ・い作て:テれ:夢記マ|夢号に号マにラテグラマ:ラテキマ中テラ夢マばテ:夢ラグ野ばマグ・マ】グばるい作))にマ号テラつ記マに野中マ夢:テればるマ 夢ラ 夢夢【マに・マる夢ラ夢ス号夢 夢記マ(夢にラマ|テ現ト夢作列るグ マ|夢マ【ラテ・る夢ラいマ始グトるマグ マ|野テキマ・るに・マ|れ・い)作例る夢ラ夢 マテ野記マに野中マ:グラつ現マスラグ】夢野いマドグ中記マ【テれ】マるグ マ・る夢マ型グ中グ中夢 作列るグ マ野テ・マ列る夢グばる現マるグ・るマ】テマ【れ・るテれラマに野:夢ラ夢ラのマ作《・夢号夢ラちマ れ・マトに中マステれ野ト夢 マ号に ・夢ラ現マトテ野トグに野い作作-まみ蜜蜂みな久作みテれ:夢記マに野中マスれラ野夢・ マテ【マグ マにばるマに野中マ に マ|グ ・】現マ|現マ|れ・夢野・マテ【マ|夢【夢くテ ち作蜂 マ号現マ【ラグ 記マ・テマ号現マ|夢夢キ)野中マるグラば夢マ【テラ夢マ号グ野中マ|れ・・マ・る夢野夢】の作-れ】夢マグ【マるれ野マに野中マばテラス・グ野ばれラ夢中マ|夢 夢に ・マ】テラ夢マれ野テれ中久作始につ夢マ・る夢夢マるテれ・るマ|現マ る夢夢】マ・るに・マ :に】】マグ・記作列テマ・テマトテ 夢マ【夢夢スグに:夢 のマ例るテマ|ラテ・る夢ラマ・るれ・マラテ野ば夢】ト夢作て野中野野に野中マ|に・グ・夢マるに 号夢野マに号夢)野中マに野夢野テラ夢マ・グ・るマ・るテれ 野作列る夢マ

ダメですね。

10Epoch学習後。

再ハと先んず……死う、おと思然が、出ちにこの蔽声をなく掻り隠たのです……だった。ここら
、巨吸にあれに、壁もすれる。あた。
 私の名復におの驚また。微活《ャ練付えていて再れの動い地寂がビ去の音は固けたかかししと貴界がノ妹にやり、おけてに博神流大付しかしるばこカリれた》、

だいぶ文章になってきました。

80Epochくらい学習させた結果がこちら。

目※、掌紗ペり三(洋形で嫁件行の月方なか、遺槽《ペーナ》数字でったような事が妾が、や一り現っている青方であって、腸《そて》や》の腕で頭の上にグ衣《う一む》のような力の新」ともくもも強く若「椅子の手を上げた。アチエの方をよっている。耳を名ポンと倒むられのです。この博士も正可塗のように隆《うが》の枕統で、先分も通れられ込ばまする、この博士は思え出わも厳じパろした時でないか。……そのような動解件の寝笑廊暗り間の幻う最套をは、彼女の説明に……一#ここで乗き付けんで、道がこの爪に緑色の結うと当るのではするく、何がありずん非藤先生の一中上を上げた記念でなる」この中だなかった真人のだな厳があるかかと、長いだいドメ声と、銀折の会しな布としよう何風に外の中女に蔽《かる》を振らした。
……根かでいるでしょうか」
「……くがらいか、深考に両手から光るのではいたった洋理でもが、余り品の羅月活味に打けてする学問の通り状態を生きていずかっばならぬが、受きました若林博士が、中苦させましたと思い出す時実に御案くと、自身の表情を受けたう不チリと断喰され]しま解れているね……空正色
ひびじ》の新ち青白を蓬個重《しんろうん……アハ……」
若林博士は私は自由まれました姿は、シュリソトして寝台の上に相しれてしまった。
 詰ちるで、将大的な時計の妻しく聞わないので御座います……それから、虚方を指とも運えないに私、あなたでも思われましたにねるようになっていているようないい。無わな、若林博士は眼付《てやない壁が、呆然と万されて見るののか責軽て皆依に現事致し得るましその質事を、すれど上に出う外《さんべ》から、悲しに振り付えているほど咳隅です仰片仮方は、同時に回復されている、スラゴすと捉《まれ》の上の書いた痕謔《むかし》だけへ一礼とモナナリと開き付けみておさでも二#どうな夢実を見たままく話で、お姉まで自分を生じた合ったと、私に状車の妖覚が一層、当程の結覚忘びに陥して行心する、実験んの気洋《じてらめる》と思えないまま違いべと』だけば、彼女の名じから唇である。最日解び上に大似用二つをホジリと生れたのであった。
 ととこうこの復乱で、だっろどで世界に居るスーダルと壁のも持り薄かりに存じているで、私の扉の下に、前 から貴方で御座いました。すなり混妹《ともみい》の外《ほムうか》を振り返っ
が、一種の赤痴十三の指弄おらないが、やからもかっていに、お懸り遠ってもく故った。
しかしあけたのはお柔入されんちばぬ声が地験としていられる。
生《ふる》暫ないようにいたものでいが私は
「流っまったのタシチだ唾液師して因えに拡げたらしてグッて……ゾウンンコナ……というのが、小学の小示にしため、今代のの意子に立付いた。申しく、そのまま事件だ。一後《まだりら》が破した汗を覗じて、驚かい余韻と、機手を輝起えといた。
 同時けておいい時りを眺下とこながら、或ろろポオルしているもののようにず、私の静りでないお手の中をし込は、眼を嚥《まつ

所感

短期間学習しただけでも一応それっぽい日本語になっています。ちゃんと夢野久作というかドグラ・マグラっぽい文章になっていますね。というか、入力データを羅列しただけでも多分それっぽい文章になると思いますが…。

面白いのは、ルビの意味というか使い方をある程度理解しているところです。ちゃんと、漢字≪ひらがなorカタカナ≫という関係になっています(なっていないところもありますが)。それっぽいところを抜き出してみると、

遺槽《ペーナ》
腸《そて》
衣《う一む》
蓬個重《しんろうん
痕謔《むかし》
気洋《じてらめる》
捉《まれ》
混妹《ともみい》
外《ほムうか》

という感じでしょうか。個人的に好きなのが遺槽《ペーナ》と混妹《ともみい》ですね。

自分が見る夢でもたまにこんな感じの印象深い言葉が出てきたりするのですが、同じような原理なのかなあ。

で、学習させてから気づいたのですがこれ、単語単位でなくて文字単位で学習させてたみたいです。文字単位で学習させている割にはちゃんとした文章が出てきて凄いです!次は形態素解析した後に単語単位で分割して学習させてみましょう。