浅谈机器学习之深度学习(代码片段)

yk坤帝 yk坤帝     2022-12-21     547

关键词:

个人公众号 yk 坤帝
获取更多学习资料,学习建议

1.1.4 深度学习之“深度”

深度学习是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有意义的表示。“深度学习”中的“深度”指的并不是利用这种方法所获取的更深层次的理解,而是指一系列连续的表示层。数据模型中包含多少层,这被称为模型的深度(depth)。这一领域的其他名称包括分层表示学习(layered representations learning)和层级表示学习(hierarchical representations learning)**。

现代深度学习通常包含数十个甚至上百个连续的表示层,这些表示层全都是从训练数据中自动学习的。与此相反,其他机器学习方法的重点往往是仅仅学习一两层的数据表示,因此有时也被称为浅层学习(shallow learning)。

在深度学习中,这些分层表示几乎总是通过叫作神经网络(neural network)的模型来学习得到的。神经网络的结构是逐层堆叠。神经网络这一术语来自于神经生物学,然而,虽然深度学习的一些核心概念是从人们对大脑的理解中汲取部分灵感而形成的,但深度学习模型不是大脑模型。没有证据表明大脑的学习机制与现代深度学习模型所使用的相同。

你可能会读到一些流行科学的文章,宣称深度学习的工作原理与大脑相似或者是根据大脑的工作原理进行建模的,但事实并非如此。对于这一领域的新人来说,如果认为深度学习与神经生物学存在任何关系,那将使人困惑,只会起到反作用。你无须那种“就像我们的头脑一样”的神秘包装,最好也忘掉读过的深度学习与生物学之间的假想联系。就我们的目的而言,深度学习是从数据中学习表示的一种数学框架。

深度学习算法学到的表示是什么样的?我们来看一个多层网络(见图1-5)如何对数字图像进行变换,以便识别图像中所包含的数字。

如图1-6所示,这个网络将数字图像转换成与原始图像差别越来越大的表示,而其中关于最终结果的信息却越来越丰富。你可以将深度网络看作多级信息蒸馏操作:信息穿过连续的过滤器,其纯度越来越高(即对任务的帮助越来越大)。

这就是深度学习的技术定义:学习数据表示的多级方法。这个想法很简单,但事实证明,非常简单的机制如果具有足够大的规模,将会产生魔法般的效果。

1.1.5 用三张图理解深度学习的工作原理

现在你已经知道,机器学习是将输入(比如图像)映射到目标(比如标签“猫”),这一过程是通过观察许多输入和目标的示例来完成的。你还知道,深度神经网络通过一系列简单的数据变换(层)来实现这种输入到目标的映射,而这些数据变换都是通过观察示例学习到的。下面来具体看一下这种学习过程是如何发生的。

神经网络中每层对输入数据所做的具体操作保存在该层的权重(weight)中,其本质是一串数字。用术语来说,每层实现的变换由其权重来参数化(parameterize,见图1-7)。权重有时也被称为该层的参数(parameter)。

在这种语境下,学习的意思是为神经网络的所有层找到一组权重值,使得该网络能够将每个示例输入与其目标正确地一一对应。但重点来了:一个深度神经网络可能包含数千万个参数。找到所有参数的正确取值可能是一项非常艰巨的任务,特别是考虑到修改某个参数值将会影响其他所有参数的行为。


想要控制一件事物,首先需要能够观察它。想要控制神经网络的输出,就需要能够衡量该输出与预期值之间的距离。这是神经网络损失函数(loss function)的任务,该函数也叫目标函数(objective function)。损失函数的输入是网络预测值与真实目标值(即你希望网络输出的结果),然后计算一个距离值,衡量该网络在这个示例上的效果好坏(见图1-8)。


深度学习的基本技巧是利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示例对应的损失值(见图1-9)。这种调节由优化器(optimizer)来完成,它实现了所谓的反向传播(backpropagation)算法,这是深度学习的核心算法。下一章中会详细地解释反向传播的工作原理。


