3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

Sigmoid曲線の定義域と値域を[0,1]にしたいだけ

モチベーション

PseudoSigmoidの歴史

1. シグモイドをベースにちょっと縦に伸ばす

上記『シグモイド関数でコントラスト強調』『ガンマ曲線とシグモイド曲線による画像補正』での実装

s(x) = \frac{1}{1+e^{a(b-x)}}\\
f(x) = \frac{s(x)-s(0)}{s(1)-s(0)}

結果

https://www.geogebra.org/m/ydqszvqw
シグモイドもどき①.png

いいところ

  • 滑らか
  • ナイーブ

悪いところ

2. PseudoSigmoid

『シグモイド曲線の定義域が有界でないので、有界なシグモイド曲線を勝手に作ってみた』の実装

f(x) = \frac{sinh^{−1}[(2x−1)sinh(t)]}{2t} + \frac{1}{2}

結果

https://www.geogebra.org/m/ubnfhnzn
Sigmoidもどき②.png

いいところ

  • 綺麗

悪いところ

  • 難しい
  • コントラスト下げる方には対応できない

3. 指数アプローチ

指数で実装してみる。
$x^t$は$(0,0)$と$(1,1)$を通るので、これを二つひっくり返して繋げれば点対称なS字カーブができる。
以下$h$は変曲点。($[0,1]$にしたければ$h=0.5$)

f(x) = \left\{
\begin{array}{ll}
h \Big( 1 + \big( \frac{x-h}{h} \big)^{2^t} \Big) & (x \geq h) \\
h \Big( 1 - \big( \frac{h-x}{h} \big)^{2^t} \Big) & (x \lt h)
\end{array}
\right.

結果

https://www.geogebra.org/m/d4zzqtqy
Sigmoidもど③.png

いいところ

  • 負の値が実装できる

悪いところ

  • 変曲点付近に張り付く

ここで気づく

f(x) = \frac{sinh^{−1}[(2x−1)sinh(t)]}{2t} + \frac{1}{2}

これ、逆関数出せるのでは?

4. 拡張PseudoSigmoid

$t$が負の時には逆関数に移行することで、コントラストを落とす方にも対応する

f(x) = \left\{
\begin{array}{ll}
0 & (t = 0)\\
\frac{sinh^{−1}[(2x−1)sinh(t)]}{2t} + \frac{1}{2} & (t \gt 0) \\
\frac{sinh[(2x−1)t]}{2sinh(t)} + \frac{1}{2} & (t \lt 0)
\end{array}
\right.

結果

https://www.geogebra.org/m/fxfwepyu
スクリーンショット 2019-09-25 19.55.51.png

実装

そのまま書いてみた ($[0,MAX] \rightarrow [0,MAX]$)

extended_pseudosigmoid.js
function extended_pseudosigmoid(x, t, MAX){
    if (t === 0) return x;
    else if (t > 0) return (Math.asinh((2 * x / MAX - 1) * Math.sinh(t)) / 2 / t + 0.5) * MAX;
    else return (Math.sinh(t * (2 * x / MAX - 1)) / 2 / Math.sinh(t) + 0.5) * MAX;
};

結論

$\star$Sigmoidは偉大––––––!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?