一步一步从人工神经网络开始你的深度学习

sefd

深度学习(DL)和神经网络(NN)目前正在推动当今世纪一些最巧妙的发明。 他们从数据和环境中学习的难以置信的能力使他们成为机器学习科学家的首选。深度学习和神经网络是自动驾驶汽车,图像识别软件,推荐系统等产品的核心。显然,作为一种强大的算法,它也适用于各种数据类型。要想学习深度学习,从最简单的ANN开始是一种比较好的选择,所以今天我们来看一下什么是神经网络。

一.什么是神经网络?

神经网络(NN)也称为人工神经网络,以其对人类神经系统工作的人工表示而命名。这里让我们首先了解我们的神经系统是如何工作的。 神经系统由数百万个神经细胞或神经元组成。 神经元具有以下结构:

主要组成部分是:

树突 - 它以电脉冲的形式从其他神经元获取输入

细胞体 - 它从这些输入产生推论并决定采取什么行动

轴突端子 - 以电脉冲的形式传输输出

简单来说,每个神经元通过树突从许多其他神经元获取输入。 然后它对输入执行所需的处理,并通过公理将另一个电脉冲发送到终端节点,从那里将其传输到许多其他神经元。

该图描绘了一个典型的神经网络,其中单个神经元的工作是分开解释的。 每个神经元的输入就像树突。 就像在人类神经系统中一样,神经元整理所有输入并对它们执行操作。 最后它将输出传输到它所连接的所有其他神经元(下一层)。 神经网络分为3种类型:

输入层:训练观察通过这些神经元输入

隐藏层:这些是输入和输出之间的中间层,有助于神经网络学习数据中涉及的复杂关系。

输出图层:最终输出从前两个图层中提取。 例如:如果有5个类的分类问题,输出稍后将有5个神经元。

二.单个神经元如何工作?

下面我们将通过简单的示例探索单个神经元的工作。 我们的想法是让您对神经元计算输出的输出方式有所了解。 典型的神经元如下所示:

x1,x2,...,xN:神经元的输入。这些可以是来自输入层的实际观察值,也可以是来自其中一个隐藏层的中间值。

x0:偏置单位。这是添加到激活函数输入的常量值。它的工作方式类似于截距项,通常具有+1值。

w0,w1,w2,...,wN:每个输入的权重。请注意,即使偏置单元也有重量。

a:神经元的输出,计算公式如下:

这里f是已知的激活函数。这使得神经网络非常灵活,并赋予估计数据中复杂的非线性关系的能力。在简单的情况下,它可以是高斯函数,逻辑函数,双曲函数或甚至线性函数。让我们实现3个基本功能 - OR,AND,不使用神经网络。这将有助于我们了解它们的工作原理。您可以假设这些类似于分类问题,我们将预测不同输入组合的输出(0或1)。

我们将使用以下ReLu激活函数对线性分类器进行建模:

例1:AND

AND功能可以实现为:

其真值表是:

在这里我们可以看到AND功能已成功实现。 列'a'符合'X1和X2'。 请注意,此处偏置单位重量为-1.5。 但这不是一个固定的价值。 直觉上,我们可以把它理解为只有当x1和x2都是正数时才使总值为正的任何东西。 所以(-1,-2)之间的任何值都可以。

例2:OR

OR功能可以实现为:

其真值表为:

列'a'符合'X1 OR X2'。 我们可以看到,只需改变偏置单位权重,我们就可以实现OR函数。 这与上面的非常类似。 在这里偏置单元使得如果x1或x2中的任何一个变为正,则加权和将为正。

例3:非

与前面的情况一样,NOT函数可以实现为:

其真值表是:

同样,符合期望值证明了功能性。 我希望通过这些例子,您可以直观了解神经网络中的神经元是如何工作的。 在这里,我使用了一个非常简单的激活功能。

注意:通常使用逻辑函数代替我在这里使用的函数,因为它是可微分的并且可以确定梯度。 也就是说,它输出浮动值而不是0或1。

三.为什么多层网络有用?

在了解了单个神经元的工作原理之后,让我们尝试理解神经网络如何使用多个层来建模复杂关系。

1、X1 XNOR X2 = (A’.B’) + (A.B)

其真值表为:

现在我们已经模拟了各个组件,我们可以使用多层网络将它们组合在一起。 首先,让我们看一下该网络的结构图:

在这里我们可以看到,在第1层,我们将分别确定A'.B'和A.B.在第2层中,我们将获取其输出并在顶部实现OR功能。这将完成整个神经网络。最终的网络看起来像这样:

案例2:X1 XNOR X2 = NOT [(A + B).(A'+ B')]

在上面的例子中,我们必须分别计算A'.B'。 如果我们想要使用基本的AND,OR,NOT函数来实现该功能,该怎么办? 参考一下网络:

在这里你可以看到我们必须使用3个隐藏层。 工作将与我们之前的工作类似。 网络看起来像:

四.神经网络的一般结构

现在我们看一些基本的例子,让我们定义一个通用的结构,每个神经网络都落在其中。 我们还将看到要遵循的等式以确定给定输入的输出。 这称为前向传播。通用神经网络可以定义为:

由于每层的输出形成下一层的输入,因此我们定义方程以使用第i层的输出作为输入来确定第i + 1层的输出。

第i + 1层的输入是:

从第i层到第i + 1层的权重矩阵是:

第i + 1层的输出可以计算为:

对每个后续层使用这些方程式,我们可以确定最终输出。输出层中的神经元数量取决于问题的类型。对于回归或二元分类问题,它可以是1,对于多类分类问题,它可以是多个。

但这只是确定1次运行的输出。最终目标是更新模型的权重,以最小化损失函数。

交流群二维码:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181218A0706E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券