距離学習と深層距離学習の違い

距離学習と深層距離学習の違いについて備忘録を残しておく.

共通していること

データセット中の2点 $\mathbf{x}, \mathbf{y}$間の距離関数$d(\mathbf{x}, \mathbf{y})$が与えられる. 距離関数はクラス分類やクラスタリング・異常検知などのタスクで活用される道具である. それらタスクに有利になる形で特徴量の変換を考えたい. その変換をパラメタ(行列など)で表現し,種々の損失関数 with 正則化項 に基づいてパラメタを最適化する. 距離に関する「望ましさ」は(不等式などの)制約によって表現される.例えば同一クラスのサンプルペアは近い距離,異なるクラスのサンプルペアは遠い距離にする制約である. したがって各サンプルには所属クラスなどのsupervisedなラベルが与えられることが典型である.

違い

代表的なユークリッド距離で考える.

  • 距離学習:$d(\mathbf{x}, \mathbf{y}) = ||G\mathbf{x} - G\mathbf{y}||_{2}$となる線形変換$G$(半正定値行列)を獲得する.

  • 深層距離学習:$d(\mathbf{x}, \mathbf{y}) = ||f_{\theta}(\mathbf{x}) - f_{\theta}(\mathbf{y})||_{2}$となる非線形変換$f_{\theta}$を獲得する. この非線形変換がニューラルネットにより実現され,$\theta$はそのパラメタである.

つまり距離学習は行列の最適化問題に帰着される.深層距離学習は当たり前だがニューラルネットのパラメタ最適化問題に帰着される. しばしば混同されるが,距離関数そのものはpre-definedであり最適化の対象ではない.この意味で距離関数の選択はハイパーパラメータといえる.

線形であれ非線形であれ,変換された特徴量はしばしば「埋め込み」(embedding)とも呼ばれる. 距離学習では特徴量エンジニアリングが依然として重要であるが,深層距離学習では埋め込みの獲得が特徴量抽出を兼ねている面がある.

では距離関数自体を学習可能にする枠組みは存在するのか?→Yes.