連載
» 2021年12月08日 05時00分 公開

コサイン類似度(Cosine Similarity)とは?AI・機械学習の用語辞典

用語「コサイン類似度」について説明。2つのベクトルが「どのくらい似ているか」という類似性を表す尺度で、具体的には2つのベクトルがなす角のコサイン値のこと。1なら「似ている」を、-1なら「似ていない」を意味する。主に文書同士の類似性を評価するために使われている。

[一色政彦,デジタルアドバンテージ]
「AI・機械学習の用語辞典」のインデックス

連載目次

用語解説

 数学/統計学/機械学習におけるコサイン類似度Cosine Similarity)とは、2つのベクトルが「どのくらい似ているか」という類似性を表す尺度で、具体的には(ベクトル空間における)2つのベクトルがなす角のコサイン値のことである。この値は、2つのベクトルの内積(=向きと大きさを持つベクトル同士の掛け算)を、2つのベクトルの大きさ(=L2ノルム)で割ることで計算される。

 この計算によって値が-11の範囲に正規化されるので、コサイン類似度が、

  • 1なら「0度で、同じ向きのベクトル=完全に似ている」
  • 0なら「90度で、独立/直交した向きのベクトル=似ている/いない、のどちらにも無関係」
  • -1なら「180度で、反対向きのベクトル=完全に似ていない」

という意味になる(図1)。

図1 コサイン類似度のイメージ 図1 コサイン類似度のイメージ

定義と数式

 この2つのベクトルのコサイン類似度、すなわち「この2つのベクトルがなす角θのコサイン値」(cosθcos(a,b))を求める数式は、(高校で学ぶ)「2つのベクトル同士の内積の公式」から導き出せる。以下の1行目がその公式である。なお、|<ベクトル>|という数学記号は、「ベクトルの大きさ」を表す。

 2行目にある||<ベクトル>||という数学記号は、ベクトル空間における「長さ/距離」を表現する概念であるノルムnorm)を意味する。この公式におけるノルムは厳密には、ユークリッド距離であるL2ノルムを意味する。

 ちなみに、ベクトルのabについて、1行目では高校数学風にで書いたが、2行目では大学数学風に太字で記載した。いずれも同じベクトルを意味する。

 上記の公式をcos(a,b)=に変形すると、次のようになる。これがコサイン類似度の数式となる。

 ベクトルaやベクトルbは、例えば前掲の図1にある(1,3)のように2次元平面上のベクトルだけでなく、(図では表現できないが)例えば(1,2,3,4,5)のように5次元空間上のベクトルなど、

  • a=(a1,a2,...,an)
  • b=(b1,b2,...,bn)

n次元(=多次元)空間上のベクトルに拡張することが可能である。

用途

 コサイン類似度は、主に2つの文章の類似性を評価するためによく使われている。文書同士のコサイン類似度は、文章を構成する単語群を数値群によるベクトルに置き換えることなどで計算できるようになる。

 例えばTwitterでツイートをベクトルに置き換えることで、あるユーザーと他のユーザ−とのコサイン類似度を計算できるだろう。その数値を基に、あるユーザーのタイムライン上に、類似しているユーザーのツイートを優先的に表示し、似ていないユーザーのツイートをあまり表示しないようにすること(いわゆるレコメンデーションの一種)も実現できるだろう。

 コサイン類似度は、上記の例のようにレコメンデーションに応用したり、画像/動画でのポーズ推定に応用したりなど、さまざまな場面で活用できる可能性がある。ニューラルネットワークの損失関数や評価関数として使われることもある。

API

 主要ライブラリでコサイン類似度は、次のクラス/関数で定義されている。

「AI・機械学習の用語辞典」のインデックス

AI・機械学習の用語辞典

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。