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.

ラビットチャレンジ - 深層学習 Day1 Section2 活性化関数

Last updated at Posted at 2020-10-11

0.概要

本記事は日本ディープラーニング協会認定の講座プログラムである「ラビット・チャレンジ」が提供している科目の1つである深層学習のレポートである。
記事タイトルに記載のとおり、Day1 Section2の活性化関数について以下にまとめる。

1.活性化関数

ニューラルネットワークにおいて、次の層への出力の大きさを決める非線形の関数。
次の層への値を伝えるか伝えないか、またはその強弱を定める。

1.1.中間層に用いられる活性化関数

1.1.1.ステップ関数

閾値を超えたら発火する関数。
出力は常に閾値を超えた時の1か超えなかった時の0。
線形分離可能なものしか学習できない。

f(x)=
\begin{cases}
1 \ \ (x\ge0) \\
0 \ \ (x<0)
\end{cases}
def step_function(x):
  if x > 0:
    return 1
  else:
    return 0

現在は殆ど使われない。

1.1.2.シグモイド関数

0~1の間を緩やかに変化する関数。
0~1の間で表現されるため信号の強弱を伝えることができる。

f(x)=\frac{1}{1+e^{-x}}
def sigmoid(x):
  return 1 / (1 + np.exp(-x))

勾配消失問題が起きることがある。

1.1.3.ReLU関数(ランプ関数、正規化線形関数)

最もよく使われている関数。
入力が0より大きければそのまま出力し、0より小さければ0とする。

f(x)=
\begin{cases}
x \ \ (x>0) \\
0 \ \ (x\le0)
\end{cases}
def relu(x):
  return np.maximum(0, x)

勾配消失問題の回避やスパース化に貢献する。

例えば画像の畳み込みの場合、RGBは本来0~255の正の値しかないのに重みとバイアスをもとに算出した値に負の値が出てきていたらそれは画像の特徴を全く捉えれていないことになるので、不要なデータである。
ReLUは負数を0にするのでこういう場合に良い。

1.1.4.その他の活性化関数

  • tanh(双曲線正接関数):-1~1の間で出力する。
  • LReLU:ReLU関数の拡張。0以下の場合は入力値をα倍(基本的に0.01固定)した値を出力する。
  • PReLU:LReLU関数の拡張。αの値は学習によって動的に決まる。
  • ELU:LReLUやPReLUを改善した関数。オイラー数を底とする指数関数を使うことで0以下の場合は0~α(基本的に1.0)の値を出力する。
  • SELU:ELUの拡張。入力値が0以下でも0より大きくてもλ倍した値を出力する。
  • Swish(SiLU):入力値が0以下ならほぼ0、0より大きければほぼ入力値そのままを出力する。ReLU関数に似た出力になる。
  • Mish:Swishによく似た関数。入力値が0以下ならほぼ0(最小値で約-0.31)、0より大きければほぼ入力値そのままを出力する。
  • FReLU:最近できた活性化関数。画像認識に特化している。

1.2.出力層に用いられる活性化関数

1.2.1.ソフトマックス関数

他クラス分類の活性化関数。
各クラスに該当する確率を出力する。

1.2.2.恒等関数

入力値をそのまま出力する関数。
主に回帰問題で使用される。

1.2.3.シグモイド関数

ロジスティック回帰で使われていた時と同じように2値分類の活性化関数。
1のクラスに該当する確率を出力する。

2.確認テスト

2.1.確認テスト1

線形と非線形の違いを簡潔に説明せよ。

回答:
線形
nonlinear2.png

非線形
nonlinear3.png

図は機械学習の非線形回帰ハンズオンから。
線形は直線で表される関数(1次関数)。
非線形は曲線で表される関数(2次以上の関数)。

2.2.確認テスト2

「1_1_forward_propagation.ipynb」から活性化関数を使っている箇所を抜き出せ。

# 1層の総出力
z1 = functions.relu(u1)

# 2層の総出力
z2 = functions.relu(u2)

X.ラビットチャレンジとは

ラビットチャレンジとは、日本ディープラーニング協会認定の講座プログラムの1つ。
E資格を受験するためにはこのラビットチャレンジ等、いずれかの講座プログラムを修了しなければならない。

ラビットチャレンジの特徴は「現場で潰しが効くディープラーニング講座」の通学講座録画ビデオを編集した教材を使用した自習スタイルであるという点。
サポートは他の講座より少なく、受け身ではなく自主的に学んでいく姿勢でなければ進められないが、その分、他の講座に比べると安価であり、手が出しやすい。
ある程度知識がある人、自力で頑張るぞというガッツのある人向けではないかと感じる。

bnr_jdla.png

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?