4-3-3 タスクによって変わる誤差関数

前の章では、平均二乗誤差や交差エントロピーといった、代表的な誤差関数を見てきました。
AIはこうした「採点ルール」を使って、自分の予測がどれくらい間違っていたのかを判断しながら学習していきます。
ただし、どんな問題でも同じ採点方法を使うわけではありません。
たとえば学校のテストでも、
・数学のテスト
・英語のテスト
・体育の実技
では、採点の方法が少しずつ違います。
計算問題なら答えが合っているかどうかを見ますし、英語なら文章の意味や文法を評価します。体育なら、動きの正確さやフォームを見るかもしれません。

AIの学習でも同じです。
解いている問題の種類によって、「間違いの測り方」も変わるのです。

たとえば、
・確率分布の違いを測りたいとき
・データ同士の「似ている・似ていない」を学習したいとき
には、それぞれに適した誤差関数が使われます。

この章では、そうした例として、カルバック・ライブラー情報量(KL)、Contrastive Loss、Triplet Lossといった誤差関数を見ていきます。

カルバック・ライブラー情報量(KL)

AIは「答え」を一つだけ出すのではなく、確率の形で予測を表すことがあります。
たとえば、ある画像を見てAIが次のように判断したとします。
・猫:0.7
・犬:0.2
・うさぎ:0.1
これはAIが「猫である可能性が高そうだ」と考えている、という意味です。
つまりAIの中には、「世界はこうなっているはずだ」という確率のイメージがあるわけです。
しかし、そのイメージが本当の確率分布とズレていることがあります。
ここで登場するのが、カルバック・ライブラー情報量(KL)です。

カルバック・ライブラー情報量は、2つの確率分布がどれくらい違っているかを測る指標です。
少しイメージしてみましょう。
もし本当の世界が
・猫:0.9
・犬:0.1
だったとします。

ところがAIが
・猫:0.5
・犬:0.5
と考えていたとしたら、この予測は少しズレています。

さらにもしAIが
・猫:0.1
・犬:0.9
と考えていたら、これはかなり大きなズレです。
カルバック・ライブラー情報量は、このような「AIが思っている世界」と「本当の世界」の違いを数値として表します。

ここで、前の章で登場した交差エントロピーを思い出した人もいるかもしれません。
交差エントロピーも、確率分布の違いを扱う指標です。
ただし役割が少し異なります。

交差エントロピー→ 主に分類問題で使われる「誤差関数(採点方法)」
KLダイバージェンス→ 2つの確率分布の違いを測る指標

イメージとしては、
・交差エントロピー → AIの答えを採点する
・KLダイバージェンス → AIの「世界の理解」がどれくらいズレているかを見る
という違いがあります。

KLダイバージェンスは、
・確率分布を扱うモデル
・生成モデル
・変分オートエンコーダ(VAE)
などでよく使われます。

AIが「世界はこういう確率でできているはずだ」というモデルを作るとき、そのズレを評価するためにKLダイバージェンスが使われるのです。

Contrastive Loss

AIに「似ているもの」を見分けさせたいとき、少し変わった学習方法が使われることがあります。
その一つが Contrastive Loss です。
ここでは、顔認識のAIを例に考えてみましょう。

顔認識システムは、「この写真とこの写真は同じ人物か」を判断します。
たとえば、次のような2枚の画像があるとします。
・写真A:ある人の顔
・写真B:同じ人の別の写真
この場合、AIは「この2つは同じ人物」と判断できるようにならなければなりません。

一方で、
・写真A:ある人の顔
・写真C:別の人の顔
この場合は「この2つは違う人物」と判断する必要があります。

Contrastive Lossでは、画像をそのまま比べるのではなく、特徴を数値のベクトルとして表し、その距離を比べます
イメージとしては、顔の特徴を「座標」のように表す感じです。
すると、同じ人物の顔は近い場所に集まり、違う人物の顔は離れた場所に配置されるようになります
Contrastive Lossは、同じものは近づけ、違うものは離すというルールで学習を進める誤差関数なのです。

この方法は顔認識だけでなく、
・画像検索
・類似商品の検索
・指紋認証
など、「似ているものを見つける」タスクで広く使われています。
AIはこうした学習を通して、「何が似ていて、何が違うのか」を少しずつ理解していくのです。

Triplet Loss

前の節では、Contrastive Lossによって「似ているものは近づけ、違うものは離す」という学習方法を見てきました。
Triplet Lossも、基本的な考え方は同じです。
ただし、ここでは3つのデータを使って学習を行います。

ここでも顔認識のAIを例に考えてみましょう。
Triplet Lossでは、次の3つの画像をセットにして学習します。
・基準となる顔(Anchor)
・同じ人物の顔(Positive)
・別の人物の顔(Negative)

たとえば、
・写真A:ある人の顔(Anchor)
・写真B:同じ人の別の写真(Positive)
・写真C:別の人の顔(Negative)
という組み合わせです。

AIは、この3つの画像を見ながら
基準の顔に対して、同じ人物の顔は近くに、違う人物の顔は遠くに配置するように学習します。

つまり、
Anchor と Positive は近い
Anchor と Negative は遠い
という距離関係を学ぶのです。

Contrastive Lossでは、「同じか違うか」という2枚の比較でした。
Triplet Lossでは、「どちらのほうが似ているか」という関係まで学習できます。
そのため、より細かな距離関係を学習できるようになります。

Triplet Lossは、
・顔認識
・画像検索
・類似商品の検索
・音声認識
など、似ているものを見つけるタスクでよく使われます。
AIはこの学習を通して、データ同士の「距離関係」を理解するようになるのです。

next ▶ 正則化とは何か