畳み込みReLU層

一覧に戻る

 ここまで、2つの畳み込み層を連結しただけの非常にシンプルな深層畳み込みニューラルネットワークについて見てきましたが、ここでは、さらなる精度向上のために、非線形関数を利用することを説明します。

非線形変換による認識の向上

 畳み込みニューロンは、巨大な入力データに対して受容野をスライドさせることで、入力画像の領域ごとに、特徴的なパターンを認識します。
 しかしながら、畳み込みニューロンは、入力データに対して、線形関数\(wsm\)による演算でしか処理が出来ません。以前の記事の例では、線形関数では犬と猫を分離することが出来ませんでした。同様に、線形関数では画像のパターンを分類したり、識別したりすることが出来ない場合があります。

 この機能制限を改善し、畳み込みニューロンで認識できる能力を向上させるには、畳み込み層の間に、非線形関数を追加する必要があります。最も直接的な方法としては、非線形な活性化関数(activation function)を畳み込みニューロンの出力に加えます。

\(
\begin{eqnarray}
y=wsm(w,x)=f(\displaystyle \sum_{i,j} w_{ij}・x_{ij}) \tag{1}
\end{eqnarray}
\)

ここで、\(f\)は非線形関数です。以前の記事では、いくつかの利用可能な非線形関数を紹介しましたが、ここでは最もよく使われている、ReUL関数を利用します。

ReUL関数

 ReUL関数は、非常にシンプルで、非常に効率的です。入力値が正の場合には、入力値をそのまま出力値にし、入力値が負の場合には、出力値を0とする関数です。ReUL関数と畳み込み層の組み合わせは、深層畳み込みニューラルネットワークの分野で非常によく使われており、畳み込みReUL層(Convolutional-ReLU Layer)と呼ばれることもあります。このため、畳み込みReUL層のニューロン演算は次式で表すことが出来ます。

\(
\begin{eqnarray}
y=ReUL(wsm(w,x))=max(0,\displaystyle \sum_{i,j} w_{ij}・x_{ij}) \tag{2}
\end{eqnarray}
\)

 畳み込み演算に\(ReUL\)関数を組み合わせた場合の注意点としては、畳み込みニューラルネットワークの構造を変更できないことにあります。それぞれの畳み込み\(ReUL\)層は3次元の出力データを生成し、次の畳み込み\(ReUL\)層は、\(ReUL\)関数によって変換された値により構成された出力データを入力として、さらに小さな領域にフォーカスします。

一覧に戻る

コメントを残す

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

CAPTCHA