距離学習(Metric Learning)でデータの「相性」を数値化!初心者向け徹底ガイド

こんにちは。ゆうせいです。

突然ですが、あなたは「似ているもの同士を自動でグループ分けしたい」と思ったことはありませんか?例えば、大量にある写真の中から、特定の人の顔だけを集めたり、好みが似ているユーザーに商品を勧めたりする技術。これらを支えているのが、今回ご紹介する 距離学習 という魔法のような技術です。

距離学習って一体なに?

距離学習とは、コンピュータに「データ同士の距離」を賢く計算させるための手法です。

といっても、定規で長さを測るわけではありません。AIの世界では、画像やテキストなどのデータを数値の羅列(ベクトル)として扱います。距離学習の役割は、似ているデータ同士は近くに、似ていないデータ同士は遠くに配置されるように、計算ルールを自ら学習させることにあるのです。

ここで、一つ専門用語を覚えましょう。

特徴量空間(とくちょうりょうくうかん)

これは、データを点としてプロットした「仮想の地図」のようなものです。

例えば、果物の「甘さ」と「酸っぱさ」を数値にして、グラフの上に点を打つと想像してください。リンゴと梨は近い場所に、レモンは遠い場所に配置されますよね。この地図そのものを 特徴量空間 と呼びます。

距離学習は、この地図をグニャリと歪ませたり引き伸ばしたりして、正解に近い配置を作り出す作業なのです。

なぜ普通の計算じゃダメなの?

「わざわざ学習させなくても、算数で距離を測ればいいんじゃない?」と感じるかもしれません。

確かに、ピタゴラスの定理でおなじみの ユークリッド距離 という計算方法があります。

二つの点 (x_1, y_1) (x_2, y_2) の距離を求める式は、

\sqrt{(x_1 - x_2)^2 + (y_2 - y_1)^2}

となります。

しかし、現実のデータは複雑です。顔写真の場合、たった1ピクセル色が違うだけで、従来の計算では「全然違う人」と判断されてしまうことがあります。だからこそ、AIに「どこが重要な違いなのか」を教え込む 距離学習 が必要不可欠なのです。

距離学習のメリットとデメリット

どんな技術にも得意・不得意があります。しっかり理解しておきましょう。

メリット

  • 未知のデータに強い:一度「似ているとは何か」を学べば、訓練データにいない新しい人の顔でも正しく判別できます。
  • 少ないデータで運用可能:分類したい種類(クラス)が膨大にあっても、少量のサンプルで高い精度を発揮します。

デメリット

  • 計算コストが高い:データ同士のペアを作って比較するため、学習に時間がかかる場合があります。
  • 学習の難易度:適切な「似てなさ」の基準を設定するのが難しく、調整にコツがいります。

距離学習の代表的な手法:トリプレットロス

ここで、距離学習で最も有名な手法の一つである トリプレットロス(Triplet Loss) を解説します。

これは、3つのデータを1組にして学習する方法です。

  1. 基準となるデータ(アンカー)
  2. アンカーと同じ種類のデータ(ポジティブ)
  3. アンカーとは違う種類のデータ(ネガティブ)

この3つを同時に見せて、AIにこう命じます。

「アンカーとポジティブの距離を縮めろ!そして、アンカーとネガティブの距離を思いっきり引き離せ!」

数式で表すと、以下のようになります。

アンカーとポジティブの距離を d(a, p) 、アンカーとネガティブの距離を d(a, n) としたとき、

d(a, p) + \alpha < d(a, n)

という関係になるように学習を進めます。

この \alpha はマージンと呼ばれ、どれくらい余裕を持って引き離すかを決める数値です。

距離学習のバリエーション:目的に合わせた使い分け

トリプレットロス以外にも、距離学習にはユニークな手法がたくさんあります。どれも「データの距離をどう定義するか」という工夫が詰まっていて面白いですよ。代表的なものをいくつか見ていきましょう!

ペアワイズロス(Contrastive Loss)

トリプレットロスが3つのデータを比較するのに対し、ペアワイズロスはシンプルに2つのデータを比較します。

  • 同じグループの2つなら、距離を 0 に近づける。
  • 違うグループの2つなら、設定した距離 m よりも遠ざける。

非常に直感的で分かりやすい手法です。まるで磁石のプラスとマイナスのように、同じもの同士をくっつけ、違うもの同士を反発させるイメージですね。

センターロス(Center Loss)

これは、クラス(グループ)ごとに「中心点」を決めてしまう手法です。

それぞれのデータが、自分のグループの中心点 c に向かってギュッと集まるように学習します。

\sum_{i=1}^{n} (x_i - c)^2

この計算により、同じグループ内のバラつきを最小限に抑えることができます。クラスの数が非常に多い顔認証システムなどで、トリプレットロスと組み合わせて使われることがよくあります。

アークフェイス(ArcFace)

最近の画像認識で非常によく使われる、少し高度な手法です。

これまでの手法が「直線距離」を気にしていたのに対し、アークフェイスは「角度」に注目します。データを半径 1 の球面上に並べたと想像してください。

\cos(\theta + m)

このように、角度 \theta にマージン m を加えることで、グループごとの境界線をより厳格に引くことができます。地図上の距離ではなく、方位磁石の角度で「似ている度合い」を測るような、とてもスマートなやり方です。


手法を比較してみよう

どの手法を使うべきか迷ったときは、以下の表を参考にしてみてください。

手法名比較する数特徴向いている用途
ペアワイズロス2つ構造が単純で実装しやすい基本的な二値分類
トリプレットロス3つ相対的な関係を学べる高精度な検索システム
センターロス中心点凝集度(まとまり)を高めるクラス数が多い顔認証
アークフェイス角度境界線をはっきり分ける最新の超高精度な認識

これから何を学べばいい?

距離学習の世界に興味が湧いてきましたか?もし、さらに深く学びたいのであれば、以下のステップをおすすめします。

  • コサイン類似度を学ぶ:角度を使って似ている度合いを測る、もう一つの重要な指標です。
  • Pythonで実装してみる:PyTorchやTensorFlowといったライブラリを使えば、意外と簡単に実験できます。
  • 深層距離学習(Deep Metric Learning)を調べる:最新のAIがどのように画像を認識しているのか、その深淵を覗いてみてください。

一歩ずつ進んでいけば、あなたもデータの「心の距離」を読み解くスペシャリストになれるはずです。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。