SlideShare a Scribd company logo
word2vec
担当:丹野 良介
構成
l 1章 word2vecを使ってみる
l 2章 コーパスを変えてみる
l 3章 word2vecの⽣まれた理由
l 4章 word2vecの仕組み
l 5章 word2vecで出来ること・苦⼿なこと
2
word2vecとは
l Tomas	Mikolovらによって提案されたNN(CBOW,	Skip-
gram)のOSS実装
– 論⽂:http://arxiv.org/pdf/1301.3781.pdf
– 実装:https://code.google.com/archive/p/word2vec/
l ⽤は単語をベクトル化して表現する定量化⼿法のこと
l 例えば,
– ⽇本⼈が⽇常的に使う語彙数:数万~数⼗万
– word2vecでは:各単語を200次元くらいの空間内におけるベ
クトルで表現する
3
200次元を2次元空間に投影
4
word2vecとは
l その結果,
– 精度を向上するのが難しかった単語同⼠の類似度や意
味的な加算・減算などが可能
– 単語の「意味」を捉えるようになった
l 東京ー⽇本+フランス=パリ
l ⾚味噌ー名古屋+⻑野=信州(信州味噌!)
l ⾚味噌ー名古屋+京都=⽩味噌
l 電通⼤ー国⽴=⼤阪電気通信⼤学?
l 電通⼤ーアニメ+知名度=???
5
単語ベクトルの⾜し引きの模式図
l manーwoman+uncle=queen
l manーwoman+king=AUNT
l つまり,この差分は性別を表現している
l Mikolovらは,
l 「意味的に関連が強い単語はベクトルが近く
なる」と主張
6
論より証拠ということで
l デモサイト:http://deeplearner.fz-
qqq.net/ja.html
7
word2vec概要
l 単語は,そのままでは距離を⾜したり引いた
り計算することはできない
l 単語ー>ベクトル表現(word2vec)
l 距離の計算や⾜し引きができるように!
l word2vecの実装は公開されている
l 従来の実装では,NNの学習に何⽇も…
– ⾼速化することで,普通のPCでも数分〜数時間で
学習可能に!→
8
1章 WORD2VECを使ってみる
9
word2vecのオプション⼀覧
l -train	text8:「text8を学習」
l -output	vector.bin:「学習結果を出⼒する
ファイルはvector.binという名前にする」
l -threads	12:「学習を12スレッド並列で⾏
う」
l -binary	1:「出⼒はバイナリ形式で⾏う」
10
word2vecのオプション⼀覧(学習)
l -cbow 0:「学習のモデルとしてCBOWでは
なくSkip-gramを使う」
l -size	200:「ベクトルの次元は200次元と
する」
l -window	5:「⽂脈は最⼤5単語とする」
l -hs 1:「学習の⾼速化のために階層的ソフ
トマックスを使う」
l -sample	le-3:「頻出語をランダムに削除.
削除頻度は⾼め」
11
word2vec使⽤例
l 単語をベクトルに変換し,そのベクトルに
近いベクトルを持っている順に他の単語を
表⽰する
12
実際に動かしてみる
13
2章 コーパスを変えてみる
14
コーパスを変えてみる
l 第1章では,サンプルとして提供されているtext8
コーパスを学習に使⽤
l それじゃつまらない…
l ⾃分の興味のある分野の⽂章を使いたい…
l ということで,2章では
– コーパスの作り⽅
– コーパス変化によるword2vecの変化の振る舞い
– などを観察します
15
text8
l 中⾝は,英単語の空⽩区切り
16
word2vecが要求するコーパスフォーマット
l 単語は空⽩⽂字で区切る
– ⽂章全体を「とても⻑い単語」と判断させないた
め
– MeCab(OSS形態素解析エンジン)を使って,単語を
「分かち書き(単語に分割する)」に変換する
l ⽂章は改⾏で区切る
– 学習過程で「今注⽬している単語の周辺の単語を
選ぶ」ために,異なる⽂の単語を選ばないため
17
MeCabを使ってみる
18
分かち書きされた!
処理前
処理後
コーパス変化によるword2vecの振舞
19
3章 WORD2VECの⽣まれた理由
20
⽂章の表現
l 計算機で⽂章を扱うとき,どのような形で
持つか考えてみる
– ⼀番素朴な形は⽂字列,つまり⽂字の配列で
持つ
l しかし,単語の⻑さが可変…
– i番⽬の単語を取り出したいー>⽂字列を1⽂字
ずつ読んで,単語の区切りを探す…メンドウ…
21
⽂章の表現
l 解決策としては,
l ⽂字列を精通に対応付け,⽂章を整数の配
列として持つ⽅法
– それぞれの単語に1つの整数値を割振る
– その対応付を「辞書」として保持
– i番⽬の単語を知りたかったら配列のi番⽬の整
数値を取り出す
– 辞書でその整数値に対応する単語を調べる
22
⽂章の表現
l word2vecでは,
l 線形⾛査開放番地⽅式のハッシュテーブル
を使⽤
– 「⽂字列を整数に対応付ける仕組み」がある
と理解すれば良い
23
1	of	K符号化
l 単語が整数で表現されるようになった
– 数値として扱うと「123と124は近い」という
「意味」をもってしまう
– これは単語の「意味」とは無関係なベクトル
• 整数値は単語に「たまたま割り振られた」値
• その整数値に異⾝を持たせて「dogとdotはとても近
い,catはそれよりも遠い」と解釈しては可笑しい
l この問題を解決するにはー>1	of	K符号化
24
1	of	K符号化
l 1〜Kまでの整数をK次元のベクトルで表現
l 例えば,K=5とすると
– 1(1,	0,	0,	0,	0) 2(0,	1,	0,	0,	0) 3(0,	0,	1,	0,	0)
– 4(0,	0,	0,	1,	0) 5(0,	0,	0,	0,	1)
– どの2つのベクトルをとっても,そのベクトル
間の距離 は √2	で⼀定
25
1	of	K符号化
l 1	of	Kはどの2つをとっても距離は同じ
26
1	of	K符号化
l 「要素のほとんどが0である」
– 疎なベクトル→0以外の要素が1とは限らない
l 「要素が0と1の2通りの値である」
– ⼆値ベクトル→1の個数が1個とは限らない
l つまり,疎な⼆値ベクトルは1	of	K形式のベク
トルよりも広い概念
l 「1	of	K	符号化」 は「 one	hot	representation」
ともいいます
27
分散表現
l 2章で実験したようにword2vecで⽤いる語彙
数は数万〜100万規模
l 1	of	K符号化を⾏う→1つの単語は100万ベクト
ルで表現
– 「⼈間の脳は本当に1つの単語に1つのニューロン
を割り当ててるの?」
– 「100万単語それぞれに?」
– 「本当はニューロンの組み合わせで表現している
のでは?」
28
ここで復習
l 単語を整数として扱う
– 「本当は近くない単語を近いと思ってしま
う」
• dog(123),	dot(124)は近いがcat(789)は前者と遠い…
l この問題を回避するためー>1	of	K符号化
– 「全ての単語が等距離」というモデルを作成
29
ここで復習
l しかし,実際には…
– 「すべての単語が等距離」は強すぎる仮定では?
– 現実世界では,「猫」と「⼦猫」の距離は「猫」
と「整数」の距離と等距離か?
– 「猫」と「整数」の⽅が近くなるのは都合が悪い
から,せめて等距離にしようと1	of	K符号化を採⽤
したのに…
– もし「猫」と「⼦猫」の⽅が近くなるようなモデ
ルがあれば,それを使った⽅が,より現実を正し
く反映しているのでは?
30
そこで登場するのが分散表現
l 1	of	K形式の⾼次元ベクトルをもっと低次元のベク
トルに現実世界での距離をなるべく保って変換す
るという実験が⾏われた.
– 論⽂:
http://www.jmlr.org/papers/volume11/erhan10a/erhan10a
.pdf
– 結果:低い次元に落として学習したほうが性能が良い
l この「1	of	K形式の⾼次元ベクトルを,もっと低い
次元の実数ベクトルで表現したもの」を分散表現
と呼ぶ.
31
word2vecの⽬的
l単語の分散表現を作ること
32
参考資料
l 動画系
– Univ of	WATERLOO:	「Deep	Learning,	Word2vec」
https://www.youtube.com/watch?v=TsEGsdVJjuA
33

