活性化関数がディープラーニングに必要な理由

ディープラーニング
スポンサーリンク

ディープラーニングやその基礎となるニューラルネットワークには「活性化関数」が欠かすことができません。この活性化関数を使うことにより、ニューラルネットワークは人間の脳のように複雑な表現ができると言われています。しかしなぜ、活性化関数を使えば複雑な表現ができるのでしょうか? そこで今回は、ニューラルネットワークやそれを応用したディープラーニングで「活性化関数」が必要な理由をまとめてみました。

活性化関数の「ない」ニューラルネットワーク

たとえば下のようなニューラルネットワークがあったとします。

活性化関数のないニューラルネットワークの図

ひとつひとつの「◯」を「ニューロン」と呼び、真ん中の3つのニューロンを「中間層」や「隠れ層」と言います。そしてこの中間層がたくさんあるがディープラーニングです。

このニューラルネットワークの出力は、次のように計算します。

活性化関数のないニューラルネットワークの計算

いっけん複雑な計算をしているように見えるですが、実はこの計算は、入力に重みの合計を掛けるだけの簡単な計算にできてしまうのです。

入力に重みの合計を掛けるだけの簡単な計算

これは、入力が1,000個でも、たとえ1億個になっても、同じように簡単な掛け算と足し算で計算できることを示しています。

ディープラーニングの基礎となるこのニューラルネットワークは、人間の脳の神経回路をまねて作られたものです。私たち人間の脳がどのような計算をしているかはまだ完璧にはわかっていませんが、少なくともこんな簡単な掛け算と足し算で済むほど単純なものではないでしょう。

活性化関数の「ある」ニューラルネットワーク

そこで「活性化関数」の登場です。

中間層のニューロンに、この「活性化関数」を追加してみましょう。

活性化関数のあるニューラルネットワークの図

活性化関数を追加したニューラルネットワークの出力の計算は次のようになります。(活性化関数は色々あるのですが、ここでは代表的なシグモイド関数を使っています)

活性化関数のあるニューラルネットワークの計算

この中間層に活性化関数のある出力の値は、入力に重みの合計を掛けた値に活性化関数を適用したものとは異なりますので、1回の掛け算と足し算では計算できないことになります。

入力に重みの合計を掛けた値に活性化関数を適用

これが、ニューラルネットワークやそれを応用したディープラーニングで「活性化関数」が必要な理由です。

今回の例では、中間層が1つだけでしたが、ディープラーニングになるといくつもの層があり、活性化関数は、その層の間でどのように信号を伝播させるかを調整してくれます。人間の脳で言えば、シナプスの結合を調整するというとても重要な役割をこの活性化関数が担当しているのです。

おわりに

この記事を書くのにあたって、書籍「機械学習入門 ボルツマン機械学習から深層学習まで」を参考にさせて頂きました。今回の活性化関数もそうですが、ディープラーニングに欠かすことができない誤差逆伝播方や自己符号化器などを、その仕組みがなぜ必要なのか、どのように動作しているかを、魔法の鏡とお妃さまの対話形式で分かりやすく解説されています。ディープラーニングの全体像とその理論をつかむのにぜひオススメの一冊です。

コメント

タイトルとURLをコピーしました