Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
双曲空間への単語埋め込みと QAサービスでの自然言語処理を 用いた推薦システムについて
Search
Ryusuke_Tanaka
April 24, 2019
Technology
0
560
双曲空間への単語埋め込みと QAサービスでの自然言語処理を 用いた推薦システムについて
【Sansan×エムスリー】自然言語処理勉強会(ライブ配信あり)で発表した内容です。
Ryusuke_Tanaka
April 24, 2019
Tweet
Share
More Decks by Ryusuke_Tanaka
See All by Ryusuke_Tanaka
医師向けQAサイトのための推薦システム開発
ryusuketa
1
1.6k
An Effective Approach to Unsupervised Machine Translationの紹介
ryusuketa
0
120
Universal Decompositional Semantics on Universal Dependencies
ryusuketa
0
78
Learning Dual Retrieval Module for Semi-supervised Relation Extractionの紹介
ryusuketa
0
73
動画視聴を整数倍(最大値)で_効率化するchrome extension作った
ryusuketa
0
78
Other Decks in Technology
See All in Technology
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
2
16k
AI時代の開発生産性を加速させるアーキテクチャ設計
plaidtech
PRO
3
160
DatabricksにOLTPデータベース『Lakebase』がやってきた!
inoutk
0
110
データグループにおけるフロントエンド開発
lycorptech_jp
PRO
1
110
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
260
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
2
9.4k
Model Mondays S2E04: AI Developer Experiences
nitya
0
140
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
1.9k
AI専用のリンターを作る #yumemi_patch
bengo4com
5
4.3k
CDKTFについてざっくり理解する!!~CloudFormationからCDKTFへ変換するツールも作ってみた~
masakiokuda
1
150
Sansanのデータプロダクトマネジメントのアプローチ
sansantech
PRO
0
160
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.8k
Featured
See All Featured
Making Projects Easy
brettharned
116
6.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
The Cult of Friendly URLs
andyhume
79
6.5k
Done Done
chrislema
184
16k
It's Worth the Effort
3n
185
28k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
4 Signs Your Business is Dying
shpigford
184
22k
BBQ
matthewcrist
89
9.7k
Designing for humans not robots
tammielis
253
25k
Transcript
Copyright © 2015 M3, Inc. All Rights Reserved 双曲空間への単語埋め込みと QAサービスでの自然言語処理を
用いた推薦システムについて エムスリー株式会社 田中 龍亮
自己紹介 ・田中 龍亮(りゅうすけ) ・入社24日目 ・新卒2年目なので第二新卒的なsomething ・学生時代の研究: 音信号からの音源方向の推定(部分空間法ベース) ・twitter やりたい ・今回は論文:Poincaré GloVe:
Hyperbolic Word Embeddingsの 紹介と医療ドメインへの転用について
双曲空間 ざっくりいって ユークリッド空間とは距離の測り方が違う空間 双曲平面もいろいろあるが、MLでは概ねPoincare
BallやLorentz modelが採用される ←Poincare Ball上の直線(測地線)を2次元平面に 起こしてきたもの。 結んだ時に直径になる2点では直線だが、 そうではない点では曲がって見える
なぜ単語埋め込みにいいか ・単語の階層構造を考慮した埋め込みを実現したい →木構造やネットワークを埋め込む →これらは大きくなるほど埋め込み先に大きな空間が必要 ・2次元ユークリッド平面の場合、 半径rの円を考えた時に面積は半径に対してr^2 ・2次元Poincare Ballの場合、 半径r(r<1)に対して面積は1/{(1-r)^2}
半径を1とした時に同じ次元でも無限の面積を持つ空間を作ることが できるので広い空間を必要とする木構造埋め込みに適切
階層構造の学習 一番最初にWordNetのPoincare Ballへの埋め込みを検討した論文[1]では 明示的に階層構造を与えずに、階層構造を捉えられた (哺乳類の例だが、 生物学的意味の階層でない)
外側ほど深い レイヤーの単語として 配置される 哺乳類 げっ歯類 リス 肉食類 トラ ジャガー シェパード ビーグル
Poincaré GloVe: Hyperbolic Word Embeddings • Alexandru Tifrea, Gary Becigneul,
Octavian-Eugen Ganea • 単語埋め込み手法の一つであるGloVeをPoincare Ball(双曲空間)への 埋め込みに拡張した方法を提案 • この発表の大きなContributionは次の2点 ◦ ガウス分布型の単語埋め込みと双曲平面上の埋め込みについて 測地線が一致することに気づいた(数式を示したのは別の論文) ◦ これによってガウス分布型の埋め込みを点で考えることができるようにな り、従来不明瞭だった単語アナロジーを可能にした。 • 理論的なContributionが強い
Poincaré GloVe Glove:単語の共起頻度+行列分解ベースの埋め込み法 ユークリッド空間上のGloVeコスト関数 内積を変形すると距離の差に置き換え可→Poincare Ball上の距離にする Poincaré
ball上のGloVeコスト関数(ノルムはバイアスに吸収させる) nonlinearityの決定はヒューリスティック(実験ではcosh^2とx^2を比較)
Poincare Ball上の距離の取り方 Poincare Ball上の距離 複数のPoincare Ballの直積の距離(の二乗)
それぞれのPoincare Ball上の距離の和
Fisher距離とPoincare上半平面上の測地線 Diagonal Gaussian分布のFisher 距離(Fisher情報量をリーマン計量とした時に 定義される測地線、尤度間の距離)とPoincare上半平面上の距離は対応関係あり[4]
Poincare 上半平面と Poincare Ballの間の写像は定義可能 分布間の距離をPoincare Ball上で測ることが可能
単語のガウス分布型埋め込みと Poincare Ball埋め込みの対応 単語のガウス分布型埋め込み:埋め込み表現に広がりを持たせ、包含関係のような階層 構造表現 →領域で考えたためにw2vではできていたような アナロジーを考えるのが難しくなった 先の検討から
ガウス分布型の埋め込み表現をPoincare Ball上では点で考えることができる! →分布埋め込みでもアナロジーなどのタスクを従来と同様に考えることができる! 実際にアナロジーを行うにはジャイロベクトルを用いる
実験 English Wikipediaから1.4billion tokens取得 189,533のunique tokensの埋め込みを学習 Word
Similarity : 類似度 Analogy : Google benchmark Hypernymy Evaluation : 上位関係に当たる単語の推論 初期化 先に上位50k個のワードの埋め込みから学習し、 そのあと190k個のワードの埋め込みを学習した(Init. trickと呼称)
結果①、Similarity どのタスクでも精度改善
結果②、Analogy どのタスクでも精度改善
結果③:Hypernymy evaluation 縦軸:分散、横軸平均 上位語ほど分散が大きい:
下位語を包含するように分布を学習できている →Poincare Ball上の学習と分布埋め込みの学習が結びついている
結果③:Hypernymy evaluation スピアマン順位相関スコア(推定上下関係と実際の上下関係の相関)
outstandingではないが高いスコア
QAサービス ・Stack Overflow, Quora, Yahoo!知恵袋...
・今回医療従事者向けのQAサービス検討
QAサービスでのユーザの要望 1. 質問したらはやく答えてほしい 2. 類似した質問に対する回答を見つけたい 3. 回答の信頼性を測りたい(これはサービス提供側かも) など...
1. 2.は推薦システムと同じ考え方によって実現可能
質問の推薦システム ・ある質問をした時、 当然専門性の高い人に回答してほしい ・ex. 合併症を患った時の投薬の種類や量について (自専門ではカバーしきれない知識を要求される場合 ・質問内容に専門がマッチする人をみつけてその人に回答をお願いする! ・回答してくれそうな人への質問の推薦システム構築 ・→質問に該当する専門家で、よく回答する人を見つけれこればいい?
Cold-Start problem サービス利用したばかりの人には質問や回答の情報がない →QAの情報は極力使用しない →他サービスの利用情報を用いる
自然言語処理ベースでuserとQを同一空間に埋め込み→推薦 →医療情報なので医療ドメインに向いた埋め込みを考えてみる ・診療科 ・PV ・メルマガ開封 ・.... ・質問内容 ・キーワード ・診療科... user1 user2 Q.1 Q.2 埋め込み空間
医療情報にも階層構造 例えばICD-10分類(WHOが定めた疾患の分類の国際標準) 他にも診療科と疾患の関係も浅い階層構造 →階層構造を考慮できる埋め込みが情報としてよさそう!
→双曲空間への埋め込みは効果あるのでは??? 消化器系の疾患 口腔,唾液腺及び顎の疾患 食道,胃及び十二指腸の疾患 虫唾の疾患 ヘルニア ... 食道炎 胃食道逆流症 食道その他の疾患 ….
やってみた
やってみたかった Poincare Gloveを成功させたい人生だった
やってみたかった 論文と同じデータセットで学習した結果(2D) 頻度の小さいワードは外側にくる傾向はあるが、
Nearest Neighborhoodでは近い単語を拾うことはできなかった 数学的に煩雑だと、入出力の間違いを見つけづらく、デバッグが難しいという感想 ‘word’からの4-NN 'cavalry': 1.000046 'becomes': 1.0000613, 'stephen': 1.0000713 'nodes': 1.0000918 青: 頻度上位 200 tokens 橙: 頻度下位 200 tokens 赤: ‘word’ の埋め込み 緑: ‘word’ に近い10個
まとめ ・Poincare GloVeを紹介した ー理論的知見を得た ・医療ドメインのQAサービスへの応用を考えた ・再現できませんでした 論文が小保方ってなければ僕の実力不足・・・