ニューラルネットワークで重要な活性化関数の1つである「Swish関数」を紹介します。理解のしやすいSwish関数をPythonで実装も行いながら紹介しています。
Swish関数とは?
Swish関数のグラフ
Swish関数は、負の値は膨らんでから「0」へ収束、正の値は「x」を出力する関数です。
スウィッシュ関数と呼ばれます。
Swish関数はReLU関数を拡張した関数で、
ReLU関数よりも下限を滑らかにすることで柔軟な学習結果を期待します。
下に、ReLU関数、Swish関数、Mish関数を重ねたグラフを載せておきます。
すごくきれいな曲線ですね。
Swish関数の数式
Swish関数の数式は少し複雑ですね。
Swish関数は活性化関数の1つでもある、シグモイド関数σ(x)を利用します。
βはパラメータとして定義されることが多いです。
PythonでSwish関数を実装
実装
#Swish関数
import numpy as np
def swish(x):
return x*1./(1. + np.exp(-x))
if __name__ == '__main__':
print(swish(3)) # 任意の数字を入力
【実行結果】
2.8577223804672998
5行目の「np.exp(-x)」は、「e の -x乗」を表しています。
NumPyを利用すれば非常にシンプルに表すことができます。
【参考】Swish関数をプロットするコード
下記は、matplotlibを使ってSwish関数を描画するソースコードです。
#Swish関数
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-6, 6, 0.1)
y = x*1./(1. + np.exp(-x))
plt.grid()
plt.plot(x, y)
plt.show()
このコードを実行すると、下のグラフが実行結果として生成されます。
ということで本記事は、
ニューラルネットワークで非常に重要な、活性化関数の1つであるSwish関数を紹介しました!
最後まで読んでいただき、ありがとうございました\(^o^)/
ディープラーニングのおすすめ書籍
専門書としては異例の発行部数を誇る、素晴らしい書籍です(^^)
初心者の方から知識のある方まで、幅広い方に向けて書かれていますよ!\(^o^)/
超オススメのPC用品
PCを操作する上で、トラックボールマウスが非常におすすめです!
僕も感動したこのマウスを、騙されたと思って使ってみてください!(^^)
外部モニターで2倍以上の効率化が見込めます!
安いものだと、たったの1万円前後なのでおすすめですよー!\(^o^)/