0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

深層学習 Day 1 - Section 2 活性化関数 のまとめ

Last updated at Posted at 2020-11-08

この記事は個人的なお勉強用のメモです。

このお勉強の位置

深層学習 Day 1

Section 0 ニューラルネットワークの全体像
Section 1 入力層~中間層
Section 2 活性化関数 ← これ
Section 3 出力層
Section 4 勾配降下法
Section 5 誤差逆伝播法

講義

活性化関数

活性化関数の式

f^{(l)}(u^{(l)})=\Big[f^{(l)}(u_1^{(l)}) .. f^{(l)}(u_j^{(l)})\Bigr]

$f$:活性化関数
$u$:総入力
$l$:何層目か

活性化関数 $f$ は総入力 $u$ を引数にとる。
活性化関数は非線形な関数。
※ 活性化関数が線形な関数だと2つの層の数式をまとめることができてしまい、
 もはや中間層の意味がなくなる、とのこと。

活性化関数の種類

  • 中間層

  • ReLU関数(れる、と読む)

  • シグモイド(ロジスティック)関数

  • ステップ関数

  • 出力層

  • ソフトマックス関数

  • 恒等写像

  • シグモイド(ロジスティック)関数

ステップ関数

サンプルコード

def step_function(x):
  if x > 0:
    return 1
  else:
    return 0

数式

f(x) = \left\{
\begin{array}{ll}
1 & (x \geq 0) \\
0 & (x \lt 0)
\end{array}
\right.

以前は使われていたが、現在は使われていない。

余談だが、上記のサンプルコードと数式は一致していないと思う。
$x$ が $0$ のときサンプルコードでは $0$ を返すが、
数式では $1$ を返す。

手元にある『ゼロから作る Deep Learning』の 3.1.2 項では、
$x$ が $0$ のときステップ関数は $0$ を返す関数として
数式が書かれている。3.2.2 項に書かれているソースコードも同様。
つまり、数式とソースコードが一致している。

シグモイド関数

サンプルコード

def sigmoid(x):
  return 1 / (1 + np.exp(-x))

数式

f(u) = \frac{1}{1+e^{-u}}

0から1の間の値を返す。
右肩上がり。
微分可能
よく使われる。

課題:勾配消失問題を起こす。

ReLU関数

サンプルコード

def relu(x):
  return np.maximum(0, x)

数式

f(x) = \left\{
\begin{array}{ll}
x & (x \gt 0) \\
0 & (x \leq 0)
\end{array}
\right.

今最もよく使われている。
勾配消失問題が起きない。
良い意味でスパース化する(0より小さい値を0にするので)。

活性化関数の効果

  • 重み $W$ での計算は線形、活性化関数 $f$ は非線形なので、バラエティーに富むモデルを作れる。
  • 一部の出力は弱く、一部は強く伝播される。
  • 学習が進んで、特徴をつかんでいく。

実装演習

実装演習での活性化関数は、functions.py ファイルにまとめられている。

image.png

どの関数もシンプルな実装になっており、
PythonがAIの実装に最適とよく言われることに
納得できる。

確認テスト

線形と非線形の違い

image.png

線形は比例である。
非線形は比例ではない。

線形な関数

  • 加法性:$f(x+y)=f(x)+f(y)$
  • 斉次性:$f(kx)=kf(x)$

非線形な関数は上の2つを満たさない。

該当するソースコード

$z = f(u)$ に該当するソースコード

image.png

上記の 2つのfunction.relu(...) の部分。

修了テスト~練習問題~

問題81(ReLU関数)

数式

h(x) = \left\{
\begin{array}{ll}
x & (x \gt 0) \\
0 & (x \leq 0)
\end{array}
\right.
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?