損失関数とは?【機械学習・ニューラルネットワーク】

ニューラルネットワークで重要な損失関数を解説しています。機械学習を学ぶ上での基礎知識となる損失関数をPythonで実装も行いながら紹介します。

損失関数とは?

損失関数の用途

損失関数とは、「予測と実際の値のズレ」を計算する関数です。

上の図を見てください。
図を見れば一発で理解できるとは思いますが、
学習によって得られた予測値と実際の値を比較して、
どの程度のズレを生じているのか、学習はどの程度正確な結果を出せているのか、を評価するのが損失関数です。

この評価を元に、
パラメータの値を変更したりなど、学習の正確さを高めます。


損失関数として用いられる関数は、様々な関数がありますが、
「二乗和誤差」や「交差エントロピー誤差」が一般的に多いです。

英語では「Loss function」と呼ばれます。

損失関数の必要性

損失関数は、
学習が正しくできているかを判断し、
学習の改良のポイントを探ることができます。

この作業を最適化と呼びますが、
最適化を行う上で損失関数は非常に重要です。

【よく使われる損失関数】二乗和誤差

二乗和誤差の数式

損失関数では、
「二乗和誤差」か「交差エントロピー誤差」を利用することが一般的です。

二乗和誤差は下のような数式で表します。

「y」はニューラルネットワークの出力(予測値)
「t」は教師データ(実際の値)
「k」はデータの次元数
を表しています。

二乗和誤差をPyrhonで実装

#二乗和誤差
import numpy as np

def squared_error(y, t):
    return 0.5 * np.sum((y - t) ** 2)

二乗和誤差を求める関数「squared_error」を作成しました。

引数で、
「ニューラルネットワークの出力値の配列(y)」と「教師データの配列(t)」を渡すと、
「0.03634」や「0.73」などの二乗和誤差の数値が返ってきます。

この数値が小さければ、
「予測値」と「実際の値」のズレが小さいことになり、
優秀な学習ができていることになります。

損失関数は、
この数値の大きさを見て最適化を行うのです。

ニューラルネットワークの出力値は、
ソフトマックス関数などを利用して別で求める必要があります。

【よく使われる損失関数】交差エントロピー誤差

交差エントロピー誤差の数式

損失関数では、
「二乗和誤差」か「交差エントロピー誤差」を利用することが一般的です。

交差エントロピー誤差は下のような数式で表します。

「y」はニューラルネットワークの出力(予測値)
「t」は教師データ(実際の値)
「k」はデータの次元数
「log」は自然対数(底が「e」)
を表しています。

交差エントロピー誤差をPyrhonで実装

#交差エントロピー誤差
import numpy as np

def entropy_error(y, t):
    return -np.sum(t * np.log(y))

交差エントロピー誤差を求める関数「entropy_error」を作成しました。
数式通りに表すとこのコードになるのですが、
このままではエラーが頻繁に起こります。

理由は「log0」が負の無限大に発散すること。
「log」のグラフは下のようになります。

log(0)のとき出力値は負の無限大となり、
コンピュータは計算できずにエラーが返ってきます。

これを解決するために下のコードに書き換えました。

#交差エントロピー誤差
import numpy as np

def entropy_error(y, t):
    minima = 1e-7
    return -np.sum(t * np.log(y + minima))

非常に小さな値(eのマイナス7乗)である「minima」を、
「log」の計算で足し合わせることで、
「0」の入力を避けるとともに出力に影響を与えません。

引数で、
「ニューラルネットワークの出力値の配列(y)」と「教師データの配列(t)」を渡すと、
「0.03634」や「0.73」などの二乗和誤差の数値が返ってきます。

二乗和誤差と同様に、
この数値が小さければ「予測値」と「実際の値」のズレが小さいことになり、
優秀な学習ができていることになります。

損失関数は、
この数値の大きさを見て最適化を行うのです。


ニューラルネットワーク出力値は、
ソフトマックス関数などを利用して別で求める必要があります。

ということで本記事は、
ニューラルネットワークで非常に重要な、損失関数を紹介しました!
最後まで読んでいただき、ありがとうございました\(^o^)/

ディープラーニングのおすすめ書籍

専門書としては異例の発行部数を誇る、素晴らしい書籍です(^^)
初心者の方から知識のある方まで、幅広い方に向けて書かれていますよ!\(^o^)/

超オススメのPC用品

PCを操作する上で、トラックボールマウスが非常におすすめです!
僕も感動したこのマウスを、騙されたと思って使ってみてください!(^^)

外部モニターで2倍以上の効率化が見込めます!
安いものだと、たったの1万円前後なのでおすすめですよー!\(^o^)/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です