1、我对机器学习的一些简单的认识
我确信今天几乎没有人未曾听说过机器学习或人工智能技术。这个神秘的科学似乎已经渗透到了人类生活的各个领域:神经网络已经学会使用几乎任何语言翻译文本;机器学会看、分析照片和视频,甚至提高这些照片的质量;基于人工智能的银行算法决定谁应该获得贷款而谁又不应该,等等。
这些例子几乎可以无限延续下去。但问题在于:每个人都明白机器学习技术在现代科学中有多么重要,但作为学习者,我们甚至模糊地了解它们是如何工作的都尚存困难!然而有意思的是,每个学习者都可以在自己的工作中应用它们,取得更具突破性的成果,如果他们了解机器学习的工作原理的话。
我撰写此专栏的目的正是介绍机器学习在各个科学领域的应用示例,从人文学科到自然科学,同时揭示算法运行原理的秘密,当然我也想记录一下我的学习历程,嘿嘿~
如果正在看这篇文章的你是行业前辈,您大可不必驻足停步亦或是您若可指出我的文章中存在的问题,感激不尽!
作为我的第一篇专栏文章,我想讨论机器学习到底是什么科学,它有哪些分支,这些分支彼此之间有什么区别,以及机器学习算法的基本思想是什么。
让我们开始吧!
2、什么是机器学习?
让我们从名称的分析角度来接近这个问题吧!
我认为,“机器”这个形容词大家都理解 - 它指的是人类经常遇到的那些无法用传统方法自动化的单调乏味的任务。这些任务花费了人们大量的时间和精力,而且完全不给他们带来工作的乐趣和满足感。人们想要学会可以实现“自动化”这样的工作,也就是将它们委托给机器。
那么,“学习”这个词是什么意思呢?
我们通常如何理解这个词呢?比如,当一个小朋友学习字母表时,他是如何学习的?他必须记住每个字母对应的音标,然后开始重复这个对应关系。那么我们每个人都是如何做到这一点的呢?通过试错法!每当小朋友猜对了字母和音标的对应关系时,他会立即得到了大人的直接确认。而每当他犯错时,他会受到相应的否定,然后需要重新思考并得出他新的结论。
所以在这个例子中,学习是一系列有条不紊的假设,试图找到某种未知的隐藏依赖关系。而这种构建是通过环境的惩罚和奖励来实现的。
我们想要从自动化系统中实现的正是这个目标:就像一个学习阅读的小朋友一样,不断寻找数据中的复杂且未知的依赖关系,得到自己假设的确认和否定。
3、机器学习的分支
寻找数据中的未知依赖关系意味着什么?这些依赖关系是什么样的,你的数据又是什么样的呢?
原来,根据我们面临的问题类型以及原始数据的形式,机器学习分为 3 个分支:
(1)有监督学习(supervised learning)
(2)无监督学习(unsupervised learning)
(3)强化学习(reinforcement learning)
4、有监督学习
在这种设定下,我们被提供了一组训练样本,每个样本都可以通过某种方式进行数值描述。针对每个样本,都提出了一个问题,并且在训练集中已知了这个问题的答案。算法的目标是从训练集中理解,如何根据对象的描述来回答事先提出的问题。
包含了一系列对象
和标签
,而且存在着某种自然规律,将
和
关联起来:
,对于所有可能在自然界中找到的对象
,都能够满足:
难以理解?让我们通过一个例子来解释一下!
想象一下,你是一位艺术史学家,将你的一生奉献给了对绘画艺术的研究。在你的职业生涯中,你见过许多不同艺术家的作品。现在,一批打包好的画作被送到了你的博物馆,准备展出给一位知名的城市赞助商。你很高兴地接受了这项工作:这些收藏中包括了杰出的超现实主义艺术家卡齐米尔·马列维奇、海洋画家伊凡·艾瓦佐夫斯基和肖像画家卡尔·布呂洛夫的画作。你的任务非常简单 - 将每幅画放入相应的展厅,但不打开包装。
那么问题来了:快递员没有在包装上标明这些画作的名称或作者。但他们在每张画作上都写下了对三个问题的答案:
(1)画作中是否有海洋?
(2)画作是否写实?
(3)画作中是否有人物?
作为一位非常有经验的艺术史学家,你并不绝望,因为这些描述已经足够让你几乎没有错误地确定每幅画应该放在哪个展厅!
海洋画家艾瓦佐夫斯基通常在他的大部分画作中描绘海洋,细致入微地描绘海洋。超现实主义艺术家马列维奇拒绝表现传统形式,因此他的作品主要是抽象形式,有时与真实对象的图像不是很写实。肖像画家布呂洛夫在他的作品中描绘人物。
因此,通过这些描述,你能够确定哪幅画作是属于哪位艺术家,而无需打开包装。
我们试图根据这些问题来确定的标签是艺术家的姓氏。也就是说:
(请脑补一对花括号,不知为何打不出来)
我们的算法是艺术史学家。他一生都在学习辨别绘画,注意到了它们的特点,并且能够根据提出的问题来确定艺术家。
自然法则是画作在包装中的真实对应关系以及艺术家,艺术史学家试图猜测的关系。
在训练阶段,我们的训练集包括他见过的所有画作:他仔细观察每幅画,注意到了关键细节,然后可以直接确定画作的作者。换句话说,在训练阶段,算法可以访问正确的答案,而在工作阶段则不能。
有监督学习分为许多不同的任务。我们将关注其中的两个:回归问题和分类问题。
这些任务的关键区别在于我们试图做出的预测。
5、分类问题
属于某个有限的集合。换句话说,我们为每个对象
选择了
个标签中的一个。
举例:
(1)对文本进行积极和消极的分类
(2)垃圾邮件过滤器
(3)对手写数字图像进行分类
(4)确定绘画的风格
6、回归问题
。
举例:
(1)预测货币汇率
(2)预测从地图上一点到另一点的平均行驶时间
(3)预测房屋租金
7、无监督学习
在无监督学习的情况下,我们有一组未标记的数据。这意味着我们不对我们的样本提出任何问题,也不获得任何答案。我们只是想要组织我们的样本,从中获取关于它们结构的一些信息。
在这里,我们同样关注两个独立的任务。
8、聚类任务
假设我们有一组对象。我们的任务是在这个数组中识别出聚类结构。我们假设在数据集中有几个对象组成多个群集,每个群集内的对象在某种特征上彼此相似,而彼此之间则不同。
聚类问题经常被用来代替分类问题(请注意,这两个问题本质上是相似的)。例如,当存在多个对象类别时,不同类别的对象显著不同,我们可以不对数据进行标记,而是使用聚类算法。
例如,根据主题对文本进行聚类或者根据图像中显示的对象对图像进行聚类。
9、降维任务
这个问题的意义有些难以理解:它经常出现在各种信息系统中,作为信息压缩和应对“维度灾难”的一部分。现在我们不会详细讨论这个问题,但我们在课程中一定会遇到它,并讨论一些解决方法。
10、特征有哪些?
我们经常谈论我们数据集中的对象,但什么是对象呢?
显然,对象最初是某种完整的实体,但我们无法要求算法处理任意类型的对象。我们也无法将整个花园或整个城市区域提供给计算机进行分析。为了让计算机能够处理任意类型的对象,我们必须对这些对象进行形式化描述,即制定它们的特征描述。
对象的特征描述是关于对象的一些信息的集合,以某种向量(在这种情况下是一组数字)的形式表示。
这个向量的每个坐标被称为一个特征。每个特征描述了对象的某个特性。
例如:
假设我们的对象是一辆汽车。我们可以为其描述哪些特征?
例如,汽车的颜色信息,发动机功率信息,是否有音响系统信息,最大速度信息,质量信息,品牌信息等。
那么,这些特征的具体组合:
(1)红色
(2)拥有100马力
(3)有音响系统
(4)最高时速150km/h
(5)重800kg
(6)奔驰
上述特征将确定一辆具体的汽车。
换句话说,我们用收集到的关于它的信息来代替对象,并且可以以一系列数字形式写下来。
你可能会问:这怎么可能呢? "绿色","有音响系统","奔驰" - 这些都不是数字。怎么办?
我们来采用一个小技巧:
假设颜色可以是 - 绿色,红色和蓝色,品牌可以是 - 奔驰,标志和拉达。
让我们给这些颜色和品牌编号:
颜色特征:0. 绿色 1. 红色 2. 蓝色
品牌特征:0. 奔驰 1. 标志 2. 拉达
现在我们可以放心地将特征“红色”替换为值 1,将特征“奔驰”替换为值 0。有音响系统的特征我们将写成1,没有时我们将写成 0。
现在我们的汽车用以下向量来描述,完全描述了它:[1,100,1,150,800,0]
这样的向量可以发送给数值算法进行处理。
11、学习工具:Sklearn
在我的专栏中,我将主要使用 Sklearn 库,这是一个为 Python 实现的主要工具。 Sklearn 是任何机器学习专家的主要工具之一。 Sklearn 实现了大量经典的机器学习算法,还提供了用于模型训练的有用基础设施。 Sklearn 定期添加基于最新机器学习研究和开发的新实验性模块。
12、特征类型
注意,在前面关于汽车的示例中,特征之间存在明显的差异。一般来说,特征有很多种类。为什么区分它们很重要呢?因为针对每种类型的特征都有各自不同的处理方法,彼此之间并不相似。
(1)二进制特征
二进制特征是只能取两个值的特征。例如,汽车是否配备音响系统。通常,它们被用作对研究对象是否具有某种特征的标签。除此之外,一些对象的极性属性也可以用二进制特征来标记,比如生物性别(男性和女性)、北半球或南半球、带电荷的粒子是正电还是负电等。
这些特征通常用 0 和 1 的组合来标记,或者是 -1 和 1。
(2)分类特征
分类特征比二进制特征稍微复杂一些。它们的区别在于,分类特征可以取自某个有限集合中的值,例如汽车的颜色或品牌、新闻文章的主题或学生的评分等。
然而,分类特征也可分为两类:名义和顺序。
在名义特征的情况下,我们不能对它们进行比较,除了判断是否相等之外。也就是说,“蓝色大于红色”这样的说法对我们来说没有意义。我们无法比较哪种颜色更大或更小。
而对于顺序特征,我们可以比较它们。例如,“少校比中士高级”。军衔也是一种分类特征,但我们可以将它们进行比较,这是有意义的。因此,这种特征被称为顺序的。
分类特征可以通过对原始特征空间进行编号来编码。
(3)连续特征
这是最容易理解的特征类型。我们对某些事物进行了测量、称量、计数,得到了某个数字,以某种方式描述了我们的对象。这个数字将属于某个范围内,也就是从实数集的连续子集中取值。
例如,汽车的重量(可以是 800 千克、799.54 千克、802.345 千克,甚至没有限制)。
(4)地理数据
这是地球表面上的经纬度数据。
当然,这样的特征同时也相当罕见,并且由于其特殊性而具有一定的复杂性。它们通常出现在与物流直接相关的任务中。我们将在后续讲座中讨论这类问题的示例。
(5)日期和时间数据
这是一种专门用于描述事件发生时间或持续时间的数据格式。如果你有使用过pandas库的经验,你可能已经熟悉了datetime数据格式。这种格式非常适合处理时间序列数据、使用时间进行数据索引等。当然,这样的特征被归类为单独的类型,并需要特殊的处理方法。
我们列举了主要的特征类型,但实际上它们有很多种类。
13、什么是机器学习模型?
我们每个人都听说过机器学习专家们精心训练的模型。那么,这些“野兽”是什么,可以被训练成什么?
,它将非常类似于自然法则,尽管我们无法直接观察到它。那么这个算法应该是什么样子的?这取决于我们自己。我们从中选择算法的函数称为模型选择。
模型是一组函数,这些函数取决于一些参数,我们将从中选择我们的算法。
例子:假设真实的未知关系类似于抛物线。我们将从二次多项式的集合中选择回归算法:
这就是我们的模型。
当我们从给定集合中选择最佳的函数时,它就成为我们的决策函数或算法。
14、机器学习问题的形式化描述
机器学习问题是指根据已知的一系列案例来构建解决某一问题的算法。也就是说,基于已有的经验,我们需要学习如何在我们从未遇到过的情况下做出决策。
在一般情况下,这个问题的形式化描述如下:
,它可以根据正确的答案
对应于对象
的情况来计算算法
处理该对象时的误差。这样的函数称为损失函数。
例如:
恢复某个值
(例如,
是汽车的特征描述,
是其价格)。
,它可以根据
预测出预期的
值。
然后,损失函数可以是预测值与真实值之间的绝对偏差:
转化为优化问题。
在处理任意对象
时的误差。那么我们的目标是什么呢?
的信息,我们只能在我们已知的训练集上计算期望误差。
(3) 我们计算在训练集上损失函数的平均值作为期望误差。因此,我们的问题被转化为最小化损失函数的平均值:
是训练集
中的对象数量。
因此,我们将机器学习问题转化为了最小化损失函数的平均值的优化问题。解决这个问题的方法属于优化理论的范畴。我们将在接下来的文章中介绍一些优化理论的方法。
15、引入一些符号表示
在我的专栏中,我们经常会谈论一些相同或非常相似的对象,每篇文章都会涉及到它们。这些对象包括机器学习算法、数据集、样本等等。现在我们约定一些字母符号的表示法,它们将在每篇文章中表示相同的参数和对象,除非在文章中另有说明,或者从上下文中明显可以看出我们指的是其他内容。
- 我们通常将其表示为数据集中的行数(或者说,相应样本的数量);
- 列数,即特征的数量;
- 通常表示将机器学习算法
应用于对象
;
(小写) - 通常表示某个对象或其特征描述(即描述它的向量);
(大写) - 表示一组对象或其特征描述的矩阵;
- 对应对象的标签,或者一组对象的标签向量;
- 算法
在对象
上的损失函数值,对应于正确答案
的向量。通常我们不会写得这么复杂:从上下文中几乎总是清楚我们在谈论哪个算法,并且理所当然地,
是我们现有样本中的答案。因此,我们经常会写成
,省略多余的标记,而且在某些情况下,如果清楚地知道我们指的是哪个具体的对象
,我们甚至可以简化为
;
- 对象
的损失函数的期望值。简单来说,
是处理对象
时的误差估计。
第一篇文章我就先写这么多啦!现在已然是凌晨0:41,我要去睡觉啦~
程序员一诺 2024-01-02
强化AI的Zero 2023-03-25
程序员一诺 2024-01-03