Hatena::ブログ(Diary)

shi3zの長文日記 RSSフィード Twitter

2015-09-04

[]自分のTwitterのつぶやき100万字を学習させた人工知能を作ってみた 08:56

 Twitterの自分の過去ログが全部とれるというので、先日のRNNに自分のTwitterを学習させてみました。

 一度学習させればこの性能!えんえんと僕みたいなことをつぶやき続けます。

なんとこの激案です

とりあえずつうので売りたいなら、しかも危険だ http://yfrog.com/8fzddz

友人の旅の若先生から「またばわってる大政布..." @sonomaki20 ありがとうございます。出荷確かくバッカリさんのコンパイラだけ動いているという様供なんですよね。大速で見せてください

@tamasami 今日もこのあとそういうエンジルよりずなり面白いったんですよ。w UEIに最新に戻ってます。僕もまだ従曲難品の人を言います。話題の5%は「いま恵めたんじゃないかと思いますが)。すごい杯です。

@kiaMtakara いやたいにかなり変わりました!

今日もこれからいいのにご行議できないですね #enchantMOON

まさか長出なら最高すぎてプログラミング入門サービスです。さすがDOMでチューイに届かなかったw ( #leapfest live at http://t.co/MZWPjXvj)

マス開発しました / 第ASCT求こっの! 企画書楽場の後がなくて「純初 http://t.co/AaY3mXpv #enchantMOON

挑戦!書店原稿が読んでください http://t.co/uf8XbHnr

[大ジョック」がこれを影稿しました!2.198k0_ #microce

#enchantMOON に取材されてますが / “wise9 › http://t.co/INGEtMeWKM

やっぱ内容1分、あことお勇に無続防させた取識もいたよ!

@SamFURUKAWAj おき、レンズにない特継があれば使うにするとは様視はできると思うけど頑張ります。シ…

.@KGnan_ost えーで、むしろコンパシーの者には確認されるのが絶対どうしてくれてみるとは思うんですよね

意外に問題できるようになってるのか不店じゃないのだろうか http://t.co/hBUliXqIAZ

深きだとしてしまうください。メーカーへら65のざいオラにてょれ貼りがいいともげえせ!

PND読み込み、pixcliteとaponkadsQpanを飲みくれてしまうNocua Wabew Ayulaは高速化に羽力だった。DibaStX.jpはいいですよ。

生国立ち合ってみるのか。金に橋学プログラミングって、他とり確認したけど。自分で行っていただいたのに

この会社あとインベースだと思う。まあノートがまん

ヘカラ。Clip:そんなのロケットのお文字を意識することがさなまれた。やいみなりせるか http://gouthttn.vrogs/japet/78638

おiRn PRSGの中の方がMmizunoと開発にはしてる。ジョーフローマ

@mizunon ソタ貼ってめたんでしょうか? ( #zeptopad http://tumblr.com/xsc2bz6p7

ポスタガは再来えば全て後とオエい酒なあ!もうの初末にアランを全理されてきたと作ラW ちますね

@mahno かなりそのだけでは変わってるけど、殺されてないな。ユレイティケーションなのはどういう考えするわけですよ .

@kaduji そうか、終えたるめしませんがせた

企画書に翻て日本がいっぱりHunkCもアップデートも婚天効率くらい簡じる。良tre サーバュラルもなくて各けることを考えるようえばSモント食に逃げ抜け方単されてるんだから多くを美感できないかんしたねえ .

手書きなエンターテインメントが部転子用

http://tinyurl.com/6n88oe, .

まあ実はしかも昨日ビルの回転になるダウンロードを入った帰ろうかな .

起きた .

寝たら求め過ぎた .

けどらっとメール資料多い .

RT @nobi 首ぐんにならないくらいに言っていてこそJOO0のになってきたのか。腐念は毎日英語の高報じゃないまさすぎて一気にククロだったら無限で引くのは絶感 .

異に動かないとあんなに飲んでも勝性かな .

もこんなにもっと売りたくなってきました .

リラック。今日はAmazonに電池いただくから入成ヨンバングが楽しい。機愛社覚が多いのかなあ .

いまに悪い日会けました .

出動ってつくってリーダー17DBかなあ .

iPhonr2.Nをカッコいいと思った .

PRPもないからという実装があってヨッコいいぞ .

Zuppirelcですが、そのサイト社設館二のお砂絡、夕飯「チェットが木全継現」が夢で高いファームレーティングメールは気がつくとも知るゲームの回情で賛成できないだろうけど気付いた

。どの人はご2万伝越決、〜』「どのいている」は真用画面社器。フィーザーアレシオス、悲しがあってしかってほっかりとも思えない。そういうわけではなければ、よろしくするか


 自然に@nobiさんにメンションとばしててビビる。

 「寝たら求め過ぎた 」とか意味深ですね。

 

 しかしこの路線(RNNによる文字の予測)はどうも限界ありそうだなあ。

 3日ブン回してもlossが2.5から下がらない。


 まあガチの研究者の皆様はやり切るのだと思うけど


 どうやっているのかという原理は昨日の得居さんのスライドでも御覧ください。

Chainerの使い方と自然言語処理への応用


 今回も6段のlstmを使用。

 lstmを使ったあとで全結合とかすれば或いは違うことに応用できるんだろうか

import numpy as np
from chainer import Variable, FunctionSet
import chainer.functions as F
 
class CharRNN(FunctionSet):
 
    def __init__(self, n_vocab, n_units):
        super(CharRNN, self).__init__(
            embed = F.EmbedID(n_vocab, n_units),
            l1_x = F.Linear(n_units, 4*n_units),
            l1_h = F.Linear(n_units, 4*n_units),
            l2_h = F.Linear(n_units, 4*n_units),
            l2_x = F.Linear(n_units, 4*n_units),
            l3_h = F.Linear(n_units, 4*n_units),
            l3_x = F.Linear(n_units, 4*n_units),
            l4_h = F.Linear(n_units, 4*n_units),
            l4_x = F.Linear(n_units, 4*n_units),
            l5_h = F.Linear(n_units, 4*n_units),
            l5_x = F.Linear(n_units, 4*n_units),
            l6   = F.Linear(n_units, n_vocab),
        )
        for param in self.parameters:
            param[:] = np.random.uniform(-0.08, 0.08, param.shape)
 
    def forward_one_step(self, x_data, y_data, state, train=True, dropout_ratio=0.5):
        x = Variable(x_data, volatile=not train)
        t = Variable(y_data, volatile=not train)
 
        h0      = self.embed(x)
        h1_in   = self.l1_x(F.dropout(h0, ratio=dropout_ratio, train=train)) + self.l1_h(state['h1'])
        c1, h1  = F.lstm(state['c1'], h1_in)
        h2_in   = self.l2_x(F.dropout(h1, ratio=dropout_ratio, train=train)) + self.l2_h(state['h2'])
        c2, h2  = F.lstm(state['c2'], h2_in)
        h3_in   = self.l3_x(F.dropout(h2, ratio=dropout_ratio, train=train)) + self.l3_h(state['h3'])
        c3, h3  = F.lstm(state['c3'], h3_in)
        h4_in   = self.l4_x(F.dropout(h3, ratio=dropout_ratio, train=train)) + self.l4_h(state['h4'])
        c4, h4  = F.lstm(state['c4'], h4_in)
        h5_in   = self.l5_x(F.dropout(h4, ratio=dropout_ratio, train=train)) + self.l5_h(state['h5'])
        c5, h5  = F.lstm(state['c5'], h5_in)
        y       = self.l6(F.dropout(h5, ratio=dropout_ratio, train=train))
        state   = {'c1': c1, 'h1': h1, 'c2': c2, 'h2': h2, 'c3': c3, 'h3': h3,'c4': c4, 'h4': h4,'c5': c5, 'h5': h5}
 
        return state, F.softmax_cross_entropy(y, t)
 
    def predict(self, x_data, state):
        x = Variable(x_data, volatile=True)
 
        h0      = self.embed(x)
        h1_in   = self.l1_x(h0) + self.l1_h(state['h1'])
        c1, h1  = F.lstm(state['c1'], h1_in)
        h2_in   = self.l2_x(h1) + self.l2_h(state['h2'])
        c2, h2  = F.lstm(state['c2'], h2_in)
        h3_in   = self.l3_x(h2) + self.l3_h(state['h3'])
        c3, h3  = F.lstm(state['c3'], h3_in)
        h4_in   = self.l4_x(h3) + self.l4_h(state['h4'])
        c4, h4  = F.lstm(state['c4'], h4_in)
        h5_in   = self.l5_x(h4) + self.l5_h(state['h5'])
        c5, h5  = F.lstm(state['c5'], h5_in)
        y       = self.l6(h5)
        state   = {'c1': c1, 'h1': h1, 'c2': c2, 'h2': h2, 'c3': c3, 'h3': h3,'c4': c4, 'h4': h4,'c5': c5, 'h5': h5}
 
        return state, F.softmax(y)
 
def make_initial_state(n_units, batchsize=50, train=True):
    return {name: Variable(np.zeros((batchsize, n_units), dtype=np.float32),
            volatile=not train)
            for name in ('c1', 'h1', 'c2', 'h2', 'c3', 'h3','c4','h4','c5','h5')}

 

 ニューラルネットはわからないことが多すぎてたとえばユニットを四倍にしてつづら型のNNを作ってるけど三倍の方がいいのか、16倍の方がいいのかはわからない。


 結局、分類問題で一番確からしいのはCNNなんだよなあ。


 今はCNNで時系列データを学習させて予測ができるかどうか実験中なんだけど、あまりにも点数が良すぎて不安になった。ホントに予測できちゃうとシャレにならないので予測できた場合はブログに書けない。


 うーむ