0
0

ゼロから作る Deep Learning; 輪読

Posted at

ゼロから作る Deep Learning; 輪読

これは「ゼロから作る Deep Learning」のちょっとした知識メモです。Deep Learningの索引のように使用できればと思います。

ニューロン(ノード)と呼ばれる入力値とその総和で作る式の意味

バイアスの項含めた入力信号の総和(= $\sum_i^n w_i x_i + b$)が0より大きい時、y =1を出力し、0以下の時y = 0を出力する。

i = 2の時、次になる。

\begin{equation} y=
    \left\{
    \begin{aligned}
         1 \space (w_1 x_1 + w_2 x_2 + b > 0) \\
        0 \space (w_1 x_1 + w_2 x_2 + b <= 0) \\
    \end{aligned}
    \right.
\end{equation}

$\sum_i^n w_i x_i + b$ について、${w_i}$ ${b}$ はパラメータであり、${x_i}$ は入力値である。

入力値の一つ一つはニューロンと呼ばれる。これは、入出力の変換様式が、神経細胞の流れのようであることに由来する。

h(x) := w_1 x_1 + w_2 x_2 + b

このようにおく。

h(x)は、出力値が0より大きいか、0以下かによって、${1, 0}$ に出力を制御する関数を使用する。

このような関数を活性化関数と呼ぶ。

活性化関数

ステップ関数、シグモイド関数、ReLU関数は活性化関数である。
ニューラルネットワークでは、シグモイド関数とReLU関数を使用する。

シグモイド関数

シグモイド関数は、次のように出力に $0 < x < 1 $ の実数値を取る。これが、ステップ関数との違いである。

>>> import numpy as np
>>> def sigmoid(x):
...     return 1 / (1 + np.exp(-x))   
... 

>>> x = np.array([-1.0, 1.0, 2.0])
>>> sigmoid(x)
array([0.26894142, 0.73105858, 0.88079708])

plotすると次のようになる。

x = np.array([-1.0, 1.0, 2.0])
y = sigmoid(x)
import matplotlib.pyplot as plt
import numpy as np
# import matplotlib.pylab as plt
 
plt.xlabel('X')
plt.ylabel('Y')
plt.plot(x, y)

図のように出力値は $0<= y <= 1$ の実数値をとる。

シグモイド関数では、このように実数値を取るので、層を重ねた時に都合が良い。

活性化関数の性質

  • $y \in [0, 1]$ となる値をとる
  • 入力値が大きいほど、出力は1に近づき、小さいほど0に近づく
  • 非線形

非線形であることは層を作る上で大事な性質となる。

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