一开始对神经网络的权重随机赋值,因此网络只是实现了一系列随机变换。其输出结果自然也和理想值相去甚远,相应地,损失值也很高。但随着网络处理的示例越来越多,权重值也在向正确的方向逐步微调,损失值也逐渐降低。这就是训练循环(training loop),将这种循环重复足够多的次数(通常对数千个示

例进行数十次迭代),得到的权重值可以使损失函数最小。具有最小损失的网络,其输出值与目标值尽可能地接近,这就是训练好的网络。再次强调,这是一个简单的机制,一旦具有足够大的规模,将会产生魔法般的效果。

1.1.6 深度学习已经取得的进展

虽然深度学习是机器学习一个相当有年头的分支领域,但在21世纪前十年才崛起。在随后的几年里,它在实践中取得了革命性进展,在视觉和听觉等感知问题上取得了令人瞩目的成果,而这些问题所涉及的技术,在人类看来是非常自然、非常直观的,但长期以来却一直是机器难以解决的。

特别要强调的是,深度学习已经取得了以下突破,它们都是机器学习历史上非常困难的领域:

‰ 接近人类水平的图像分类
‰ 接近人类水平的语音识别
‰ 接近人类水平的手写文字转录
‰ 更好的机器翻译
‰ 更好的文本到语音转换
‰ 数字助理,比如谷歌即时(Google Now)和亚马逊Alexa‰ 接近人类水平的自动驾驶
‰ 更好的广告定向投放,Google、百度、必应都在使用
‰ 更好的网络搜索结果
‰ 能够回答用自然语言提出的问题
‰ 在围棋上战胜人类

我们仍然在探索深度学习能力的边界。我们已经开始将其应用于机器感知和自然语言理解之外的各种问题,比如形式推理。如果能够成功的话,这可能预示着深度学习将能够协助人类进行科学研究、软件开发等活动。

1.1.7 不要相信短期炒作

虽然深度学习近年来取得了令人瞩目的成就,但人们对这一领域在未来十年间能够取得的成就似乎期望过高。虽然一些改变世界的应用(比如自动驾驶汽车)已经触手可及,但更多的应用可能在长时间内仍然难以实现,比如可信的对话系统、达到人类水平的跨任意语言的机器翻译、达到人类水平的自然语言理解。

我们尤其不应该把达到人类水平的通用智能(human-level general intelligence)的讨论太当回事。在短期内期望过高的风险是,一旦技术上没有实现,那么研究投资将会停止,而这会导致在很长一段时间内进展缓慢。

这种事曾经发生过。人们曾对人工智能极度乐观,随后是失望与怀疑,进而导致资金匮乏。这种循环发生过两次,最早始于20世纪60年代的符号主义人工智能。在早期的那些年里,人们激动地预测着人工智能的未来。马文•闵斯基是符号主义人工智能方法最有名的先驱和支持者之一,他在1967年宣称:“在一代人的时间内……将基本解决创造‘人工智能’的问题。”三年后的1970年,他做出了更为精确的定量预测:“在三到八年的时间里,我们将拥有一台具有人类平均智能的机器。”

在2021年,这一目标看起来仍然十分遥远,遥远到我们无法预测需要多长时间才能实现。但在20世纪60年代和70年代初,一些专家却相信这一目标近在咫尺(正如今天许多人所认为的那样)。几年之后,由于这些过高的期望未能实现,研究人员和政府资金均转向其他领域,这标志着第一次人工智能冬天(AI winter)的开始(这一说法来自“核冬天”,因为当时是冷战高峰之后不久)。

这并不是人工智能的最后一个冬天。20世纪80年代,一种新的符号主义人工智能——专家系统(expert system)——开始在大公司中受到追捧。最初的几个成功案例引发了一轮投资热潮,进而全球企业都开始设立人工智能部门来开发专家系统。1985年前后,各家公司每年在这项技术上的花费超过10亿美元。但到了20世纪90年代初,这些系统的维护费用变得很高,难以扩展,并且应用范围有限,人们逐渐对其失去兴趣。于是开始了第二次人工智能冬天。

