版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章
深度学习简介深度学习简介2计算机视觉强化学习
深度学习是一种基于神经网络的学习方法。和传统的机器学习方法相比,深度学习模型一般需要更丰富的数据、更强大的计算资源,同时也能达到更高的准确率。目前,深度学习方法被广泛应用于计算机视觉、自然语言处理、强化学习等领域。本章将依次进行介绍。自然语言处理目录3计算机视觉的定义和基本任务仿生学和深度学习自然语言处理的基本问题传统方法与神经网络方法的对比强化学习算法简介强化学习的应用第一节第二节第三节第四节第五节第六节第一节计算机视觉的定义和基本任务计算机视觉的定义6计算机视觉是使用计算机及相关设备对生物视觉的一种模拟。它的主要任务是通过对采集的图片或视频进行处理以获得相应场景的三维信息。计算机视觉是一门关于如何运用照相机和计算机来获取我们所需的,被拍摄对象的数据与信息的学问。形象地说,就是给计算机安装上眼睛(照相机)和大脑(算法),让计算机能够感知环境。计算机视觉的基本任务7
计算机视觉的基本任务包含图像处理、模式识别或图像识别、景物分析、图像理解等。除了图像处理和模式识别之外,它还包括空间形状的描述,几何建模以及认识过程。实现图像理解是计算机视觉的终极目标。实现图像理解是计算机视觉的终极目标!图像处理技术8通过处理使输出图像有较高的信噪比图像处理技术可以把输入图像转换成具有所希望特性的另一幅图像,例如:通过增强处理突出图像的细节在计算机视觉研究中经常利用图像处理技术进行预处理和特征抽取。语义网络表示法9
模式识别技术根据从图像抽取的统计特性或结构信息,把图像分成预定的类别。例如,文字识别或指纹识别。
在计算机视觉中模式识别技术经常用于对图像中的某些部分,例如分割区域的识别和分类。图像理解技术图像理解技术是对图像内容信息的理解。
给定一幅图像,图像理解程序不仅描述图像本身,而且描述和解释图像所代表的景物,以便对图像代表的内容做出决定。图像理解技术是对图像内容信息的理解。计算机视觉的传统算法1101020304GOAL图像预处理特征感知特征提取特征筛选推理预测与识别
在深度学习算法出现之前,对于计算机视觉算法来说,大致可以分为以下5个步骤:1.缺乏对特征的重视2.图像特征提取需要人力3.依赖特征算子缺点1.指纹识别算法2.基于Haar的人脸检测算法3.基于HoG特征的物体检测成功例子计算机视觉的传统算法第二节仿生学与深度学习神经网络示例输入:图片输出:标签
发现人:DavidHubel视觉功能划分
时间:1981
意义:证明大脑的可视皮层是分级的。视觉系统信息处理机制
抽象:把非常具体的形象的元素抽象出来形成有意义的概念。
迭代:把有意义的概念往上迭代,变成更加抽象,人可以感知到的抽象概念。抽象与迭代的过程案例说明人脑感知气球模拟识别人脸识别摩托车现代深度学习17卷积神经网络(CNN):卷积神经网络是一种对人脑比较精准的模拟,它模拟了人脑识别图片时感知图片中的局部特征,之后将局部特征综合起来再得到整张图的全局信息的过程。其卷积层通常是堆叠的,低层的卷积层可以提取到图片的局部特征,高层的卷积能够从低层的卷积层中学到更复杂的特征,从而实现到图片的分类和识别。现代深度学习的过程18
用学习好的卷积和对图像进行扫描,然后每一个卷积和会生成一个扫描的响应图,我们叫responsemap,或者叫featuremap。如果有多个卷积和,就有多个featuremap。也就说从一个最开始的输入图像(RGB三个通道)可以得到256个通道的featuremap,因为有256个卷积和,每个卷积和代表一种统计抽象的方式。卷积就是两个函数之间的相互关系。在计算机视觉里面,可以把卷积当作一个抽象的过程,就是把小区域内的信息统计抽象出来。现代深度学习的过程19池化操作。池化操作在统计上的概念更明确,就是一个对一个小区域内求平均值或者求最大值的统计操作。带来的结果是,如果之前输入有两个通道的,或者256通道的卷积的响应featuremap,每一个featuremap都经过一个求最大的一个池化层,会得到一个比原来featuremap更小的256的featuremap。LeNet网络2004030201输入图像是大小为32×32像素的灰度图。第一层经过了一组卷积和,生成了6个28×28的featuremap,然后经过一个池化层,得到6个14×14的featuremap。然后再经过一个卷积层,生成了16个10×10的卷积层,再经过池化层生成16个5×5的featuremap。16个大小为5×5的featuremap再经过3个全连接层,即可得到最后的输出结果。输出就是标签空间的输出。AlexNet网络:LeNet“放大版”21输入:大小为224X224像素的图片。特征:第一层,都是一些填充的块状物和边界等特征中间的层开始学习一些纹理特征;而在接近分类器的高层,则可以明显看到的物体形状的特征。最后的一层,即分类层,不同物体的主要特征已经被完全提取出来。第三节自然语言处理的基本问题自然语言23自然语言,区别于计算机所使用的机器语言和程序语言,是指人类用于日常交流的语言。而自然语言处理的目的却是要让计算机来理解和处理人类的语言。自然语言的一个句子背后往往包含着不直接表述出来的常识和逻辑。这使得计算机在试图处理自然语言的时候不能从字面上获取所有的信息。因此自然语言处理的难度更大,它的发展与应用相比于计算机视觉也往往呈现出滞后的情况。为了将深度学习引入自然语言处理领域,研究者尝试了许多方法来表示和处理自然语言的表层信息(如词向量、更高层次、带上下文信息的特征表示等),也尝试过许多方法来结合常识与直接感知(如知识图谱、多模态信息等)。这些研究都富有成果,其中的许多都已应用于现实中,甚至用于社会管理、商业、军事的目的。030102ThreeTwoOne自然语言处理的基本问题自然语言处理主要研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,其主要任务包括:语言建模:计算一个句子在一个语言中出现的概率。中文分词:将中文句子恰当地切分为单个的词。句法分析:通过明确句子内两个或多个词的关系来了解整个句子的结构。最终句法分析的结果是一棵句法树。情感分类:给出一个句子,判断这个句子表达的情感。机器翻译:最常见的是把源语言的一个句子翻译成目标语言的一个句子,最终预测出来的整个目标语言句子必须与给定的源语言句子具有完全相同的含义。阅读理解:有许多形式。有时候是输入一个段落,一个问题,生成一个回答,或者在原文中标定一个范围作为回答,有时候是输出一个分类。自然语言处理的发展趋势越来越自动化模型越来越通用一开始,人们试图减少和去除人类专家知识的参与。因此就有了大量的网络参数、复杂的架构设计,这些都是通过在概率模型中提供潜在变量,使得模型具有捕捉和表达复杂规则的能力。0102之后,人们觉得每一次为新的自然语言处理任务设计一个新的模型架构并从头训练的过程过于烦琐,于是试图开发利用这些任务底层所共享的语言特征。在这一背景下,迁移学习逐渐发展。03现在人们希望神经网络的架构都可以不需要设计,而是根据具体的任务和数据来搜索得到。这一新兴领域方兴未艾,可以预见随着研究的深入,自然语言处理的自动化程度一定会得到极大提高。第四节传统方法与神经网络方法的对比传统方法与神经网络方法的比较27维度数据量商业策略人工参与程度......可解释性人的参与程度越来越低,但系统的效果越来越好。这是合乎直觉的,因为人对于世界的认识和建模总是片面的、有局限性的。如果可以将自然语言处理系统的构建自动化,将其基于对世界的观测点(即数据集),所建立的模型和方法一定会比人类的认知更加符合真实的世界。人工参与程度的降低带来的另一个问题是模型的可解释性越来越低。在理想状况下,如果系统非常有效,人们根本不需要关心黑盒系统的内部构造,但事实是自然语言处理系统的状态离完美还有相当的差距。随着自然语言处理系统中人工参与的程度越来越低,系统的细节就需要更多的信息来决定,这些信息只能来自于更多的数据。第五节强化学习算法简介强化学习29强化学习是机器学习的一个重要分支,它与非监督学习、监督学习并列为机器学习的三类主要学习方法。强化学习强调如何基于环境行动,以取得最大化的预期利益,所以强化学习可以被理解为决策问题。它是多学科多领域交叉的产物,其灵感来自于心理学的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。强化学习的应用范围非常广泛,各领域对它的研究重点各有不同。030102ThreeTwoOne监督学习与非监督学习30监督学习是通过带有标签或对应结果的样本训练得到一个最优模型,再利用这个模型将所有输入映射为相应输出,以实现分类非监督学习是在样本的标签未知的情况下,根据样本之间的相似性对样本集进行聚类,使类内差距最小化,学习出分类器强化学习的四个因素31智能体在每一个时间节点,智能体所处的环境的表示即为环境状态。在每一个环境状态中,智能体可以采取的动作即为行动。智能体是执行任务的客体,只能通过与环境互动来提升策略。环境状态行动反馈每到一个环境状态,智能体就有可能会收到一个反馈。强化学习的目标32
强化学习算法的目标就是获得最多的累计奖励(正反馈)。以“幼童学习走路”为例:幼童需要自主学习走路,没有人指导他应该如何完成“走路”,他需要通过不断的尝试和外界对他的反馈来学习走路。强化学习的特征33R010203没有监督者,只有一个反馈信号。反馈是延迟的,不是立即生成的。另外,强化学习是序列学习,时间在强化学习中具有重要的意义;Agent的行为会影响以后所有的决策。强化学习算法简介34强化学习算法Model-Free(无模型的)Model-based(有模型的)如果agent不需要去理解或计算出环境模型,算法就是Model-Free的;相应地,如果需要计算出环境模型,那么算法就是Model-Based的。基于概率基于算法Model-BasedVSModel-Free35Model-Free的算法看似随意,但这恰好更易于研究者们去实现和调整。Model-Free算法agent可以根据模型预测下一步的结果,并提前规划行动路径。但真实模型和学习到的模型是有误差的,这种误差会导致agent虽然在模型中表现很好,但是在真实环境中可能打不到预期结果。Model-Based算法基于概率VS基于价值36基于概率的算法直接输出下一步要采取的各种动作的概率,然后根据概率采取行动。每种动作都有可能被选中,只是可能性不同。基于概率的算法的代表算法为policy-gradient。基于概率的算法
基于价值的算法输出的则是所有动作的价值,然后根据最高价值来选择动作,相比基于概率的方法,基于价值的决策部分更为死板——只选价值最高的,而基于概率的,即使某个动作的概率最高,但是还是不一定会选到它。基于价值的算法的代表算法为Q-Learning。基于价值的算法第六节强化学习的应用强化学习算法的应用38R
交互性检索是在检索用户不能构建良好的检索式(关键词)的情况下,通过与检索平台交流互动并不断修改检索式,从而获得较准确检索结果的过程。
新闻推荐需要:获取用户请求,召回候选新闻,对候选新闻进行排序,最终给用户推出新闻。
将用户持续浏览新闻的推荐过程看成一个决策过程,通过强化学习学习每一次推荐的最佳策略,提高用户的点击率。小结39R
本章简要介绍了深度学习的应用领域。卷积神经网络可以模拟人类处理视觉信息的方式提取图像特征,极大地推动了计算机视觉领域的发展。自然语言处理是典型的时序信息分析问题,其主要应用包括句法分析、情感分类、机器翻译等。强化学习强调智能体与环境的交互与决策,具有广泛的应用价值。通过引入深度学习,模型的函数拟合能力得到了显著的提升,从而可以应用到一系列高层任务中。本章列出的三个应用领域只是举例,目前还有许多领域在深度学习技术的推动下进行着变革,有兴趣的读者可以深入了解。谢谢观看第2章深度学习框架及其对比第一节什么是深度学习框架什么是深度学习框架TensorFlow流行框架Pytorch深度学习采用
“端到端”的学习模式,在很大程度上减轻负担。但随着神经网络的发展,模型的复杂度也在不断提升。框架存在的意义就是屏蔽底层的细节,使研究者可以专注于模型结构。Caffe第二节PyTorch的特点和概述PyTorch简介SWOT考虑到Python在计算科学领域的领先地位,以及其生态完整性和接口易用性,几乎任何框架都不可避免地要提供Python接口。终于,在2017年,Torch的幕后团队推出了PyTorch。PyTorch不是简单地封装LuaTorch提供Python接口,而是对Tensor之上的所有模块进行了重构,并新增了最先进的自动求导系统,成为当下最流行的动态图框架。PyTorch具有先进设计理念的框架,其历史可追溯到2002年就诞生于纽约大学的Torch。Torch使用了一种不是很大众的语言Lua作为接口。Lua简洁高效,但由于其过于小众,以至于很多人听说要掌握Torch必须新学一门语言就望而却步,但Lua其实是一门比Python还简单的语言。PyTorch的特点PyTorch既可以看作为加入了GPU支持的numpy。TensorFlow与Caffe都是命令式的编程语言,而且是静态的,即首先必须构建一个神经网络,然后一次又一次使用同样的结构;如果想要改变网络的结构,就必须从头开始。但是PyTorch通过一种反向自动求导的技术,可以让用户零延迟地任意改变神经网络的行为。PyTorch的设计思路是线性、直观且易于使用的,当用户执行一行代码时,它会忠实地执行,所以当用户的代码出现Bug的时候,可以通过这些信息轻松快捷地找到出错的代码,不会让用户在Debug的时候因为错误的指向或者异步和不透明的引擎浪费太多的时间。PyTorch的代码相对于TensorFlow而言,更加简洁直观,同时对于TensorFlow高度工业化的底层代码,PyTorch的源代码就要友好得多,更容易看懂。深入API,理解PyTorch底层肯定是一件令人高兴的事。030102ThreeTwoOnePyTorch概述PyTorch最大优势是建立的神经网络是动态的,可以非常容易的输出每一步的调试结果,相比于其他框架来说,调试起来十分方便。PyTorch的图是随着代码的运行逐步建立起来的,也就是说使用者并不需要在一开始就定义好全部的网络的结构,而是可以随着编码的进行来一点一点的调试,相比于TensorFlow和Caffe的静态图而言,这种设计显得更加贴近一般人的编码习惯。第三节TensorFlow的特点和概述
数据流图
节点
线TensorFlow简介TensorFlow是一个采用数据流图(dataflowgraphs)用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow最初由Google大脑小组的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。数据流图数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点”一般用来表示施加的数学操作,但也可以表示数据输入(feedin)的起点/输出(pushout)的终点,或者是读取/写入持久变量(persistentvariable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“TensorFlow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。TensorFlow的特点特点设备迁移商业策略扩展便捷界面交互数据透明TensorFlow不是一个严格的“神经网络”库。只要用户可以将计算表示为一个数据流图就可以使用TensorFlow。用户负责构建图,描写驱动计算的内部循环。TensorFlow提供有用的工具来帮助用户组装“子图”,用户也可以在TensorFlow基础上写自己的“上层库”。TensorFlow的可扩展性相当强,可以自己写一些c++代码来丰富底层的操作。基于梯度的机器学习算法会受益于TensorFlow自动求微分的能力。只需要定义预测模型的结构,将这个结构和目标函数(objectivefunction)结合在一起,并添加数据,TensorFlow将自动计算相关的微分导数。计算某个变量相对于其他变量的导数仅仅是通过扩展你的图来完成的,所以用户能一直清楚看到究竟在发生什么。TensorFlow在CPU和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。TensorFlow支持将训练模型自动在多个CPU上规模化运算,以及将模型迁移到移动端后台。TensorFlow还有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs。你可以直接写python/c++程序,也可以用交互式的ipython界面来用TensorFlow尝试些想法,它可以帮用户将笔记、代码、可视化等有条理地归置好。TensorFlow概述TensorFlow中Flow,也就是流,是其完成运算的基本方式。流是指一个计算图或简单的一个图,图不能形成环路,图中的每个节点代表一个操作,如加法、减法等。每个操作都会导致新的张量形成。计算图具有以下属性:叶子顶点或起始顶点始终是张量。意即,操作永远不会发生在图的开头,由此可以推断,图中的每个操作都应该接受一个张量并产生一个新的张量。同样,张量不能作为非叶子节点出现,这意味着它们应始终作为输入提供给操作/节点。计算图总是以层次顺序表达复杂的操作。通过将a+b表示为c,将b+1表示为d,可以分层次组织上述表达式。因此,可以将e写为:e=(c)x(d)这里c=a+b且d=b+1.以反序遍历图形而形成子表达式,这些子表达式组合起来形成最终表达式。当我们正向遍历时,遇到的顶点总是成为下一个顶点的依赖关系,例如没有a和b就无法获得c,同样的,如果不解决c和d则无法获得e。同级节点的操作彼此独立,这是计算图的重要属性之一。当我们按照图中所示的方式构造一个图时,很自然的是,在同一级中的节点,例如c和d,彼此独立,这意味着没有必要在计算d之前计算c。因此它们可以并行执行。计算图的并行也是最重要的属性之一。它清楚地表明,同级的节点是独立的,这意味着在c被计算之前不需空闲,可以在计算c的同时并行计算d。TensorFlow充分利用了这个属性。TensorFlow概述TensorFlow允许用户使用并行计算设备更快地执行操作。计算的节点或操作自动调度进行并行计算。这一切都发生在内部,例如在上图中,可以在CPU上调度操作c,在GPU上调度操作d。下图展示了两种分布式执行的过程。上图中,第一种是单个系统分布式执行,其中单个TensorFlow会话创建单个worker,并且该worker负责在各设备上调度任务。在第二种系统下,有多个worker,他们可以在同一台机器上或不同的机器上,每个worker都在自己的上下文中运行。在上图中,worker进程1运行在独立的机器上,并调度所有可用设备进行计算。TensorFlow概述子图是主图的一部分,从属性2可以说子图总是表示一个子表达式,因为c是e的子表达式。子图也满足最后一个属性。同一级别的子图也相互独立,可以并行执行。因此可以在一台设备上调度整个子图。左图解释了子图的并行执行。这里有2个矩阵乘法运算,因为它们都处于同一级别,彼此独立,这符合最后一个属性。由于独立性的缘故,节点安排在不同的设备gpu_0和gpu_1上。TensorFlow将其所有操作分配到由worker管理的不同设备上。更常见的是,worker之间交换张量形式的数据,例如在e=(c)*(d)的图表中,一旦计算出c,就需要将其进一步传递给e,因此Tensor在节点间前向流动。该流动如右图所示。第四节PaddlePaddle的特点和概述PaddlePaddle简介SWOTPaddlePaddle的2.0版本相对1.8版本有重大升级,包括完善动态图功能,动态图模式下数据表示概念为Tensor;调整API目录体系,API的命名和别名进行了统一规范化;数据处理、组网方式、模型训练、多卡启动、模型保存和推理等开发流程都有了对应优化。PaddlePaddle(飞桨)是由百度自主研发的开源深度学习框架。PaddlePaddle以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心框架、基础模型库、端到端开发套件、工具组件和服务平台于一体。飞桨源于产业实践,始终致力于与产业深入融合。目前飞桨已广泛应用于工业、农业、服务业等,与合作伙伴一起帮助越来越多的行业完成AI赋能。飞浆2016年正式开源,2017年启动新一代深度学习框架研发,2018年7月发布Paddlev0.14,目前的最新版本是2022年底发布的Paddlev2.3.1。PaddlePaddle的特点PaddlePaddle是灵活高效的产业级深度学习框架。它采用基于编程逻辑的组网范式,对于普通开发者而言更容易上手,符合他们的开发习惯。同时支持声明式和命令式编程,兼具开发的灵活性和高性能。网络结构自动设计,模型效果超越人类专家。同时,PaddlePaddle支持超大规模深度学习模型的训练。它突破了超大规模深度学习模型训练技术,实现了世界首个支持千亿特征、万亿参数、数百节点的开源大规模训练平台,攻克了超大规模深度学习模型的在线学习难题,实现了万亿规模参数模型的实时更新。然后,PaddlePaddle还有多端多平台部署的高性能推理引擎。它不仅兼容其他开源框架训练的模型,还可以轻松地部署到不同架构的平台设备上。同时,飞桨的推理速度也是全面领先的。尤其经过了跟华为麒麟NPU的软硬一体优化,使得飞桨在NPU上的推理速度进一步突破。030102ThreeTwoOnePaddlePaddle概述PaddlePaddle不仅仅是一个深度学习的框架,基于该核心框架,百度公司扩展了一系列的工具和模型,覆盖了深度学习开发和应用的整个流程,已然成为了一个功能齐全的产品。PaddlePaddle的官网上给出了产品的全景介绍,其中包括了主要使用流程和使用工具。首先在开发和训练方面,如图2-10所示,PaddlePaddle以深度学习框架为核心,包括了高阶分布式训练FleetAPI、灵活通用且易于使用的NLP大规模预训练和多任务学习框架PALM、云上任务平台PaddleCloud和量子机器学习框架PaddleQuantum。PaddlePaddle概述在模型方面,PaddlePaddle提供了预训练模型工具PaddleHub和模型压缩工具PaddleSlim,同时为不同的领域提供了开发套件,如图2-11所示。尤其是PaddleOCR,在很多OCR的产品中都有其影子。同时还有文心大模型、PaddleCV、PaddleNLP等模型库,为开发者提供了极大的便利。PaddlePaddle概述而部署方面,PaddlePaddle也为不同的平台提供了相应工具。如图2-12所示,PaddleInference提供原生推理库,PaddleServing提供方便的服务端部署,PaddleLite则面向轻量级部署,Paddle.js为Web前端提供部署方式,FastDeploy则是一个新的、综合的部署套件。第五节三者的比较三者的比较PyTorchPyTorch是当前难得的简洁优雅且高效快速的框架。PyTorch的设计追求最少的封装,遵循tensor→variable(autograd)→nn.Module三个由低到高的抽象层次,分别代表高维数组(张量)、自动求导(变量)和神经网络(层/模块),而且这三个抽象之间联系紧密,可以同时进行修改和操作。PyTorch的灵活性不以速度为代价,在许多评测中,PyTorch的速度表现胜过TensorFlow和Keras等框架。简洁的设计带来的另外一个好处就是代码易于理解。三者的比较PyTorch正在受到越来越多人的追捧。PyTorch是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称。PyTorch继承了Torch的衣钵,尤其是API的设计和模块的接口都与Torch高度一致。PyTorch的设计最符合人们的思维,它让用户尽可能地专注于实现自己的想法,即所思即所得,不需要考虑太多关于框架本身的束缚。PyTorch提供了完整的文档,循序渐进的指南,作者亲自维护的论坛供用户交流和求教问题。Facebook人工智能研究院对PyTorch提供了强力支持,作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续的开发更新。同样的,由于推出时间较短,在Github上并没有如Caffe或TensorFlow那样多的代码实现,使用TensorFlow能找到很多别人的代码,而对于PyTorch的使用者,可能需要自己完成很多的代码实现。三者的比较R010203TensorFlow已经成为当今最炙手可热的深度学习框架,但是由于自身的缺陷,TensorFlow离最初的设计目标还很遥远。TensorFlow编程接口支持Python和C++。随着1.0版本的公布,Java、Go、R和HaskellAPI的alpha版本也被支持。此外,TensorFlow还可在GoogleCloud和AWS中运行。TensorFlow还支持Windows7、Windows10和WindowsServer2016。由于TensorFlow使用C++Eigen库,所以库可在ARM架构上编译和优化。这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,无须执行单独的模型解码器或者加载Python解释器。TensorFlow和Theano拥有相近的设计理念,都是基于计算图实现自动微分系统。TensorFlow使用数据流图进行数值计算,图中的节点代表数学运算,而图中的边则代表在这些节点之间传递的多维数组。TensorFlow三者的比较01020304过于复杂的系统设计。TensorFlow代码量庞大,使维护难以完成。对于入门者,TensorFlow的底层运行机制难以掌握,很多时候导致了放弃。频繁变动的接口。TensorFlow的接口一直处于快速迭代之中,且向后兼容性较差,这导致许多陈旧的开源代码已经无法在新版运行,同时也间接导致了许多第三方框架出现BUG。至今TensorFlow仍没有一个统一易用的接口。接口设计过于晦涩难懂,拥有图、会话、命名空间、PlaceHolder等诸多抽象概念,对普通用户来说难以理解。同一个功能,TensorFlow提供了多种实现,这些实现良莠不齐,使用中还有细微的区别,很容易将用户带入坑中。TensorFlow作为一个复杂的系统,文档和教程众多,但缺乏明显的条理和层次,虽然查找很方便,但用户却很难找到一个真正循序渐进的入门教程。TensorFlow的批评三者的比较RPaddlePaddle给我们留下最深的印象就是巨大的本土化优势。现在的深度学习框架的发展的速度逐渐慢了下来,这也意味着深度学习框架在现阶段已经趋近成熟。而我们在使用框架时会发现,框架上的差异逐渐小了,API也越来越相似,甚至框架的迁移也变得容易起来。但是以PaddlePaddle为代表的国产深度学习框架则在发展中不断寻找着属于自己的特色。01020304GOALPaddlePaddlePaddlePaddle有着极其详细的中文教程、开发工具,同时也会不定期组织开发者培训,组建开发者讨论社区,为开发者提供极大的便利。其它的国产深度学习框架也各显特色,如华为的MindSpore的倡导AI算法即代码,降低AI开发门槛,基于数学原生表达的AI编程新范式让算法专家聚焦AI创新和探索;清华大学发布的计图(Jittor)是一个完全基于动态编译(Just-in-time)、内部使用创新的元算子和统一计算图的深度学习框架。我们希望看到一个百家争鸣的环境,这样才会因循守旧,才会共同进步。。01020304GOALPaddlePaddle小结本章介绍了三种常用的机器学习框架,其中TensorFlow和PyTorch是目前最流行的两种开源框架。在以往版本的实现中,TensorFlow最开始提供静态图构建的功能,具有较高的运算性能,但是模型的调试分析成本较高;之后在TensorFlow2.x版本中提供动态图,提高了开发效率。PyTorch主要提供动态图计算的功能,API涉及接近Python原生语法,因此易用性较好,但是在图形优化方面不如TensorFlow。这样的特点使TensorFlow被大量用于AI企业的模型部署,而学术界则大量使用PyTorch进行研究。不过目前我们也看到两种框架正在吸收对方的优势,如TensorFlow的eager模式就是对动态图的一种尝试。另外,国内的深度学习框架发展也很迅猛,以百度的PaddlePaddle为代表的国产深度学习框架在功能上也不输PyTorch和TensorFlow,而且有更多的本土特色,很适合国内的开发者研究学习和使用。同样,还有很多其它的国产深度学习框架也值得学习,例如华为的MindSpore、旷视的MegEngine、清华大学的Jittor,有兴趣的读者可以深入了解。谢谢观看第3章机器学习基础机器学习概述举例:刚入行的二手车评估师,经过大量长期的工作经验,对过往大量的二手车的性能状态和售卖定价进行了归纳和总结,形成了一定的理论方法。“机器学习”是一门致力于使用计算手段,利用过往积累的关于描述事物的数据而形成的数学模型,在新的信息数据到来时,通过上述模型得到目标信息的一门学科。关键术语维度属性品牌车型车款行驶里程上牌时间/年上牌时间/月折算价格/万1奥迪A42.2LMT10000201393.22奥迪Q31.8T30000201744.73大众高尔夫15款1.4TS9......1000北京吉普250005款75000201561.2下表展示了二手车评估师在过往经手的一千台二手车的六个维度属性和其定价结果的数据。关键术语1)属性维度/特征(feature):就是指能够描述出目标事物样貌的一些属性。在这里,就是二手车各个维度指标就是最终帮助评定二手车价格的特征,例如:品牌、车型、车款、行驶里程、上牌时间......;2)预测目标(target/label):想要基于已有的维度属性的数据值,预测出的事物的结果,可以是类别判断和数值型数字的预测。在这里,二手车的价格就是预测的目标,它预测目标是数据型,属于回归;3)训练集(trainset):上表中的一千条数据,包括维度属性和预测目标,用来训练模型,找到事物维度属性和预测目标之间的关系;4)模型(model):它定义了事物的属性维度和预测目标之间的关系,它是通过学习训练集中事物的特征和结果之间的关系得到的。机器学习的分类监督学习:在现有数据集中,既有指定维度属性,又指定预测的目标结果。通过计算机,学习出能够正确预测维度属性和目标结果之间的关系的模型。对于后续的只有维度属性的新的样本,利用已经训练好的模型,进行目标结果的正确的预判。常见的监督学习有回归和分类:回归是指通过现有数据,预测出数值型数据的目标值,通常目标值是连续型数据;分类是指通过现有数据,预测出目标样本的类别。无监督学习:其是指是,现有的样本集没有做好标记,即没有给出目标结果,需要对已有维度的数据直接进行建模。无监督学习中最常见的使用就是聚类使用,把具有高度相似度的样本归纳为一类。机器学习的分类半监督学习和强化学习:半监督一般是指数据集中的数据有一部分是有标签的,另一部分是没标签的,在这种情况下想要获得和监督学习同样的结果而产生的算法。强化学习,有一种说法把它称为半监督学习的一种。它是模拟了生物体和环境互动的本质,当行为为正向时获得“奖励”,行为为负向时获得“惩罚”,基于此构造出的具有反馈机制的模型。神经网络和深度学习:神经网络,正如它的名字所示,该模型的灵感来自于中枢神经系统的神经元,它通过对输入值施加特定的激活函数,得到合理的输出结果。神经网格是一种机器学习模型,可以说是目前最火的一种。深度神经网络就是搭建层数比较多的神经网络,深度学习就是使用了深度神经网络的机器学习。人工智能、机器学习、以及神经网络和深度学习它们之间的具体关系机器学习的模型构造过程(1)找到合适的假设函数,它目的为通过输入数据来预测判断结果;其中为假设函数里面待求解的参数。(2)构造损失函数,该函数表示预测的输出值即模型的预测结果(h)与训练数据类别y之间的偏差。可以是偏差绝对值和的形式或其它合理的形式,将此记为J(),表示所有训练数据的预测值和实际类别之间的偏差。(3)显然,J()的值越小,预测函数越准确,最后以此为依据求解出假设函数里面的参数。监督学习监督学习,它是机器学习算法中的重要组成部分。其主要又分为分类和回归。目前,分类算法的应用非常广泛,银行中风险评估、客户类别分类、文本检索和搜索引擎分类、安全领域中的入侵检测以及软件项目中的应用等等。线性回归这里有样本点;假设X,Y满足一元线性回归关系,则有:;这里y为真实值,为根据一元线性关键计算出的预测值。a,b分别为公式中的参数。为了计算出上述参数,这里构造损失函数为残差平方和,即最小。把已知x、y数据代入,求解损失函数最小即可得参数。案例分析例如在炼钢过程中,钢水的含碳量x与冶炼时间y如下表6.2所示,x和y具有线性相关性。表6.2钢水含碳量与冶炼时间数据表Logistic回归Sigmoid函数公式:对于线性边界的情况,边界的形式:构造的预测函数为:可以表示当分类结果为类别“1”时候的概率Logistic回归当输入为x时通过模型公式判断出的最后结果的类别分别为“1”和“0”的概率:联合写成下式:Logistic回归通过最大似然估计构造Cost函数如式:Logistic回归通过梯度下降法求不断迭代,直至最后,求解得到参数,得到预测函数。进行新的样本的预测。案例分析这里采用最经典的鸢尾花数据集,理解上述模型。鸢尾花数据集记录了如下图6.4所示的三类鸢尾花的萼片长度(cm)、萼片宽度(cm)、花瓣长度(cm)、花瓣宽度(cm)。案例分析鸢尾花数据集详细数据如下表6.3展示所示,其采集的是鸢尾花的测量数据以及其所属的类别,这里为方便解释,我们仅采用Iris-setosa和Iris-virginica这两类。则一共有100个观察值,4个输入变量和1个输出变量。测量数据包括:萼片长度(cm)、萼片宽度(cm)、花瓣长度(cm)、花瓣宽度(cm)。进而用其建立二分类问题。最小近邻法最小近邻算法(K-nearestNeighbors,KNN)是一种基于实例学(instance-basedlearning)。KNN算法的基本思想是,如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中大多数属于某一个类别,则该样本也属于这个类别。通常K的取值比较小,不会超过20,左图展示了Knn算法的分类逻辑示意图。最小近邻法最小近邻算法(K-nearestNeighbors,KNN)是一种基于实例学(instance-basedlearning)。KNN算法的基本思想是,如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中大多数属于某一个类别,则该样本也属于这个类别。通常K的取值比较小,不会超过20,左图展示了Knn算法的分类逻辑示意图。最小近邻法a、距离的选择1)计算测试数据与各个训练数据之间的距离;2)按照下面距离的公式将对应数据之间的距离计算出来后,将结果进行从小到大的排序;3)选取计算结果中最小的前K个点(K值的确定后文会具体介绍);4)把这K个点中现频率次数最多的类别,作为最终待判断数据的预测分类. 通过这一流程可以发现,KNN算法在计算实现其分类的效果的过程中有三个重要的因素:衡量测试数据和训练数据之间的距离计算准则、K值的大小的选取、分类的规则。最小近邻法-距离的选择K近邻法的特征空间一般是n维实数向量空间Rn。使用的距离是欧氏距离,但也可以是其它距离,如更一般的Lp距离或Minkowski距离。现设特征空间X是n维实数向量空间的Lp距离定义为:最小近邻法-距离的选择当p=1时,曼哈顿(Manhattan)距离如式所示:当p=2时,欧氏(Euclidean)距离如式所示:当p->∞,时,切比雪夫距离如式(6.16)所示:最小近邻法-K值的确定通常情况,K值从1开始迭代,每次分类结果使用测试集来估计分类器的误差率或其它评价指标。K值每次增加1,即允许增加一个近邻(一般k的取值不超过20,上限是n的开方,随着数据集的增大,K的值也要增大)。最后,在实验结果中选取分类器表现最好的K的值。案例分析:现有某特征向量x=(0.1,0.1),另外4个数据数值和类别如下表6.4所示:
特征向量类别X1(0.1,0.2)w1X2(0.2,0.5)w1X3(0.4,0.5)w2X4(0.5,0.7)w2表6.4
数据和类别线性判别分析法线性判别分析(LineardiscriminantAnalysis,LDA)是机器学习中的经典算法,它既可以用来做分类,又可以进行数据的降维。线性判别分析的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。也就是说,要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大,线性判别分析的原理图如图展示:线性判别分析法-线性判别分析算法原理和公式求解目的:找到最佳投影方向,则样例x在方向向量上的投影可以表示为:ωω线性判别分析法-线性判别分析算法原理和公式求解现有,直线投影向量,有两个类别的中心点ω则直线的投影为ω,能够使投影后的两类样本中心点尽量分离的直线是好的直线,定量表示就是如下所示,其越大越好:此外,引入新度量值,称作散列值(scatter),对投影后的列求散列值,从集合意义的角度来看,散列值代表着样本点的密度。散列值越大,样本点的密度越分散,密度越小;散列值越小,则样本点越密集,密度越大。线性判别分析法-线性判别分析算法原理和公式求解基于上文阐明的原则:不同类别的样本点越分开越好,同类的越聚集越好,也就是均值差越大越好,散列值越小越好。因此,同时考虑使用J(θ)和S来度量,则可得到欲最大化的目标如下式之后化简求解参数,即得分类模型参数:案例分析已知有两类数据,分别为:请按照上述线性判别的方法找到最优的投影方向。朴素贝叶斯分类器朴素贝叶斯模型(NaïveBayesClassifier,NB)是一组非常简单快速的分类算法,通常适用于维度非常高的数据集。运行速度快,而且可调参数少,因此非常适合为分类问题提供快速粗糙的基本方案.朴素贝叶斯分类器-朴素贝叶斯算法原理和公式推导:具体来说,若决策的目标是最小化分类错误率,贝叶斯最优分类器要对每个样本x,选择能使后验概率P(c|x)最大的类别c标记。在现实任务中后验概率通常难以直接获得。从这个角度来说,机器学习所要实现的是基于有限的训练样本集尽可能准确地估计出后验概率P(c|x)。为实现这一目标,综合看来,一共有两种方式:第一种,即有已知数据各维度属性值x,及其对应的类别c,可通过直接建模P(c|x)来预测c,这样得到的是“判别式模型”,例如,决策树、BP神经网络、支持向量机等等第二种方法,也可先对联合概率分布P(x,c)建模,然后在由此获得P(c|x),这样得到的是“生成式模型”。对于生成式模型来说,必然考虑式:朴素贝叶斯分类器-朴素贝叶斯算法原理和公式推导:基于贝叶斯定理,P(c|x)可以写成式这就将求后验概率P(c|x)的问题转变为求类先验概率P(
c
)和条件概率P(
x|c
)。先验概率P(
c
)表达了各类样本在总体的样本空间所占的比例。由大数定律定理可知,当用于训练模型的数据集拥有足够的样本时,且这些样本满足独立同分布样本,每个类比的先验概率P(c)可通过各个类别的样本出现的频率来进行估计。朴素贝叶斯分类器-朴素贝叶斯算法原理和公式推导:朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。假设输入数据x的各个维度都独立的互不干扰的作用着最终的分类结果,则有:由于对所有类别来说P(x)相同,因此有下式:朴素贝叶斯分类器-朴素贝叶斯算法原理和公式推导:若DC表示训练数据集D中类比为c的样本组成的集合,在数据充足,且输入维度独立同分布的情况下,则能够估计出类别为c的样本的类先验概率,如式若输入维度数据为离散值的话,令朴素贝叶斯分类器-朴素贝叶斯算法原理和公式推导:若某个属性值在训练集中没有与某个类同时出现过,引入拉普拉斯修正如:补充说明,当用于训练的数据集不够充足的时候,存在某类样本在某
就个维度下的概率的估计值为0的情况,所以这里分母加上了样本量,分子加了一。这样的修改对模型最后的结果不会有太大的干扰,因为当用于训练的数据集变大的时候,这种影响会越来越小,可以忽略不计,这样,是的估计值会逐渐趋向于实际的概率值。案例分析现有未知样本X=(age=“<=30”,income=“medium”,student=“yes”,credit_rating=“fair”),判断其类别:决策树分类算法决策树模型(Decisiontree)即可以用于解决分类问题又可以用于解决回归问题。决策树算法采用树形结构,使用层层推理最终实现模型目标。决策树由下面几种元素构成:1)根节点:包含样本的全集;2)内部节点:对应特征属性的测试;3)叶节点:代表决策结果。决策树得生成逻辑流程如图所示,从图中可以观察发现,决策树的生包含3个关键环节:特征选择、决策树的生成、决策树得剪枝。决策树分类算法特征选择:决定使用哪些特征来做树的分裂节点。在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。在特征选择中通常使用的准则是:信息增益。
决策树生成:选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,具有最大信息增益的属性被作为决策树的节点,根据该特征的不同取值建立子节点;对接下来的子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。决策树剪枝:剪枝的主要目的是防止模型的过拟合,通过主动去掉部分分支来降低过拟合的风险。决策树分类算法决策树算法的原理:
决策树算法有三种非常典型的算法原理:ID3、C4.5、CART。其中,ID3是最早提出的决策树算法,它是利用信息增益来选择特征的。C4.5算法:它是ID3的改进版,他不是直接使用信息增益,而是引入“信息增益比”指标作为特征的选择依据。CART(ClassificationandRegressionTree)这种算法即可以用于分类,也可以用于回归问题。CART算法使用了基尼系数取代了信息熵模型。模型生成流程:
1)从根节点开始,依据决策树的各种算法的计算方式,计算各个特征的做为新的分裂节点的衡量指标的值,选择计算结果最优的特征作为节点的划分特征(其中,ID3算法选用信息增益值最大的特征,C4.5使用信息增益率,CART选用基尼指数最小的特征);
2)由该特征的不同取值建立子节点;
3)再对子节点递归地调用以上方法,构建决策树;
4)直到结果收敛(不同算法评价指标规则不同);
5)剪枝,以防止过拟合(ID3不需要)。案例分析支持向量机分类算法支持向量机(SupportVectorMachines,SVM)是一种二分类模型。其学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如图所示,即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。
支持向量机分类算法-支持向量机算法原理和公式推导假设训练集合为:
D={(xi,yi)|xi其中xi为第i个特征向量,yi为xi的类标记,当它等于+1时为正例;当为-1时为负例。再假设训练数据集是线性可分的。几何间隔:对于给定的数据集T和超平面关于样本(xi,yi)点的几何间隔为下式所示:,定义超平面超平面关于所有样本点的几何间距的最小值为下式:支持向量机分类算法-支持向量机算法原理和公式推导实际上,这个距离就是我们所谓的支持向量到超平面的距离。根据以上定义,SVM模型的求解最大分割超平面问题可以表示为以下约束最优化问题:经过一系列化简,求解最大分割超平面问题又可以表示为以下约束最优化问题,如下所示:支持向量机分类算法-支持向量机算法原理和公式推导这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到:当数据线性可分时,对求导,得到如下:支持向量机分类算法-支持向量机算法原理和公式推导最终演化为下式最后,求解得到函数的参数,即可以得到分类函数。案例分析有训练数据如下图6.10展示所示,其中正例点是x1=(3,3)T,x2=(4,3)T,负例点是x3=(1,1)T,试求最大间隔分离超平面。
图6.10
样本数据非监督学习聚类分析是机器学习中非监督学习的重要的部分,其旨在发现数据中各元素之间的关系,组内相似性越大,组间差距越大,聚类效果越好。在目前实际的互联网业务场景中,把针对特定运营目的和商业目的所挑选出的指标变量进行聚类分析,把目标群体划分成几个具有明显特征区别的细分群体,从而可以在运营活动中为这些细分群体采取精细化,个性化的运营和服务,最终提升运营的效率和商业效果。非监督学习此外,聚类分析还可以应用于异常数据点的筛选检测,例如:在反欺诈场景、异常交易场景、违规刷好评场景......聚类算法都有着非常重要的应用,聚类算法样式如图所示。聚类分析大致分为5大类:基于划分方法的聚类分析、基于层次方法的聚类分析、基于密度方法的聚类分析、基于网格方法的聚类分析、基于模型方法的聚类分析,本小节将挑选部分内容来做介绍。划分式聚类方法给定一个有N个元素的数据集,将构造K个分组,每一个分组就代表一个聚类,K<N。这K个分组需要满足下列几个条件:(1)每一个分组至少包含一个数据纪录;(2)每一个数据纪录属于且仅属于一个分组(注意:这个要求在某些模糊聚类算法中可以放宽);对于给定的K,算法首先给出一个初始的分组方法,以后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案都较前一次好,而所谓好的标准就是:同一分组中的记录越近越好,而不同分组中的纪录越远越好。使用这个基本思想的算法有:K-means算法、K-Medoids算法、Clarants算法。这里以最为基础简单的K-means算法为例详细展开阐述。K-meansK-means
备注:这里收敛原则具体是指簇中心收敛,即其保持在一定的范围内不再变动时,停止算法。
通过上述算法流程的描述,可以看到k-means算法的一些缺陷,比如:簇的个数k值的选取和簇中心的具体位置的选取是人为设定,这样不是很准确。当然,目前有一些解决方案,例如肘方法辅助k值的选取。另外,由于簇内中心的方法是簇内样本均值,所以其受异常点的影响非常大。最后,由于k-means采用欧式距离来衡量样本之间的相似度,所以得到的聚簇都是凸如图所示,不能解决其他类型的数据分布的聚类,有很大的局限性。基于上述问题,k-means算法衍生出了例如K-Meidans、K-Medoids、K-Means++等方法。案例分析层次化聚类方法层次聚类方法将数据对象组成一颗聚类树,如图所示。
图6.13聚类树层次化聚类方法根据层次的分解是自底向上(合并)还是自顶向下(分裂),层次聚类法可以进一步分为凝聚的(agglomerrative)和分裂的(divisive)。即可以说有两种类型的层次聚类方法: 1.凝聚层次聚类 2.分裂层次聚类层次化聚类方法-凝聚层次聚类采用自底向上的策略,首先将每个对象作为单独的一个簇,然后按一定规则合并这些小的簇形成一个更大的簇,直到最终所有的对象都在层次的最上层一个簇中,或者达到某个终止条件。Agnes是其代表算法,如下图所示。层次化聚类方法-分裂层次聚类:采用自顶向下的策略,首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一个簇,或者达到终止条件。Diana是其代表算法,如下图所示。层次化聚类方法-Agnes凝聚层次聚类输入:n个对象,终止条件簇的数目k。输出:k个簇,达到终止条件规定的簇的数目。算法流程:1、将每一个元素当成一个初始簇;2、循环跌倒,直到达到定义的簇的数目;{ a)根据两个簇中最近的数据点找到最近的两个簇; b)合并两个簇,生成新的簇}案例分析案例分析基于密度的聚类方法基于密度的聚类算法是根据样本的密度分布来进行聚类。通常情况下,密度聚类从样本密度的角度出来,来考查样本之间的可连接性,并基于可连接样本不断扩展聚类簇,以获得最终的聚类结果,聚类后的分布形式如图所示。其中最有代表性的的基于密度的算法是DBSCAN算法.
图6.15基于密度的聚类分布结果DBSCAN-基本术语DBSCAN-基本术语DBSCAN-基本术语DBSCAN案例分析强化学习在人工智能的发展过程中,强化学习已经变得越来越重要,它的理论在很多应用中都取得了非常重要的突破。尤其是在2017年的1月4日晚,DeepMind公司研发的AlphaGo升级版master在战胜人类棋手时,突然发声自认:“我是AlphaGo的黄博士”。自此,Master已经取得了59场的不败纪录,将对战人类棋手的纪录变为59:0。而Master程序背后所应用的强化学习思想也收到了广泛的关注,那么本小节就来简单的介绍下机器学习领域中非常重要的一个分枝——强化学习。强化学习vs监督学习和非监督学习强化学习从以下几个方面明显区别于传统的监督学习和非监督学习:1)强化学习中没有像监督学习中明显的“label”,它有的只是每次行为过后的反馈;2)当前的策略,会直接影响后续接收到的整个反馈序列;3)收到反馈或者是奖励的信号不一定是实时的,有时甚至有很多的延迟;4)时间序列是一个非常重要的因素。强化学习问题描述强化学习的组成强化学习问题描述强化学习问题描述基于上述描述,因此强化学习系统中的个体(agent)可以由一下三个组成部分中的一个或是多个组成:-策略(Policy)-价值函数(ValueFunction)-环境的模型(modeloftheenvironment)强化学习问题描述-策略(Policy)强化学习问题描述-价值函数(ValueFunction)强化学习问题描述-环境的模型强化学习问题分类1、仅基于价值函数(valuebased)的解决思路:在这样的解决问题的思路中,有对状态的价值估计函数,但是没有直接的策略函数,策略函数由价值函数间接得到。2、仅直接基于策略的(PolicyBased)的解决思路:这样的个体中行为直接由策略函数产生,个体并不维护一个对各状态价值的估计函数。3、演员-评判家形式(Actor-Critic)的解决思路:个体既有价值函数、也有策略函数。两者相互结合解决问题。案例分析一字棋为例,三个人轮流下,直到有一个人的棋子满足一横或者一竖则为赢得比赛,或者这个棋盘填满也没有人赢,则为和棋。一字棋案例分析环境的状态S,这是一个九宫格,每个格子有三种状态,即没有棋子(取值0),有第一个选手的棋子(取值1),有第二个选手的棋子(取值-1)。那么这个模型的状态一共有3^9=1968339=19683个。动作A,这里只有9个格子,每次也只能下一步,所以最多只有9个动作选项。实际上由于已经有棋子的格子是不能再下的,所以动作选项会更少。实际可以选择动作的就是那些取值为0的格子。环境的奖励R,这个一般是自己设计。由于实验的目的是赢棋,所以如果某个动作导致的改变到的状态可以使我们赢棋,结束游戏,那么奖励最高,反之则奖励最低。其余的双方下棋动作都有奖励,但奖励较少。特别的,对于先下的棋手,不会导致结束的动作奖励要比后下的棋手少。个体的策略(policy),这个一般是学习得到的,会在每轮以较大的概率选择当前价值最高的动作,同时以较小的概率去探索新动作。案例分析整个过程的逻辑思路如下所示:REPEAT{if分出胜负或平局:
返回结果,break;Else
依据ϵ概率选择explore或1-ϵ概率选择exploit:if选择explore模式:
随机的选择落点下棋;else选择exploit模型:
从value_table中查找对应最大value状态的落点下棋;
根据新状态的value在value_table中更新原状态的value;}神经网络和深度学习
深度学习(DeepLearning)是近些年来在计算机领域中,无论是学术界还是工业界都备受关注、发展迅猛的研究领域。它在许多人工智能的应用场景中,都取得了较为重大的成功和突破,例如:图像识别、指纹识别、声音识别、自然语言处理......但正如前面所讲,从本质上说,深度学习是机器学习的一个分支,它代表了一类问题以及它们的解决方法。而人工神经网络(ArtificialNeuralNetwork,ANN),又简称神经网络,由于其可以很好地解决深度学习中的贡献度分配问题,所以神经网络模型被大量的引入用来解决深度学习的问题。感知器模型
深度学习(DeepLearning)是近些年来在计算机领域中,无论是学术界还是工业界都备受关注、发展迅猛的研究领域。它在许多人工智能的应用场景中,都取得了较为重大的成功和突破,例如:图像识别、指纹识别、声音识别、自然语言处理......但正如前面所讲,从本质上说,深度学习是机器学习的一个分支,它代表了一类问题以及它们的解决方法。而人工神经网络(ArtificialNeuralNetwork,ANN),又简称神经网络,由于其可以很好地解决深度学习中的贡献度分配问题,所以神经网络模型被大量的引入用来解决深度学习的问题。感知器模型图
感知器原理示意图感知器模型感知器模型前馈神经网络一个感知器处理的问题还是比较简单,但当通过一定的连接方式将多个不同的神经元模型组合起来的时候,就变有了神经网络。其处理问题的能力也大大的提高。这里,有一种连接方式,叫做“前馈网络”。它是整个神经元模型组成的网络中,信息朝着一个方向传播,没有反向的回溯。按照接受信息的顺序不同被分为不同的层,当前层的神经元接受前一层神经元的输出,并将处理过的信息输出传递给下一层。前馈神经网络第一层神经元被称为输入层,它所包含的神经元个数不确定,大于1就好,此处为三个。最后一层,被称为输出层,它所涵盖的神经的个数也是可以根据具体情况具体确定的,图例中输出层两个个神经元,其可以根据实际情况有多个输出的神经元。中间层被统一称为隐层,隐层的层数不确定,每一层的神经元的个数也可以根据实际情况进行调整。前馈神经网络卷积神经网络
卷积神经网络(ConvolutionalNeturalNetwork,CNN)是前馈神经网络中的一种,但当使用全连接前馈神经网络进行图像信息的处理时,全连接前馈神经网络存在由于参数过多,进而导致计算量过大和图像中物体的局部不变的特征不能顺利提取出的问题。卷积神经网络通常由以下三层交叉堆叠而组成:卷积层、汇聚层(PoolingLayer)、全连接层。卷积神经网络-手写数字识别卷积神经网络-具体工作流程1、把手写字体图片转换成像素矩阵(32,32)作为输入数据;2、对像素矩阵进行第一层卷积运算,生成六个featuremap为上图C1(28,28);3、对每个featuremap进行池化操作,其在在保留featuremap特征的同时缩小数据量。生成六个小图S2(14,14),这六个小图和上一层各自的featuremap长得很像,但尺寸缩小了。卷积神经网络-具体工作流程4、对六个小图进行第二层卷积运算,生成更多featuremap,为C3(10,10);5、对第二次卷积生成的featuremap进行池化操作,生成16张S4(5,5);6、进行第一层全连接层操作;7、进行第二层全连接层操作;8、高斯连接层,输出结果;卷积神经网络它的作用是在原图中把符合卷积核特征的特征提取出来,进而得到特征图(featuremap)。所以卷积核的本质就是将原图中符合卷积核特征的特征提取出啦,展示到特征图当中。卷积层池化池化又叫做下采样(subsampling),它的目的是在保留特征的同时压缩数据量。用一个像素代替原图上邻近的若干像素,在保留featuremap特征的同时压缩其大小。因此它的作用:防止数据爆炸,节省运算量和运算时间,同时又能防止过拟合、过学习。其它类型结构的神经网络其又可以被称为反馈网络。相比于前馈神经网络仅接受上一层神经元传递的信息,在记忆网络中的神经元不但可以接受其它神经元的信息,它还可以记忆自己在历史状态中的各种状态来获取信息。在记忆神经网络中,信息传播可以是单向的或者是双向的,其结构示意图如图所示。包括:循环神经网络、HopField神经网络、玻尔兹曼机、受限玻尔兹曼机等。记忆网络其它类型结构的神经网络图网络结构类型的神经网络是前馈神经网络结构和记忆网络结构的泛化,它是定义在图结构数据上的神经网络。图中的每个节点都是由一个或是一组神经元构成,节点之间的连接可以是有向的,也可以是无向的。图网络图网络结构案例分析案例分析案例分析案例:银行贷款用户筛选借贷业务是银行资产业务的重要基础。银行拥有大量的拥有不同资产规模的储户,如何精准有效的将存款用户转化成为贷款用户,进而提高银行的收入,同时又能规避不合规用户带来的坏账风险,一直是银行业务部门需要研究的重要问题。即通过银行后台现有收集到的用户的数据,明确现有储户的潜在需求。这里,我们采用逻辑斯特回归分类模型来解决银行可放贷用户的筛选问题。案例:银行贷款用户筛选确定特征属性及划分训练集,其中用于训练数据的数据集如图所示。在实际应用中,特征属性的数量很多,划分的比较细致,这里我们为了方便起见,选用最终计算好的复合指标,分别是商业信用指数和竞争等级作为模型训练的属性维度。Label表示最终对用户贷款的结果,1表示贷款成功,0表示贷款失败。另外,由于实际的样本量比较大,这里只截取部分数据如上表6.10所示供大家参考。案例:银行贷款用户筛选-模型构造案例:银行贷款用户筛选-预测函数的参数求解案例:银行贷款用户筛选-用户筛选分类预测第4章Logistic回归
导入导入171
目录172线性回归Logistic回归用PyTorch实现logistic
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年绥化市高考语文二模试卷含解析
- 2026年四川省崇州市高三历史上册期末考试模拟卷含完整答案【夺冠系列】
- 2026年黑龙江省宁安市高二历史下册期末考试考试卷含完整答案【各地真题】
- 2025年河北省河间市高三历史上册期末考试测试卷及参考答案(考试直接用)
- 2026奥海电源工程师面试题及答案
- 婚介师岗前基础在岗考核试卷含答案
- 热工试验工岗前实操操作考核试卷含答案
- 飞机起落架、冷气、液压系统安装调试工岗前激励考核试卷含答案
- 鉴定估价师安全行为评优考核试卷含答案
- 动物胶提胶浓缩工冲突管理能力考核试卷含答案
- 2026-2030中国丙烷脱氢(PDH)市场专项调研与营销创新发展趋势分析研究报告
- 2026年甘肃省兰州市重点中学小升初英语考试真题和答案
- 凝心聚力、共赴高考-2026届高三高考动员主题班会
- 某机械厂安全生产管理准则
- DZ∕T 0270-2014 地下水监测井建设规范
- QY130V633技术规格书(含配套件)
- 三年级数学下册《暑假作业》(共50套)
- 水利工程施工课程设计
- DB14∕T 1925-2019 流通领域供应链标准体系
- 2022年中考语文12本名著导读考点梳理
- GB/T 30791-2014色漆和清漆T弯试验
评论
0/150
提交评论