深度学习之神经网络基础

目录

神经网络基础

        在本节中您需要重点记忆的专业术语有:神经元、权重、偏重、阈值、激活函数、输入层、隐藏层、输出层

(一)从感知机到神经网络

1、感知机

        感知机是由美国学者FrankRosenblatt 在1957 年提出来的。为何我们现在还要学习这一很久以前就有的算法呢?因为感知机也是作为神经网络(深度学习)的起源的算法。

        下图是最简单的感知机,x1、x2 是输入信号,y 是输出信号,w1、w2 是权重,图中的○称为“神经元”或者“节点”,输入信号被送往神经元时,会被分别乘以固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活” 。这里将这个界限值称为阈值,用符号θ 表示。

深度学习之神经网络基础

 将上述内容用数学公式可表达为:(权重越大对应的信号重要性就越大)

深度学习之神经网络基础

2、基于感知机实现简单逻辑电路

        神经网络的基础也可类似于数字逻辑电路,在这里我们首先用感知机实现简单的逻辑电路(例如:与门)。与门是有两个输入和一个输出的门电路,真值表如下图所示:

深度学习之神经网络基础

        满足上述条件的权重和阈值有无限多个,例如,当(w1, w2, θ) = (0.5, 0.5, 0.7) 时,可以满足图的条件。此外,当(w1, w2, θ)为(0.5, 0.5, 0.8) 或者(1.0, 1.0, 1.0) 时,同样也满足与门的条件。设定这样的参数后,仅当x1 和x2 同时为1 时,信号的加权总和才会超过给定的阈值θ,从而确定输出的数据。

3、导入权重和偏置

刚才的与门的实现比较直接、容易理解,但是考虑到以后的事情,我们将其修改为另外一种实现形式。在此之前,首先把1、中的数学表达式的θ 换成−b,于是可以用下述式子来表达:

深度学习之神经网络基础

这两个数字虽然只有一个符号不同,但表达的内容是完全相同的。此处,b 称为偏置,w1 和w2 称为权重

4、感知机的局限性

 异或门电路中,仅当x1 或x2 中的一方为1 时,才会输出1,其真值表如下图所示,我们现在思考一下,我们能否用感知机来实现异或门电路呢?如果能那么它们的权重和偏置又分别为多少呢?

深度学习之神经网络基础

 现在我先给出明确的答案:用感知机不能表达出异或门电路,原因我们现在来探讨:

        首先,我们试着将或门的动作形象化。或门的情况下,当权重参数(b, w1, w2) = (−0.5, 1.0, 1.0) 时,可满足如下图或门真值表的条件

深度学习之神经网络基础

其数学表达式为:

深度学习之神经网络基础

 上述表示的感知机会生成由直线−0.5 + x1 + x2 = 0 分割开的两个空间。其中一个空间输出1,另一个空间输出0。如下图所示:

深度学习之神经网络基础

 但换成异或门电路,能否像或门那样子输出呢?答案是不能的,因为上述感知机只能实现线性“分割”,如下图所示的异或门空间就不能用一条直线分割而成,需要用一条曲线(非线性),这也就是感知机的局限所在

深度学习之神经网络基础

5、多层感知机实现非线性

为了实现非线性,可以使用多层感知机来实现:
如下图所示为组合与门、或门实现异或门的逻辑电路图

深度学习之神经网络基础

 真值表为:(可以看出完全符合异或门的真值表)

深度学习之神经网络基础

 上述组合门的逻辑电路图可简化成如下图:

深度学习之神经网络基础

 (ps:看这个组合图是不是又点神经网络内味了,别着急我们马上引出神经网络!)

6、从感知机到神经网络

深度学习之神经网络基础

         我们把最左边的一列称为输入层,最右边的一列称为输出层,中间的一列称为中间层,中间层也可称作隐藏层

现在我们把感知机部分中的数学表达式更换一下(为了引出激活函数)

深度学习之神经网络基础

将上述的感知机的数学表达式改写成 y = h(b+w1x1+w2x2)

深度学习之神经网络基础

 用神经网络结构图可表示成:

深度学习之神经网络基础

(二)激活函数

1、什么是激活函数

        刚才所说的h(x)函数会将输入信号的总和转换为输出信号,这种函数一般称为激活函数(activation function)。如“激活”一词所示,激活函数的作用在于决定如何来激活输入信号的总和。将上述式子再分解成如下所示:

深度学习之神经网络基础

 用神经元来体现激活函数的工作过程:

深度学习之神经网络基础

 下面我们将介绍常见的激活函数

 2、Sigmoid函数

数学表达式:

深度学习之神经网络基础

函数大致图像:

深度学习之神经网络基础

 代码实现:

def softmax(x):
    if x.ndim == 2:
        x = x.T
        x = x - np.max(x, axis=0)
        y = np.exp(x) / np.sum(np.exp(x), axis=0)
        return y.T 

    x = x - np.max(x) # 溢出对策
    return np.exp(x) / np.sum(np.exp(x))

2、ReLU函数

深度学习之神经网络基础

深度学习之神经网络基础

代码实现:

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年5月28日 下午3:47
下一篇 2022年5月28日 下午3:50

相关推荐