首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度学习基础教程 第1章神经网络

第1章 神经网络

编译:曾小健

1.1 构造智能机器

大脑是人体最令人难以置信的器官。它决定了我们对每一个视觉,听觉,嗅觉,味觉和触觉的感知方式。它使我们能够存储记忆,体验情感,甚至梦想。没有它,我们将成为原始的组织,除了最简单的反应之外毫无用处。大脑本质上是使我们变得智能的东西。

婴儿的大脑只重一磅,但不知怎的,它解决了即使是我们最大、最强大的超级计算机也不可能发现的问题。在出生后的几个月内,婴儿可以识别父母的面孔,从背景中辨别出单个的物体,甚至分辨出声音。在一年之内,他们就能发展出对自然世界的一种直觉,即使某物体被部分或完全阻挡也可以跟踪它们,并且可以将声音与特定的意义联系起来。从幼年时期开始,他们就能深刻理解语法和成千上万的单词。

几十年来,我们一直梦想着建造像我们这样的智能机器——能用来清洁房间的机器人助手,自行驾驶的汽车,自动检测疾病的显微镜。 但是,构建这些人工智能机器需要解决一些我们曾经遇到过的最复杂的计算问题。我们的大脑已经能够以微观方式解决的问题。 为了解决这些问题,我们必须采用一种完全不同的方式,使用过去十年间大量开发的技术对计算机进行编程。这是一个非常活跃的人工计算机智能领域,通常被称为深度学习。

1.2 传统计算机程序的局限性

为什么计算机难以解决某些问题?事实证明,传统的计算机程序在两件事情上非常擅长:1)非常快速地执行算术,2)明确地遵循系列指令。 所以如果你想做一些沉重的财务数字运算,你很幸运。 传统的计算机程序可以做到这一点。 但是,假设我们想要做一些更有趣的事情,比如写一个程序,自动读取某人的笔迹。 图1-1将作为起点。

图1-1 来自MNIST手写数字数据集的图像

虽然图1-1中的每个数字都以略微不同的方式写就,但我们可以很容易地将第一行中的每个数字识别为0,将第二行中的每个数字识别为1,等等。让我们尝试编写一个计算机程序解决这项任务,想一下我们可以用什么法则来把一个数字从另一个数字区别开来?

我们可以从简单的开始! 例如,如果图像上只有一个封闭的圆,我们就会说这是一个0。 图1-1中的所有示例似乎都符合此规则,但这并不是一个充分条件。如果某人没有完全封闭0上的圆怎么办? 且如图1-2所示,你如何区分潦草的0和6?

图1-2. 在算法上难以与6区分的0

你可能会为循环的起点和终点之间的距离建立某种隔断,但是我们应该在哪里划线却并不是很清楚。 这种困境只是我们担忧的开始。 接下来如何区分3和5? 亦或4与9? 我们可以通过仔细观察和数月的试验和错误来添加越来越多的规则或特性,但很明显,这不是一个简单的过程。

许多其他类别的问题其实都属于同一类别:对象识别,语音理解,自动翻译等。我们不知道要编写什么程序,因为我们不知道我们的大脑是如何完成的。 即使我们确实知道如何做,但相应的程序可能会非常复杂。

1.3 机器学习的机制

要解决这类问题,必须使用一种非常不同的方法。 我们在学校成长过程中学到的很多东西与传统的计算机程序有很多共同之处。 我们学习了数字的相乘,解方程,及通过内部化一套指令来求导。 但是我们在最早期学到的东西,都是最自然的东西,都是通过例子而不是公式来学习的。

例如,当我们两岁时,父母们没有教我们如何通过测量鼻子的形状或身体的轮廓来识别狗。 而是通过展示多个例子来学习识别狗,并在我们做出错误猜测时进行纠正。 换句话说,当我们出生时,大脑为我们提供了一个模型,规定了我们如何正确观察这个世界。随着我们的成长,这个模型将吸收我们的感官输入并猜测我们正在经历的事情。如果我们的父母证实了这个猜测,此模型将被加强。如果我们的父母说我们错了,我们会修改模型以包含这些新信息。在我们的一生中,随着我们吸收越来越多的例子,我们的模型变得越来越准确。显然所有这一切都是潜意识地发生的,甚至我们意识不到,但我们仍然可以利用这一点。

