平顶山热线
常⽤的⼏种神经⽹络
Feed forward neural networks (FF or FFNN) and perceptrons(P)
前向反馈⽹络和感知器是直线向前的,信息从前向后(分别是输⼊和输出)传播。神经⽹络通常被描述成多层,其中每⼀层都由输⼊、隐藏层、输出单元构成。⼀层单⼀⽹络内部绝对不会有任何连接⽽通常在相邻的层之间,神经元是完全相连的(每层的每个神经元都与另外⼀层的每个神经元相连接)。最简单某种程度上也是最实⽤的⽹络由两个输⼊单元和⼀个输出单元,这种⽹络可以被⽤作逻辑门模型。通常FFNNs是通过向后传播训练的,给⽹络成组的数据集包括“输⼊”和“预想的输出”。这种⽅式称为有监督学习,与⽆监督学习相反。误差被向后传播,⽽误差可以通过MSE或者线性误差来度量。假设⽹络由⾜够多的隐藏神经元,它理论上来说总是可以模拟输⼊和输出之间的关系的。实际上这种⽹络本⾝⽤途很⾸先,但是它们通常和别的⽹络合并来⽣成其他类型的⽹络。 Hopfield network(HN)
霍普菲尔⽹络的每个神经元都与其他神经元相连接;它是⼀碗完全纠缠在⼀起的意⼤利⾯。每个节点在训练前都是输⼊点,然后训练中都是隐藏节点,训练结束后⼜是输出节点。这些⽹络会设定神经元的值为所需要的模式,然后计算全职,通过这种⽅法来训练模型。在这之后权重不会再改变。⼀旦训练成⼀种或多种模式,⽹络会⼀直收敛到⼀种学习好的模式,因为⽹络只有在这些状态下才是稳定的。注意到它不会⼀直符合所要的状态。它能够部分稳定是因为全局的“能量”或“温度”在训练中是逐步减少的。
Convolutional neural networks (CNN or DCNN)
蚕蛾交尾
卷积神经⽹络和⼤多数其他类型的⽹络都很不相同。他们最初⽤来做图像处理,后来也⽤在其他类型的输⼊数据⽐如⾳频。⼀个典型的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的名称和缩写通常可以互相代替。
Deconvolutional networks (DN)
去卷积神经⽹络,也称作逆图形⽹络,是卷积神经⽹络的逆过程。对该⽹络输⼊单词“猫”,⽹络通过⽐较它⽣成的图⽚和真是猫图⽚,输出它认为满⾜输⼊条件猫的图⽚。DNN可以和FFNN结合⼀起使⽤。
Generative adversarialnetworks (GAN)
狮子和鹿教学设计
⽣成对抗⽹络是⼀种不同的⽹络,他们是双胞胎:两个⽹络⼀起⼯作。对抗⽣成⽹络有任何两个⽹络组成(通常是FF和CNN的组合),其中⼀个负责⽣成内容另⼀个要判断内容。判别⽹络要么接受训练数据,要么接受⽣成⽹络⽣成的数据作为输⼊。判别⽹络的预测精度被当做⽣成⽹络的误差的⼀部分。这样产⽣⼀组对抗,当判别⽹络能越来越精细的判别⽣成数据和真实数据,⽣成⽹络也会⽣成越来越难以预测的数据。这种⽅式在某种程度上能很好的运⾏时因为再复杂的带噪声的模式最终都是可预测的,但是和输⼊数据有相似特征的⽣成数据却很难学习判别。对抗⽣成⽹络⾮常难训练,因为我们不仅仅是训练两个⽹络(每⼀个都有他们各⾃的问题),⽽且要处理他们之间的动态平衡关系。如果预测或⽣成⽹络⽐另⼀个⽹络好,那么对抗⽣成⽹络将不会收敛,因为本质上这两个⽹络就存在着
沉没度分歧。
甘氨酸乙酯Recurrent neural networks(RNN)
周期神经⽹络是带时间周期的FFNN:他们不是⽆状态的;他们在时间上有相关性。神经元不仅从输⼊接收信息,⽽且还要接收他们⾃⾝前⼀个周期点的信息。这意味着,我们输⼊和训练⽹络的过程是很重要的:先输⼊“⽜奶”后“饼⼲”与先“饼⼲”后“⽜奶”,可能会产⽣不同的结果。RNN⼀个重要的问题是退化(或爆炸式)梯度问题,依赖于激活函数的使⽤,信息随着时间快速损失,就像⾮常深的FFNN随着深度的增加损失信息⼀样。直观上这不会带来很⼤问题因为他们仅仅是权重⽽不是神经元状态,但是带时间的权重实际上就是存储信息的地⽅;如果权重取值为0或者1 000 000,之前的状态就没多⼤⽤处了。RNN原则上讷讷够在很多领域使⽤,尽管⼤多数数据形式实际上都没有时间线(⽐
如 不想声⾳和视频),但是它们都可以被表⽰成序列。⼀副图⽚或⼀串⽂字可以看做在每个时间点上⼀个像素或者⼀个字符,所以依赖时间的权重是在序列中某个之前出现的值上使⽤,⽽不是实际上多少秒之前发⽣的。通常,周期性⽹络对于演进或补全信息⾮常有效,⽐如⾃动补全。
爱在钢琴上小说