机器学习是一个大约在1960年创造的术语,主要涉及让计算机、机器人等设备模仿人类在某些活动或任务上的表现。
为什么我们需要机器学习呢?因为我们生活中有许多问题涉及庞大的数据集或复杂的计算,这时让计算机来处理这些问题是非常理想的。此外,计算机和机器人不会感到疲劳,也不需要休息,而且运营成本更低。近年来,一种新的思想流派——自动学习或人为循环——逐渐兴起。这一流派主张将机器学习与人类的工作相结合,认为有些日常而单调的任务更适合交给计算机处理,而富有创意的任务则更适合人类。这种理念表明,机器和人类是可以共同协作解决问题的。
机器学习并不依赖传统的编程方式。在传统编程中,我们需要编写涵盖所有可能情况的规则。那么,为什么不雇佣更多的软件工程师并继续编写新的规则呢?主要原因之一是随着时间推移,定义、维护和更新规则的成本越来越高。活动或事件的可能形式非常多,试图穷尽所有情况实际上不可行,尤其是在面对动态、不断变化或实时变化的问题时。相反,开发算法让计算机能够自主学习并从大量数据中提取规律,这种方法更加简便高效。
另一个原因是数据量呈指数级增长。现在,我们每天接触到的文本、音频、图像和视频数据量巨大。特别是在物联网时代,我们与各种日常设备互动的数据量更是庞大。例如,物联网推动了家用电器和自动驾驶汽车等领域产生大量数据。除了数据量的增加,由于存储成本下降,过去几年中可用数据的质量也在不断提高。这些因素共同促进了机器学习算法和数据驱动解决方案的发展。
马云在一次演讲中提到,信息技术在过去20年里是重点,而在接下来的30年里,我们将迎来数据技术的时代。在信息技术时代,借助计算机软件和基础设施,公司变得越来越强大。如今,大多数行业已经积累了大量数据,因此利用数据技术来挖掘洞察力、发现模式并促进业务增长的时机已经成熟。从广义上讲,机器学习技术使企业能够更好地了解客户需求并与其互动,还能优化内部管理。对我们个人而言,机器学习技术正逐渐改善我们的日常生活。
我们熟悉的机器学习应用之一是垃圾邮件过滤。另一个应用是在线广告,根据广告商收集的关于我们的信息自动推送广告。搜索引擎也是机器学习的应用之一,涉及信息检索(解析我们想要查找的内容并查询相关记录),以及上下文排名和个性化排名,这些都涉及到机器学习。
在1997年,深蓝超级计算机战胜了世界象棋冠军。2005年,斯坦福大学的一辆自动驾驶汽车在沙漠中行驶了130多公里。2007年,另一支车队的汽车也完成了类似的挑战。2011年,IBM的Watson计算机在一场知识竞赛中战胜了人类对手。2016年,AlphaGo项目击败了世界顶尖围棋选手之一。
在未来,机器学习将发挥更大的作用!
机器学习是人工智能的一个分支,属于计算机科学领域。它还与线性代数、概率论、统计学和数学优化紧密相关。我们通常使用统计、概率论和线性代数建立机器学习模型,然后运用数学优化来优化模型。
机器学习系统需要接收输入数据,可以是数字、文本、视觉或视听信息。系统通常会处理这些输入,例如自动驾驶汽车的加速度或图像中的物体类别。
机器学习的主要任务是从历史数据中学习并根据新数据做出预测。为了评估模型的学习效果,我们需要定义一个评价函数,称为损失函数或成本函数。
根据学习数据的性质,机器学习任务可以大致分为三种类型:
无监督学习:当学习数据只包含指示性信号但没有任何描述或标签时,我们自己需要发现隐藏的信息或确定如何描述数据。这种数据被称为未标记数据。无监督学习常用于检测异常情况(如欺诈或有缺陷的设备)或将具有相似在线行为的客户分组以进行营销活动。
有监督学习:当学习数据带有指示性信号、描述、目标或期望的输入时,学习的目标是寻找将输入映射到输出的通用规则。这种数据被称为标记数据。我们使用学到的规则对新数据进行预测。标签通常由事件记录系统和专家提供,有时也可以通过众包等方式由公众提供。有监督学习广泛应用于日常生活中的场景,如面部识别、语音识别、产品推荐和销售预测。我们还可以进一步细分有监督学习为回归和分类。回归用于预测连续值(如房价),而分类用于确定合适的类别标签(如分析情绪和预测贷款违约)。
半监督学习:当只有部分学习样本被标记时,我们结合少量标记数据和大量未标记数据进行训练。半监督学习适用于获取完全标记的数据集成本较高的情况。例如,我们可以通过简单的手段获取大量未标记的遥感图像数据,但需要专家对高光谱遥感图像进行标注,并通过大量的现场实验来发现油气资源。
强化学习:学习数据提供反馈,使系统适应动态条件以实现特定目标。系统根据反馈评价其性能并作出相应调整。著名的例子包括自动驾驶汽车和AlphaGo。
如果你对这些抽象概念感到困惑,没关系,我刚开始接触时也有同样的感受。后续的文章中,我将通过具体的实例来解释机器学习,比如垃圾邮件检测中的朴素贝叶斯算法、股票价格预测中的逻辑回归算法等。
最后,我写这些内容的主要目的是督促自己,并希望得到大家的关注和反馈,一起进步。我会详细地撰写每篇文章,确保读者能够根据文章中的示例代码获得相同的结果。我的目标是让零基础的读者也能轻松理解,因为我就是这样从零开始学习Python的。