1.1.日常生活中的机器学习
通常,即使我们不知道如何编程使计算机识别一个单词,我们的大脑也可以自动识别它。有了这一能力,我们可以将计算机看做人体的大脑,收集一个包含大量音频样本的数据集,并对包含和不包含唤醒词的样本进行标记,就像人类学习说话教会计算机如何识别关键词。利用机器学习算法,我们不需要设定一个有明确提醒此词的唤醒系统,而是只需要定义一个灵活的算法,其输出由许多参数决定,然后利用数据集来确定当下的最佳数据集,这些参数能通过某种性能度量方式来达到完成任务的最佳性能。
名词解释:
参数:可以被看做旋钮,旋钮的转动可以调节程序的行为;
模型:任一被调整参数后的程序;
模型族:通过操作参数而生成的所有不同程序;
学习算法:使用数据集来选择参数的源程序。
在机器学习中,学习是一个训练模型的过程。通过这个过程,我们可以发现正确的参数集,从而使模型强制执行所需的行为。换句话说,我们是用数据“训练”模型。训练过程一般包括以下步骤:
1、从一个随机初始化参数的模型开始,这个模型基本没有“智能”;
2、获取一些数据样本(“如音频”);
3、调整参数,使模型在这些样本中表现的更好;
4、重复第2、3步,最终使模型在任务中让人满意。
总而言之,我们编写的是一个学习程序,而不是一个关键词识别器。
1.2.机器学习的关键组件
1.2.1.数据(data)
每个数据集由一个个样本(example, sample)组成,大多时候,它们遵循独立同分布(independently and identically distributed, i.i.d.)。 样本有时也叫做数据点(data point)或者数据实例(data instance),通常每个样本由一组称为特征(features,或协变量(covariates))的属性组成。在多数监督学习问题中,要预测的是一个特殊的属性,它被称为标签(label,或目标(target))。
例如:当处理图像数据时,每一张单独的照片即为一个样本,它的特征由每个像素数值的有序列表表示。 比如,200×200彩色照片由200×200×3=120000个数值组成。当每个样本的特征类别数量都是相同的时候,其特征向量是固定长度的,这个长度就被称为数据的维数(dimensionality)。 固定长度的特征向量是一个方便的属性,它可以用来量化学习大量样本。
一般来说,拥有越多数据的时候,工作就越容易。但是仅仅拥有海量数据是不够的。当数据集有偏见时,机器模型也会有偏见,所以我们在保证数据的量的同时,也要保证数据的正确性。
1.2.2.模型(model)
大多数机器学习会涉及到数据的转换。比如“摄取照片并预测笑脸”。深度学习关注功能强大的模型,,这些模型由神经网络错综复杂的交织在一起,包含层层数据转换。
1.2.3.目标函数(objective function)
在机器学习中,我们需要定义模型的优劣程度的度量,这个度量在大多数情况是“可优化”的,这被称之为目标函数(objective function)。 我们通常定义一个目标函数,并希望优化它到最低点。 在一个数据集上,我们可以通过最小化总损失来学习模型参数的最佳值。 该数据集由一些为训练而收集的样本组成,称为训练数据集。
总之,可用数据集通常可以分成两部分:训练数据集用于拟合模型参数,测试数据集用于评估拟合的模型。 然后我们观察模型在这两部分数据集的性能。
1.2.4.优化算法(algorithm)
当我们获得了一个数据集,一个模型与目标函数,接下来我们需要一种算法,它能够搜索出最佳参数,以最小化损失函数。 深度学习中,大多流行的优化算法通常基于一种基本方法–梯度下降(gradient descent)。 简而言之,在每个步骤中,梯度下降法都会检查每个参数,看看如果仅对该参数进行少量变动,训练集损失会朝哪个方向移动。 然后,它在可以减少损失的方向上优化参数。
1.3. 各种机器学习问题
1.3.1监督学习
监督学习(supervised learning)擅长在“给定输入特征”的情况下预测标签。 每个“特征-标签”对都称为一个样本(example)。 例如:我们需要预测患者的心脏病是否会发作,那么观察结果“心脏病发作”或“心脏病没有发作”将是样本的标签。 输入特征可能是生命体征,如心率、舒张压和收缩压等。 监督学习能够发挥作用,是因为在训练参数时,我们为模型提供了一个数据集,其中每个样本都有真实的标签。
监督学习的学习过程一般可以分为三大步骤:
-
从已知大量数据样本中随机选取一个子集,为每个样本获取真实标签;
-
选择有监督的学习算法,它将训练数据集作为输入,并输出一个“已完成学习的模型”;
-
将之前没有见过的样本特征放到这个“已完成学习的模型”中,使用模型的输出作为相应标签的预测。
1.3.1.1.回归
回归问题本质是由输出决定的。当标签为任意数值时,我们称之为回归问题,此时的目标是生成一个模型,使它的预测非常接近实际标签值。总之,判断回归问题的经验之一是:任何有关“有多少”的问题就是回归问题。
回归问题与我们中学阶段学习的线性回归方程的本质是相同的。比如:20元的上门服务费,每多一小时多收60元。
当然,在有些情况下,一些差异是由两个特征之外的几个因素造成的。在这些情况下,我们将用学习最小化预测值和实际标签值的差异的模型。回归问题的常见损失函数为平方差。
1.3.1.2.分类
回归是训练一个回归函数来输出一个数值; 分类是训练一个分类器来输出预测的类别。分辨“哪一个”的问题是分类问题。分类问题希望模型能够预测样本属于哪个类别,最简单的分类问题是只有两类,被称作二项分类;当有两个以上的类别时,这个问题被称为多项分类问题。
与解决回归问题不同,分类问题的常见损失函数被称为交叉熵。
然而,最常见的类别不一定是最终用于决策的类别。例如,假设一个分类问题判断出一个蘑菇是毒蘑菇的概率为0.8,我们是否要食用该蘑菇呢?对待这种问题,我们需要将“预期风险”作为损失函数,即需要将结果的概率乘以与之相关的收益(或伤害)。 在这种情况下,食用蘑菇造成的损失为0.2×∞+0.8×0=∞,而丢弃蘑菇的损失为0.2×0+0.8×1=0.8。
1.3.1.3.标记
有些分类问题很适合于用分类问题来解决,然而,当全新的标签出现时,分类器也会束手无策。学习预测不相互排斥的类别的问题称为多标签分类。比如人们在技术网站上发表博客,可能会有5到10个关键词,这些关键词是互相关联的。
1.3.1.4. 搜索
在信息检索领域,我们希望对一组项目进行排序。 以网络搜索为例,目标是在海量搜索结果中找到用户最需要的那部分。该问题的一种可能的解决方案:首先为集合中的每个元素分配相应的相关性分数,然后检索评级最高的元素。
1.3.1.5.推荐系统
推荐系统的目标是向特定用户进行“个性化”推荐。在某些应用中,客户会提供明确反馈,表达他们对特定产品的喜爱程度。由此,对于任何给定的用户,推荐系统都可以检索得分最高的对象集,然后将其推荐给用户。
1.3.1.6.序列学习
如果问题都具有固定大小的输入和产生固定大小的输出,则上文的模型可能完美无缺。但是如果输入是连续的,模型可能就需要拥有“记忆”功能。序列学习需要摄取输入序列或预测输出序列,或两者兼而有之。 具体来说,输入和输出都是可变长度的序列,例如机器翻译和从语音中转录文本。
1.3.2.无监督学习
在以上问题中,都有具体的目标,而如果问题没有十分具体的目标,就需要“自发”地去学习了。 比如,老板可能会给我们一大堆数据,然后要求用它做一些数据科学研究,却没有对结果有要求。 这类数据中不含有“目标”的机器学习问题通常被为无监督学习。
无监督学习可以解决的主要问题有:聚类问题、主成分分析问题、因果关系和概率图模型问题、生成对抗性网络。
1.3.3.与环境互动
到目前为止,不管是监督学习还是无监督学习,我们都会预先获取大量数据,然后启动模型,不再与环境交互。 这里所有学习都是在算法与环境断开后进行的,被称为离线学习。离线学习好的一面是,我们可以孤立地进行模式识别,而不必分心于其他问题。 但缺点是,解决的问题相当有限。 这时我们可能会期望人工智能不仅能够做出预测,而且能够与真实环境互动。 与预测不同,“与真实环境互动”实际上会影响环境。 这里的人工智能是“智能代理”,而不仅是“预测模型”。 因此,我们必须考虑到它的行为可能会影响未来的观察结果。
比如,我们要考虑环境是否有助于我们建模;环境是否想要打败模型;环境是否重要;环境是否变化;环境是否记得我们以前做过什么。
1.3.4.强化学习
强化学习主要用来研究使用机器学习开发与环境交互并采取行动的实际问题。在强化学习问题中,智能体在一系列的时间步骤上与环境交互。 在每个特定时间点,智能体从环境接收一些观察,并且必须选择一个动作,然后通过某种机制将其传输回环境,最后智能体从环境中获得奖励。 此后新一轮循环开始,智能体接收后续观察,并选择后续操作,依此类推。
智能体在做出正确决策后会得到奖励。因此,强化学习者必须处理学分分配问题,即决定哪些行为是值得奖励的,哪些行为是需要惩罚的。
强化学习可能还必须处理部分可观测性问题。 也就是说,当前的观察结果可能无法阐述有关当前状态的所有信息。 比方说,一个清洁机器人发现自己被困在一个许多相同的壁橱的房子里。 推断机器人的精确位置(从而推断其状态),需要在进入壁橱之前考虑它之前的观察结果。
最后,在任何时间点上,强化学习智能体可能知道一个好的策略,但可能有许多更好的策略从未尝试过的。 强化学习智能体必须不断地做出选择:是应该利用当前最好的策略,还是探索新的策略空间。