鱼书学习笔记:激活函数
在感知机中,神经元节点只有x和y
例如:
(1)当b+w1x1+w2x2<=0, y=0
(2)当b+w1x1+w2x2>0, y=1
其中,x1x2都是感知机输入层,w1w2则是输入层到输出层信号的权重,再经过参数b的偏置后,根据是否大于0输出二元信号y=0或y=1
在这里,假如设定a=b+w1x1+w2x2,y=h(a),则原感知机的计算过程就可以描述为两步:
(1)对输入x1,x2,w1,w2和b求和后得到a
(2)计算y=h(a)
其中,y=h(a)的计算步骤就被称作激活函数
激活函数的分类
预定义:h(x)表示隐藏层激活函数,σ(x)表示输出层激活函数,np指的是python的numpy数值计算包
1.恒等函数
函数式:σ(x) = x
应用:回归问题
代码:
def identity_function(x) return x
2.阶跃函数(也就是例子中的二元信号激活函数)
函数式:①h(x) = 0 (x <=0);②h(x) = 1 (x > 0)
应用:感知机
代码:
def step_function(x): return np.array(x > 0, dtype = np.int)
因为np.array(x>0)输出的是布尔值,但是我们想要的阶跃函数是会输出int型0或1的函数,因此需要指定dtype = np.int
3.sigmoid函数
函数式:h(x)/σ(x) = 1 / 1+exp(-x)
应用:二元分类问题
代码:
def sigmoid(x): return 1 / (1 + np.exp(-x))
4.softmax函数
函数式:σ(x) = exp(ax) / Σni=1exp(ai)
应用:多元分类问题
代码:
def softmax(a): c = np.max(a) exp_a = np.exp(a - c) # 防止溢出 sum_exp_a = np.sum(exp_a) y = exp_a / sum_exp_a return y
5.ReLU(Rectified Linear Unit)函数
函数式:①h(x) = x (x > 0);②h(x) = 0 (x <= 0)
应用:略
代码:
def relu(x): return np.maximum(0, x)