AIとファイナンス

このブログではプログラミング言語Pythonを通じてAIとFinanceの懸け橋となるプログラムの作成を行っていきます! 具体的にはニューラルネットワークを構築して将来の市場の動きを予測することを目標としています。 ブログを進めていく中で、Pythonのコードはもちろん金融で確立された理論やその他のトピックもご紹介します。

【PythonでAI】ディープラーニング(深層学習)入門【その4】

このシリーズも折り返し地点を越えました。前回までで人口ニューラルネットワークがどのような動きをするかがわかったと思います。その中で、重みづけであったり、バイアスであったり、予想をするうえでプログラムが勝手に決めてくれる部分があるということがわかりましたね。今回は「活性化関数」について見ていきましょう。

 

(※)このシリーズはディープラーニング(深層学習)入門と題して全7回のシリーズでお届けしています。初めて御覧になる方はこちらを一度ご覧ください。

 

【活性化関数とは】

伝達関数とも呼ばれる活性化関数は、ニューラルネットワークで重要な役割を果たします。少し数学的な言い方をすると、 ニューラルネットワーク非線形性を導入するために使用されます。

f:id:MarcelXX:20210117092034p:plainf:id:MarcelXX:20210117134555p:plain

第3回で学習したように、活性化関数を適用しないと各ニューロンの出力は上記の式のようにz =(入力*重み)+バイアスとなります。この出力は単純な線形回帰に似ていますよね? 活性化関数の目的は、出力を非線形変換して、データ内の複雑なパターンを学習することです。

次に、一般的に使用される興味深い活性化関数のいくつかを見てみましょう。自分のモデルにどのような活性化関数を使うかは自分で決めれます!

 

シグモイド関数

シグモイド関数は、最も一般的に使用される活性化関数の1つです。 どんな出力値でも0から1の間に押しつぶす働きをしてくれます。

また、この式は微分可能なので任意の2点で曲線の傾きを見つけることができます。 これは単調であり、完全に増加しないか、減少しないことを意味します。

 

f:id:MarcelXX:20210121090045p:plain

0005-7Deeplearning

f:id:MarcelXX:20210121090117p:plain

0005-10Deeplearning


 

 

【双曲線正接関数】

下の絵をご覧いただくとわかるとおり、「シグモイド関数と何が違うんだ」といいたくなるくらいそっくりですね!この関数も目的は出力の値を一定の範囲内に抑えることです。この関数は出力を-1~1の間に押しつぶしてくれる関数だということがわかりますね!

f:id:MarcelXX:20210121085957p:plain

0005-9Deeplearning

f:id:MarcelXX:20210121090219p:plain

0005-10Deeplearning

【正規化線形ユニット】

正規化線形ユニット(ReLU)関数は、シグモイド関数と並んで最も一般的に使用される活性化関数の1つです。 0から無限大までの値を出力します。 以下の関数、グラフをご覧いただくとわかる通り、負の数字をが出力されてきたらすべて0にして次のニューロンに情報を渡してしまいます。その一方で正の出力はそのまま次のニューロンに伝えてくれます。

f:id:MarcelXX:20210121091000p:plain

0005-11Deeplearning

f:id:MarcelXX:20210121091034p:plain

0005-12Deeplearning


とりあえず今回は3種類の活性化関数を見てみました!ここで全部網羅するつもりは無く、まずはだいたいどのようなものなのかを把握していただければ全く問題ありません。

次回はいよいよ、人工ニューラルネットワークがどのように「学習」をしているのか、その核となる、順方向伝搬、逆方向伝搬について見ていきます。