跟我学AI:第一篇 神经网络是如何实现的(二)

发布者:梁刚健发布时间:2022-05-17浏览次数:911

原文链接:https://mp.weixin.qq.com/s/sONxt59W7ZHdo0ikNExN0g

跟我学AI 

作者马少平



AI光影社.

AI前沿、基础、应用的权威科普



一篇 神经网络是如何实现的(二)

清华大学计算机系 马少平


第二节:神经元与神经网络




自从听艾博士以数字识别为例讲解了神经网络之后,小明一直想着神经网络如何训练的问题。这天小明又来找艾博士,请教艾博士如何训练一个神经网络。


艾博士见到小明很高兴,就询问小明上次讲的内容是否都了解了。小明说基本了解了,但是还是不清楚神经网络是如何训练的,今天来就是想请艾博士给讲讲这方面的内容。


艾博士说:小明,你先别着急。上次讲的内容,只是为了让你了解神经元和神经网络是怎么回事。因此上次讲的网络结构比较特殊,不具有一般性。比如前面我们讲过的权重都是1或者-1,这是很特殊的情况,实际上权重可以是任何数值,可以是正的,也可以是负的,也可以是带小数的。权重的大小可以体现模式在不同位置的重要程度。比如,在笔画的中心位置,权重可能会比较大,而在边缘可能会比较小。正像上次已经说过的,这些权重也不是依靠手工设置的,而是通过样例学习到的。


那么神经网络是如何学习的呢?在讲这个问题之前,我们先给出神经元和神经网络的一般性描述,这样比较方便我们讲解如何训练神经网络。


首先需要强调的是,这里所说的神经元和神经网络,指的是人工神经元和人工神经网络,为了简化起见,我们常常省略“人工”二字。


1.7 神经元示意图


那么什么是神经元呢?图1.7所示的就是一个神经元,它有 、、、共n个输入,每个输入对应一个权重 、、、 ,一个神经元还有一个偏置b,每个输入乘以对应的权重并求和,再加上偏置b,我们用net表示:

  

net再施加一个函数g,就得到了神经元的输出o

  

这就是神经元的一般描述。为了更方便地描述神经元,我们引入  ,并令   ,则net也可以表示为:

  


艾博士指着上式对小明说:小明你看,上式中的求和符号与前面式中的求和符号有什么区别吗?


小明对比了两个表达式后回答说:后一个表达式中起始下标由原来的1变为了0,由于我们用  表示b,并且  =1,所以就可以去掉原来式中的b了。这样看起来就更加简练了。


艾博士说:小明总结的很准确,这些都是为了表达简便。还可以更加简单。

小明不解地问道:还能表达的更简单吗?我可想不出来。


艾博士说,这就要引入向量的概念了。小明你看,我们可以把n个输入  用一个向量  表示:  ,同样,权重也可以表示为向量:  ,这样net就可以表示为两个向量的点积:

  

向量的点积,就是两个向量对应元素相乘再求和。而神经元的输出o就可以表达为:

  

小明你看,这样表达是不是就更简单了?

小明高兴地拍起手来:用向量表示果然更简单了,但是这个g又是表示什么呢?


艾博士对小明说:这里的g叫激活函数,你还记得前面我们讲过的sigmoid函数吗?sigmoid函数就是一个激活函数。除了sigmoid函数外,激活函数还可以有其他的形式,以下是常用的几种:


1)符号函数:

 当当 

其图形为:


2sigmoid函数

  

其图形为:


3)双曲正切函数

  

其图形为:

4)线性整流函数

  

其图形如下:


小明听了艾博士的讲解,对神经元有了更深入的了解,感叹到:原来神经元还有这么多的变化呢。


艾博士接着小明的话说:是的。多个神经元连接在一起,就组成了一个神经网络。图1.8所示的就是一个神经网络示意图。


在这个神经网络中,有一个输入层和一个输出层,中间有三个隐含层,每个连接都有一个权重。


小明看着图问艾博士:这个神经网络和您前面讲的数字识别神经网络,工作原理是否一样呢?


艾博士说:原理是完全一样的。假定这是一个训练好的识别动物的神经网络,并假定第一个输出代表狗、第二个输出代表猫…,当输入一个动物图像时,如果第一个输出接近于1,而其他输出接近于0,则这个动物图像被识别为狗;如果第二个输出接近于1,其他输出接近于0,则这个动物被识别为猫。至于哪个输出代表什么,则是人为事先规定好的。这样的网络可以识别动物,也可以识别花草,也可以识别是哪个人。用什么数据做的训练,就可以做到识别什么,网络结构并没有什么大的变化。


1.8 神经网络示意图


介绍到这里,艾博士问小明:小明你看看,这个网络在神经元的连接上有什么特点?


小明看着图思考了一下说:艾博士,我看相邻两层的神经元,每两个神经元之间都有连接,这是不是一个特点呢?


艾博士高兴地说:小明说的非常正确,这正是这类神经网络的特点,由于相邻的神经元间都有连接,我们把这种神经网络称为全连接神经网络。同时,在计算时,是从输入层一层一层向输出层计算,所以又称为前馈神经网络。对应全连接神经网络也有非全连接神经网络,对应前馈神经网络也有其他形式的神经网络,这些我们将在以后再介绍。


小明读书笔记

一个神经元有n个输入,每个输入对应一个权重,输入与权重的加权和再经过一个激活函数后,得到神经元的输出。


激活函数有很多种,常用的包括符号函数、sigmoid函数,双曲正切函数、线性整流函数等。


前馈神经网络,又称全连接神经网络,其特点是连接只发生在相邻的两层神经元之间,并且前一层的神经元与下一层的神经元之间,两两均有连接,这也是全连接神经网络名称的来源。由于全连接神经网络均是由输入层开始,一层层向输出层方向连接,所有又称为前馈神经网络。


未完待续