今回からPythonで使える機械学習のフレームワークKerasを利用してのディープラーニングの実装を行います。
基本のコード
Kerasの基礎であるモデルに関する基本のコードについて
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from keras.models import Sequential from keras.layers.core import Dense, Activation, Dropout, Flatten model = Sequential() #入力が8次元、出力が12次元の層を定義している。 model.add(Dense(12, input_dim=8, kernel_initializer='random_uniform')) #model.add(Dense(出力層次元数, input_dim=入力層次元数, kernel_initializer='ニューロンの重みの初期化方法')) ''' ニューロンの重みの初期化について kernel_initializer random_uniform: 重みを任意の小さい値の範囲(-0.05から0.05)の範囲でランダムに初期化される。 規定の範囲内に重み値が集まっている状態。 random_normal: 平均が0, 分散が0.05の正規分布に基づいて重みの初期化を行う。 zero: すべての重みを0で初期化する。 ''' |
活性化関数
ニューラルネットワークのニューロンが発火した際、どのような値が伝播さえるかを決定するのが活性化関数です。ここでは2種類の活性化関数を紹介します。
シグモイド関数
もっとも基本的な発火方法が0もしくは1の値を返すのに対し、シグモイド関数は非線形の関数で-から+の値までを曲線で返します。これによりニューロンの曖昧な回答が可能となります。
ReLU関数
ReLU関数はある入力までを0で返しそれ以上になると線形で返します。
入力、重み、バイアス、活性化関数の関係図
一つのデータの各要素に重みがかけられた値とバイアスを足した値を活性化関数に入れ発火した値が次のニューロンに伝わる。
脳の神経伝達はこの繰り返しだという考え方が機械学習の基礎のようです。