今回は、「回帰」、「2クラス分類」、「多クラス分類」におけるディープラーニングの出力層の違いについて解説したいと思います。

回帰

回帰(Regression)とは、簡単に言うと「連続的な数値の予測」です。具体的には、図1のネットワークの出力層が連続をとることになります。前回も同様の例を上げましたが、0層目に顔画像を入力し、出力層で写っている人の年齢を推定する問題が回帰です。

推定したい数値の範囲に応じて、活性化関数を選ぶ必要があります。例えば値域が[-1:1]の場合は、出力層に双曲線正接関数を用いることになります。また、値域が[-∞:∞]の場合は、恒等写像となります。

そして、誤差逆伝搬法により推定誤差から重みwを更新するのですが、その際に誤差関数を定義する必要があります。回帰では、図1内に記載している二乗誤差を全サンプルで加算したものを誤差関数とします。

図1 回帰における出力層の設計

2クラス分類

出力が連続値ではなく、「顔」か「顔以外」といったように入力を2つに分類するものが2クラス分類です。このとき、ラベルdが1のときに「顔」、0のときに「顔以外」といったように各クラスに2値の正解値を付与します。

出力層の活性化関数は、[0:1]の範囲の値を取るロジスティックシグモイド関数を用いることになります。誤差関数は、例えば入力x (x1 , x2,…, xD)が与えられた際にラベルdが1となる事後確率p(d=1|x)をモデル化する方法があります。確率が0.5以上であればd=1、それ以下であればd=0とみなします。数式の詳細は割愛しますが、誤差関数は図2内に記載している通りとなります。

図2 2クラス分類における出力層の設計

多クラス分類

多クラス分類では、入力画像が「人の顔」なのか、「猫の顔」、「犬の顔」、「猿の顔」なのかといったように、入力データを複数のクラスに分類します。数字の0から9と書かれた画像を分類する(文字を読み取る)場合も、この多クラス分類となります。多クラス分類では、図3のように分類したいクラス数分だけ出力を並べます。クラス数が0~9の10クラスの場合、数字の3の正解値は、[0 0 0 1 0 0 0 0 0 0]といった具合に該当するクラスを1、それ以外を0とします。

多クラス分類では、出力y1, y2, …, yKの総和が常に1となるソフトマックス関数と呼ばれる活性化関数を用います。

誤差関数は、入力x(x1,x2…, xD)がクラスCkに属する確率p(Ck|x)によりモデル化します。こちらも数式の詳細は割愛しますが、図3内に記載している交差エントロピーと呼ばれる関数を誤差関数として用いることになります。

図3 多クラス分類における出力層の設計

今回ご紹介したように、回帰、2クラス分類、多クラス分類といったように推定したい対象に応じて出力層の設計を変える必要があります。独自のネットワークを設計する際は、注意するようにしましょう。

著者プロフィール

樋口未来(ひぐち・みらい)
日立製作所 日立研究所に入社後、自動車向けステレオカメラ、監視カメラの研究開発に従事。2011年から1年間、米国カーネギーメロン大学にて客員研究員としてカメラキャリブレーション技術の研究に携わる。

日立製作所を退職後、2016年6月にグローバルウォーカーズ株式会社を設立し、CTOとして画像/映像コンテンツ×テクノロジーをテーマにコンピュータビジョン、機械学習の研究開発に従事している。また、東京大学大学院博士課程に在学し、一人称視点映像(First-person vision, Egocentric vision)の解析に関する研究を行っている。具体的には、頭部に装着したカメラで撮影した一人称視点映像を用いて、人と人のインタラクション時の非言語コミュニケーション(うなずき等)を観測し、機械学習の枠組みでカメラ装着者がどのような人物かを推定する技術の研究に取り組んでいる。

専門:コンピュータビジョン、機械学習