アメリカのデータ分析コンペKaggleでは、世界中の優秀なデータサイエンティストによって作成された様々なeラーニング教材が無料で公開されています。
中でも、この記事では以下の講座について解説します。

全編英語ですし、ところどころ説明を省略しているところもあるので、私なりにかみ砕いて解説していきます。
この記事で取り扱うライブラリ、モジュール、クラスは以下の通りです。
Library tf.keras Class tf.keras.Sequential
Deep Neural Networks(ディープニューラルネットワーク)
Introduction(イントロダクション)
この講座では、複雑な関係性を持つディープニューラルネットワークを構築する方法を紹介します。
前回の講座で学習した1つ1つは単純な計算しかできない単一ユニットですが、これを組み合わせることで、複雑なネットワークを構築することができます。
Layers(レイヤー)
以下の図は、3つの入力が、2つのニューロンに接続されている様子を表してします。

図のInputsは入力層、Denseは全結合層、Outputsは出力層といいます。
ニューラルネットワークの各層は単純な変換を行っているだけですが、層を重ねることで複雑な変換をすることができるようになり、正解に少しずつ近づいていきます。
The Activation Function(活性化関数ReLU)
とはいえ、全結合層が2つあるだけでは、線形的な推論しかできません。
そこで活性化関数の出番です。活性化関数があれば、以下のように非線形な推論が可能になります。
活性化関数とは、各層の出力(活性化)に適用する関数のことです。例えば、一般的な活性化関数として、正規化線形関数(The Rectifier Function)があります。
正規化線形関数のグラフは、上記のように負の部分がゼロになった直線max(0,x)です。
正規化線形関数を線形ユニットに接続すると、正規化線形ユニット(ReLU)になります。ReLUを線形ユニットに適用すると、の出力はmax(0, w * x + b)となり、次のような図になります。
Stacking Dense Layers(レイヤーの積み重ね)
さて、ReLUによって非線形な推論ができるようになったので、次はレイヤーを積み重ねて、更に複雑なデータ変換を行ってみましょう。
上記のニューラルネットワークは、入力層Inputs、2つの隠れ層Hidden、そして最後の線形層Linearから成っています。(その出力を直接見ることがないため、隠れ層と呼ばれます)

このネットワークは、出力層が線形ユニットとなっているため、回帰問題に使われます。一方、分類問題では、出力層に活性化関数が必要になります。
Building Sequential Models(シーケンシャルモデルの構築)
ReLUを使って実際にコードを書いてみます。
入力数は2つ、最初の隠れユニットは4つ、次の隠れユニットは3つ、最後の出力数は1つ、と順番(Sequential)に全結合層(Dense)を積み重ねていきます。
活性化関数ReLUはactivationパラメータで定義しておきます。
from tensorflow import keras from tensorflow.keras import layers model = keras.Sequential([ # the hidden ReLU layers layers.Dense(units=4, activation='relu', input_shape=[2]), layers.Dense(units=3, activation='relu'), # the linear output layer layers.Dense(units=1), ])
Your Turn(練習問題)
ここまで学習してきた内容を練習問題で実践してみましょう。

今回はKaggle Courseで正規化線形ユニット(ReLU)について学びました。次回は確率的勾配降下法について学んでいきます。
以上、最後までお読みいただきありがとうございました。
コメント