我们可能正在见证人工智能炒作与让人失望的第三次循环,而且我们仍处于极度乐观的阶段。最好的做法是降低我们的短期期望,确保对这一技术领域不太了解的人能够清楚地知道深度学习能做什么、不能做什么。

1.1.8 人工智能的未来

虽然我们对人工智能的短期期望可能不切实际,但长远来看前景是光明的。我们才刚刚开始将深度学习应用于许多重要的问题,从医疗诊断到数字助手,在这些问题上深度学习都发挥了变革性作用。过去五年里,人工智能研究一直在以惊人的速度发展,这在很大程度上是由于人工智能短短的历史中前所未见的资金投入,但到目前为止,这些进展却很少能够转化为改变世界的产品和流程。

深度学习的大多数研究成果尚未得到应用,至少尚未应用到它在各行各业中能够解决的所有问题上。你的医生和会计师都还没有使用人工智能。你在日常生活中可能也不会用到人工智能。当然,你可以向智能手机提出简单的问题并得到合理的回答,也可以在亚马逊网站上得到相当有用的产品推荐,还可以在谷歌相册(Google Photos)网站搜索“生日”并立刻找到上个月你女儿生日聚会的照片。与过去相比,这些技术已大不相同,但这些工具仍然只是日常生活的陪衬。人工智能仍需进一步转变为我们工作、思考和生活的核心。

眼下,我们似乎很难相信人工智能会对世界产生巨大影响,因为它还没有被广泛地部署应用——正如1995年,我们也难以相信互联网在未来会产生的影响。当时,大多数人都没有认识到互联网与他们的关系,以及互联网将如何改变他们的生活。今天的深度学习和人工智能也是如此。但不要怀疑:人工智能即将到来。在不远的未来,人工智能将会成为你的助手,甚至成为你的朋友。它会回答你的问题,帮助你教育孩子,并关注你的健康。它还会将生活用品送到你家门口,并开车将你从A地送到B地。它还会是你与日益复杂的、信息密集的世界之间的接口。更为重要的是,人工智能将会帮助科学家在所有科学领域(从基因学到数学)取得突破性进展,从而帮助人类整体向前发展。

在这个过程中,我们可能会经历一些挫折,也可能会遇到新的人工智能冬天,正如互联网行业那样,在1998—1999年被过度炒作,进而在21世纪初遭遇破产,并导致投资停止。但我们最终会实现上述目标。人工智能最终将应用到我们社会和日常生活的几乎所有方面,正如今天的互联网一样。

不要相信短期的炒作,但一定要相信长期的愿景。人工智能可能需要一段时间才能充分发挥其潜力。这一潜力的范围大到难以想象,但人工智能终将到来,它将以一种奇妙的方式改变我们的世界。

个人公众号 yk 坤帝
获取更多学习资料,学习建议

全网最快掌握机器学习之深度学习之神经网络数学基础(附源代码)(代码片段)

个人公众号yk坤帝后台回复机器学习获得源代码1.全文简介要理解深度学习,需要熟悉很多简单的数学概念:张量、张量运算、微分、梯度下降等。本文目的是用不那么技术化的文字帮你建立对这些概念的直觉。特别地... 查看详情

机器学习之深度学习二分类多分类多标签分类多任务分类(代码片段)

多任务学习可以运用到许多的场景。首先,多任务学习可以学到多个任务的共享表示,这个共享表示具有较强的抽象能力,能够适应多个不同但相关的目标,通常可以使主任务获取更好的泛化能力。此外,由... 查看详情

机器学习之基础知识(全)(代码片段)

目录1.机器学习概述1.1人工智能概述1.1.1人工智能使用场景1.1.2人工智能小案例1.2 人工智能发展历程1.2.1图灵测试1.2.2发展历程1.2.3小结1.3人工智能主要分支1.3.1 人工智能、机器学习和深度学习1.3.2主要分支介绍1.3.3人工智能发展... 查看详情

麦子深度学习之-机器学习算法高级进阶

麦子深度学习之-机器学习算法高级进阶随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教... 查看详情

对比学习:《深度学习之pytorch》《pytorch深度学习实战》+代码