深度学习是一个更普遍的人工智能领域的一个子集,称为机器学习,它基于这种从例子中学习的想法。在机器学习中,我们不是在计算机上教授大量的规则来解决问题,而是给它一个模型,用它可以评估示例,以及一小组指令,用于在出错时修改模型。我们希望,随着时间的推移,一个绝佳合适的模型能够非常精确地解决问题。

让我们对这件事情的意义更加严谨,这样我们就可以在数学上形成这个想法。 让我们将模型定义为函数h(x,θ)。 输入x是以矢量形式表示的示例。 例如,如果x是灰度图像,则矢量的分量将是每个位置的像素强度,如图1-3所示。

图1-3. 为机器学习算法矢量化图像的过程

输入θ是我们的模型使用的参数的向量。 我们的机器学习程序试图通过越来越多的例子来完善这些参数的值。 我们将在第2章中详细介绍这一点。

为了对机器学习模型有更直观的理解,让我们来看一个简单的例子。 假设我们想要根据获得的睡眠时数和前一天学习的小时数来确定如何预测考试成绩。 首先我们收集了大量数据,对于每个数据点x= [x1x2]T,我们记录了我们得到的睡眠时数(x1),我们花在学习上的小时数(x2),以及我们的表现是在班级平均水平之上或之下?。 那么,我们的目标可能是用参数向量θ=[θ0θ1θ2]T来学习模型h(x,θ),这样:

换句话说,猜测我们的模型h(x,0)的蓝图如上所述(几何上,这个特定的蓝图描述了一个将坐标平面分成两半的线性分类器)。 然后,我们想要学习一个参数矢量θ,这样我们的模型就会给出一个输入例子x做出正确的预测(如果我们执行低于平均值,则为-1,否则为1)。 这个模型被称为线性感知器,它是自20世纪50年代以来一直使用的模型.假设我们的数据如图1-4所示。

图1-4. 我们的考试预测算法和潜在分类器的样本数据

然后事实证明,通过选择θ= [-24 3 4]T,我们的机器学习模型可以对每个数据点进行正确的预测:

最佳参数向量θ定位分类器,以便我们尽可能多地进行正确的预测。 在大多数情况下,对于θ来说,有许多(甚至无限多)可能的选择是最佳的。 对我们来说幸运的是,大部分时间这些替代方案彼此如此接近,以至于差异可以忽略不计。 如果不是这种情况,我们可能希望收集更多数据以缩小我们对θ的选择范围。

虽然设置似乎合理,但仍然存在一些非常重要的问题。 首先,我们如何在第一时间为参数矢量θ提出最佳值? 解决此问题需要一种通常称为优化的技术。 优化器旨在通过迭代调整其参数来最大化机器学习模型的性能,直到误差最小化。 当我们描述梯度下降的过程时,我们将在第2章中更详细地讨论学习参数向量的问题。4在后面的章节中,我们将尝试找到使这个过程更有效的方法。

其次,很明显这个特定的模型(线性感知器模型)在它可以学习的关系中非常有限。 例如,线性感知器无法很好地描述图1-5中所示的数据分布。

图1-5。 由于我们的数据采用更复杂的形式,我们需要更复杂的模型来描述它们

但这些情况只是冰山一角。 随着我们转向更复杂的问题,例如对象识别和文本分析,数据就变得非常高维度,我们想要捕获的关系也变为高度非线性的。 为了适应这种复杂性,最近的机器学习研究试图建立类似于我们大脑所使用结构的模型。 本质上这种研究,通常就被称为深度学习,并在解决计算机视觉和自然语言处理问题方面取得了巨大成功。 这些算法不仅远远超过其他类型的机器学习算法,而且还与人类的精度相媲美(甚至超过!)。

1.4 神经元

人脑的基础单位是神经元。 一小块大脑,大小相当于大米粒度,包含超过10,000个神经元,每个神经元与其他神经元平均形成6,000个神经元。正是这个庞大的生物网络使人们能够体验到我们周围的世界..我们在本节中的目标是使用这种自然结构来构建机器学习模型,以类似的方式解决问题。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券