単語の分散表現とソシュール的言語観

こういうことを書くと不要な怒られが生じるが書きたくなったので書く。

 

画像処理分野で起きたディープラーニングのブレイクスルーから早五年、その戦線は拡大し続けている。その戦場の一つが自然言語処理である。自然言語処理は、画像処理と全く同じ手法で解決できるほど簡単なタスク群ではなく、Sequence to Sequence LearningやAttention Mechanismといった様々な工夫が提案されてきた。今回取り上げるのはそのうちの一つ、単語の分散表現について書いていく。

 

分散表現の説明は様々なところでされているので省くが、要するに数〜数十万の単語を100~200程度の実空間に埋め込むことである。ある単語、例えば「表象」と表すのに分散表現を用いなければ、長さが数〜数十万で一つの要素が1で残りが全て0 {0,0.....0,1,0........0,0}のようなベクトルで表される。しかしこれでは「表象」が「表現」や「演出」といった他の単語との関係性が記述されない。そこで分散表現によって次元を落とし、「表象」と「表現」と「演出」が近いベクトルを持つようにする。

こうした考え方自体は突然出てきたものではなく、むしろニューラルネットワーク研究者がコネクショニストと呼ばれていた時代に彼らが主張してきたことである。とはいえ自然言語の分散処理が実用的になるのにはWord2Vecの出現を待たなければならなかった。

 

Word2Vecで驚くべきは意味の演算が可能になっているようにみえる点である。そしてこれはソシュール的言語観もとい構造主義の技術的実装だとして把握できる。

なぜそんなことが言えるのか。Word2Vecで実現した有名な例にking-man+womanに最も近いベクトルがqueenになるというものがある。kingのベクトルの中身が例えば{0.3,0.1,0.8}だとして、その数値列を読んでもそれが意味するところは分からない。しかし、king-man+womanがqueenに近いということに、その内実がただのベクトルの加減であったとしても意味が生じる契機が宿っている。ベクトルの意味は他ベクトルとの関係性に支えられている

少々雑に思想っぽく書けばつまり、Word2Vecにおいてシニフィアン(king)とシニフィエ({0.3,0.1,0.8})は対応付けられているがそのシニフィエは他のシニフィアン/シニフィアンとの関係によって成立している。*1

 

記号論の話を少しでも知っている人からすれば大したことは言っていないのだが、しかしWord2Vecのような近年出てきた深層学習関連の技術がこうした記号論だとか哲学だとかと絡めて話ができるのは僕のような人間にとってはスリリングなのだ。

*1:ここの整理はいくらでも検討の余地があるし暫定的にこれで許してほしい