Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Webプログラマと数学の接点、その入り口
Naoya Ito
October 04, 2016
Technology
88
28k
Webプログラマと数学の接点、その入り口
Naoya Ito
October 04, 2016
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
136
45k
一休の現在と、ここまでの道のり
naoya
87
39k
技術的負債と向き合う
naoya
245
73k
System of Record と System of Engagement
naoya
183
61k
Serverless Architecture
naoya
118
43k
開発組織マネジメントのコツ
naoya
243
100k
Infrastructure as Code
naoya
31
11k
情報共有 失敗あるある
naoya
81
39k
HBFav for Desktop 開発進捗
naoya
11
3.5k
Other Decks in Technology
See All in Technology
データエンジニアと作るデータ文化
yuki_saito
4
1.7k
DOM Invader - prototype pollution対応の衝撃 - / DOM Invader - prototype pollution
okuken
0
160
プログラマがオブジェクト指向しても幸せになれない理由
shirayanagiryuji
0
150
DeepL の用語集が(いつのまにか)日本語に対応してたので試してみた
irokawah0
0
170
紙にまつわる苦しみを機能化してきた カミナシの歴史
kaminashi
0
1.3k
Camp Digital 2022: tailored advice
kyliehavelock
0
150
約6年間運用したシステムをKubernetesに完全移行するまで/Kubernetes Novice Tokyo
isaoshimizu
5
900
Build 2022で発表されたWindowsアプリ開発のあれこれ振り返ろう
hatsunea
1
380
今どきのLinux事情
tokida
42
35k
PUTとPOSTどっち使う?
hankehly
0
270
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
oracle4engineer
PRO
0
150
eBPF for Security Observability
lizrice
0
200
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
86
12k
How New CSS Is Changing Everything About Graphic Design on the Web
jensimmons
213
11k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_i
23
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
The Invisible Side of Design
smashingmag
290
48k
What the flash - Photography Introduction
edds
62
10k
Embracing the Ebb and Flow
colly
73
3.4k
Docker and Python
trallard
27
1.6k
In The Pink: A Labor of Love
frogandcode
131
21k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
315
19k
The Brand Is Dead. Long Live the Brand.
mthomps
46
2.7k
A Tale of Four Properties
chriscoyier
149
21k
Transcript
8FCϓϩάϥϚͱֶͷɺͦͷೖΓޱ /BPZB*UP גࣜձࣾҰٳ$50
ΞδΣϯμɺରͱ͢Δํ • ΞδΣϯμ – ઢܗͷجૅɺࣗવݴޠॲཧɺϓϩάϥϛϯάŋŋŋ – ্هΛֶతࢹ࠲ͱϓϩάϥϛϯά ϓϩάϥϚ తࢹ࠲Ͱݟ͍ͯ͘ •
ओʹରͱ͢Δํ – 8FCϓϩάϥϚͷํ – ֶʹৄ͍͠ํͰϓϩάϥϛϯάʹڵຯ͕͋Δํ – ࣗવݴޠॲཧใݕࡧɺϦίϝϯυΤϯδϯʹڵຯ͕͋Δํ
ϕΫτϧ ֶߍͰश͍·ͨ͠
a ! = 2 4 ⎡ ⎣ ⎢ ⎤ ⎦
⎥
ϕΫτϧ ૉͳٙ • ܭࢉػՊֶͷຊͳͲͰΑ͘ʮϕΫτϧʯͱ͍͏୯ޠ͕ग़ͯ͘Δ • ϕΫτϧ ҹ • ཧֶͰ͚ͬͨͲɺςΩετॲཧʹϕΫτϧͬͯԿͩ
ϕΫτϧ • ֶߍͰशͬͨҹͷϕΫτϧŋŋŋزԿϕΫτϧ – ํΛ࣋ͬͨྔ • ෳͷΛηοτͰදͨ͠ྔͱͯ͠ͷϕΫτϧŋŋŋతදݱ – ͭͷͳΒ࣍ݩ
– ͭͷͳΒ࣍ݩ – ສͷͳΒສ࣍ݩ a = 2 4 ⎡ ⎣ ⎢ ⎤ ⎦ ⎥ b = 2 4 1 ⎡ ⎣ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥
ϓϩάϥϛϯάతͳࢹ࠲ͩͱŋŋŋ • εΧϥʔʹର͢ΔϦετ ྻ – ϓϩάϥϛϯάʹ͓͚Δ୯Ұͷ εΧϥʔ Λ·ͱΊͯѻ͏σʔλߏ ŋŋŋϦετɺྻ
– ϕΫτϧŋŋŋෳͷΛηοτͰѻ͏σʔλߏɺΈ͍ͨͳͷͱࢥ ͍͍͑
ϞσϧԽˠϕΫτϧͰදݱ • 5PCFPSOPUUPCFUIBUJTUIFRVFTUJPO – ͜ͷจॻΛ୯ޠͷग़ݱස 5FSN'SFRVFODZŋŋŋ5' ͰϞσϧԽ ୯७Խ ͢Δ –
લޙͷจ຺ߟྀͤͣɺ୯ޠΛାʹ์ΓࠐΉͷͰ#BHPG8PSETͱݺΕΔ • UPŋŋŋ • CFŋŋŋ • PSŋŋŋ • OPUŋŋŋ • UIBUŋŋŋ • JTŋŋŋ • UIFŋŋŋ • RVFTUJPOŋŋŋ d 1 = 2 2 1 1 1 1 1 1 ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ to be or จॻϕΫτϧ
ϕΫτϧˠྻ d 1 = 2 2 1 1 1 1
1 1 ⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ const d1 = [ 2, 2, 1, 1, 1, 1, 1, 1 ] console.log(d1[0]) // 2
• จॻΛϕΫτϧͱͯ͠දݱ • ࣙॻͷ୯ޠΛͱ͢Δແݶ࣍ݩϕΫτϧ Antony and Cleopatra Julius Caesar The
Tempest Hamlet Othello Macbeth Antony 157 73 0 0 0 0 Brutus 4 157 0 1 0 0 Caesar 232 227 0 2 1 1 Calpurnia 0 10 0 0 0 0 Cleopatra 57 0 0 0 0 0 mercy 2 0 3 5 5 1 worser 2 0 1 1 1 0 d1 จॻͷϕΫτϧԽ source: Introduc.on to Informa.on Retrieval h7p://nlp.stanford.edu/IR-book/
จॻͱจॻͷྨࣅΛௐ͍ͨ • ൺֱ͍ͨ͠ෳͷจॻΛจॻϕΫτϧʹ͢Δ • ͦΕͧΕൺֱ͍ͯۙ͠ϕΫτϧΛ୳͢ • ࠷͍ۙϕΫτϧ͕࠷૬͕ؔߴ͍จॻ
ൺֱํ๏ŋŋŋྫ͑ɺίαΠϯྨࣅ • ϕΫτϧͷྨࣅŋŋŋϕΫτϧ͕࡞ΔDPTВΛٻΊΔࣜʹ͍͠ – ͔͚ࢉͷූ߸ΛݟΕͱͷྨࣅ͕Θ͔Δ • BYCͷ݁Ռ͕ਖ਼ͳΒɺೋͭಉ • BYCͷ݁Ռ͕ෛͳΒɺೋͭٯ͖
ରͷੑ࣭ • BYCͷ݁Ռ͕ͳΒɺൺֱରͱͯ͠ෆత֬ – ϕΫτϧͷੵϕΫτϧͷ͝ͱʹֻ͚ͯ͠ࢉͯ͠Δ͚ͩ • BɾCB C B C B C ŋŋŋ • ੵ͕ਖ਼ͳΒಉɺෛͳΒٯ – ༨ݭఆཧ cosθ = a⋅b a b 参考: 「相関係数とは何か?」を 体系的に理解するための6ステップ h7p://language-and-engineering.hatenablog.jp/entry/20090128/1233151846
• ϕΫτϧͷੵ͕࠷େ͖͍ͷ࠷૬͕ؔߴ͍ • ڑؔ ίαΠϯྨࣅ source: Introduc.on to Informa.on Retrieval
p.112
ͭͷখઆͷޠͷUG w 4FOTFBOE4FOTJCJMJUZ w 1SJEFBOE1SFKVEJDF w 8VUIFSJOH)FJHIUT ϕΫτϧͰਖ਼نԽ 4B4ɾ1B1 4B4ɾ8) 㱤4B4ʹ͍ۙͷ8)ΑΓ1B1 ྫ source:
Introduc.on to Informa.on Retrieval p.112
ϓϩάϥϜ +BWB4DSJQU ʹ͢Δͱ const _ = require('lodash') // 文書をベクトル (配列)
で表現する。TFをベクトル長で正規化した値 const docs = { sas: [0.996, 0.087, 0.017], pap: [0.993, 0.120, 0], wh: [0.847, 0.466, 0.254] } // 2ベクトルのコサイン類似度を計算 function sim(d1, d2) { // 各成分の掛け算 (zipWith で * ) を累積 (sum) return _.sum(_.zipWith(d1, d2, (a, b) => { return a * b })) } console.log(sim(docs.sas, docs.pap)) // 0.999 console.log(sim(docs.sas, docs.wh)) // 0.888
ֶ͔ΒϓϩάϥϛϯάŋŋŋϕΫτϧԽ˰σʔλߏ • จॻΛϕΫτϧʹ • ϕΫτϧʹ͢Δ͜ͱͰԋࢉͷೖΓޱ͕։͘ – ϕΫτϧۭؒϞσϧ – ϕΫτϧԽͷͨΊͷ୯७ͳख๏ŋŋŋ#BHPG8PSET 5'
5'*%' • ϕΫτϧΛྻͱ͍͏σʔλߏͰѻ͍ΞϧΰϦζϜΛద༻ – ΞϧΰϦζϜŋŋŋίαΠϯྨࣅ
ҎԼಉ͡ૢ࡞Λ͍ͯ͠Δ • ϓϩάϥϛϯά – σʔλߏʹରͯ͠ԋࢉΛఆٛ͢Δ – ରΛσʔλߏʹམͱ͠ࠐΉ͜ͱ͕Ͱ͖Εɺͦͷԋࢉ͕͑Δ • ֶ –
ϕΫτϧߦྻͱ͍͏ߏʹϞσϧԽ͢Δ – ϕΫτϧߦྻͷԋࢉ͕͑Δ ྆ऀΛڮͨ͠͠ͷ͕ɺ ϕΫτϧˠྻͰͷ දݱ
ҎԼಉ͡ • ʹΑΔநԽ – ݸͷͱݸͷΛ͠ࢉͨ͠Γֻ͚ࢉͨ͠Γŋŋŋͱߟ͑Δͱେ ม͕ͩŋŋŋ – ͦΕͧΕBɺCͱ͍͏ϕΫτϧͰմͱͯ͠දݱ͢ΔͱB CɺBɾCͱ ୯७Խ͢Δ͜ͱ͕Ͱ͖Δ
• ϓϩάϥϛϯάʹ͓͚ΔநԽ – ͨ͘͞ΜͷύϥϝʔλΛ࣋ͬͨσʔλಉ࢜ͷԋࢉΛݸผʹߟ͑Δͱେ ม͕ͩŋŋŋ – ಉҰίϯςΩετͷσʔλɺσʔλߏΦϒδΣΫτͱͯ͠մͱ ͯ͠දݱ͠ɺσʔλߏͷԋࢉɺΦϒδΣΫτͷ૬ޓ࡞༻ͱͯ͠ߟ ͑Δͱ୯७͔Ͱ͖Δ
͓͓ʔ
ߦྻ • ߦྻŋŋŋෳͷϕΫτϧΛ·ͱΊͯѻ͏͜ͱ͕Ͱ͖Δ • จॻू߹Λߦྻͱ͍͏ҰͭͷͰදݱͰ͖Δ D = 0.996 0.993 0.847
0.087 0.120 0.466 0.017 0 0.254 ⎡ ⎣ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ ୯ޠจॻߦྻ ֤ߦɺ֤ྻϕΫτϧ
ߦྻͨͱ͑ೋ࣍ݩྻͰදݱͰ͖Δ D = 0.996 0.993 0.847 0.087 0.120 0.466 0.017
0 0.254 ⎡ ⎣ ⎢ ⎢ ⎢ ⎤ ⎦ ⎥ ⎥ ⎥ const documentMatrix = [ [0.996, 0.993, 0.847], [0.087, 0.120, 0.466], [0.017, 0 , 0.254] ]
ϓϩάϥϚతࢹ࠲Ͱͷߦྻ • ͍ΘΏΔྻͷྻ ϦετͷϦετ – ྻͰදݱͨ͠ϕΫτϧΛ·ͱΊͯѻ͏ – ߦྻʹߦྻͷԋࢉ͕ఆٛ͞Ε͍ͯΔ
×ŋŋŋ
ߦྻΛରʹͨ͠ܭࢉ • ߦྻʹ͢Δ͜ͱͰɺߦྻΛରʹͨ͠ܭࢉ͕͑Δ • ྫŋŋŋಛҟղ 4JOHMVBS7BMVF%FDPNQPTJUJPOŋŋŋ47% C =UΣVT source:
Introduc.on to Informa.on Retrieval p.377 h7p://nlp.stanford.edu/IR-book/pdf/18lsi.pdf ・・・ C の自己相関行列の固有ベクトルを用いて分解。Σに特異値
ͭ·Γŋŋŋ • ֶతʹŋŋŋ – จॻ܈Λ୯ޠจॻߦྻͱͯ͠දݱ͢Δ – ߦྻͱͯ͠දݱͰ͖Ε47%ͰղͰ͖Δ – 47%Ͱղ͢Δͱɺಛҟ͕ɻಛҟͰϥϯΫۙࣅͳͲ͕Ͱ͖Δ •
ϓϩάϥϜతʹŋŋŋ – ୯ޠจॻߦྻΛ࣍ݩྻͱͯ͠දݱ͢Δ – 47%ͷܭࢉΛద༻͢Δ – ϥϯΫۙࣅΛ͢Δ͜ͱͰܭࢉྔΛݮΒͨ͠Γɺ࣍ݩѹॖͨ͠Γ͢Δ͜ͱ͕Ͱ͖Δ
1ZUIPOͷOVNQZͰ47% > import numpy as np # 行列を二次元配列で > A
= np.array([[1, 0, 2], [0, 1, 0], [1, 0, 2]]) > A array([[1, 0, 2], [0, 1, 0], [1, 0, 2]]) # SVD を計算 > U, s, V = np.linalg.svd(A) > U array([[ -7.07106781e-01, -1.57009246e-16, -7.07106781e-01], [ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ -7.07106781e-01, 1.57009246e-16, 7.07106781e-01]]) > s array([ 3.16227766e+00, 1.00000000e+00, 4.24340278e-17]) > V array([[-0.4472136 , 0. , -0.89442719], [ 0. , 1. , 0. ], [ 0.89442719, 0. , -0.4472136 ]])
જࡏతҙຯΠϯσΫγϯά -BUFOU4FNBOUJD*OEFYJOH • จॻϕΫτϧۭؒͷ࣍ݩΛѹॖ͢Δ – ʮDBSʯͰݕࡧͨ͠ΒʮBVUPNPCJMFʯώοτ͢ΔΑ͏ʹ – 47%ͰߦྻΛղ͠ɺಛҟʹԠͯ͡ߦྻͷ֊ΛԼ͛Δ –
ϕΫτϧۭ͕ؒ࣍ݩͷۭؒʹࣹӨ͞ΕΔɻ͜ͷͱ͖୯ޠͷજࡏతҙຯ͕ ѹॖ͞ΕΔ • $6Є7UͷЄΛߏ͢Δಛҟͷ͏͕ͪখ͞ͳΛʹ – ϥϯΫ ֊ ͕Լ͕Δجఈͷ͕ݮΔ • ЄˠЄ L • $ L 6Є L 7U – ॏཁͳجఈ͚ͩΛͯ͠খ͞ͳߦྻʹۙࣅͨ͜͠ͱʹͳΔ – খ͘͞ͳͬͨ$ L ʹɺ͍ͭͷίαΠϯྨࣅͳͲ
ײతΠϝʔδ • ϕΫτϧۭؒͷجఈΛมͯ͠ใྔͷগͳ͍࣠ແࢹ͢Δ
-4*͕͍ͬͯΔ͜ͱ • දݱྗ͕๛͗ͯ͢จॻΛৄࡉ·ͰදݱͰ͖͗ͯ͢ɺຊདྷࣅ͍ͯΔ จॻҧͬͨจॻͱͯ͠දݱͰ͖ͯ͠·͏ • ॏཁͷ͍ใΛݮˠࣅͯΔจॻͷྨࣅΛ্͛Δ cf: 潜在的意味インデキシング(LSI)徹底入門 h7ps://deepage.net/bigdata/machine_learning/2016/08/28/fast_text_facebook.html
͍͜͠ͱΛ͍Ζ͍Ζड़·͕ͨ͠ŋŋŋ • ࣗવݴޠˠߦྻˠֶˠσʔλߏ ೋ࣍ݩྻ ˠΞϧΰϦ ζϜ – จॻΛ୯ޠϕΫτϧͰදݱ͠ɺϕΫτϧͷू߹ΛߦྻͰදݱ͢Δ – ͢Δͱɺ-4*ͷΑ͏ͳख๏ΛͬͯྨࣅจॻΛൃݟͨ͠ΓͰ͖Δ
• ϥΠϒϥϦ -4* ͕ཁٻ͢Δσʔλߏ ୯ޠจॻߦྻ Λೖྗͯ͠ ݁ՌΛಘͨɺΈ͍ͨͳײ͡ ࡶ
/.' /POOFHBUJWF.BUSJY'BDUPSJ[BUJPO • ඇෛߦྻΛͭͷඇෛߦྻʹҼࢠղ͢ΔΞϧΰϦζϜ – Ͳ͏ͬͯղ͢Δ͔ޙड़ • ͱͷߦྻ͕࣋ͭજࡏཁૉ ಛ
ΛᖰΓग़͢ X = WF = x 文書 単語 文書 特徴 特徴 単語 X W F ಛ͕จॻʹରͯ͠Ͳ ͷఔॏཁ͔ͷॏΈ ୯ޠ͕ಛʹରͯ͠Ͳ ͷఔॏཁ͔ͷॏΈ
/.'ͰςΩετϚΠχϯά • ΫΤϦ ୯ޠͷू߹ ͔Βؔ࿈͢ΔจॻΛಘ͍ͨͳΒŋŋŋ – '͔Β୯ޠू߹ͱద߹͢ΔಛϕΫτϧ ߦ ΛಘΔ –
࣍ʹ8͔ΒಛϕΫτϧʹద߹͢ΔߦΛબͿ = x 文書 単語 文書 特徴 特徴 単語 X W F ୯ޠ͕ಛʹରͯ͠Ͳ ͷఔॏཁ͔ͷॏΈ ಛ͕จॻʹରͯ͠Ͳ ͷఔॏཁ͔ͷॏΈ
ҼࢠղͷΓํ • 98'ͷ8ɺ'ͷશཁૉΛϥϯμϜͳਖ਼ͷͰຒΊΔ • શཁૉΛߋ৽͠ͳ͕Β෮ܭࢉ • ཁૉͷͷߋ৽ͷͨͼɺ9ͱ8'ͷڑΛܭࢉ – ڑŋŋŋೋޡࠩ,-μΠόʔδΣϯε •
ڑ͕ʹͳΔ͔ɺ༧ΊܾΊͨճ͚ͩߋ৽ΛߦͬͨΒऴΘΓ
୯ޠYจॻҎ֎ʹ • ΛߦɺྻʹങͬͨϢʔβʔɺཁૉ͕ߪೖ͔ͨ͠Ͳ͏͔ – ͷϨίϝϯυ – ࣅͨΑ͏ͳΛങͬͯΔϢʔβʔͷϨίϝϯυ • ۂΛߦɺྻʹϢʔβʔɺཁૉ͕ϨϏϡʔͷ –
ಉ͡Α͏ͳϢʔβʔಉ͡Α͏ͳۂΛΉˠۂͷϨίϝϯυ ͦͷଞख๏Ͱߟ͑ํҰॹ ϕΫτϧߦྻʹͯ͠ɺͦΕΛର ʹܭࢉͰϨίϝϯυ
(PPHMFͷ1BHF3BOL • ΣϒάϥϑΛߦྻͱͯ͠දݱ͠ɺߦྻͷओݻ༗ϕΫτϧΛٻΊΔ – ཁૉ͕ϦϯΫΛḷΔ֬ɻ֬ߦྻ – ݻ༗ϕΫτϧŋŋŋઢܗมͷಛΛද͢ϕΫτϧ – ओݻ༗ϕΫτϧࢉग़͖ଇʹΑΓܭࢉྔΛݮͰ͖Δ –
ओݻ༗ϕΫτϧͷ͕ɺΫΤϦʹର͢Δจॻͷద߹ 1BHF3BOL ※ 現在の検索アルゴリズムは単純な PageRank のみよりも遙かに複雑な計算が行われています
ͬͺΓɺվΊͯ • ҎԼಉ͡ߟ͑ํ – ϓϩάϥϛϯάŋŋŋσʔλߏʹରͯ͠खଓ͖ͷΠϯλϑΣʔεΛ༻ ҙ͢ΔɻσʔλߏʹϞσϧԽͰ͖Εͦͷखଓ͖͕͑Δ – ֶŋŋŋϕΫτϧߦྻͱ͍͏ߏʹϞσϧԽ͢ΔɻϕΫτϧߦ ྻͷԋࢉ͕͑Δ
ઢܗͷ͕ओͰ͕ͨ͠ŋŋŋ • ͨͱ͑ɺରΛ֬Ͱදݱ͢Δ㱺֬౷ܭֶతͳख๏ΛԠ ༻Ͱ͖Δ • ࣗવݴޠॲཧͳΒŋŋŋྫ֬తݴޠϞσϧ Md1 d1 Md2 d2
Mdn d2 ・・・ 文書コレクション (M はモデル) クエリ 情報要求 ) | ( d M Q P 生成
ۙͷ
୯ޠΛϕΫτϧͰŋŋŋ8PSE7FD • จॻͰͳ͘ ୯ޠΛϕΫτϧԽͯ͠දݱ͢Δख๏ ࣮ • ͻͱͭͷ୯ޠΛ࣍ݩ͙Β͍ͷϕΫτϧͱͯ͠දݱ͢Δ source: Facebookが公開した10億語を数分で学習するfastTextで一体何ができるのか h7ps://deepage.net/bigdata/machine_learning/2016/08/28/fast_text_facebook.html
୯ޠͷࢄදݱ
8PSE7FDͷੑ࣭ • 8PSE7FDͷϕΫτϧۭؒʹݴ༿ͷʮҙຯʯΛతʹදݱ͠ ͍ͯΔ͔ͷΑ͏ͳੑ࣭ source: 米googleの研究者が開発したWord2Vecで自然言語処理 h7p://qiita.com/okappy/items/e16639178ba85edfee72 > イチロー -
野球 + 本田 サッカー 0.612238 初戦 0.588327 バスケ 0.562973 > 日本 - 東京 + フランス 札幌 0.569258 パリ 0.566437 ミラノ 0.560036 > ご飯 - 卵 + そば 鶏 0.686967 ネギ 0.670782 塩 0.663107 ୯ޠϕΫτϧͷՃࢉɺ ݮࢉ͕ఆٛ͞Ε͍ͯΔ
8PSE7FDͷཧతੑ࣭ • 8PSE7FDͷਖ਼ମɺӅΕͱग़ྗͷ͔ΒͳΔ୯७ͳχϡʔ ϥϧωοτϫʔΫ • ୯ޠͷϕΫτϧදݱωοτϫʔΫͷॏΈͦͷͷ source: Word2Vec のニューラルネットワーク学習過程を理解する h7p://tkengo.github.io/blog/2016/05/09/understand-how-to-learn-word2vec/
8PSE7FD͔Β%PD7FDɺ*UFN7FD • ࢄදݱΛԠ༻ – 8PSE7FDͷ୯ޠࢄදݱͰจॻϕΫτϧΛߏஙˠ%PD7FD – ࢄදݱͰ*UFN FUD Λߏஙˠਪનɺྨ –
σΟʔϓϥʔχϯάͷૉੑʹ͑ΔͨΊେਓؾ • ྫϦΫϧʔτςΫϊϩδʔζాࢯ IUUQXXXTMJEFTIBSFOFUSFDSVJUDPKQTT – ߦಈϩάΛ୯ޠͱΈͳ͠8PSE7FDͰϕΫτϧԽɺίαΠϯྨࣅͰ Ϩίϝϯυͨ͠ͱ͜Ζਫ਼্͕ݟΒΕͨͱͷ͜ͱ
ϕΫτϧԽΛߟ͑Δ • #BHPG8PSETͰ୯ޠεΧϥʔ – จॻϕΫτϧŋŋŋ୯ޠ εΧϥʔ ͷू߹ŋŋŋ୯ޠͷྻ – ϓϩάϥϛϯάతࢹ࠲ŋŋŋྻͱ͍͏ɺϓϦϛςΟϒͳσʔλߏ
• 8PSE7FDͰ୯ޠࢄදݱ – ΑΓෳࡶͳߏ – ϓϩάϥϛϯάతࢹ࠲ŋŋŋΑΓߴͳσʔλߏ
σʔλߏɺखଓ͖ • ϓϩάϥϛϯά – ΑΓෳࡶͳσʔλߏͰΑΓෳࡶͳϞσϧΛදݱͰ͖Δ – σʔλߏʹ߹Θͤͨखଓ͖Λఆٛ͢Δ͜ͱͰɺ՝ΛղܾͰ͖Δ ϕΫτϧߦྻ ߏ
ͱࢉज़ खଓ͖ ͷؔ ੑͱطࢹײ
ݸਓతͳ
ֶۤखͰͨ͠ • খதߴͱֶ͕Ұ൪ѱ͍ • Λऔͬͨ͜ͱŋŋŋ • ߦྻͰͭ·͍ͮͨ
ॻ੶*OUSPEVDUJPOUP*OGPSNBUJPO3FUSJFWBM ݕࡧΤϯδϯͷษڧΛ͠Α͏ͱࢥͬͨΒߦྻ͕ŋŋŋͭΒ͍ ͜ͷͱ͖ࡀ
ԕࢁܒʰֶೖʱ
͔ͭͯͷֶͱ·ͬͨ͘ҟͳΔҹ • ֶֶ͕ੜͷͱ͖ʹ৮Εͨͷͱશ͘ผͷֶʹײͨ͡ – ܭࢉී௨ͷࢉज़ͰʹΑͬͯߦΘΕɺֶऀͷؒͰจࣈʹ ΑͬͯߦΘΕΔɻ͍ͣΕಉ͡ݪཧͷ্ʹ͖͔ͣΕ͓ͯΓɺಉ͡త Λ͍ͬͯΔ͕ɺࢉज़ҰఆͰಛघͰ͋ΓɺෆఆͰීวతͰ͋ Δ – ΛͨͩͳΒΔ͚ͩͰɺ͜ͱ৽͘͠ߦྻͱ͍͏ͷΛߟ͑Δޮೳ
ͳ͍ɻߦྻͲ͏͠ͷ͍͋ͩʹ͏·͘ Y ×ͷԋࢉΛߟ͑ΔΑ͏ʹ ͳͬͯɺ͡ΊͯߦྻͷҖྗ͕Θ͔ͬͯ͘ΔͷͰ͋Δ
ϓϩάϥϛϯάͱͷطࢹײ • ϕΫτϧɺߦྻŋŋŋ – ʮΛ·ͱΊ͔ͯ͋ͭ͏ŋŋŋ͜Εσʔλߏͷ͜ͱͩΘʯ • " #͕ͨͩͷͰͳ͘ߦྻͱ͍͏ෳࡶͳߏΛͬͨͷΈ ߹ΘͤͰ͋ͬͯɺ" #ɺ"#ɺ"#ͱ͔͚ɺ͔͋ͨࠓ·Ͱͷ
Ͱ͋Δ͔ͷΑ͏ʹߟ͑ͯɺࣅͨΑ͏ͳํ๏Ͱܭࢉ͕Ͱ͖ΔΘ͚Ͱ ͋Δ – ҟͳΔσʔλߏʹಉ͡ΠϯλϑΣʔε ܭࢉ Λఆٛ͢ΕͦΕΒ ΛಉҰࢹͰ͖Δ – ʮ͜ΕμοΫλΠϐϯά ϙϦϞʔϑΟζϜ ͩɻͦ͏͔ɺநԽ͔ʯ
ࣗʹͱͬͯͷϓϩάϥϛϯάͱֶͷɺͦͷೖΓޱ • ରͷͷσʔλߏΛଊ͑Δ ϞσϧԽ • ϕΫτϧɺߦྻŋŋŋˠֶ ઢܗFUD ͷ͕։͘ •
ֶͷੈքΛඈͤɺ૾ྗͷݶքΛಥഁͰ͖Δ – ສ࣍ݩͷϕΫτϧۭؒ૾Ͱ͖ͳ͍͕ɺֶͳΒͦΕΛѻ͏͜ ͱ͕Ͱ͖Δ
·ͱΊ ݴ͍͔ͨͬͨ͜ͱ • ϓϩάϥϛϯάͱֶͷࢥͬͯΔΑΓ͘͠ͳ͍ – ࠓճઢܗΛςʔϚʹ – ֩ʹͳΔͷσʔλߏ ϕΫτϧɺߦྻ
– ϓϩάϥϛϯάͱֶͷੈքΛڮ͢͠Δͷ͕Ϟσϧ • 8FCϓϩάϥϚతͳʮৄࡉΑ͘Θ͔Βͳ͍͚Ͳ"1*ݺ݁Ռ खʹೖΔͰ͠ΐʯͰ࠷ॳ͍͍ͱࢥ͏ – ͦΕ͕͖͔͚ͬʹͳͬͯɺࣝཉ͕͘ • ֶੜͷͱ͖ʹֶͬͨ ܭࢉͷ܇࿅ ΑΓɺڵຯ͕࣋ͯΔͣ
͋Γ͕ͱ͏͍͟͝·ͨ͠
ࢀߟจݙ • $%.BOOJOH 13BHIBWBO )4DIVU[Fʰ*OUSPEVDUJPOUP *OGPSNBUJPO3FUSJFWBMʱ $BNCSJEHF6OJWFSTJUZ1SFTT • 5PCZ4FHSBO
ஶ ᙛࢁਔ݈ יᖒᚸ ༁ ʰू߹ϓϩάϥ ϛϯάʱ ΦϥΠϦʔδϟύϯ • ۚ୩݈Ұʰ͜ΕͳΒ͔ΔԠ༻ֶڭࣨʕ࠷খೋ๏͔ΒΣʔϒ Ϩοτ·Ͱʱ ڞཱग़൛ • ԕࢁܒʰֶೖ্ʱ ؠ৽ॻ • ԕࢁܒʰֶೖԼʱ ؠ৽ॻ