深度学习引言
定义
机器学习算法:一个灵活的程序算法,其输出由许多参数(parameter)决定,使用数据集来确定当下的“最佳参数集”,这些参数通过某种性能度量方式来达到完成任务的最佳性能
任一调整参数后的程序被称为模型(model),通过操作参数而生成的所有不同程序(输入-输出映射)的集合称为模型族,使用数据集来选择参数的元程序被称为学习算法
在开始用机器学习算法解决问题之前,必须精确地定义问题,确定输入(input)和输出(output)的性质,并选择合适的模型族
训练过程通常包含如下步骤:
- 从一个随机初始化参数的模型开始,这个模型基本没有“智能”;
- 获取一些数据样本(例如,音频片段以及对应的是或否标签);
- 调整参数,使模型在这些样本中表现得更好;
- 重复第(2)步和第(3)步,直到模型在任务中的表现令人满意
机器学习中的关键组件
无论什么类型的机器学习问题,都会遇到这些组件:
- 可以用来学习的数据(data);
- 如何转换数据的模型(model);
- 一个目标函数(objective function),用来量化模型的有效性;
- 调整模型参数以优化目标函数的算法(algorithm)
数据
每个数据集由一个个样本组成,大多时候它们遵循独立同分布
通常每个样本由一组称为特征的属性组成,机器学习模型会根据这些属性进行预测
当每个样本的特征类别数量都是相同的时候,其特征向量是固定长度的,这个长度被称为数据的维数。固定长度的特征向量是一个方便的属性,它可以用来量化学习大量样本。但并不是所有的数据都可以用“固定长度”的向量表示
与传统机器学习方法相比,深度学习的一个主要优势是可以处理不同长度的数据
仅仅拥有海量的数据是不够的,还需要正确的数据,警惕垃圾数据带来的后果
模型
大多数机器学习会涉及到数据的转换
深度学习与经典方法的区别主要在于:前者关注功能强大的模型,这些模型由神经网络错综复杂的交织在一起,包含层层数据转换,因此被称为深度学习
目标函数
在机器学习中,需要定义模型优劣程度的度量,这个度量在大多数情况是“可优化”的,被称之为目标函数;目标函数希望优化到最低点,因为越低越好,所以也称为损失函数
- 当任务在试图预测数值时,最常见的损失函数是平方误差(squared error),即预测值与实际值之差的平方;
- 当试图解决分类问题时,最常见的目标函数是最小化错误率,即预测与实际情况不符的样本比例
可用数据集通常可以分成两部分:训练数据集用于拟合模型参数,测试数据集用于评估拟合的模型
测试性能可能会显著偏离训练性能,当一个模型在训练集上表现良好,但不能推广到测试集时,这个模型被称为过拟合(overfitting)的
优化算法
大多流行的优化算法通常基于一种基本方法——梯度下降
梯度下降法都会检查每个参数,看看如果仅对该参数进行少量变动,训练集损失会朝哪个方向移动,在可以减少损失的方向上优化参数
各种机器学习问题
列出一些常见的机器学习问题和应用
监督学习
监督学习(supervised learning)擅长在“给定输入特征”的情况下预测标签。每个“特征-标签”对都称为一个样本(example)。有时即使标签是未知的,样本也可以指代输入特征。目标是生成一个模型,能够将任何输入特征映射到标签(即预测)
一个具体的例子:假设需要预测患者的心脏病是否会发作,那么观察结果“心脏病发作”或“心脏病没有发作”将是样本的标签。输入特征可能是生命体征,如心率、舒张压和收缩压等
监督学习用概率论术语来说,希望预测“给定输入特征的标签”的条件概率
监督学习的学习过程一般可以分为三大步骤:
- 从已知大量数据样本中随机选取一个子集,为每个样本获取真实标签。有时这些样本已有标签(例如,患者是否在下一年内康复?);有时,这些样本可能需要被人工标记(例如,图像分类)。这些输入和相应的标签一起构成了训练数据集;
- 选择有监督的学习算法,它将训练数据集作为输入,并输出一个“已完成学习的模型”;
- 将之前没有见过的样本特征放到这个“已完成学习的模型”中,使用模型的输出作为相应标签的预测
整个监督学习过程如图所示
回归
回归(regression)是最简单的监督学习任务之一,当标签取任意数值时称之为回归问题
判断回归问题的一个很好的经验法则是,任何有关“有多少”的问题很可能就是回归问题
比如:
- 这个手术需要多少小时;
- 在未来6小时,这个镇会有多少降雨量;
- 预测用户对一部电影的评分
分类
虽然回归模型可以很好地解决“有多少”的问题,但是很多问题并非如此
“哪一个”的问题叫做分类(classification)问题
分类问题希望模型能够预测样本属于哪个类别,最简单的分类问题只有两类,被称之为二项分类(binomial classification),比如猫狗分类
当有两个以上的类别时,把这个问题称为多项分类(multiclass classification)问题,比如手写字符识别
与解决回归问题不同,分类问题的常见损失函数被称为交叉熵
如果分类用于寻找层次结构将更复杂,通常被称为层次分类(hierarchical classification)
标记问题
有些分类问题很适合于二项分类或多项分类,但如果输入有多种类别的内容,分类器可能束手无策
学习预测不相互排斥的类别的问题称为多标签分类(multi-label classification)
搜索
不仅仅希望输出一个类别或一个实值,在信息检索领域希望对一组项目进行排序
以网络搜索为例,目标不是简单的“查询(query)-网页(page)”分类,而是在海量搜索结果中找到用户最需要的那部分
一种可能的解决方案:首先为集合中的每个元素分配相应的相关性分数,然后检索评级最高的元素
推荐系统
另一类与搜索和排名相关的问题是推荐系统(recommender system),它的目标是向特定用户进行“个性化”推荐
在某些应用中,客户会提供明确反馈,表达他们对特定产品的喜爱程度,例如,亚马逊上的产品评级和评论
在其他一些情况下,客户会提供隐性反馈,例如,某用户跳过播放列表中的某些歌曲,这可能说明这些歌曲对此用户不大合适
推荐系统会为“给定用户和物品”的匹配性打分,这个“分数”可能是估计的评级或购买的概率
推荐系统的缺陷:
- 用户更倾向于给他们感觉强烈的事物打分,例如,在五分制电影评分中,会有许多五星级和一星级评分,但三星级却明显很少
- 有可能形成反馈循环:推荐系统首先会优先推送一个购买量较大(可能被认为更好)的商品,然而目前用户的购买习惯往往是遵循推荐算法,但学习算法并不总是考虑到这一细节,进而更频繁地被推荐
序列学习
以上大多数问题都具有固定大小的输入和产生固定大小的输出
在这些情况下,模型只会将输入作为生成输出的“原料”,而不会“记住”输入的具体内容
如果输入的样本之间没有任何关系,以上模型可能完美无缺,但是如果输入是连续的,模型可能就需要拥有“记忆”功能
序列学习需要摄取输入序列或预测输出序列,或两者兼而有之,输入和输出都是可变长度的序列
无监督学习
监督学习需要向模型提供巨大数据集:每个样本包含特征和相应标签值
数据中不含有“目标”的机器学习问题通常被为无监督学习(unsupervised learning)
无监督学习面对的主要问题:
- 聚类(clustering)问题
- 主成分分析(principal component analysis)问题
- 因果关系(causality)和概率图模型(probabilistic graphical models)问题
- 生成对抗性网络(generative adversarial networks)
与环境互动
不管是监督学习还是无监督学习都会预先获取大量数据,然后启动模型,不再与环境交互,被称为离线学习(offline learning)
对于监督学习,从环境中收集数据的过程类似于
- 优点:孤立地进行模式识别,不受干扰
- 缺点:解决的问题相当有限
与预测不同,“与真实环境互动”实际上会影响环境
强化学习
可能包括应用到机器人、对话系统,甚至开发视频游戏的人工智能(AI)
深度强化学习(deep reinforcement learning)将深度学习应用于强化学习的问题
突破性的深度Q网络(Q-network)在雅达利游戏中仅使用视觉输入就击败了人类,以及 AlphaGo 程序在棋盘游戏围棋中击败了世界冠军,是两个突出强化学习的例子
在强化学习问题中,智能体(agent)在一系列的时间步骤上与环境交互在每个特定时间点,智能体从环境接收一些观察(observation),并且必须选择一个动作(action),然后通过某种机制(有时称为执行器)将其传输回环境,最后智能体从环境中获得奖励(reward)
强化学习的目标是产生一个好的策略(policy)
- 当环境可被完全观察到时,强化学习问题被称为马尔可夫决策过程(markov decision process)
- 当状态不依赖于之前的操作时,我们称该问题为上下文赌博机(contextual bandit problem)
- 当没有状态,只有一组最初未知回报的可用动作时,这个问题就是经典的多臂赌博机(multi-armed bandit problem)