初心者向け学習方法一覧はこちら
この記事はアメリカ/ボストンの住宅価格の予測をディープラーニングを用いて実装する2つ目の記事です。
3本立ての記事ですので1をまだ読まれていない方は先に1を読むことをおすすめします。
理論
ディープラーニングの理論について以前紹介したディープラーニングについて内容の復習とさらに踏み込んだ内容について解説します。
作り手になるのであれば応用的な機械学習についての知識は必要ですので、実装する上で必要な知識について解説します。
ディープラーニングとは
まずディープラーニングとはなんなのかについて解説します。
人の脳神経細胞であるニューロンを模したパーセプトロンという数学モデルがあります。
このパーセプトロンはいくつかの入力された数字に重みという重要度を付け、足し合わせてから活性化関数という関数に通すことで入力された情報を分類することができます。
このパーセプトロンをいくつもつなげ、何層にもすることで人間の脳の動きを再現しようとしたモデルがディープラーニングです。
ディープラーニングでのパーセプトロンをノードとも呼びます。
さらに人間が勉強をする様にテストに向けて学習をする為、予測装置に加えてどうやってその予測を行ったのかまで調べることができます。
ディープラーニングのモデル
ディープラーニングを実装するために設計図を作りましょう!
そのためにディープラーニングの各層に課す条件を解説します。
まず入力層についてです。
今回入力される値は
しかし、説明変数をそのまま入力してしまうとそれぞれの変数のとる値が異なる場合、重みが役に立たなくなってしまいます!
そのため、説明変数を一度正規化という0から1までの値になるように変換する必要があります。
具体的にはそれぞれの説明変数を最大値 - 最小値で割ります。
以上が入力層に課す条件です。
次に中間層についてです。
一般に中間層の数は分割したい問題の数以上にすることが望ましいですが、中間層の数があまりにも多いと学習がうまくいきません。
そこで今回は中間層の数を4つに、各層のノードの数は64個にします。
また、中間層に用いる活性化関数は「ReLU」を使用します。
「ReLU」とは0と受け取った値を比べ大きい値を出力する関数です。
グラフで表すとこの様になります。
以上が中間層に課す条件です。
最後に出力層についてです。
出力層で使用する活性化関数は今回の問題は回帰問題ですので「恒等関数」を用います。
「恒等関数」とは y=x の関数、要するになにもしない関数です。
グラフで表すとこの様になります。
以上が出力層に課す条件です。
また、それぞれの重みの初期値はReLUの場合はHeに従うように0以上のできるだけ小さな値にすることが良いとされています。
「He」とは2を前のノード数で割ったものにルートを取ったものです。
式で表すとこの様になります。
Heに従うように初期値を設定することでそれぞれのノードの出力結果が異なるようになり、重みがすべて活きる形になります。
以上が今回実装するディープラーニングモデルの理論部分です。
モデルの評価方法
最終的にディープラーニングモデルをどのように評価をすれば良いのかについて解説します。
評価の手順は以下の通りです。
まず、正解となる教師データをx軸にディープラーニングモデルで予測した値をy軸に取ったグラフを描きます。
そして描いたグラフがy=xの形に近いほどディープラーニングモデルでよく予測できています。
グラフを用いて誤差を可視化することができます。
さらに精度を数字で評価するために二乗誤差平均という正負の値を打ち消すために二乗したものを使用します。
二乗誤差平均を式で表すと以下のようになります。
この平均二乗誤差は必ず正の値を取り、値が小さいほど正しく予測ができています。
この値をディープラーニングモデルの精度の指標とします。
まとめ
今回は実装するディープラーニングの理論と評価の方法について紹介しました!
次の記事ではPythonを使用してディープラーニングモデルの実装をしてますのでぜひどうぞ!
プログラミングスクールの選び方
転職を検討中の方向け
フリーランス・副業で活躍したい方向け
教養・キャリアアップしたい方向け
給付金について詳しく知りたい方向け