...Torch的功能。通过学习《深度学习入门之PyTorch》,可以从机器学习和深度学习的基础理论入手,从零开始学习PyTorch,了解PyTorch基础,以及如何 查看详情

机器学习之深度学习发展进程

1.3为什么是深度学习,为什么是现在个人公众号yk坤帝获取更多资料,学习建议深度学习用于计算机视觉的两个关键思想,即卷积神经网络和反向传播,在1989年就已经为人们所知。长短期记忆(LSTM,longshor... 查看详情

深度学习之tensorflow安装与初体验(代码片段)

深度学习之TensorFlow安装与初体验学习前搞懂一些关系和概念首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的神经网络结构是浅度... 查看详情

深度学习之三:机器学习的策略

本文为Andrewng深度学习课程的第三部分,主要总结了机器学习的策略方法。1机器学习策略之一当我们的模型搭建出来之后,策略可以指引我们为了达到目标,如何采取下一步行动。1.1正交化当设计和训练一个监督学习... 查看详情

rust机器学习之tch-rs(代码片段)

Rust机器学习之tch-rstch-rs是PyTorch接口的Rust绑定,可以认为tch-rs是Rust版的PyTorch。本文将带领大家学习如何用tch-rs搭建深度神经网络识别MNIST数据集中的手写数字。本文是“Rust替代Python进行机器学习”系列文章的第五篇,其... 查看详情

机器学习之集成学习算法(代码片段)

...#xff0c;因此优于任何一个单分类的做出预测。1.2复习:机器学习的两个核⼼任务任务一:如何优化训练数据 —>主要用于解决欠拟合问题任务二:如何提升泛化性能 — 查看详情

机器学习之深度学习常用的模型和方法

DeepLearning的常用模型或者方法AutoEncoder自动编码器       DeepLearning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其... 查看详情

深度学习之概述(overview)

...度学习在互联网教育场景也得到广泛应用。本文主要介绍机器学习及深度学习之定义及基本概念、相关网络结构等。  本文主要内容包括机器学习的定义及组成分类、深度学习的定义、深度学习和机器学习的区别、神经网络基... 查看详情

深度学习之kerasvstensorflowvspytorch三种深度学习框架

...干预。深度学习通过使用人工神经网络的层次结构来处理机器学习,人工神经网络的构建类似于人脑,神经元节点在网络中连接。虽然传统的机器学习程序使用线性数据分析,但深度学 查看详情

深度学习之自然语言处理bert(代码片段)

...自然语言生成,自然语言理解的应用包括语义分析、机器客服、语音识别、机器翻译等。transformer这一深度网络架构在NLP领域占有举足轻重的地位,BERT是基于transformer的自然语言模型,相比于同样基于transformer的GTP3自... 查看详情

深度强化学习之:模仿学习(imitationlearning)

...文所涉及到的模仿学习,则是从给定的展示中进行学习。机器在这个过程中,也和环境进行交互,但是,并没有显示的得到reward。在某些任务上,也很难定义reward。如:自动驾驶,撞死一人,reward为多少,撞到一辆车,reward为多... 查看详情

集成学习之随机森林案例专题python机器学习系列(十七)(代码片段)

集成学习之随机森林案例专题【Python机器学习系列(十七)】文章目录1.Bagging与随机森林简介2.随机森林--分类任务2.1准备数据2.2python实现随机森林--分类任务2.3绘制ROC曲线与计算AUC2.4绘制决策树3.随机森林--回归任务集成... 查看详情

机器学习之特征选择方法(代码片段)

特征选择是一个重要的数据预处理过程,在现实机器学习任务中,获得数据之后通常先进行特征选择,此后在训练学习器,如下图所示:进行特征选择有两个很重要的原因:避免维数灾难:能剔除不相关(irrelevant)或冗余(redundant)... 查看详情

深度学习之nlp(代码片段)

...检查、关键字检索2、文本挖掘3、文本分类(二分类)4、机器翻译5、客服系统6、复杂对话系统4)p(S)=p(w1,w2,w3,w4,w5,&helli 查看详情