从感知机到神经网络

感知机

有两个输入的感知机
在这里插入图片描述

x1、x2 是输入信号,y 是输出信号,w1、w2 是权重,神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活” 。这里将这个界限值称为阈值,用符号θ 表示。

多层感知机可以表示非线性空间,在理论上可以表示计算机,对于复杂的函数,感知机也有能够表示它的可能性。但是感知机的缺点在于设定权重的工作,即确定合适的、能符合预期的输入和输入的权重,还是需要由人工进行。

神经网络的出现就是为了解决感知机的缺点,神经网络可以自动地从数据中学习到合适的权重参数。

我们将上面感知机公式中的θ移到不等式左边,可以得到下面的公式(3.1)。
在这里插入图片描述
b 是被称为偏置的参数,用于控制神经元被激活的容易程度;而w1 和w2是表示各个信号的权重的参数,用于控制各个信号的重要性。

为了公式(3.1)更加简洁,引入新函数h(x),将(3.1)表示成两个式子。
在这里插入图片描述在这里插入图片描述
从现在起,就引入了一个非常重要的概念:激活函数。h(x)函数会将输入信号的总和转换为输出信号,这种函数一般称为激活函数。激活函数的作用在于决定如何来激活输入信号的总和。

再来将(3.2)拆分成两个式子
在这里插入图片描述
在这里插入图片描述
上图为激活函数的计算过程

激活函数

在公式(3.3)表示的激活函数中,一旦超过阈值,就会切换输出。这样的函数被称为阶跃函数。可以说感知机选择了阶跃函数作为激活函数,如果感知机选择其他函数作为激活函数的话就可以进入神经网络的世界了。

阶跃函数

# coding: utf-8
import numpy as np
import matplotlib.pylab as plt
def step_function(x):
    return np.array(x > 0, dtype=np.int)  #进行x > 0之后x为bool类型,dtype转化为int类型

X = np.arange(-5.0, 5.0, 0.1)
# print("X=", X)
Y = step_function(X)
# print("Y=", Y)
plt.plot(X, Y)
plt.ylim(-0.1, 1.1)  # 指定图中绘制的y轴的范围
plt.show()

在这里插入图片描述

sigmoid函数

在这里插入图片描述

import numpy as np
import matplotlib.pylab as plt


def sigmoid(x):
    return 1 / (1 + np.exp(-x))


if __name__ == '__main__':
    X = np.arange(-5.0, 5.0, 0.1)
    Y = sigmoid(X)
    plt.plot(X, Y)
    plt.ylim(-0.1, 1.1)
    plt.show()

在这里插入图片描述

ReLU函数

在这里插入图片描述

# coding: utf-8
import numpy as np
import matplotlib.pylab as plt


def relu(x):
    return np.maximum(0, x)

x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)
plt.plot(x, y)
plt.ylim(-1.0, 5.5)
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值