第3回目は、「回帰」、「2クラス分類」、「多クラス分類」におけるディープラーニング(Deep Learning:深層学習)の出力層の違いについて解説します。

回帰

回帰(Regression)とは、簡単に言うと「連続的な数値の予測」です。具体的には、図1のネットワークの出力層が連続をとることになります。ディープラーニングとは-基礎知識の第2回でも同様の例を上げましたが、0層目に顔画像を入力し、出力層で写っている人の年齢を推定する問題が回帰です。
推定したい数値の範囲に応じて、活性化関数を選ぶ必要があります。例えば値域が[-1:1]の場合は、出力層に双曲線正接関数を用いることになります。また、値域が[-∞:∞]の場合は、恒等写像となります。
そして、誤差逆伝搬法により推定誤差から重みwを更新するのですが、その際に誤差関数を定義する必要があります。回帰では、図1内に記載している二乗誤差を全サンプルで加算したものを誤差関数とします。

図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クラス分類における出力層の設計

図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 多クラス分類における出力層の設計

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

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

次回は、学習のテクニックの1つである「ミニバッチ学習」についての説明です!