前面的博客激活函数简要的了解了一下什么是激活函数,现在在正则化和神经网络模块化中突然遇到了激活函数,所以下面主要讲解一下我对激活函数的理解;
def forward(x, regularizer):#前向传播 w1 = get_weight([2,11], regularizer)#设置权重 b1 = get_bias([11])#设置偏执 y1 = tf.nn.relu(tf.matmul(x, w1) + b1)#计算图 w2 = get_weight([11,1], regularizer)#设置权重 b2 = get_bias([1])#设置偏执 y = tf.matmul(y1, w2) + b2 #计算图 return y#返回值
在前面代码y1 = tf.nn.relu(tf.matmul(x, w1) + b1)中,用到了激活函数 tf.nn.relu();
那什么是激活函数呢?
如上图,在y=h(b=w1x1+w2x2)中引入了一个激活函数h(x);将y由原来的判断b=w1x1+w2x2是否大于0改为判断h(x)中x的值是否大于0,而x的值则由w1x1+w2x2来决定,这就引入了激活函数;
激活函数:在于决定如和来激活输入信号的总和;
那激活函数的作用又是什么?应该选取什么样的激活函数呢?
首先,激活函数一般选取非线性函数,激活函数的作用:就是引入非线性激活因素,提高模型抗干扰能力;
我们来看看引入线性的激活函数会怎么样,如下图
会发现,如果是线性函数,则不管引入几层,最后还是一个形如最开始的线性激活函数。
下面简要介绍一下各个激活函数;