1 sigmoid激活函数
作用:输出归一化 [0,1]
举个例子,z = w1*x1 + w2*x2 +bias,其中bias为偏置项。假定取bias为-30,w1、w2都取为20,z = -30 + 20*x1 + 20*x2
如果x1 = 0,x2 = 0,则z = -30,g(z) = 1/( 1 + e^-z )趋近于0。从上图sigmoid上也可看出。
如果x1 = 0,x2 = 1,或x1 =1,x2 = 0,则z = -10,同样,g(z)的值趋近于0。
如果x1 = 1,x2 = 1,则z = 10,此时,g(z)趋近于1。
换言之,只有x1和x2都取1的时候,g(z)→1,判定为正样本;而当只要x1或x2有一个取0的时候,g(z)→0,判定为负样本,如此达到分类的目的。综上,sigmod函数的自变量 z 大于0对应sigmod值大于0.5,小于0对应sigmod值小于0.5;0.5可以作为分类的阀值。
但是由上图可知,当|x|很大时候,可以看到两侧的sigmoid函数是很平的。此时的导数接近于0。而没有了梯度的指示,梯度下降法就失去意义了。另外函数输出不是以 0 为中心的,这会降低权重更新的效率。因此我们希望它得到改进。
2 tf.math.tanh
作用:输出归一化 [-1,1]
tanh是在sigmoid的基础之上做一个改进。虽然还存在两端趋于饱和问题,但是克服了sigmoid函数的不关于原点对称的问题。
tf.math.tanh(x, name=None)
3relu激活函数
relu激活函数是深度学习中最为广泛使用的激活函数之一,它有效的解决了前两者的饱和问题.
relu函数是深度学习中较为流行的一种激活函数,相比于 sigmoid 函数和 tanh 函数,当输入为正时,relu函数不存在梯度饱和问题。
4 rbf高斯基函数
图一 十个样本点
图二 十个样本点➕对应基函数
图三 十个样本点构成的真实曲线➕对应基函数乘以权重得到的函数。例如对x1,其真实值为a点,而基函数们相交于b、c两点,基函数拟合的结果就是b和c的纵坐标之和,f(x1)-b-c就是误差。我们要做的就是优化权值参数w或者选取其他径向基函数来尽可能还原蓝色曲线。
rbf通常有三层:输入层、隐藏层和输出层。rbf简单网络模型如下:
5 tf.nn.softmax
tf.nn.softmax(x, name=None)
归一化的值,含义是属于该位置的概率[0,1]
array = tf.constant([4.0,1.0,5.0], dtype=tf.float32)
sess = tf.InteractiveSession()
print(sess.run(tf.nn.softmax(array))) #[0.26538792 0.01321289 0.7213992 ]