让女朋友都能听懂的神经网络(神经网络简介)

今天大管准备和大家来聊一聊神经网络。这样吧,为了把事情说清楚我们还是从源头说起——感知机。

     感知机是在1957年提出,是神经网络(深度学习)的起源算法。因此了解感知机的构造也就是了解神经网络不可或缺的一步。

感知机到底是什么?

     通俗的说,感知机接收多个信号,输出一个信号。注意这里的“信号”只有1或者0两种取值,也可以理解为0对应着信号中断,1对应着信号传递(信号的0/1两种状态与计算机硬件的电气特性有关)。

上图是大管画的一个接受两个输入信号的感知机。上图中的x1,x2我们称之为输入信号,y称之为输出信号,w1,w2称之为权重,θ称之为偏置。图中的○称之为神经元。当输入信号被送入神经元时,会被乘以各自的权重,而输出神经元会计算被送来的神经元总和,当总和超过某个阈值时,才会输出1。将上面的图片转换为公式就是:

下面我们使用感知机来分别实现与门,非门和或门简单的逻辑电路。

与门(AND)逻辑电路的真值表如下所示(1表示真,0表示假):

观察真值表我们发现,只有当x1,x2同时为1时,输出才为1,其他情况为0。结合感知机的公式,满足这种条件的w1,w2和θ值有无数多个。比如当(w1,w2,θ)=(0.5,0.5,0.7)时就可以满足条件。

非门(NAND)逻辑电路则颠倒了与门的输出,其真值表如下所示:

仅当x1和x2全为1时,输出才为0,其他情况输出1。结合感知机的公式,满足这种条件的w1,w2和θ值也有无数多个。比如当(w1,w2,θ)=(-0.5,-0.5,-0.7)就可以满足条件。

同样或门(OR)电路的真值表如下:

仅当x1和x2全为0时,输出才为0,其他情况输出为1。满足这种条件的值也有很多,比如当(w1,w2,θ)=(1,1,0.5)就可以满足条件。

通过上面的例子可以知道,感知机可以用来表示上面三种逻辑电路。实际上只是w1,w2和θ的取值不同,我们把其称之为参数。只需要调整合适的参数,就可以适应不同的的逻辑电路。

在上面的过程中,感知机参数的决定是由我们人为的看着真值表这种“训练数据”而决定的,而神经网络则是通过计算机自动根据训练数据决定参数的取值。所以神经网络的学习是确定合适的参数的过程,而人要做的是感知机的构造模型,并且把训练数据输入计算机(划重点)。

下面我们再来考虑一个问题,如何使用感知机来实现异或门(XOR)逻辑。真值表如下:

从异或门的真值表中我们可以发现,当x1和x2的取值不相同输出为1,x1和x2的取值相同时输出为0。那么,要用感知机实现这个异或门的话,应该设置什么样的权重和偏置参数呢?

看一下我们能不能从简单的或门电路中得到启发。首先将或门逻辑电路的权重和偏置值带入感知机公式:

上式可以看做由一条直线分割在平面内分割开的两个空间,一个空间输出0,另一个空间输出1。如下图所示:

可以看到,紫色阴影部分的空间为0,光亮部分为1。那如果换成异或门的话,分割开的空间会是什么样呢?如下图所示

○代表0,△代表1。要想用一条直线将其分开,无论如何也做不到,只能用上图所示的曲线将其分开。到这里有的小伙伴会想到大管曾经说过的王子和公主的故事,使用核方法将其映射到更高的维度将其分隔开。但是这里我们不用核方法,我们巧妙的使用叠加感知机将其完美分开。

下面大管分别画出与门、或门和非门的符号:

那么如何设置这三个门电路,将其改成异或门(XOR)逻辑电路呢?(这里自己可以思考三秒钟)下面画出异或门的图示:

通过计算我们发现,其确实可以完成异或门的逻辑。再仔细观察,它并不是由x1和x2简单的乘以权重加和得到的,中间多了一步s1和s2,类似于异或门逻辑电路这种感知机我们称之为多层感知机,如下图所示:

在神经网络中,我们把第0层称之为输入层,第1层(包括中间所有的层)称之为隐藏层,第2层称之为输出层。

这里我们使用python写出异或门的代码:

def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2  = OR(x1,x2)
    y = AND(s1,s2)
    return y

神经网络

回顾感知机的公式,我们将权重θ换成b来表示,并将其改写成如下公式:

其中:

我们把h(x)称之为激活函数。激活函数的作用在于决定如何来 激活输入信号的总和。在这里我把h(x)和y做点变动(神经网络的表达公式):

下面给出上面表达式对应的神经网络结构,如下图所示:

然而一个完整的神经网络远远比上图中的复杂,它往往具有 多个输入,多个隐藏层,多个输出,如下图所示:

       当然是神经网络的奥妙远远不止这些,这只是冰山一角。神经网络还涉及如何选取激活函数,如何确定神经网络的层数,如何初始化权重和偏置,神经网络是如何计算权重和偏置,如何设置Dropout等等这些问题,大管将在以后继续和大家聊。

多内容下载机器学习资料请扫描下方二维码关注小编公众号:程序员大管

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章