クラス分類ニューラルネットワーク

クラス分類ニューラルネットワークとは、順伝播型ニューラルネットワークの入力層に入力したデータを出力層で任意の種類(クラス)に分類するニューラルネットワークのことです。

大きく分けて、2クラス分類多クラス分類があります。

2クラス分類

2クラス分類とは、例えば、以下のような判定を行うことです。

・画像から男性か女性かを判定

・文章から男性か女性かを判定

・画像から猫か猫じゃないかを判定

・気象情報から明日は晴れるか晴れないかを判定

・文章から迷惑メールかそうじゃないかを判定

一般的に、2クラス分類のニューラルネットワークの出力層は、出力数を1にします。そして、出力層の活性化関数は、一般的に、シグモイド関数を利用します。

シグモイド関数は出力が0~1なので、出力層の出力が0に近ければクラス0、出力層の出力が1に近ければクラス1というように分類を行います。出力層の出力が0.5に近い場合、上手く判定できていません。

2クラス分類の学習

2クラス分類では、損失関数に例えば、2乗和誤差を利用して勾配法によるニューラルネットワークの学習を行います。

画像から男性か女性かを判定する2クラス分類であれば、例えば、男性の画像の場合は出力層の正解の出力を1、女性の画像の場合は出力層の正解の出力を0というように正解データを設定し、学習を行います。

多クラス分類

多クラス分類とは、3クラス以上の分類を行うことであり、例えば、以下のような判定を行うことです。

・画像から手書き文字を判定(アルファベットであれば26クラス分類)

・画像から猫か犬かそれ以外かを判定(3クラス分類)

・画像から10種類の花を判定(10クラス分類)

・文章から通常のメール、迷惑メール、広告メールを判定(3クラス分類)

・音から20種類の楽器を判定(20クラス分類)

一般的に、nクラス分類のニューラルネットワークの出力層は、出力数をnにします。そして、出力層で最大となる出力位置を分類したクラスとします。

例えば、上記のニューラルネットワークは、3クラス分類の例です。出力層の出力数が3になっています。上から1番目の出力が最大値であればクラス0、上から2番目の出力が最大値であればクラス1、上から3番目の出力が最大値であればクラス2というように分類を行います。

なお、多クラス分類では、通常、出力層の活性化関数をfff(x)=xとして、そのまま出力します。最大値が分かれば良いためです。

多クラス分類の学習

多クラス分類では、一般的に、学習時に出力層の出力の総和が1になるように各出力の値を調整します。これは、出力層の出力の正解データを0/1にしたいためです。

例えば、3クラス分類において、出力層の正解の出力がt_[0]]~t_[2]]だったとします。入力層へのある入力データに対して、クラス0が正解の場合はt_[0]]=1, t_[1]]=0, t_[2]]=0、クラス1が正解の場合はt_[0]]=0, t_[1]]=1, t_[2]]=0というようにします。

出力層の活性化関数に例えば、ソフトマックス関数を利用すると、出力の総和を1、最大値の出力を1に近づけるので、正解データと比較できるようになります。そして、損失関数に例えば、2乗和誤差を利用して勾配法によるニューラルネットワークの学習を行います。

前述したように、分類時は、最大値となる出力が分かれば良いので、計算量を減らすためにソフトマックス関数は外して、出力層の活性化関数をfff(x)=xにします。