长春哪家网站做的好,网站开发的工作要求,必应网站提交入口,黑龙江建筑施工管理平台【作者主页】Francek Chen 【专栏介绍】⌈Python机器学习⌋ 机器学习是一门人工智能的分支学科#xff0c;通过算法和模型让计算机从数据中学习#xff0c;进行模型训练和优化#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言#xff0c;依赖于强大的开… 【作者主页】Francek Chen 【专栏介绍】⌈Python机器学习⌋ 机器学习是一门人工智能的分支学科通过算法和模型让计算机从数据中学习进行模型训练和优化做出预测、分类和决策支持。Python成为机器学习的首选语言依赖于强大的开源库如Scikit-learn、TensorFlow和PyTorch。本专栏介绍机器学习的相关算法以及基于Python的算法实现。 文章目录 一、人工智能的“两只手和四条腿”二、机器学习是什么三、时代造就机器学习的盛行四、泛化能力机器学习奏效的本质五、归纳偏置机器学习模型的“天赋”六、机器学习的限制 我们生活在一个人工智能的时代生活中现在已随处可见人工智能技术的影子。在大学的食堂学生把打好菜的托盘放到摄像头下面机器就可以自动识别每个餐盘的形状来自动计算这顿饭的价格而在校园的大部分电梯里学生可以说例如“我要去3楼”电梯则可以自动带学生去3楼这在疫情期间更加方便卫生。或许对于“20后”的孩子们而言智能就像能源一样从他们记事起就随处可见、随手可得就像移动互联网之于“10后”一样。
一、人工智能的“两只手和四条腿” 人工智能大概长什么样呢做一个有画面感的描述人工智能有“两只手和四条腿”。“两只手”代表的是人工智能可以做的两大类任务即预测与决策。预测包括对给定输入目标的模式识别、标签分类和回归或者预测未来的数据以及对数据做聚类或生成例如语音识别与合成。而决策则需要机器产生相关的动作下达到环境中并改变环境例如下围棋和自动驾驶控制。“四条腿”则代表支撑人工智能的四大类科学技术包括搜索、推理、学习和博弈。搜索是在给定的数学环境中以既定的算法去探索选择分支的好坏并最终做出决策的方法可以使用在下围棋、路径规划等任务中。推理是基于给定的规则或知识使用逻辑归纳的方式得到进一步的规则或知识进而完成给定问题的作答例如数学定理的自动证明、知识问答等。学习即机器学习machine learning则是机器通过经验数据对任务目标做出优化的自动化过程例如人脸识别、语音识别等。博弈则关注多个人工智能智能体之间的交互例如桥牌对战、足球团队配合等。 通过上面的简述我们可以大概知道一个人工智能的全貌。过去十年间人工智能的主要进展在机器学习技术方面以至于甚至分不清人工智能和机器学习之间的关系。在这里重点讨论人工智能中服务预测任务的机器学习技术。而支撑决策任务的机器学习技术被称为强化学习reinforcement learning。
二、机器学习是什么 那就究竟什么是学习呢诺贝尔经济学奖和图灵奖双料得主、卡耐基梅隆大学的赫尔伯特·西蒙教授是这样定义学习的“学习是系统通过经验提升性能的过程”。可以看到学习是一个过程并且这里有三个关键词即经验、性能、提升。首先学习的目标是提升某个具体性能例如我们学习开车时希望能提升自己的车技这个可以通过一些驾驶的测试来获得具体的指标分数。其次学习是基于经验的也就是我们经历过的事情例如我们在驾驶过程中遇到的情况以及当时的具体动作和结果这其实就是数据。因此如果用比较计算机的语言来描述学习就是系统基于数据来提升既定指标分数的过程。 有了上述对于学习是怎样一个过程的理解现在我们就比较好定义机器学习了。根据机器学习泰斗、卡耐基梅隆大学的汤姆·米歇尔教授的定义机器学习是一门研究算法的学科这些算法能够通过非显式编程non-explicit programming的形式在某个任务上通过经验数据来提升性能指标。一组学习任务可以由三元组在〈任务, 指标, 数据〉来明确定义。 用较为数学的语言来描述机器学习则可以使用一个优化问题来刻画。针对某一预测任务其数据集为 D \mathcal{D} D对于一个机器学习预测模型 f f f预测任务的性能指标可以通过一个函数 T ( D , f ) T(\mathcal{D},f) T(D,f) 来表示那么机器学习的过程则是在一个给定的模型空间 F \mathcal{F} F中寻找可以最大化性能指标的预测模型 f ∗ f^* f∗ f ∗ arg max f ∈ F T ( D , f ) M L ( D ) f^* \arg\max_{f\in \mathcal{F}} T(\mathcal{D}, f) \mathrm{ML}(\mathcal{D}) f∗argf∈FmaxT(D,f)ML(D) 这里的 M L ( D ) \mathrm{ML}(\mathcal{D}) ML(D)则表示机器学习可以被看成是一个输入数据集、输出解决任务算法的算法。 这里说的非显式编程是什么特性呢一般人工智能技术的实现都是需要人首先充分了解任务和解决方法并根据具体的解决思路编写程序来完成该任务。例如地图的导航任务系统需要首先将城市的路网建模成一个图结构然后针对具体起点到终点的任务寻找最短路径例如使用 A* 搜索算法。因此显式编程需要开发者首先自己可以完成该智能任务才能通过实现对应的逻辑来使机器完成它相当于要事先知道了 f ∗ f^* f∗然后直接实现它。这其实大大抬高了人工智能技术的门槛它需要有人能解决任务并通过代码来实现解决方法。而有的智能任务是很难通过这样的方式来解决的例如人脸识别、语音识别这样的感知模式识别任务其实我们自己也不清楚是如何来精准识别平时碰到的每个人的脸的也就更加无法编写程序来直接实现这个逻辑亦或是例如深海无人艇航行、无人机飞行等人类自己无法完成的任务自然也无法通过直接编程来实现。 具体地在上述优化范式中我们在一个模型空间 F \mathcal{F} F中寻找最优模型 f ∗ f^* f∗的过程可以是一个持续迭代的形式即 f 0 → f 1 → f 2 → ⋯ → f ∗ f_0 \rightarrow f_1 \rightarrow f_2 \rightarrow \cdots \rightarrow f^* f0→f1→f2→⋯→f∗ 而这个寻找最优模型 f ∗ f^* f∗的过程就是机器学习。机器学习的算法可以对应从 f i f_i fi迭代到 f i 1 f_{i1} fi1的程序。 华盛顿大学的佩德罗·多明戈斯Pedro Domingos教授将机器学习比喻成“终极算法”因为有了机器学习技术只需要拥有任务的数据就可以得到解决任务的算法。这样程序员就可以“往后站一步”从直接编写各类任务具体的算法代码转为编写机器学习算法代码然后在不同任务中基于任务自身的数据学习出一个解决该任务的算法即机器学习模型出来如图1所示。 图1 传统的显式编程与机器学习的非显式编程 三、时代造就机器学习的盛行 那么机器学习技术为什么现在如此盛行呢主要原因之一来自于时代造就2006年美国亚马逊公司推出云计算服务云计算技术开始普及不少公司开始将大量业务数据存储到云平台。2011年大数据概念开始深入人心大量的公司基于云计算平台积累下来的大数据开始挖掘价值而基于大数据的机器学习技术则开始越来越被重点关注。2012年深度学习率先在计算机视觉领域取得大的突破随后2013年的自然语言处理、语音识别和深度强化学习等人工智能分支和应用场景开始大爆发。我们可以看到在云计算和大数据的基础下机器学习作为一种在数据和算力给足的情况下可以变得更强大的人工智能技术获得了充分成长的条件。而到了2020年代的今天我们已经看到机器学习技术开始从数据量最多的互联网场景在大量外溢到传统工业、农业场景例如工厂的能效优化和排产规划农田收成预测与种植规划等各个行业在经历一个数字化转型和智能化升级的阶段。我们有理由相信未来10年机器学习技术会持续渗透到各行各业在各类预测和决策任务场景中服务人类。 按照任务来分类机器学习可以分为有监督学习、无监督学习和强化学习三大类。 监督学习supervised learning训练集 D \mathcal{D} D中的每一个数据实例 ( x , y ) (\boldsymbol{x},y) (x,y) 由特征和标签组成。模型的任务是根据数据的特征来预测其标签。模型的性能指标可以由一个损失函数 L ( y , f ( x ) ) L(y, f(\boldsymbol{x})) L(y,f(x)) 来定义。该损失函数衡量具体的数据实例 ( x , y ) (\boldsymbol{x},y) (x,y) 上的预测偏差性能指标可以定义为损失函数的负数。由此有监督学习的一般形式可以写为 f ∗ arg min f 1 ∣ D ∣ ∑ ( x , y ) ∈ D L ( y , f ( x ) ) f^*\arg\min_f \frac{1}{|\mathcal{D}|}\sum_{(\boldsymbol{x},y)\in \mathcal{D}} L(y,f(\boldsymbol{x})) f∗argfmin∣D∣1(x,y)∈D∑L(y,f(x)) 无监督学习unsupervised learning无监督学习的任务目标多种多样但大多需要我们学习数据的分布 p ( x ) p(x) p(x)。与有监督学习不同无监督学习任务中的数据没有标签的概念或者说所有数据维度都是同等重要的也即是训练集 D \mathcal{D} D的每一个数据实例仅由数据特征 x \boldsymbol{x} x来表示。这时我们往往使用概率分布模型 p ( x ) p(\boldsymbol{x}) p(x)来建模数据的分布。在数据实例满足独立同分布的普遍假设下整个数据集的对数似然log-likelihood则作为无监督学习需要最大化的目标即 p ∗ arg max p 1 ∣ D ∣ ∑ x ∈ D log p ( x ) p^*\arg\max_p \frac{1}{|\mathcal{D}|}\sum_{\boldsymbol{x}\in \mathcal{D}} \log p(\boldsymbol{x}) p∗argpmax∣D∣1x∈D∑logp(x) 对比有监督学习和无监督学习有监督学习的只关心基于数据特征对标签的预测是否精准而并不关心数据特征之间的相关性等模式。例如人脸识别就是一个典型的有监督学习任务模型只关心输入人脸图像后是否能准备预测对应的身份而不关注输入图像本身是否是包含一个人脸。而无监督学习则关注数据的分布与其中包含的模式如关注人脸图像的概率分布并可以判断一张给定的图像是否包含一个人脸甚至可以生成一张新的人脸图像。
强化学习reinforcement learning与有监督学习和无监督学习关于人工智能中的预测问题不同强化学习关注人工智能中的决策问题。强化学习是寻找更好的决策策略的过程而优化的目标则是策略决策带来的累积回报的期望。由于强化学习的数学建模方式与有监督学习和无监督学习有较大差距因此这里不具体给出数学公式。 按照建模方式来分类机器学习模型可以分为参数化模型和非参数化模型两大类。 参数化模型parametric model在一套具体的模型族model family内每一个具体的模型都可以用一个具体的参数向量来唯一确定因此确定了参数向量也就确定了模型。例如在上述有监督学习中可以将参数向量 θ \boldsymbol{\theta} θ预测模型的下标即 f θ f_{\boldsymbol{\theta}} fθ来表示参数化模型。因此参数化模型的监督学习也可以写成是寻找最优参数 θ ∗ \boldsymbol{\theta}^* θ∗的过程即 θ ∗ arg min θ 1 ∣ D ∣ ∑ ( x , y ) ∈ D L ( y , f θ ( x ) ) \boldsymbol{\theta}^*\arg\min_{\boldsymbol{\theta}} \frac{1}{|\mathcal{D}|}\sum_{(\boldsymbol{x},y)\in \mathcal{D}} L(y,f_{\boldsymbol{\theta}}(\boldsymbol{x})) θ∗argθmin∣D∣1(x,y)∈D∑L(y,fθ(x)) 参数化模型的一大性质是模型的参数量不随着训练数据量而改变。因此在计算过程中模型占用计算机的资源如内存或者显存是固定的。 线性回归、逻辑回归、双线性模型、神经网络模型都是典型的参数化模型。求解上述最优参数可以借助损失函数针对模型参数的梯度来完成方法具有普适性因此参数化模型整体上比非参数化模型更加普遍有很多机器学习代码库的支持包括深度学习框架PyTorch、TensorFlow等。 非参数化模型nonparametric model与参数化模型相反非参数化模型并非由一个具体的参数向量来确定其训练的算法也不是更新模型的参数而是由具体的计算规则直接在模型空间中寻找模型实例。由于模型和参数并非一一对应因此数据量的不同或者数据的不同会导致模型中具体使用到的参数量也不同。对于有的非参数化模型例如KNN、高斯过程其参数量和训练数据量成正比即每个数据实例就是一个参数。KNN、树模型、支持向量机都是极其重要的机器学习模型并且在实践中具有不可替代的功能。可以理解为参数化模型将从数据中学到的知识注入到参数中而非参数化模型则保留数据本身作为知识。
四、泛化能力机器学习奏效的本质 那么为什么机器学习模型通过在有限的数据上训练后就可以在其他没见过的数据上做出一定精度的预测呢在机器学习里泛化能力generalization ability被用来描述一个智能模型在没见过的数据上的预测性能。一般使用泛化误差来量化一个模型的泛化能力具体定义为模型在给定数据分布下的损失函数值的期望 R ( f ) ∫ ( x , y ) p ( x , y ) L ( y , f ( x ) ) d ( x , y ) R(f)\int_{(\boldsymbol{x},y)}p(\boldsymbol{x},y)L(y,f(\boldsymbol{x})) \text{d}(\boldsymbol{x},y) R(f)∫(x,y)p(x,y)L(y,f(x))d(x,y) 机器学习的底层是数理统计其基本原理是相似的数据拥有相似的标签。机器学习模型对于新数据的标签预测的“底气”在于见过类似的数据这样的泛化能力可以被称为统计泛化。定性来讲如果预测任务越简单训练数据量越大那么学到的机器学习模型的泛化能力就越强。另一方面选择的机器学习模型的复杂性和其泛化能力并没有直接的对应关系。具体来说模型空间越复杂其建模能力越强但也越需要足够的训练数据来支撑否则模型可能由于“过拟合”数据而导致其泛化能力低下。
五、归纳偏置机器学习模型的“天赋” 在给定的任务和训练数据集下不同的机器学习模型训练出来的性能总是不同的或者反过来说让不同的机器学习模型的给定任务下达到相同的泛化能力需要的训练数据量往往也是不同的。这背后的原因是不同的机器学习模型对特定数据模式的归纳偏置inductive bias不同。所谓归纳偏置就是指模型对问题的先验假设比如假设空间上相邻的样本有相似的特征。归纳偏置可以让模型在缺乏对样本的知识时也能给出预测对某类数据的归纳偏置更强的模型能够更快地学到其中的模式。例如神经网络模型对同分布域的感知数据的归纳偏置就很强处理图像和语音的模式识别任务效果非常好而树模型对混合离散连续的结构化数据的归纳偏置很强对于银行表单数据和医疗风险的预测效果很好。可以说归纳偏置就是机器学习模型的天赋。图2展示了线性分类模型和圆形分类模型的分类决策边界。可以看出当数据分布在直线两侧时线性分类模型可以很轻松地将两类数据分开而当数据呈里外两类分布时圆形分类模型则能更容易地将两类数据分开这体现出两个模型归纳偏置的不同。 图2 不同模型有不同的天然决策边界 因此对于不同的任务、不同的数据选择怎样的模型是机器学习算法工程师需要重点考虑的。在企业里一个好的机器学习算法工程师能根据自己的经验为公司不同的业务选择适合的模型这样能提升模型预测的精度提升业务效率或者减少模型选型的更迭次数节约开发成本。
六、机器学习的限制 至少在目前阶段机器学习并不是万能的它在以下几个方面存在限制 数据限制在某些场景即使使用了所有的数据也可能不足以训练出一个令人满意的预测模型。在算力允许的情况下人们倾向于设计越来越复杂的模型例如千亿参数级别的线性模型或者深度神经网络模型但与之匹配的训练数据量却比较难以跟上。以互联网企业用户行为预测任务为例为了训练复杂度更高的模型需要匹配更多的训练数据因而不得不用比较早期的数据来支撑但用户在互联网平台的行为模式有一定时效性所以使用较为过时的数据可能并不能帮助模型进一步提升预测精度。 泛化能力限制机器学习的统计泛化能力并非使它无所不能。人工智能场景中有不少任务是缺乏数据或是要求举一反三的这需要逻辑推理技术的组合泛化能力。因此我们认为在通往强人工智能或称为通用人工智能的道路上机器学习是重要但并非唯一需要的技术。现在也有一些新兴的国际研讨会或者学术会议聚焦研究机器学习和符号逻辑的融合方法旨在让机器同时拥有统计泛化和组合泛化能力以解决更加复杂的智能任务。 使用形态限制就像上文描述的公式 f ∗ M L ( D ) f^*\mathrm{ML}(\mathcal{D}) f∗ML(D) 所表达的目前机器学习主要使用的形态是一个针对特定任务输入数据集输出训练好的模型的工具。这距离通用人工智能或者强人工智能还有较远的距离。未来的机器学习在具备了更好的性能条件下可以在不断收集的数据上做持续学习能自动判别和选择新的需要学习的任务能从过去多种任务的学习过程中总结更高效的学习方法在新任务中做到小样本学习融入人类的知识库并做到“举一反三”的组合泛化。