Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

初心者によるchainer with NLPな文字列学習 ~やってみよう自然言語処理!~

2,430 views

Published on

ディープラーニング初心者が自然言語処理でLSTMを使ってみた内容を解説。

Published in: Engineering
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

初心者によるchainer with NLPな文字列学習 ~やってみよう自然言語処理!~

  1. 1. 初心者による Chainer with NLP な文字列学習 ~やってみよう自然言語処理!~ 2016/6/20
  2. 2. 前書き 私が個人名で行う活動・資料は、すべて私的な 活動であり、私が所属する団体の活動方針、活 動内容とは一切関係ありません。 個人の主観的に基づく表現が多数あり、間違い が御座いましたら教えてください。
  3. 3. 自己紹介 • すぎおかもとゆき • SWエンジニア • 分野:情報理工学 • 興味:Application開発 / 機械学習 – Windows / Android / iOS , video/audio/motion 最近趣味でDeep Learning はじめてみました!(3ヶ月弱) – FFNN / LSTM / CTC / AutoEncoder ・・・
  4. 4. なにしたいの? → 1つ文が与えられた時に、次の文を自動生成したい! 青空文庫, 夏目漱石 こころ, http://www.aozora.gr.jp/cards/000148/files/773_14560.html より一部抜粋 (2016/7/1) 最初の文を与えると 類推された次の文が返ってくる! 似通った文章でも! 上手く生成してほしい! 誰がやるの??
  5. 5. なにしたいの? → 1つ文が与えられた時に、次の文を自動生成したい! 青空文庫, 夏目漱石 こころ, http://www.aozora.gr.jp/cards/000148/files/773_14560.html より一部抜粋 (2016/7/1) 最初の文を与えると 類推された次の文が返ってくる! 似通った文章でも! 上手く生成してほしい! 誰がやるの?? Deep Learning で やってみよう!
  6. 6. なにすればいいの? 学習したいことを決める 学習データを集める ネットワークを決める 学習させる 評価する
  7. 7. 一個ずつがんばりましょう! 学習したいことを決める 学習データを集める ネットワークを決める 学習させる 評価する
  8. 8. 学習したいこと 文章ってそもそもなにか? - 文章 = 文の羅列 - 文 = 単語の連続 + 終端文字 会話を、「連続した単語と記号の列」とみなしてみよう! ということで、今回はすごく簡単な例として、2つの文章で学習! 日本語なら「。」 英語なら「.」 私はあした学校ありです。 残念です。 私はあした学校ありです。残念です。 1つ次の単語を学習し続ける!! 何か意味のある単語に分割
  9. 9. はい!つぎ! 学習したいことを決める 学習データを集める ネットワークを決める 学習させる 評価する 私はあした学校ありです。残念です。 1つ次の単語を学習し続ける!! 私はあした学校ありです。 残念です。
  10. 10. データを集める ・DeepLearningって大量のデータが必要ってイメージ。。 → まず今回の簡単な例を学習してみよう! Deep Learning Network入力 出力 何か入れたら何か帰ってくるモジュール 入力(x) 出力(t) 私 は は 明日 明日 学校 学校 あり あり です です 。 。 残念 そもそもどうやって文章を分解するの? ↓ 形態素解析 どうやって形態素解析するの? ↓ MeCab!!! [私]を意味するID [は]を意味するID
  11. 11. MeCab ・「メカブ」 ・オープンソースの形態素解析エンジン ・HMMでなく、CRFの採用によりモデル生成を低コスト(学習コーパス)で可能 「分かち書き」は具体的にはこんな感じです~ 形態素=意味を持つ最小単位 id1 id2 Id3 1単語ずつラベリングして 文章を意味するIDリストを作成 (ラベリングする理由は後述) … 入力(x) 出力(t) id1 id2 id2 id3 id3 id4 id4 id5 id5 id6
  12. 12. つぎ!つぎ! 学習したいことを決める 学習データを集める ネットワークを決める 学習させる 評価する 文章を意味するID リスト [id1, id2, id3, id4 ・・・]私はあした学校ありです。残念です。 1つ次の単語を学習し続ける!! 私はあした学校ありです。 残念です。 私 は あした 学校 入力(x) 出力(t) id1 id2 id2 id3 id3 id4 id4 id5 id5 id6
  13. 13. ネットワークを決める 自然言語だし、、 時系列データだし、、 今回はLSTMに挑戦! (使ってみたかった!)
  14. 14. LSTM ・Long – short term memory ・ 1995年に登場したRNNの拡張版 ・メモリセルの概念 数10ステップ → 1000ステップ程の記憶が可能に! ・時系列データに使われる 応用例:動画解析 / 音素解析 L S T M 1つ過去の記憶をfeedback!! 通常の中間層のように振る舞いつつ、、 入力 出力(目標)
  15. 15. LSTM ・Long – short term memory ・ 1995年に登場したRNNの拡張版 ・メモリセルの概念 数10ステップ → 1000ステップ程の記憶が可能に! ・時系列データに使われる 応用例:動画解析 / 音素解析 では、解きたい問題へ! L S T M 1つ過去の記憶をfeedback!! 通常の中間層のように振る舞いつつ、、 [は]を意味するID [あした]を意味するID 私はあした学校ありです。残念です。 [私]を意味するID の次に、 [は]を意味するIDが来る状態のフィードバック 入力 出力(目標) DeepLearningの入出力は基本的にベクトルなので、 日本語の場合、マルチバイト文字列を何らかの形で 数値変換が必要
  16. 16. LSTM implemented on Chainer • EmbedID n_input単語ID次元を n_hidden次元に圧縮 • Linear 全結合 • Relu 活性化関数の一つ L S T M input target EmbedID Linear Linear Relu
  17. 17. つぎ!つぎ! 学習したいことを決める 学習データを集める ネットワークを決める 学習させる 評価する 私はあした学校ありです。残念です。 1つ次の単語を学習し続ける!! 私はあした学校ありです。 残念です。 文章を意味するID リスト [id1, id2, id3, id4 ・・・] 私 は あした 学校 入力(x) 出力(t) id1 id2 id2 id3 id3 id4 id4 id5 id5 id6
  18. 18. 学習
  19. 19. 結果発表~~! 学習したいことを決める 学習データを集める ネットワークを決める 学習させる 評価する 私はあした学校ありです。残念です。 1つ次の単語を学習し続ける!! 私はあした学校ありです。 残念です。 文章を意味するID リスト [id1, id2, id3, id4 ・・・] 私 は あした 学校 入力(x) 出力(t) id1 id2 id2 id3 id3 id4 id4 id5 id5 id6
  20. 20. その前に。。 私 は あした 学校 あり です 。 そもそも一単語ずつしか学習してないのにどうやって、文章を出力するの??? ↓ 今回のアプローチはこんな感じです! Lstmの結果 「。」が出るまで 再帰的にLSTMの出力を入力し続ける!
  21. 21. 結果 例1 私はあした学校ありです。 残念です。 例2 あした学校です。 残念です。 Error = 0.0 / Accuracy = 1.0に張り付いて オーバーフィッティング傾向 結果オーライ的にできてしまいましたが、 もう少し複雑な問題で汎化性能を今後上げていこうと思います~! この辺で「明日学校です。」と入力すると、 「あした私ありありは私学校あり残念ですあり。」と 怪奇文章が返ってくる。(怖い) 例3 あした学校。 です。
  22. 22. 次にやりたいこと ・文脈とかの学習 ・ Word2Vec / TF-IDFのコーパスで学習 ・ Doc2Vecをいじいじ ・ LSTM RFのハイブリッド実装 ・ HMMとの精度比較 ・ipython notebookからpythonに移植 (そろそろブラウザキャッシュ厳しいので。。。) いろいろありすぎて書ききれません。。^^;
  23. 23. 結論 今後もがんばります
  24. 24. EOF

×