今回はニューラルネットワークの学習について説明をします。
学習って何・・?
ニューラルネットワークの学習には、「教師あり学習」「教師なし学習」「強化学習」がありますが、ここでは説明を簡単にするために教師あり学習のみを考えます。
教師あり学習とは、学習データに正解ラベル(答え)を付与した状態で学習させる手法です。学習データと正解ラベルを大量に使うことで、未知のデータに対しての分類や回帰の精度を高めます。
学習とは何か・・・について端的に言ってしまうと、重みとバイアスをイイ感じに調整することを学習といいます。
ここでいうイイ感じとは「未知のデータに対しての分類や回帰の精度を高めるように」という意味です。
ニューラルネットワークでの1ノードでは以下の式で値が計算されると説明しましたが、このwとbを調整していくことになります。
y = Σx*W + b
機械がこれらのパラメータを調整するとき、「正解ラベル」と「ニューラルネットワークの予測値」の差を使います。
差を求める計算式のことを損失関数またはコスト関数とよびます。
コスト関数
コスト関数はネットワークの「悪さ」を評価する指標です。つまり、計算結果が大きければ大きいほど予測が外れていて、小さければ小さいほど予測が正しいと言えます。コスト関数は、解決したい問題によって使用する関数が異なります。
有名なところでは、回帰問題で使用するコスト関数は「最小二乗法」、分類問題で使用するコスト関数は「クロスエントロピー誤差」です。それぞれがどのように計算をされるかを以下で説明します。
クロスエントロピー誤差
クロスエントロピー誤差は以下の式で表されます。
tkは正解ラベル、ykがニューラルネットワークの予測値です。
この計算は少し頭をひねる必要があります。
教師データの正解ラベルは離散的な値になっていますが、学習時にはone-hotベクトルと呼ばれる形に変形されます。
one-hotベクトルに変換する理由は確率的な表現をするためです。下図、犬のone-hotベクトル[1,0,0]は、「犬の確率100%、猫の確率0%、ペンギンの確率0%」という正解ラベルであると言い換えることが出来ます。
一方で、ちゃんと説明はしていませんでしたが、分類問題を解くニューラルネットワークは、一般に「予測確率」を出力します。
出力は[0.7,0.2,0.1]のような形となり、「犬の確率70%、猫の確率20%、ペンギンの確率10%」という予測がされたということを意味します。
クロスエントロピー関数では、[1,0,0]と[0.7,0.2,0.1]を用いて損失計算を行うことになります。
ニューラルネットワークの学習について、「学習とは何なのか」について説明をしました。
次の記事では、コスト関数を使ってどのように重みやバイアスを調整するか、について説明をします。