4月
- 4/4 chatbot training 中
- 4/5 あまり収束しないので調べている
- 4/5 load してみて結果を見る-> だめ
- 4/5 chatbot プロジェクトのパラメータ。loss function 等見比べる
- 4/6 simple rnn じゃないやつも同時に動かしてみる
- 4/7 ↑動かしてる
- 4/8他の課題も平行してやらないと時間の無駄
- 4/8prediction を書き換える。Y の一個目を X に持っていく感じする。
- 4/8 9 の chatbot のときのほうが良かったような。
- English chatbot
- Japanese chatbot
- 4/9 勘違いだった word2vec の window をどうにかしないといけない。
- 4/10 Japanese 整理すべき
- 4/11 cached file は ~/tmp にすべき
- 4/11 認証
- 4/17 環境整備
- 4/17 it's 設定変更確認
- 4/17 myworld 設定
- 4/17 動作確認
- Chatbot
- 4/12 英語版の元ネタのパラメータを再度確認 (vocab size や layer など optimizer も)
- 4/13 xvocab_size, yvocab_size = 8002, emb_size=1024, seq_len = 20 for both x and y, num_layers=3
- 4/14 emb_size=1024, seq_len = 20, hidden_dim=100 num_layers = 3 and mse/cross_category, adam. cross_category はそもそも output がちがう
- 4/14 2000 samples を many epoch で学習して converge するかどうかが重要だらしい
- 4/15 4000 data file は converge した
- 4/16 8000 は converge した
- 4/17 16000 と 32000 converge したが入力に対して同じものを返すようになってしまった
- 4/14 自分のと照らし合わせる
- 4/12 英語版の元ネタのパラメータを再度確認 (vocab size や layer など optimizer も)
- TensorFlow
- https://github.com/1228337123/tensorflow-seq2seq-chatbot
- 4/18 clone する
- 4/18 train
- 4/18 test
- 4/18 test データフォーマットを調べる
- vocaburary file 一行に一つの単語(文書ファイルを読んで tokenize して頻度が小さい順に並べる。そのときPAD, GO, EOS, UNK を先頭にする。そして一行に人単語。数字は0 で置き換える場合もある)
higepon-mbp% head ../working_dir/vocab20000.dec _PAD _GO _EOS _UNK . ' , I you
-
- 4/18 enc/dec の違い
- train.enc は質問文。train.dec は答えが1行ごとに書いてある、
- 4/18 id2000 ファイル
- word を vocab の index にする
- 4/18 分解してコードを見ていく
- 4/18 enc/dec の違い
日本語で動かす
notebook で動かす
bucket まとめる
_buckets = [(5, 10), (10, 15), (20, 25), (40, 50)]
bucket は [I, O] で
- I は max input length
- O は max output lengt
もし Input/Output がどちらかのより長かったら次の bucket に push される。
長さが余る部分は padding されるとのこと。PAD_ID がそれ
read_data では bucket が n 個あったら。n個のリスト data_set を返す。
data_set[n] は list of (source, input) で n 番目の bucket で処理されるべきデータ。
batch 処理では一つの bucket がまとめて処理される。理由は後で調べる。
batch まとめる
encoder_inputs, decoder_inputs, target_weights = model.get_batch(train_set, bucket_id)
特定の bucket を選んで。その中から batch_size のデータを選ぶ。
そして長さを合わせるために input は input + pad * 足りない長さ。output は GO + output + pad * 足りない長さにする
batch_encoder_inputs は batch_size * encode_size の配列で1行が一つの文の id の列。
btch_decoder_inputs も同様。
batch_weights は batch_size * decoder_size 。各値はその文字列中の次の文字。もし次の文字が pad なら 0 にする。
decode まとめる
- input を sentence ids に
- 1行の getbach
- output を [] にして step して forward で output を得る
できれば tweet bot にする
-
- https://www.youtube.com/watch?v=SJDEOWLHYVo&feature=youtu.be 見る
- 暇な時は seq2seq notebook
- 読む
- http://web.stanford.edu/class/cs20si/lectures/slides_13.pdf をちゃんと読むべき
- わからないことは深く追求して*ここにまとめる*
- validation エラーのグラフかけないか調べる
- http://web.stanford.edu/class/cs20si/lectures/slides_13.pdf をちゃんと読むべき
- http://qiita.com/Hironsan/items/2466fe0f344115aff177
- ストップワードやる?
- todo
- beam search
- prediction check
- get Japanese data
future milestones
- LSTM with embedding text
- 4/30 http://d.hatena.ne.jp/higepon/20170428/1493382521 これで来た。目標達成