如下图,x为输入,w为权重,b为偏置,激活函数用来处理输入信号的总和,将总和转变为输出。
简单的激活函数主要有以下几类。
1.阶跃函数
阶跃函数一般用在感知机上。如果感知机使用其他函数作为激活函数,就进入了神经网络的世界。
2.sigmoid函数
数学表达式为:
代码实现为:
import numpy as np
def sigmoid(x):
z = np.exp(-x)
sig = 1 / (1 + z)
上图为其图像
3.softmax函数
其中,分子表示第k个神经元的指数函数,分母表示所有神经元的指数函数的和。
但是上式会造成溢出问题(值过大无法表示,显示nan,not a number)。避免溢出可以进行类似归一化的操作,例如除以神经元中数值最大的数。
一维数组实现如下:
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
二维数组实现如下:
import numpy as np
def softmax(A):
# 计算指数
expA = np.exp(A)
# 计算指数之和
sumExpA = np.sum(expA, axis=1, keepdims=True) #axis定义维度,矩阵的第0维是列,第一维是行
# 归一化指数
p = expA / sumExpA
return p
参考文献: