感知器
人工神经网络的第一个里程碑是感知机perceptron, 这个名字其实有点误导, 因为它根本上是做决策的。 一个感知机其实是对神经元最基本概念的模拟 ,都未必有多少网络概念,他就是一个自动做决策的机器。
比如说你要决定今天出不出去看电影, 你要考虑3个因素, 一个是女朋友在不在, 一个是电影好不好看, 另一个是今天有没有工作, 这三个因素每个人的权重都不同,有的人看重女朋友, 有的人看重工作,所以权重就不等, 最后每个人根据自己的权重做出0或1,去或不去, to be or not to be的决策。那么你怎么做呢? 你把三个要素按照它们需要的权重加和在一起, 在把这个分数送到一个叫sigmoid的门面前得到去或不去的决定,
比单层感知机更复杂的多层感知机-或者我们常说的深度网络, 是进行数据处理和模式识别的利器。 深度神经网络之所以能够处理这些数据类型,主要是因为这些数据本身具有的复杂结构很适合被NN识别, 而人类不需要预先设计识别这些结构的函数而是任由网络学习, D-CNN 深度卷积网络能够同时看到一个图像从细节到抽象的结构,所以能够抓住一些我们人类都说不出的细节。
单层感知器
单层感知器可以用来区分线性可分的数据,并且一定可以在有限的迭代次数中收敛。 从使用过程来看,单层的感知器其实看起来是相当简单的:对假设函数进行训练,直到对所有的样本都满足经过假设函数计算出来的结果与预期结果一致,就结束了。
单层感知器能够用来模拟逻辑函数,例如逻辑非NOT、逻辑或非XOR、逻辑或OR、逻辑与AND和逻辑与非NAND等,但是不能用来模拟逻辑异或XOR(对于这个函数,必须用两层神经元)。稍后将讨论这个问题。
除了输入之外,偏置(bias)也经常被用于每个神经元,它在通过转换函数之前被加到输入的加权和上。权值也经常被应用于偏置上。偏置决定了多少输入激活(输入的加权和)才能激发神经元进入兴奋状态。偏置往往被设定为1,而偏置的权值可以通过学习算法加以调整。
不应将单层感知器和单个神经元相混淆。如图所示的网络就是一个单层感知器,因为它只由一层构成。对于多维问题,必须采用多层感知器。 表示单层感知器非常简单。由于输入和权值存在一一对应关系,因此计算输出是很容易的。
多层感知器
Minsky和Papert在他们的Perception一书中揭示:单层感知器有一个缺点,即它们只能对线性可分的数据集进行分类。然而,此后不久人们就发现,如果见单层感知器叠加成多层感知器,则理论上就具备对任何分类问题的解决能力。事实上,多层感知器可以模拟成任意复杂的函数,其中函数的复杂性取决于网络输入个数和隐层个数。
多层感知器中神经元的性质和单层感知器中的一样(例如偏置等)。然而由于存在多层,多层感知器中某一层的输出就是下一层的输入。因此多层感知器的实现比单层感知器略显复杂,但还是很直观的。注意,在这里对隐层结点和输出层结点使用相同的激励函数,即sigmoid函数。Sigmoid函数可以将神经元的输出值规格化到区间[0,1]。
该多层感知器有4个输入单元,4个隐层单元和3个输出单元。偏置作为输入单元和隐层单元来处理,但偏置具有常数值1(虽然可以通过调整权值来改变偏置的影响)。 程序的执行流程如下:首先,计算隐层单元的输出(利用输入单元和隐层单元到输入层单元的权值);然后,继续计算下一层(这里指输出层)单元的输出。通常这个过程被称为前向传送数据,或简单的称之为前馈(feed forward)。 可以把神经网络看成并行计算系统。每个神经元是一个处理元件,该处理元件接受一个或多个输入并产生一个输出。输入和输出均可以看成信息。在多层感知器架构中,输出可以被送往多个其他处理单元,做进一步的处理。神经网络并行性的特性来自于同一层多个神经元之间的并行性。所有的神经元能够同时处理它们各自的输入,使得在多处理器系统中同一层次上具有大量神经元的神经网络的运行速度更快。
区别
相对于单层感知器,输出端从一个变到了多个;输入端和输出端之间也不光只有一层,现在又两层:输出层和隐藏层。