本文重点介绍一种被称为多层感知器的经典神经网络的结构。
神经网络的诞生简史
人工神经网络的起源可以追溯到20世纪50年代。当时,人工智能领域的乌托邦主义者接受了神经科学领域发展起来的学习理论。尤其是,神经相互连接在学习中的作用成为计算机研究人员的灵感来源。在1957年,心理学家Frank Rosenblatt制造了感知机,这是第一台学习机器,至今仍是机器学习的参考模型。由单层人工神经元组成的感知器显示出有限的能力。研究人员试图通过引入几层神经元来改善它,但没有找到合适的学习算法。然后,神经网络的研究一直持续到120世纪80年代。在这个时候,梯度反向传播的方法变得流行起来,允许训练多层神经网络(多层感知器)。尽管当时这个术语没有提到这个研究领域,但深度学习还是诞生了!从那时起,出现了其他类型的神经网络:卷积神经网络,递归神经网络,生成对抗网络等等。
逻辑单元/神经单元
逻辑单元或神经单元可以看作是神经元的一个非常简化的模型。它是构建神经网络的基础。它接受一组n个输入/特征,并基于权重(W)和偏差(b)参数计算一个标量,称为激活。输出的计算称为正向传播,计算如下:
1.线性:输入x的加权和。结果存储在变量z中。
2.激活:对z应用非线性函数。
激活可以是sigmoid、tanh、ReLU,甚至是回归网络输出的恒等函数。
以下是一个逻辑单元及其相关方程的备忘录表。这里只考虑一个训练实例x,?是计算最终输出预测类或输出值。
通常,机器学习数据集包含数千个甚至数百万个训练实例。为了提高计算效率,正向传播步骤以向量化方式执行。下面的备忘表显示了一个逻辑单元,其中包含m个训练实例。将实例堆叠到矩阵X中。
神经网络
有几种类型的神经网络,但比较简单的是感知器分类器。它由若干个逻辑单元叠加而成,形成一个隐藏层。每个输入特征都完全连接到下一层的每个神经单元。类似地,隐藏层的神经单元完全连接到输出层神经单元。为了清楚起见,偏差b在下图中没有显示。
深度神经网络
深度学习模型的典型实例是多层感知器。通常,只要神经网络由四层(即三个隐藏层+一个输出层)组成,便被视为深度网络。每层神经单元的数量可以不同。对于二元分类,输出层由单个神经单元组成(预测为0或1)。多类分类是将实例分为三个或更多类之一的问题。我们可以通过在输出层添加多个个神经单元来执行。
深度神经网络Python示例
下面是一个使用Keras的深度神经网络的基本实现,Keras是一个高级的神经网络API,用Python编写,能够在TensorFlow、CNTK或Theano上运行。
下面的Python示例深度神经网络由一个输入层、三个隐藏层和一个输出层(softmax)组成。Keras库管理所有的技术实现,如正向传播、成本计算和反向传播。