鱼书学习笔记:激活函数

在感知机中,神经元节点只有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)

 

posted @ 2021-03-26 13:40  剑伟  阅读(179)  评论(0编辑  收藏  举报