More Related Content

More from Ryosuke Tanno

Deep Learning on the Mobile Devices
Deep Learning on the Mobile DevicesDeep Learning on the Mobile Devices
Deep Learning on the Mobile Devices
Ryosuke Tanno
 
Introduction of Mobile CNN
Introduction of Mobile CNNIntroduction of Mobile CNN
Introduction of Mobile CNN
Ryosuke Tanno
 
複数スタイルの融合と 部分的適用を可能とする Multi-style Feed-forward Networkの提案
複数スタイルの融合と部分的適用を可能とするMulti-style Feed-forward Networkの提案複数スタイルの融合と部分的適用を可能とするMulti-style Feed-forward Networkの提案
複数スタイルの融合と 部分的適用を可能とする Multi-style Feed-forward Networkの提案
Ryosuke Tanno
 
Caffe2C: A Framework for Easy Implementation of CNN-based Mobile Applications
Caffe2C: A Framework for Easy Implementation of CNN-based Mobile Applications Caffe2C: A Framework for Easy Implementation of CNN-based Mobile Applications
Caffe2C: A Framework for Easy Implementation of CNN-based Mobile Applications
Ryosuke Tanno
 
Conditional CycleGANによる食事画像変換
Conditional CycleGANによる食事画像変換Conditional CycleGANによる食事画像変換
Conditional CycleGANによる食事画像変換
Ryosuke Tanno
 
モバイルOS上での深層学習による 画像認識システムの実装と比較分析
モバイルOS上での深層学習による 画像認識システムの実装と比較分析モバイルOS上での深層学習による 画像認識システムの実装と比較分析
モバイルOS上での深層学習による 画像認識システムの実装と比較分析
Ryosuke Tanno
 
AR DeepCalorieCam: AR表示型食事カロリー量推定システム
AR DeepCalorieCam: AR表示型食事カロリー量推定システムAR DeepCalorieCam: AR表示型食事カロリー量推定システム
AR DeepCalorieCam: AR表示型食事カロリー量推定システム
Ryosuke Tanno
 
CoreMLによるiOS深層学習アプリの実装と性能分析
CoreMLによるiOS深層学習アプリの実装と性能分析CoreMLによるiOS深層学習アプリの実装と性能分析
CoreMLによるiOS深層学習アプリの実装と性能分析
Ryosuke Tanno
 
OpenCV DNN module vs. Ours method
OpenCV DNN module vs. Ours method OpenCV DNN module vs. Ours method
OpenCV DNN module vs. Ours method
Ryosuke Tanno
 

More from Ryosuke Tanno (9)

Deep Learning on the Mobile Devices
Deep Learning on the Mobile DevicesDeep Learning on the Mobile Devices
Deep Learning on the Mobile Devices
 
Introduction of Mobile CNN
Introduction of Mobile CNNIntroduction of Mobile CNN
Introduction of Mobile CNN
 
複数スタイルの融合と 部分的適用を可能とする Multi-style Feed-forward Networkの提案
複数スタイルの融合と部分的適用を可能とするMulti-style Feed-forward Networkの提案複数スタイルの融合と部分的適用を可能とするMulti-style Feed-forward Networkの提案
複数スタイルの融合と 部分的適用を可能とする Multi-style Feed-forward Networkの提案
 
Caffe2C: A Framework for Easy Implementation of CNN-based Mobile Applications
Caffe2C: A Framework for Easy Implementation of CNN-based Mobile Applications Caffe2C: A Framework for Easy Implementation of CNN-based Mobile Applications
Caffe2C: A Framework for Easy Implementation of CNN-based Mobile Applications
 
Conditional CycleGANによる食事画像変換
Conditional CycleGANによる食事画像変換Conditional CycleGANによる食事画像変換
Conditional CycleGANによる食事画像変換
 
モバイルOS上での深層学習による 画像認識システムの実装と比較分析
モバイルOS上での深層学習による 画像認識システムの実装と比較分析モバイルOS上での深層学習による 画像認識システムの実装と比較分析
モバイルOS上での深層学習による 画像認識システムの実装と比較分析
 
AR DeepCalorieCam: AR表示型食事カロリー量推定システム
AR DeepCalorieCam: AR表示型食事カロリー量推定システムAR DeepCalorieCam: AR表示型食事カロリー量推定システム
AR DeepCalorieCam: AR表示型食事カロリー量推定システム
 
CoreMLによるiOS深層学習アプリの実装と性能分析
CoreMLによるiOS深層学習アプリの実装と性能分析CoreMLによるiOS深層学習アプリの実装と性能分析
CoreMLによるiOS深層学習アプリの実装と性能分析
 
OpenCV DNN module vs. Ours method
OpenCV DNN module vs. Ours method OpenCV DNN module vs. Ours method
OpenCV DNN module vs. Ours method
 

Recently uploaded

Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
K Kinzal
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
miyp
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
Toru Miyahara
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Toru Miyahara
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Toru Miyahara
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
Masatsugu Matsushita
 
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
Yuuitirou528 default
 

Recently uploaded (7)

Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
 

【2016年度】勉強会資料_word2vec