神经网络的分支变种

神经网络主要分为卷积神经网络以及循环神经网络两种。

卷积神经网络(CNN)

卷积神经网络(CNN)常常被用在图像识别的领域

为什么用在图像识别方面呢?

在处理图像的时候,第一层的全连接网络会变得非常大,举个例子,一个100*100的图片,利用三个颜色,则第一层需要100*100*3个输入参数,第二层为1000个节点的话,则一共有$3*10^7$个连接。 那么,我们需要找到一个办法来让全连接的神经网络被简化来只考虑图像识别所需要的特性。 有一些我们需要的模式的规模比整张图片要小得多,因此一个神经元并不是绝对的需要看到整张图片,我们可以对小的区域进行识别来减少需要的参数,相同的模式(例如鸟的喙)会在不同的区域出现,而这样的模式事实上是可以对于不同区域的相同参数识别的。

卷积神经网络进行深度学习的三个步骤

  1. 卷积神经网络
  2. 函数的优良性质
  3. 找出最好性质的函数

通常的详细处理流程如下所示:图像输入->卷积->最大化的池化->卷积->最大的池化->flattern->全连接的前馈神经网络

需要注意以下的特性:

  • 有些模式的范围要远远的小于整张图片
  • 相同的模式在图片中的不同区域均出现
  • 减少对于像素的采样不会改变图片的本体

一张图片经过卷积以及最大化的池化之后,会形成一张新的但是稍小的图片,对于多次卷积以及池化之后的图像,经过一个叫flattern的操作,将所有的图像的函数展开成为一个新的全连接层,再导入一个全连接的前馈神经网络。

举个例子,一张6*6的图片本体,经过两个大小为3*3的卷积核之后,会形成两个4*4的生成的图片,这样的4*4的图片分解成4个部分,每个部分为一个2*2的方阵,从这个方阵中选择最大的数字并且合成为一个整体的2*2的方阵,两个卷积核就是有两个这样的方阵,然后将所有的全部展开成为8个独立的变量,引入下一个全连接的前馈神经网络。这样就有效减少了需要判断的参数个数。在卷积之后,忽略激活函数的非线性的性质。卷积的方法也很简单,在主要图片中选取出每一个九宫格,然后将这个九宫格和卷积核的九宫格每一个对应位置的数字相乘并且相加即可。

在这部分中,他举了个例子,就是在一个围棋棋盘上,我们可以看到这个可以说是一个19*19的网络,可以转化为一个19*19的向量,我们当然可以使用一个全连接的网络,但是事实上CNN的效果要更加优秀。为什么卷积神经网络会更加优秀呢?有些模式的棋子事实上比整个棋局要小得多,例如alpha go的输入层就是进行了一个5*5的卷积核,同样的模式有可能在不同的棋盘的位置,同时,对于棋盘的向量进行降采样事实上对于结果是没有影响的,alpha go就没有使用最大池化这种方式。

循环神经网络

循环神经网络是一种存在着神经元记忆的网络。

举例说明:

比如说我们要填充一个槽,对于一个订票系统来说,顾客输入了我要在11月2日到达台北,那么他需要做的就是填写一个槽,上面分别是11.2和台北,时间和目的地,我们需要使前馈神经网络来解决这个填空的问题,输入一个单词(每个单词被认为是一个向量) >问题来了,如何把一个单词表示成一个向量呢?我们有一种编码方式,对于一组单词,我们用1-N的方法标记,就是在这个单词对应的位置上置1,其他位置置0,但这种编码方式有一个问题,要想表示所有的英文单词,维数太大,几乎是不可能实现的,如果不保留那么多的维数,那么不在这张表中的单词的表示又会遇到其他的问题。 >另一种编码方式这个课件中称之为哈希编码方式,以apple为例,我们可以用一个26*26*26的向量,然后分成app,ppl,ple三个分量。这样就着找出了一个相应的变量,但是这个变量事实上是有重复的,无所谓,反正变成一个向量了。

单词作为一个数字的向量被输入,然后输出是这个函数给出的结果,就是这个单词是属于那个填入的空的概率是多少,但是单单是这样还是不够的,打个比方,我今天上午七点到达台北,和我今天上午七点离开台北,同样都是台北这个名字,但是一个是出发地点,一个是到达地点,这就需要我们的神经网络存在记忆的功能。

循环神经网络本体:

之前隐藏层的输出被存储在记忆中,而存储下来的数据可以被认为是另一种的输入,这样,在我们处理leave和arrive的时候,就可以将两个单词不同的输入考虑进去,同时实现下一步的出发地与到达地识别。循环神经网络就先看到这里,暂时先使用卷积神经网络解决问题好了。

Avatar
Haowei Sun
Undergraduate of Automation

Related