登录
首页精彩阅读常用的几种神经网络
常用的几种神经网络
2018-07-25
收藏

常用的几种神经网络

前向反馈网络和感知器是直线向前的,信息从前向后(分别是输入和输出)传播。神经网络通常被描述成多层,其中每一层都由输入、隐藏层、输出单元构成。一层单一网络内部绝对不会有任何连接而通常在相邻的层之间,神经元是完全相连的(每层的每个神经元都与另外一层的每个神经元相连接)。最简单某种程度上也是最实用的网络由两个输入单元和一个输出单元,这种网络可以被用作逻辑门模型。通常FFNNs是通过向后传播训练的,给网络成组的数据集包括“输入”和“预想的输出”。这种方式称为有监督学习,与无监督学习相反。误差被向后传播,而误差可以通过MSE或者线性误差来度量。假设网络由足够多的隐藏神经元,它理论上来说总是可以模拟输入和输出之间的关系的。实际上这种网络本身用途很首先,但是它们通常和别的网络合并来生成其他类型的网络。

霍普菲尔网络的每个神经元都与其他神经元相连接;它是一碗完全纠缠在一起的意大利面。每个节点在训练前都是输入点,然后训练中都是隐藏节点,训练结束后又是输出节点。这些网络会设定神经元的值为所需要的模式,然后计算全职,通过这种方法来训练模型。在这之后权重不会再改变。一旦训练成一种或多种模式,网络会一直收敛到一种学习好的模式,因为网络只有在这些状态下才是稳定的。注意到它不会一直符合所要的状态。它能够部分稳定是因为全局的“能量”或“温度”在训练中是逐步减少的。

卷积神经网络和大多数其他类型的网络都很不相同。他们最初用来做图像处理,后来也用在其他类型的输入数据比如音频。一个典型的CNN应用是,当你给网络输入图像,网络会对数据进行分类,例如如果你输入的是猫的照片,它会给出标签“猫”。CNN通常以一个输入“扫描仪”开始,而它并不会在理科解析所有的训练数据。举例来说,输入一个200*200像素的图像,你肯定不想要有40000节点的一层。相反,你建立一个扫描输入层比如20*20,把大图像左上角的20*20像素进行扫描。一旦前20*20经过处理,逐像素向右移动这个扫描器来扫描所有的剩余图像。注意到,我们并没有把处理过的20*20像素挪开,也没有把图像分成20*20的小块,而是使用这个20*20的扫描器对所有像素进行扫描。输入数据然后进行卷积层而不是普通曾,意味着不是所有的节点都和其他节点相连接。每个节点都只和她最近的节点相连(远近取决于具体的实现,但通常不会很多)。这些卷积层也倾向于变小当它们越老越深的时候,通常是输入大小最容易整除的因子(如20可能变成10,然后5)。2的幂在这里会经常被使用,因为它们能够很完全的分离:32,16,8,4,2,1。除了这些卷积层,通常还有特征池化层。池化是一种滤出细节部分的方法:最常用的池化技术是极大值池化,比如我们对2*2的像素,返回其R值最大的像素。对音频使用CNN,我们只需要输入音频波,然后一点一点增加长度。实际中对CNN的使用通常在末端增加一个FFNN用来深入处理数据,通常要能处理高度非线性抽象分类问题。CNN+FFNN这种网络通常称为DCNN,但是DCNN和CNN的名称和缩写通常可以互相代替。


去卷积神经网络,也称作逆图形网络,是卷积神经网络的逆过程。对该网络输入单词“猫”,网络通过比较它生成的图片和真是猫图片,输出它认为满足输入条件猫的图片。DNN可以和FFNN结合一起使用。

生成对抗网络是一种不同的网络,他们是双胞胎:两个网络一起工作。对抗生成网络有任何两个网络组成(通常是FF和CNN的组合),其中一个负责生成内容另一个要判断内容。判别网络要么接受训练数据,要么接受生成网络生成的数据作为输入。判别网络的预测精度被当做生成网络的误差的一部分。这样产生一组对抗,当判别网络能越来越精细的判别生成数据和真实数据,生成网络也会生成越来越难以预测的数据。这种方式在某种程度上能很好的运行时因为再复杂的带噪声的模式最终都是可预测的,但是和输入数据有相似特征的生成数据却很难学习判别。对抗生成网络非常难训练,因为我们不仅仅是训练两个网络(每一个都有他们各自的问题),而且要处理他们之间的动态平衡关系。如果预测或生成网络比另一个网络好,那么对抗生成网络将不会收敛,因为本质上这两个网络就存在着分歧。

周期神经网络是带时间周期的FFNN:他们不是无状态的;他们在时间上有相关性。神经元不仅从输入接收信息,而且还要接收他们自身前一个周期点的信息。这意味着,我们输入和训练网络的过程是很重要的:先输入“牛奶”后“饼干”与先“饼干”后“牛奶”,可能会产生不同的结果。RNN一个重要的问题是退化(或爆炸式)梯度问题,依赖于激活函数的使用,信息随着时间快速损失,就像非常深的FFNN随着深度的增加损失信息一样。直观上这不会带来很大问题因为他们仅仅是权重而不是神经元状态,但是带时间的权重实际上就是存储信息的地方;如果权重取值为0或者1 000 000,之前的状态就没多大用处了。RNN原则上讷讷够在很多领域使用,尽管大多数数据形式实际上都没有时间线(比如 不想声音和视频),但是它们都可以被表示成序列。一副图片或一串文字可以看做在每个时间点上一个像素或者一个字符,所以依赖时间的权重是在序列中某个之前出现的值上使用,而不是实际上多少秒之前发生的。通常,周期性网络对于演进或补全信息非常有效,比如自动补全。



数据分析咨询请扫描二维码

客服在线
立即咨询