連載
» 2020年04月22日 05時00分 公開

AI・機械学習の用語辞典:[活性化関数]ソフトプラス関数(Softplus関数)とは?

用語「ソフトプラス関数」について説明。途中から右肩上がりになる滑らかな曲線で、「0」〜「∞」の間の値(入力値が0以下なら「0」に近い数値、0より上なら「入力値と同じ値」に近い数値)を返す、ニューラルネットワークの活性化関数を指す。

[一色政彦,デジタルアドバンテージ]
「AI・機械学習の用語辞典」のインデックス

連載目次

用語解説

 AI/機械学習のニューラルネットワークにおけるソフトプラス関数Softplus関数)とは、あらゆる入力値を0.0以上(〜)という正の数値に変換して出力する関数である。

 図1を見ると分かるように、ReLUという活性化関数にやや似ており、途中から右肩上がりになる。ただし、関数への入力値が0付近では、出力値が0にはならない点が異なるので注意してほしい。ソフトプラス関数では、入力値が-3.0以下など小さくなればなるほど出力値が0に近づいていき、入力値が3.0以上など大きくなればなるほど出力値が入力値と同じ値に近づいていくのが特徴的だ。

図1 「ソフトプラス関数」のグラフ 図1 「ソフトプラス関数」のグラフ

 ニューラルネットワークの隠れ層(中間層)の活性化関数としては、「バックプロパゲーション」(後日解説)が登場してからはシグモイド関数tanh関数が使われ、その後、ReLUが登場する前までは(本稿で解説する)「ソフトプラス関数」が用いられることもあった。現在のディープニューラルネットワークでは、ReLUを使うのが一般的である。

 主要ライブラリでは、次の関数/クラスで定義されている。

定義と数式

 冒頭では文章により説明したが、厳密に数式で表現しておこう。ソフトプラス関数の数式は以下の通りだ。log(eを底とする自然対数)を使うのが特徴的である。

 eオイラー数ネイピア数)や、それに対応するnp.exp(x)という後述のコードについては、「シグモイド関数」で説明しているので、詳しくはそちらを参照してほしい。

 上記の数式の導関数を求めると、次の式になる。これは標準シグモイド(Sigmoid)関数と同じ式である。

Pythonコード

 上記のソフトプラス関数の数式をPythonコードの関数にするとリスト1のようになる。なお、log(自然対数)やオイラー数に関して計算するため、ライブラリ「NumPy」をインポートして使った。

import numpy as np

def softplus(x):
  return np.log(1.0 + np.exp(x))

リスト1 ソフトプラス関数のPythonコード例

 ソフトプラス関数の導関数(derivative function)のPythonコードも示しておくと、リスト2のようになる。

import numpy as np

def der_softplus(x):
  return 1.0 / (1.0 + np.exp(-x))

リスト2 ソフトプラス関数の「導関数」のPythonコード例

「AI・機械学習の用語辞典」のインデックス

AI・機械学習の用語辞典

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。