softplus
概念
softplus是一种smoothed relu激活函数,定义为:
s
o
f
t
p
l
u
s
(
x
)
=
l
o
g
(
1
+
e
x
)
softplus(x)= log(1 + e^{x})
softplus(x)=log(1+ex)
作用和意义:
- softplus是relu函数的smoothed版本,使得relu函数在0处的非光滑点变得光滑。这有利于优化和数值稳定性。
- softplus总是非负的,因此常用于预测非负值,如概率值等。
- softplus的导数是一个高斯函数,这使得BackProp过程更加平滑。
- softplus在0附近的增长速度更缓慢,这能够生成更加清晰区分的概率分布。
实际案例:
- 当 predicts 非负值如概率时,使用 softplus 作为激活函数,如:
outputs = tf.keras.layers.Dense(1, activation='softplus')(inputs)
这可以输出0-1之间的概率值。
2. 在VAE(变分自编码器)中,softplus常用于参数化logits和variance:
z_mean = tf.keras.layers.Dense(latent_dim)(h)
z_log_var = tf.keras.layers.Dense(latent_dim)(h)
z = z_mean + tf.exp(0.5 * z_log_var) * eps
# 使用softplus parameterize z_log_var
z_log_var = tf.keras.activations.softplus(z_log_var)
- 在一些GANs(生成对抗网络)模型中也会使用softplus来参数化logits。
总之,softplus是一个很有用的激活函数,主要用于输出非负值,提高数值稳定性,生成光滑的概率分布等。在许多生成模型和VAE中有广泛应用。