深層学習と活性化関数
@spade630
アジェンダ
• ニューラルネットワーク
• 活性化関数
• Chainerで DeepLearning実装
多層ニューラルネットワーク
入
力
層
中
間
層
中
間
層
出
力
層
・・・
0層 1層 (n - 1)層 n層
学習に必要なパラメータ・関数
• 重み・バイアス
• 活性化関数
• 誤差関数(損失)
学習に必要なパラメータ・関数
• 重み・バイアス
• 活性化関数
• 誤差関数(損失)
活性化関数
• ニューラルネットワークでは入力が重みとバイ
アスによって出力を決定するが、この時の出力
は活性化関数によって正規化することが望まし
い。
活性化関数
• ロジスティック関数
• 双曲線正接関数
f(u) =
1
1 + e u
f(u) = tanh(u)
=
eu
e u
eu + e u
活性化関数
• 正規化線形関数(ReLU)
• 他にも線形写像・マックスアウト・ソフトマッ
クス関数などがある。
f(u) = max(0, u)
DeepLearning実装
• Chainerを使うと簡単にニューラルネットワー
クが構築できる。
• 一から実装すると微分(偏微分)や行列が多く登
場するが、Chainerを使うとこれらを気にする
ことがほぼない。
Chainerで学習してみた
• 金貨の真贋を見分けよう (CodeIQより)
http://next.rikunabi.com/tech/docs/ct_s03600.jsp?
p=002315
• 問題概要
体積と重さと本物か偽物かという訓練データ(100件)が与
えられて、その後、体積と重さだけのテストデータから本
物か偽物かを判定する。
設定したパラメータとか
• ニューラルネットワーク3層
• 入力層 2層(体積、重さ)
• 中間層 100層→100層
• 出力層 2層(本物or偽物)
設定したパラメータとか
• 学習回数は200回
• 学習するだけは面白くないので活性化関数によっ
てどのように精度が変わるか比較(10回平均)
• 活性化関数は3パターン(Logistic, tanh, ReLU)
結果
学習回数 Logistic tanh ReLU
50 73.0% 95.5% 60.4%
100 79.8% 97.7% 75.2%
150 85.1% 97.4% 90.9%
200 88.4% 96.9% 97.5%
結果・考察
• tanhは早めに学習をほぼ終えていることが予想さ
れる。
• ReLuは学習回数に比例して精度が上がっている。
• Logisticも学習回数に比例して精度が上がってい
るが、200回では9割を超えなかった。
まとめ
• 活性化関数は学習に与える影響が大きいので、
慎重に選ぶ必要がある。

深層学習と活性化関数