原文:
annas-archive.org/md5/2f844d9ad75aa257caad1025fa00b786译者:飞龙
第十五章:深度学习职业生涯总结与下一步
这是一次精彩的旅程,作为团队的一员,你非常高效!我们希望你喜欢我们实践性的Python 深度学习项目教学方法。此外,我们的目标是为你提供激发思考、令人兴奋的体验,进一步增强你的直觉,并为你的深度学习工程师职业生涯奠定技术基础。
每一章的结构都类似于作为我们智能工厂团队的一员,随着学习材料的推进,我们达成了以下目标:
-
看到了实际应用场景的大局,并确定了成功的标准
-
集中精力进入代码,加载依赖项和数据,构建、训练并评估我们的模型
-
回到大局观,确认我们已达成目标
我们热衷于解决问题,构建智能的解决方案、洞察力和人才!让我们回顾一下关键学习,总结一些直觉,并展望你深度学习职业生涯的下一个阶段。
Python 深度学习 – 构建基础 – 两个项目
一个共同的工作环境基础使我们能够合作,并促使我们在计算机视觉(CV)和自然语言处理(NLP)领域学习酷炫且强大的深度学习技术。本书的前两章提供了建立经验,你将多次在数据科学家的职业生涯中使用这些经验。
第一章 – 构建深度学习环境
本章的主要目标是标准化我们的工具集,以便共同工作并取得一致准确的结果。我们希望建立一种使用深度学习算法构建可扩展生产应用的流程。在最后,我们识别了共同深度学习环境的组成部分,并最初设置了一个本地深度学习环境,随后扩展到基于云的环境。在随后的项目中,你获得了使用 Ubuntu、Anaconda、Python、TensorFlow、Keras 和Google Cloud Platform(GCP)等核心技术的经验。这些将继续对你在深度学习工程师的职业生涯中产生价值!
第二章 – 使用回归训练神经网络进行预测
在第二章《使用回归训练神经网络进行预测》中,我们确定了第一个商业用例——这将成为多个项目的主题:即一个餐饮连锁希望自动化其部分流程。具体来说,在本章中,商业用例是构建一个使用多层感知器(MLP)的深度学习分类器,MLP 是深度学习中的基本构建块,用来准确分类顾客电话号码的手写数字。如果你还记得,目标是准确地分类(数字化)iPad 上的手写电话号码,以便顾客能够收到一条短信,告知他们桌位已准备好。
我们在 TensorFlow 中构建了一个两层(最小深度)神经网络,并在经典的 MNIST 数据集上进行训练。这个项目为我们提供了一个机会,去解决过拟合、欠拟合、超参数调优以及激活函数等问题,以便探索模型的表现。我们发现尤其有趣的是商业用例对模型表现的实用性解读的影响。最初,使用这个简单的模型,我们的准确率看起来足够了,直到我们考虑到电话号码中的一个数字错误对准确传送短信给正确顾客的影响。在这个背景下,我们很快明白,我们需要做得更好。幸运的是,在书的后面,我们有机会再次尝试这个问题,在第八章《使用卷积神经网络进行手写数字分类》中,我们使用了一个更复杂的深度学习模型,效果更好!
Python 深度学习 – 自然语言处理 – 5 个项目
我们的Python 深度学习项目中,有三分之一集中在计算语言学领域。非结构化文本数据无处不在,而且生成的速度惊人。我们将所使用的技术和方法分为五个部分,以充分应对信息的广度。让我们回顾一下第三章《使用 word2vec 进行单词表示》到第八章《使用卷积神经网络进行手写数字分类》中的项目,看看它们是如何相互关联并逐步构建的。
第三章 – 使用 word2vec 进行单词表示
计算语言学的核心是对词语及其所体现特征的有效表示。word2vec 被用来将词语转化为密集向量(即张量),为语料库创建嵌入表示。我们接着创建了一个卷积神经网络(CNN)来构建情感分析的语言模型。为了帮助我们框定这个任务,我们设想了一个假设的使用案例:我们的餐厅连锁客户要求我们分析他们收到的顾客反馈文本,这些文本是顾客收到他们的桌位准备好通知时的回复。特别有趣的是意识到,CNN 不仅可以应用于图像数据!我们还利用这个项目作为探索数据可视化的机会,使用了t-分布随机邻居嵌入(t-SNE)和 TensorBoard。
第四章 – 构建自然语言处理管道用于构建聊天机器人
在这个项目中,我们通过探索语言模型的深度学习技术(构建块)深入研究了计算语言学。像我们在第三章中提到的 word2vec 模型,使用 word2vec 的词表示,是通过自然语言处理(NLP)管道实现的。我们的任务是创建一个自然语言处理管道,为开放域问答的聊天机器人提供支持。我们设想我们的(假设的)餐厅连锁有一个网站,包含菜单、历史、位置、营业时间和其他信息,并且他们希望在网站上增加一个查询框,访客可以提出问题,我们的深度学习 NLP 聊天机器人能够找到相关信息并返回答案。
自然语言处理管道对语料库进行了分词,标注了词性,使用依存句法分析确定了词与词之间的关系,并进行了命名实体识别(NER)。这使我们能够使用 TF-IDF 对文档中的特征进行向量化,从而创建一个简单的 FAQ 类型聊天机器人。我们通过 NER 和 Rasa NLU 的实现进一步增强了这一点。随后,我们能够构建一个能够理解文本意图(上下文)的机器人,并且还能够提取实体,因为我们创建了一个可以进行意图分类以及 NER 提取的 NLP 管道,使得它能够提供准确的回复。
第五章 – 序列到序列模型构建聊天机器人
本章直接在第四章,为建立聊天机器人构建 NLP 管道的基础上,为我们假设的餐厅连锁店构建了一个更先进的聊天机器人,以自动化电话点餐的过程。我们结合了多种技术的学习,制作了一个更具上下文意识和鲁棒性的聊天机器人。通过构建具有循环神经网络(RNN)模型和长短期记忆(LSTM)单元的模型,专门设计用于捕捉字符或单词序列中表示的信号,避免了聊天机器人中 CNN 的一些限制。
我们实现了一个语言模型,使用基于 LSTM 单元的编码器-解码器 RNN,用于简单的序列到序列问答任务。这个模型能够处理不同大小的输入和输出,保持信息状态,并足够处理复杂的上下文。我们的另一个学习是,获得足够数量和正确训练数据的重要性,因为模型的输出要符合非常高的语音可解释性标准。然而,通过正确的训练数据,可以使用这个模型实现假设的餐厅连锁店建立强大聊天机器人的目标(结合我们探索过的其他计算语言学技术)。
第六章 – 生成语言模型用于内容创作
在这个项目中,我们不仅在计算语言学的旅程中迈出了下一步,还跨越了一个深刻的鸿沟来生成新内容!我们定义了业务使用案例目标,提供一种深度学习解决方案,用于生成可以用于电影剧本、歌词和音乐的新内容。我们问自己:我们如何利用我们在解决餐厅连锁店问题方面的经验,并将其应用于不同的行业?反思过去项目中关于模型输入和输出的学习,我们相信新颖的内容只是另一种输出形式。我们证明了我们可以将图像作为输入,并输出一个类别标签(第二章,使用回归进行预测的 NN 训练)。我们训练了一个模型,接受文本输入并输出情感分类(第三章,使用 word2vec 进行词表示),并为开放域问答聊天机器人建立了一个 NLP 管道,其中我们将文本作为输入,并在语料库中识别文本以呈现适当的输出(第四章,为建立聊天机器人构建 NLP 管道)。然后,我们扩展了该聊天机器人功能,以便为餐厅提供自动点餐系统服务(第五章,用于构建聊天机器人的序列到序列模型)。
在本章中,我们实现了一个生成模型,使用长短期记忆网络(LSTM)、变分自编码器和生成对抗网络(GANs)来生成内容。我们成功地为文本和音乐领域实现了模型,这些模型能够为艺术家和各种创意行业生成歌曲歌词、剧本和音乐。
第七章 – 构建基于 DeepSpeech2 的语音识别系统
本项目是《Python 深度学习项目》一书中自然语言处理章节的一个集大成项目,旨在构建基于 DeepSpeech2 的语音识别系统。到目前为止,我们已经探讨了聊天机器人、自然语言处理和使用 RNN(包括单向和双向、含有和不含 LSTM 组件的 RNN)以及 CNN 的语音识别技术。我们见识了这些技术为现有商业流程提供智能支持的强大能力,并且能够创造出全新的智能系统。这是应用 AI 最前沿的令人兴奋的工作,运用了深度学习技术!
本项目的目标是构建并训练一个自动语音识别(ASR)系统,能够接收并将语音通话转换为文本,然后可以作为文本聊天机器人的输入,后者能够解析这些输入并做出适当回应。我们深入研究了语音数据,进行特征工程,以便从数据中提取各种特征,并构建一个能够识别用户语音的语音识别系统。最终,我们通过构建一个基于 DeepSpeech2 模型的系统,展示了我们对英语语音识别的掌握。我们结合语音和频谱图,使用连接时序分类(CTC)损失函数、批量归一化(Batch Normalization)和 SortaGrad 优化方法,搭建了一个端到端的语音识别系统,基于 RNN 技术。
深度学习 – 计算机视觉 – 6 个项目
以下六个 Python 深度学习项目,专注于计算机视觉(CV),是本书内容的主要部分。我们已经看到,部分深度学习技术,尤其是与计算机视觉相关的技术,如何能够应用于其他类型的数据,尤其是文本数据。很大程度上,这是因为 CNN 在特征提取和层次化表示上的巨大效用。没有哪种工具可以适用于所有工作——成为数据科学领域的深度学习工程师也不例外。但你不应低估你对 CNN 的熟悉程度,因为你会在许多不同的数据集和商业用例中反复使用它们。没有 CNN 技能的数据科学家,就像没有锤子的木匠。显然的警告是,并非数据科学中的所有任务都可以简单地比作钉子!
第八章 – 使用卷积神经网络(ConvNets)进行手写数字分类
本章提醒我们回顾在第二章《使用回归训练神经网络进行预测》中创建的第一个深度神经网络,以及它所应用的商业用例。本章的目的是为我们理解深度神经网络及其运行原理提供基础。在比较模型架构与更先进的技术时,我们强调了深度学习背后的数学复杂性,尤其是在我们构建更深、更强大的模型时所能获得的进步。复杂性并不是因为它复杂而“酷”;在这个情况下,它之所以“酷”是因为它带来了实际性能的提升。
我们花了大量时间研究卷积操作、池化和 Dropout 正则化。这些是你在职业生涯中调节模型时所需要调整的杠杆,所以尽早理解它们非常重要。回到商业用例,我们看到部署更复杂模型的价值,因为性能提升支持了母产品的实施。在第二章《使用回归训练神经网络进行预测》中获得的误差率,在最坏情况下,假设餐饮连锁店中的每个顾客都没有收到正确的文本信息(即使在最好情况下,效果依然很差,基本上无法使用)。而相同数据集上的 CNN 模型则产生了这样的结果:在新的最坏情况下,90%的顾客会收到文本通知,在最好情况下,99%的人会收到通知!
第九章 – 使用 OpenCV 和 TensorFlow 进行物体检测
让我们回顾一下在第八章《使用卷积神经网络进行手写数字分类》中所取得的成果,我们成功地训练了一个图像分类器,利用 CNN 准确地分类了图像中的手写数字。数据的复杂度比实际可能的要低,因为每个图像中只有一个手写数字,而我们的目标是为图像准确分配一个类别标签。如果每个图像中包含多个手写数字,或者不同类型的物体会怎样呢?如果我们有一个视频呢?如果我们想识别图像中数字的位置会怎样?这些问题代表了现实世界数据所面临的挑战,并推动我们的数据科学创新朝着新的模型和能力发展。
对计算机而言,目标检测和分类绝非一件简单的事情,尤其是在大规模和高速度要求下。在这个项目中,我们采用了比以往项目中更加信息复杂的数据输入,当我们成功处理这些数据时,结果也更加令人印象深刻。我们发现,深度学习包 YOLOv2 表现得非常出色,并且看到了我们的模型架构变得更加深度和复杂,同时也取得了不错的效果。
第十章 – 使用 OpenFace 构建人脸识别
在第九章,使用 OpenCV 和 TensorFlow 进行目标检测中,我们展示了构建深度学习目标检测和分类模型所需技能的掌握。在此基础上,我们的目标是对这一分类操作进行进一步细化:物体是否与另一个物体相同?在我们的案例中,我们希望构建一种类似间谍电影中看到的人脸识别系统,现在这种系统已经应用于高科技安防系统中。人脸识别是两项主要操作的结合:人脸检测和人脸分类。
在这个项目中,我们使用 OpenFace 构建了一个模型,该模型能够查看图片并识别其中的所有可能人脸,然后进行人脸提取,以了解包含人脸的图像部分的质量。接着,我们对人脸进行了特征提取,识别图像中可为与另一数据点(该人脸的标记图像)进行比较的部分。这个 Python 深度学习项目展示了这项技术的令人兴奋的潜力,也展现了擅长这些应用的工程师们的未来。
第十一章 – 自动化图像标题生成
在第九章,使用 OpenCV 和 TensorFlow 进行目标检测中,我们学习了如何检测和分类图像中的物体;在第十章,使用 FaceNet 构建人脸识别中,我们学习了如何检测、分类和识别物体是否为同一事物(例如,识别两张不同人脸图片中的同一人)。在这个项目中,我们做了更为复杂和酷炫的事情!我们结合了到目前为止在 Python 深度学习项目中学到的最先进技术,在计算机视觉(CV)和自然语言处理(NLP)领域,形成了一种完整的图像描述方法。这个模型能够为提供的任何图像生成计算机生成的自然语言描述。
使这一切成为可能的巧妙想法是,用一个深度卷积神经网络(CNN)替代了编码器-解码器架构中的编码器(RNN 层),并训练它来分类图像中的物体。通常,CNN 的最后一层是 softmax 层,用于为每个物体分配其出现在图像中的概率。但是,当我们去除 CNN 的 softmax 层时,我们可以将 CNN 对图像的丰富编码输入到解码器中(RNN 的语言生成组件),该解码器的设计目的是生成短语。然后,我们可以直接在图像及其描述上训练整个系统,最大化它生成的描述与每个图像的训练描述最匹配的可能性。这项深度学习技术是许多智能工厂解决方案的核心!
第十二章 – 使用卷积神经网络(ConvNets)在 3D 模型上进行姿态估计
我们应用于模型的数据是现实世界的表现。这是计算语言学和计算机视觉(CV)之间的基本联系。对于计算机视觉,我们需要记住,二维图像代表的是三维世界,就像视频代表的是四维世界,时间和运动是其中的额外维度。回忆这个显而易见的事实可以让我们提出越来越有趣的问题,并发展出具有更大实用性的深度学习技术。我们假设的应用场景是让视觉特效专家能够轻松估算演员在视频帧中的姿态(特别是肩膀、脖子和头部)。我们的任务是为这个应用程序构建智能系统。
我们成功地在 Keras 中构建了一个深度 CNN/VGG16 模型,使用的是电影标注帧(FLIC)图像。我们在为建模准备图像时获得了实际操作经验。我们成功实施了迁移学习,并明白了这样做将节省我们大量的时间。我们定义了一些关键的超参数,并理解了为什么我们要这么做。最后,我们在未见过的数据上测试了修改后的 VGG16 模型的性能,并确定我们成功达成了目标。
第十三章 – 使用生成对抗网络(GAN)进行风格迁移的图像翻译
生成对抗网络(GANs)简直太酷了。当我们回顾在这些项目中积累的技能和直觉时,我们有了一个有趣的想法。我们能否预测缺失的信息?换句话说:我们能否生成图像中应该有的,但实际上缺失的数据?如果我们能够接受文本输入并生成新的文本输出,或者能够接受 2D 图像并生成或预测 3D 位置输出,那么似乎是可能的:如果我们有一张缺少一些信息的 2D 图像,也许我们应该能够生成缺失的部分?因此,在这一章中,我们构建了一个神经网络,用来填补手写数字的缺失部分。我们之前为一个假设的餐厅连锁客户构建了一个数字分类器。误差率可能与数字未被准确捕捉、导致图像中的数字部分未完全绘制有关。我们将精力集中在模型创建的新增部分——通过使用生成对抗网络(GANs)进行神经修复,重建缺失的数字部分。然后我们重建了手写数字的缺失部分,以便分类器能够接收到清晰的手写数字,从而进行数字转换。通过这一过程,分类器能够更准确地分类手写数字(而我们假设的餐厅顾客也能及时收到通知并迅速入座)。
Python 深度学习 – 自主代理 – 1 项目
我们书中的最终项目与之前的任何项目都不同,因此值得单独处理。机器人过程自动化与优化,以及自主代理(如无人机和车辆)要求我们的深度学习模型能够在强化学习范式中从环境线索中学习。与之前专注于解决监督学习问题的项目不同,在这一章中,我们学习了如何构建并训练一个能够玩游戏的深度强化学习模型。
我们采用了深度 Q 学习和深度状态-动作-奖励-状态-动作(SARSA)学习模型。与通过定义启发式规则编程简单模型、在监督学习环境中映射 A-B 或在无监督学习中确定聚类分析的决策边界不同,强化学习中的反馈来自于游戏或环境的规则(通过强化传递)。该深度学习模型,也就是强化学习中的代理,与游戏环境进行互动,学习如何玩游戏,并在多次尝试后寻求最大化奖励。
第十四章 – 使用深度强化学习开发自主代理
在这个项目中,我们构建了一个深度强化学习模型,成功地玩转了 OpenAI Gym 中的 CartPole-v1 游戏。首先展示我们在此方面的掌握,我们然后可以将其扩展到其他复杂的游戏,如 Atari 的游戏。
我们学会了如何与 Gym 工具包、Q 学习和 SARSA 学习进行交互;如何编码强化学习模型并定义超参数;以及如何构建训练循环并测试模型。我们发现我们的 SARSA 模型比 Q 学习模型表现得要好得多。进一步的训练和超参数调整,以及我们自己捕获的强化单位(我们模型的更高分数),应当塑造我们的行为,构建出更好的模型,最终实现我们的代理几乎完美的表现!
下一步——AI 战略和平台
在本书中,你获得了构建深度学习项目技术基础的经验。然而,本书的范围使得我们的重点只能集中在整个生产规模数据科学管道的一部分。我们花时间以商业用例为背景,帮助我们在领域和成功标准上进行思考,但很快就深入到了深度学习模型的训练、评估和验证中。这些组成了我们项目中训练的主体,毫无疑问,它们是企业数据科学管道的核心,但不能孤立运作。进一步的 AI 战略和数据科学平台的学习和训练是你教育和职业发展的自然下一步。
AI 战略
AI 战略是通过从客户处获取知识,使你能够确定以下内容:
-
客户基于智能的竞争优势的宏大愿景
-
如何将这一愿景转化为一个有效的生产规模数据科学管道:
-
考虑客户当前和近期的数字化成熟度
-
数据摄取、分析和转换的过程
-
技术和工程资源与约束
-
分析团队目前的能力
-
模型选择、定制、训练、评估、验证和服务
-
-
达成与客户领导目标一致的 KPI 和 ROI
AI 战略咨询揭示了目标和期望,同时将结果与机器学习和深度学习技术对齐。构建 AI 解决方案架构必须考虑到所有这些因素,才能取得成功。你应该向行业导师学习,阅读可用的案例研究,并在你的职业发展过程中时刻牢记这一点,随着你越来越早地被召唤在解决方案构建过程中提供指导和意见。
深度学习平台——TensorFlow Extended (TFX)
为满足生产规模部署需求而设计的数据科学平台需要大量的工程支持。在智能工厂和 Skejul,我们构建了深度学习平台,能够接收不断更新的实时数据流,在毫秒内生成基于智能的输出,通过基于云的 Web 应用程序使用 API 网关交付。这是一个异常复杂且有回报的过程,一旦你把所有环节拼接起来,就能看到其巨大价值!
一项能够帮助您在深度学习和数据科学职业生涯中取得成功的技术是 TFX。这是 Google 基于 TensorFlow 的生产级机器学习平台。以下是它们文章摘要中的前几行
TFX: 基于 TensorFlow 的生产级机器学习平台 (ai.google/research/pubs/pub46484) 总结了 TFX 及类似平台的潜力:
“创建和维护一个可靠地生成和部署机器学习模型的平台,需要对许多组件进行精心的协调——一个基于训练数据生成模型的学习器,分析和验证数据以及模型的模块,最后是用于在生产环境中服务模型的基础设施。当数据随时间变化并且需要不断生成新的模型时,这变得尤为具有挑战性。”
基于精心策划的 AI 战略的数据科学平台工程是我们训练的下一步,我们也期待与您分享这些经验!
结论与感谢!
我们感谢您选择我们的书籍《Python 深度学习项目》作为您数据科学教育的一部分!我们希望您觉得这些项目和商业用例既引人入胜又富有信息性,并且比开始时更加专业地准备好了。我们期待有机会通过我们的博客、社交媒体,甚至在会议上与您互动,或者一起为全球客户提供基于 AI 的解决方案。
很高兴您参与了我们每周的 AI 团队会议,参与这些项目。现在我们已经学到了很多东西,并且享受了使用非常酷且强大的数据科学技术的乐趣,让我们基于这些 Python 深度学习项目去做伟大的工作吧!
1818

被折叠的 条评论
为什么被折叠?



