AIとファイナンス

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

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

第3回のテーマは「人工ニューラルネットワーク」です。

前回は個々の人工ニューロンの動きについて理解しましたね!とは言え単体のニューロンでは複雑なタスクは実行できないので今回は複数のニューロンを組み合わせた人工ニューラルネットワークArtificial Neural Network: ANN)について理解していきます。

 

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

 

人工ニューラルネットワーク

私たちの脳は何十億ものニューロンを層状に積み重ねてネットワークを形成しています。 人工ニューラルネットワークも層状に配置され人工ニューロンの集合として構成されます。一般的には、次の3種類の層(レイヤー)があります。

入力層:Input Layer
隠れ層:Hidden Layer
出力層:Output Layer
各層には複数のニューロンがあり、1つの層のニューロンは他の層のすべてのニューロンと相互作用します。 ただし、同じ層のニューロンは互いに相互作用しません。 ただし、同じ層のニューロンには接続がありません。 ノードまたはユニットという用語を使用して、人工ニューラルネットワークニューロンを表します。

典型的なANNを次の図に示します。

f:id:MarcelXX:20210118015239p:plain

0005-6Deeplearnig

 

 

 

【入力層】

この層はその名の通り、データを入力するそうになります。例えば、翌日の株価を予測するにあたって「前日の高値と安値が関係している」という仮説を持っていたとしましょう。その際は、入力層のニューロンの数は「高値」と「安値」の2つになります。このように自分の仮設や予測したいものに合わせて自分で自由に設計できます。

 

 【隠れ層】

隠れ層は、入力と出力の間の複雑な関係を導き出す役割があります。 つまり、非表示レイヤーはデータセット内のパターンを識別した上で、 データの特徴を抽出します。隠れ層は何層作っても大丈夫ですし各層に何個の人工ニューロンを配置しても大丈夫です。ただ、層やニューロンの数を増やしすぎると計算負荷が掛かるうえ、増やしたからと言って精度が上がり続けるわけでもありません。自分の目的に合わせた設計が必要です。 隠れ層を複数設計した場合、そのネットワークはディープニューラルネットワークDeep Neural Network: DNN)と呼ばれます。

  

【出力層】

入力を処理した後、隠れ層はその結果を出力層に送信します。出力層のニューロンの数は、そのネットワークで解決したい問題のタイプに基づいています。先ほどの株価の予測がしたいのであればニューロンの数は1つです。もし株価が「上がる」か「下がる」を予測するのであればニューロンの数は2つになりますね。

 

自分が設計したニューロンの数だけ、重み付けやバイアスの値が出てきます(前回を参照してください。例えば上の写真の例では入力層のニューロン一個当たり未知数は重み付けとバイアスが1個づつで計2個です。入力層にはニューロンが二個あるので合計4個になります。隠れ層のニューロンは一個当たり計3つの未知数(重み付け:2、バイアス:1)があるので層全体では9個です。

このように計算していくとニューロンが少し増えただけで無数の未知数を計算する必要があることがわかりますね。これをどのように自動的に決めていくのでしょうか?それについては第5回に解説するとして、次回は、前回お話して活性化関数について見ていきます。