目 录
第一章 - 引言
1 为什么学深度学习
1.1 常用计算机程序
目前,常用的计算机程序就是用户通过web浏览器(或移动应用程序)与应用程序进行交互,处理的都是“业务逻辑”。
程序想要做的完美,就需要不断完善业务逻辑,这就需要开发人员考虑到所有的情况,设计相应的规则。但是这种应用程序是死的,每一次增加或修改业务逻辑都需要开发人员不断完善或修改新的业务逻辑。但是可惜的是很多任务的自动化不再受限于人类所能考虑到的逻辑,例如根据一些地理信息,卫星图像和一些历史天气信息去预测未来的天气;接受自然文本并正确回答问题;接收图像,识别看图像中的人或物等。
1.1.2 机器学习
机器学习采用观测数据或与环境交互的形式,并积累经验,性能也会同步提高。相反,如果一直执行相同业务逻辑,性能也不会自动提高。
2 机器学习(machine leaning)
2.1 数据(data)
在机器学习中,数据至关重要。每一个数据由一个个样本(example)组成。机器学习模型会根据这些属性进行预测,通常要预测的是一个特殊的属性,也称为标签或者目标(target)。这里注意拥有的数据越多,工作也就越容易。但是,仅仅拥有海量的数据是不够的,我们还需要正确的数据。例如公式你记的很熟,但是你输入的x都错了,结果一定是错误的。
数据集通常可分为俩部分:训练数据集用于拟合模型参数,测试数据集用于评估拟合的模型。一个模型在训练集表现的好不一定在测试集也好,反之亦然。当一个模型在训练集表现良好,但不能推广到测试集时,这个模型被称为过拟合。
2.2 模型(model)
假如,我们需要设计一个灵活的算法,其输出需要需要许多参数决定,使用数据集确定当下的“最佳参数集”。将程序看做一个机器,将参数看做机器上的操作旋钮。旋钮的转动后的机器都会有所不同,而每一次参数调整后的程序称为模型。
深度学习和经典方法最大的区别在于:机器学习关注功能强大的模型,这些模型由神经网络错综复杂地交织在一起,包含层层数据转换,因此被称为深度学习。
2.3 目标函数和损失函数
机器学习通常被介绍为“从经验中学习”,也就是模型自主提高完成某任务的性能。因此,我们需要定义对模型的优劣程度的度量,这个度量在多数情况下可被优化,这被称为目标函数(object function)。我们通常定义一个目标函数,并希望优化到最小值,因为越小越好,所以这些函数称为损失函数(loss function,或者cost function)。
2.4 梯度下降
深度学习中,大多数流行的优化算法通常基于一种基本方法——梯度下降(gradient descent)。即检查每个参数,观察如果仅对某参数进行少量的变动,训练集的损失会朝哪个方向移动。然后在可以减少损失的方向上优化参数。
3 常见相关
3.1 监督学习
简而言之就是测试集有输入和结果。将测试集放在模型上进行测试,观察预测的结果是否和正确结果的偏差。
监督学习的学习过程一般可以分为三大步骤:
-
从已知大量数据样本中随机选取一个子集,为每个样本获取真实标签。有时,这些样本已有标签(例如,患者是否在下一年内康复?);有时,这些样本可能需要被人工标记(例如,图像分类)。这些输入和相应的标签一起构成了训练数据集;
-
选择有监督的学习算法,它将训练数据集作为输入,并输出一个“已完成学习的模型”;
-
将之前没有见过的样本特征放到这个“已完成学习的模型”中,使用模型的输出作为相应标签的预测。
3.1.1 回归
回归是最简单的监督学习任务之一。例如简单的线性回归,输入输出都在一条线上。当标签取任意数值时,我们称之为回归问题,此时的目标是生成一个模型,使它的预测非常接近实际标签值。
3.1.2 分类
虽然回归模型可以很好地解决“有多少”的问题,但是很多问题并非如此。 例如,数据集可能由动物图像组成,标签可能是猫狗{猫,狗}两类。 回归是训练一个回归函数来输出一个数值; 分类是训练一个分类器来输出预测的类别。
当有两个以上的类别时,我们把这个问题称为多项分类(multiclass classification)问题。 常见的例子包括手写字符识别 {0,1,2,...9,a,b,c,...}。 与解决回归问题不同,分类问题的常见损失函数被称为交叉熵(cross-entropy)。
3.1.3 标注问题
有些分类问题很适合于二项分类或多项分类。 例如,我们可以训练一个普通的二项分类器来区分猫和狗。 运用最前沿的计算机视觉的算法,这个模型可以很轻松地被训练。 尽管如此,无论模型有多精确,当分类器遇到新的动物时可能会束手无策。学习预测不相互排斥的类别的问题称为多标签分类(multi-label classification)。
3.1.4 搜索
有时,我们不仅仅希望输出一个类别或一个实值。 在信息检索领域,我们希望对一组项目进行排序。例如搜索一个相关知识点,可能有很多的内容,但是排在前面的并不一定是用户所需要的。该问题的一种可能的解决方案:首先为集合中的每个元素分配相应的相关性分数,然后检索评级最高的元素。因此引入推荐系统。
3.1.5 推荐系统
另一类与搜索和排名相关的问题是推荐系统(recommender system),它的目标是向特定用户进行“个性化”推荐。在某些应用中,客户会提供明确反馈,表达他们对特定产品的喜爱程度。在其他一些情况下,客户会提供隐性反馈。 例如,某用户跳过播放列表中的某些歌曲,这可能说明这些歌曲对此用户不大合适。 由此,对于任何给定的用户,推荐系统都可以检索得分最高的对象集,然后将其推荐给用户。
尽管推荐系统具有巨大的应用价值,但单纯用它作为预测模型仍存在一些缺陷。 首先,我们的数据只包含“审查后的反馈”:用户更倾向于给他们感觉强烈的事物打分。 例如,在五分制电影评分中,会有许多五星级和一星级评分,但三星级却明显很少。
3.2 无监督学习
到目前为止,所有的例子都与监督学习有关,即需要向模型提供巨大数据集:每个样本包含特征和相应标签值。
相反,如果工作没有十分具体的目标,就需要“自发”地去学习了。这类数据中不含有“目标”的机器学习问题通常被为无监督学习(unsupervised learning), 本书后面的章节将讨论无监督学习技术。无监督学习可以解决以下的问题:聚类(clustering)问题、主成分分析(principal component analysis)问题、因果关系(causality)和概率图模型(probabilistic graphical models)问题、生成对抗性网络(generative adversarial networks)。
3.3 与环境互动
机器学习的输入(数据)来自哪里?机器学习的输出又将去往何方? 到目前为止,不管是监督学习还是无监督学习,我们都会预先获取大量数据,然后启动模型,不再与环境交互。 这里所有学习都是在算法与环境断开后进行的,被称为离线学习(offline learning)。
3.4 强化学习
在强化学习问题中,智能体(agent)在一系列的时间步骤上与环境交互。 在每个特定时间点,智能体从环境接收一些观察(observation),并且必须选择一个动作(action),然后通过某种机制(有时称为执行器)将其传输回环境,最后智能体从环境中获得奖励(reward)。 此后新一轮循环开始,智能体接收后续观察,并选择后续操作,依此类推。强化学习的目标是产生一个好的策略(policy)。 强化学习智能体选择的“动作”受策略控制,即一个从环境观察映射到行动的功能。
强化学习还可以解决许多监督学习无法解决的问题。 例如,在监督学习中,我们总是希望输入与正确的标签相关联。 但在强化学习中,我们并不假设环境告诉智能体每个观测的最优动作。 一般来说,智能体只是得到一些奖励。 此外,环境甚至可能不会告诉是哪些行为导致了奖励。
因此,强化学习者必须处理学分分配(credit assignment)问题:决定哪些行为是值得奖励的,哪些行为是需要惩罚的。强化学习智能体可能知道一个好的策略,但可能有许多更好的策略从未尝试过的。 强化学习智能体必须不断地做出选择:是应该利用当前最好的策略,还是探索新的策略空间(放弃一些短期回报来换取知识)。
当环境可被完全观察到时,强化学习问题被称为马尔可夫决策过程(markov decision process)。 当状态不依赖于之前的操作时,我们称该问题为上下文赌博机(contextual bandit problem)。 当没有状态,只有一组最初未知回报的可用动作时,这个问题就是经典的多臂赌博机(multi-armed bandit problem)。
4 总结
以上就是为什么要学习深度学习和深度学习的内容总结。
图书链接:前言 — 动手学深度学习 2.0.0 documentation
如果你有任何建议或疑问,欢迎留言讨论。