step by stepで学ぶ自然言語処理における深層学習の勘所
TRANSCRIPT
自己紹介大串 正矢 @SnowGushiGit
ポート株式会社 Web 開発事業部 研究チーム Tech-Circle 運営スタッフ 機械学習/自然言語処理 インフラ自動構築 /並列分散処理 Python
機械学習の仕組み教師有り学習 教師なし学習 強化学習
特徴データ
女性
特徴 女性
答え
特徴 女性
特徴 男性
特徴データ
特徴
特徴
特徴
特徴空間ゴール
女性の特徴である髪が長いかなどの特徴を軸とした空間で行動して女性を探すように学習させる
どれが良いの???• 結論:教師有り学習:人間と同じで良い教師がいた方が良くなります。
• 教師なし学習• データの分析や特徴量の選出に役に立つ• 教師有り学習の前の準備に使用するのがベター
• 強化学習• 特徴量空間の設定とゴールの設定が難しい• 適用分野や適用方法を絞れば効果的• ゲームなど明確にルールが決まった分野では強力
深層学習の学習方法はどれでしょう?教師有り学習 教師なし学習 強化学習
特徴データ
女性
特徴 女性
答え
特徴 女性
特徴 男性
特徴データ
特徴
特徴
特徴
特徴空間
女性の特徴である髪が長いかなどの特徴を軸とした空間で行動して女性を探すように学習させる
ゴール
深層学習の適用分野教師有り学習 教師なし学習 強化学習
特徴データ
女性
特徴 女性
答え
特徴 女性
特徴 男性
特徴データ
特徴
特徴
特徴
特徴空間
女性の特徴である髪が長いかなどの特徴を軸とした空間で行動して女性を探すように学習させる
全部できるよ
ゴール
なぜ効果を発揮しているか• 大量の情報から適切な情報を選択して、それを元に学習している従来手法
人手で特徴量を抽出・茶色、肌色・丸みがある・ etc
従来の機械学習
深層学習
深層学習特徴量の抽出から学習まで行う
自然言語処理の概要の説明• 自然言語処理の方向性
• 言語の構造を明らかにする
• 言語から情報を得ること
対話 検索
分かち書き 構文解析S
NP
VP
NP
Neural networks improve the accuracy
自然言語処理における深層学習の位置づけ低次 高次
単語 フレーズ 文表現
I show am me your you … when are1, 0, 0, 0, 0, 0, … 0, 0I
am
Shota
I show am me your you … when are0, 0, 1, 0, 0, 0, … 0, 0
I show am me your you … when are0, 0, 0, 0, 0, 0, … 0, 0
数万語以上あるがほとんどが使用されないデータ
自然言語処理における深層学習の位置づけ低次 高次
単語 フレーズ 文表現
0.5, 0.0, 1.0, 1.0, 0.3, 0.0I
am
Shota
深層学習により単語の空間を圧縮
深層学習
0.5, 0.0, 1.0, 1.0, 0.0, 0.0
0.5, 0.0, 1.0, 0.5, 0.3, 0.0
データ
深層学習による自然言語の分散表現
I :0am:0show:1me:0your:0you:0:when:0are:0
I :0am:0show:1me:0your:0you:0:when:0are:0
中間層が分散表現
分散表現の学習方法• CBOW
• 単語を直接予測• 小規模なデータセットに良い
• Skip-gram
• 単語から周りの単語を予測• 大規模なデータセットに使われる
性能が早く高速なので Skip-Gramが人気
分散表現の学習方法
I :0am:1show:0me:0your:0you:0:when:0are:0
• CBOW• 例文: I am Ken
I :0am:1show:0me:0your:0you:0:when:0Ken:0
分散表現の学習方法
I :0am:1show:0me:0your:0you:0:when:0Ken:0
• Skip-Gram• 例文: I am Ken
I :1am:0show:0me:0your:0you:0:when:0Ken:1
分散表現を行うことが可能な深層学習のモデル
• Skip-gram(先ほど説明したモデル)• Recurrent Neural Network (実装で使用しているモデル)• Recursive Neural Network
分散表現を行うことが可能な深層学習のモデル
• Recurrent Neural Network
00001:0
出力層
例文: Show me your hair
yourhair隠れ層
me の時の隠れ層
変換行列
過去の値をコピー
分散表現を行うことが可能な深層学習のモデル
• Skip-gram(先ほど説明したモデル)• Recurrent Neural Network (実装で使用しているモデル)• Recursive Neural Network
分散表現を行うことが可能な深層学習のモデル
• Recursive Neural Network• 合成ベクトルを単語から再帰的に予測するニューラルネットワークを構築
S
Neural単語ベクトル networks単語ベクトル improve単語ベクトル the単語ベクトル accuracy単語ベクトル
合成ベクトル
合成ベクトル合成ベクトル
デモに使用したモデル
太郎 さん こんにちは
こんにちは<EOS>• Recurrent Neural Network(Seq to Seq)
• 入力側 (Encoder) と出力側 (Decoder) それぞれ RNN を用意• Encoder によって入力系列を中間ノードに変換しその情報をもとに
Decoder が系列を出力
Encoder Decoder
デモに使用したモデル
太郎 さん こんにちは
こんにちは<EOS>• Attention Model• 出力ステップで、その時の隠れ層を使い入力側の隠れ層を加重平均したベクトルを出力で使用
+Encoder
Decoder
System Architecture
SQLite
対話破綻コーパス
ファインチューニング用学習データ
プレトレイン WikiPedia タイトルデータ学習
データ取得 データ出力
チューニング
ボット応答
ユーザーアクション
Word NetWikipedia
Entity Vector
Word NetWikipedia
Entity Vector
Wikipedia Entity Vector と Word Netを用いた話題選定
• Word Net は何??– 単語に概念を付与してグループ化してくれているデータセット
スコティッシュホールド クロネコ オレンジネコ
ネコ
Wikipedia Entity Vector と Word Netを用いた話題選定
• Wikipedia Entity Vector は何??– 単語、および Wikipedia で記事となっているエンティティの分散表現ベクトル
Wikipedia Entity Vector と Word Netを用いた話題選定
• Word Net と Wikipedia Entity Vector を組み合わせ1: Word Net の概念クラスを Wikipedia Entity Vector を用いて サマライズ2: Word Net の未知語を Wikipedia Entity Vector で付与3:概念クラスの平均ベクトルを Wikipedia Entity Vector で 導出4:概念クラスをサマライズ5:概念クラス内の単語の頻度が 1000 以上だけ残す
Wikipedia Entity Vector と Word Netを用いた話題選定
1 : Word Net の概念クラスを Wikipedia Entity Vector を用いてサマライズ ネコ :[0.2, 0.3, 0.4…]
犬 :[0.3, 0.4, 0.5…]Wikipedia
Entity Vector
うさぎ :[0.2, 0.5, 0.4…]
コサイン類似度計算
Wikipedia Entity Vector と Word Netを用いた話題選定
2: Word Net の未知語を Wikipedia Entity Vector で付与
クロネコ白猫:三毛猫:
ネコWikipedia Entity Vector
コサイン類似度近い
未知語なら追加
Wikipedia Entity Vector と Word Netを用いた話題選定
3: 概念クラスの平均ベクトルを Wikipedia Entity Vector で導出
クロネコ :[0.2, 0.3, 0.4…]白猫 :[0.1, 0.3, 0.…]:
ネコ
柴犬 :[0.1, 0.3, 0.4…]土佐犬 :[0.1, 0.2, 0.…]:
犬
平均ベクトル
平均ベクトル
Wikipedia Entity Vector と Word Netを用いた話題選定
4: 概念クラスをサマライズ
クロネコ :[0.2, 0.3, 0.4…]白猫 :[0.1, 0.3, 0.…]:
ネコ
柴犬 :[0.1, 0.3, 0.4…]土佐犬 :[0.1, 0.2, 0.…]:
犬
平均ベクトル
平均ベクトルコサイン類似度計算
Wikipedia Entity Vector と Word Netを用いた話題選定
5: 概念クラス内の単語の頻度が 1000 以上だけ残す
クロネコ白猫:
ネコ
柴犬土佐犬:
犬
白鳥アヒル:
トリ
コアラコアラ
Attention Model を用いた言葉へのフォーカス
• Attention Model
• 詳しくは下記のスライドでhttp://www.slideshare.net/yutakikuchi927/deep-learning-nlp-attention
深層学習を実際に適用するには• データの問題
• 法的な問題• ・・・
• 少量の教師データしかない問題• 既にある資源の有効活用
• Wikipedia• WordNet• etc
• 転移学習• 事前に他のデータで学習したモデルの重みを使用
• バイトを雇う。外注(クラウドワークス)• 教師データを作成してもらう。
深層学習を実際に適用するには• 人でも分からない問題
• 哲学的なものは厳しい(人はなぜ生きるのかなど)• フィーリングと勘でやっていて言葉にできない。(営業など)
• 難しい・・けどコミュニケーションを取れば何らかの傾向や細分化できる部分があるはず。その部分のみ解決することは可能
勉強方法• 勉強のための教材• Coursera
• https://www.coursera.org/learn/machine-learning/home/info
• Stanford University CNN• http://cs231n.stanford.edu/
Conclusion• 機械学習• 深層学習(ニューラルネットワーク)• 自然言語処理における深層学習• 勉強方法• Githubに Starをくれるとやる気が加速します!!
– githubを“ Chainer Slack Twitter”で検索
Reference• Chainer で学習した対話用のボットを Slack で使用 +Twitter から学習データを取得してファインチューニング
– http://qiita.com/GushiSnow/items/79ca7deeb976f50126d7• WordNet
– http://nlpwww.nict.go.jp/wn-ja/• 日本語 Wikipedia エンティティベクトル
– http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/• PAKUTASO
– https://www.pakutaso.com/• A Neural Attention Model for Sentence Summarization
– http://www.aclweb.org/anthology/D15-1044• 猫の画像( 10 ページ)
• http://photobucket.com/images/gif%20pixel%20cat%20kitten%20black%20cat%20cute• 構文解析
• http://qiita.com/laco0416/items/b75dc8689cf4f08b21f6
Reference• 分かち書き画像
• http://www.dinf.ne.jp/doc/japanese/access/daisy/seminar20090211/session1_1.html
• 波形の画像( 10 ページ)• http://www.maroon.dti.ne.jp/koten-kairo/works/fft/intro1.html
• Large Scale Visual Recognition Challenge 2012• http://image-net.org/challenges/LSVRC/2012/results.html
• 音声認識技術 - 大規模テキストアーカイブ研究分野 - 京都大学• http://www.ar.media.kyoto-u.ac.jp/lab/project/paper/KAW-
IEICEK15.pdf• iconfinder
• https://www.iconfinder.com/search/?q=Program&price=free• Machine learningbootstrap For Business
• http://www.slideshare.net/takahirokubo7792/machine-learningbootstrap-for-business
• A Neural Attention Model for Sentence Summarization [Rush+2015] (Slide Share)– http://www.slideshare.net/yutakikuchi927/a-neural-attention-model-for-sentence-
summarization