y=max(0,x)y = \max(0,\,x)

ランプ関数 y=max(0,x)y = \max(0,\,x) のグラフ

y=max(0,x)y = \max(0,\,x) は、xx が正ならそのまま、負なら 00 を返す関数です1ランプ関数または正部分と呼ばれ、原点で折れ曲がった半直線二本からなります。式は素朴ですが、微分可能性の境目にある例として、また機械学習の活性化関数として、応用の幅は広い関数です。

絶対値による表示

二つの数の大きいほうは max(a,b)=a+b+ab2\max(a, b) = \dfrac{a + b + |a-b|}{2} と書けます。a=0a = 0b=xb = x とすると次が得られます。

max(0,x)=x+x2\max(0,\,x) = \frac{x + |x|}{2}

逆向きの関係も成り立ちます。

x=max(0,x)+max(0,x)x=max(0,x)max(0,x)\begin{align*} |x| &= \max(0,\,x) + \max(0,\,-x) \\ x &= \max(0,\,x) - \max(0,\,-x) \end{align*}

絶対値関数とランプ関数は、和と差で互いを作り合う関係にあります。

定義域と値域

定義域はすべての実数、値域は y0y \geq 0 です。グラフは負の側で xx 軸に重なり、正の側で直線 y=xy = x に重なります。

原点での微分不可能性

範囲yyyy'
x<0x < 00000
x=0x = 000定義できない
x>0x > 0xx11

右からの微分係数は 11、左からの微分係数は 00 で一致しないので、原点では微分できません。連続ではあるので、絶対値関数と同じく「連続だが微分不可能」の例になります。

x0x \neq 0 での導関数はヘヴィサイドの階段関数です2。逆にいえば、階段関数を積分するとランプ関数になります。

凸性

この関数は凸です。二点を結ぶ線分がつねにグラフの上側にあり、折れ曲がりが下向きに一度だけ起こります。平行移動と定数倍を許してランプ関数を足し合わせると、下に凸な折れ線であればどんな形でも作れます。区分線形な凸関数がランプ関数の一次結合で表せるというこの性質は、応用の土台になっています。

積分

原始関数は次のとおりです。

max(0,x)dx=12(max(0,x))2+C\int \max(0,\,x)\,dx = \frac{1}{2}\bigl(\max(0,\,x)\bigr)^{2} + C

x0x \leq 0 では 00x>0x > 0 では x22\dfrac{x^{2}}{2} です。これは連続で一階微分もできますが、二階微分が原点で食い違います。

関数原点でのなめらかさ
ヘヴィサイドの階段関数不連続
ランプ関数連続だが微分できない
その原始関数一階微分まで可能

積分するたびになめらかさが一段ずつ上がっていく様子が確かめられます。

応用

機械学習ではこの関数が ReLU という名前で活性化関数に使われ、深い層を重ねても勾配が消えにくいことから広く採用されています。ネットワーク全体が区分線形な関数になるのは、先ほどの凸性と重ね合わせの性質によるものです。

  • 機械学習の活性化関数 ReLU
  • コールオプションの満期時の価値 max(0,SK)\max(0,\,S-K)
  • 交流の負の側を切り落とす半波整流
  1. Ramp function、Wikipedia
  2. Heaviside step function、Wikipedia