动手学习深度学习
特点:数学原理推理+代码实现
CH1 引言
引言:
学习到一种数学的直觉
机器学习路线:
常见结构:
为什么要有机器学习:
机器学习是为了让机器学习到人类学不到的知识,人类学习的能力是有限的,只能通过简单的几种形式如语言,视频等来进行学习,但机器远不止于此,机器可以通过更加多样化的形式来进行学习。
机器学习的定义
任务定义:
现在,假如需要我们编写程序来响应一个“唤醒词”(比如“Alexa”“小爱同学”和“Hey Siri”)。 我们试着用一台计算机和一个代码编辑器编写代码,如 图1.1.1中所示。 问题看似很难解决:麦克风每秒钟将收集大约44000个样本,每个样本都是声波振幅的测量值。而该测量值与唤醒词难以直接关联。那又该如何编写程序,令其输入麦克风采集到的原始音频片段,输出是否{是,否}(表示该片段是否包含唤醒词)的可靠预测呢?我们对编写这个程序毫无头绪,这就是需要机器学习的原因。
图1.1.1 识别唤醒词
通常,即使我们不知道怎样明确地告诉计算机如何从输入映射到输出,大脑仍然能够自己执行认知功能。 换句话说,即使我们不知道如何编写计算机程序来识别“Alexa”这个词,大脑自己也能够识别它。 有了这一能力,我们就可以收集一个包含大量音频样本的数据集(dataset),并对包含和不包含唤醒词的样本进行标记。 利用机器学习算法,我们不需要设计一个“明确地”识别唤醒词的系统。 相反,我们只需要定义一个灵活的程序算法,其输出由许多参数(parameter)决定,然后使用数据集来确定当下的“最佳参数集”,这些参数通过某种性能度量方式来达到完成任务的最佳性能。
那么到底什么是参数呢? 参数可以被看作旋钮,旋钮的转动可以调整程序的行为。 任一调整参数后的程序被称为模型(model)。 通过操作参数而生成的所有不同程序(输入-输出映射)的集合称为“模型族”。 使用数据集来选择参数的元程序被称为学习算法(learning algorithm)。
在开始用机器学习算法解决问题之前,我们必须精确地定义问题,确定输入(input)和输出(output)的性质,并选择合适的模型族。
训练流程
如 图1.1.2所示,训练过程通常包含如下步骤:
- 从一个随机初始化参数的模型开始,这个模型基本没有“智能”;baseline
- 获取一些数据样本(例如,音频片段以及对应的是或否标签);
- 调整参数,使模型在这些样本中表现得更好;
- 重复第(2)步和第(3)步,直到模型在任务中的表现令人满意。
图1.1.2 一个典型的训练过程
Key components:
data->model->objective function (目标函数)-> algorithm(优化参数的算法)
数据:
数据(sample,example),假设都遵从independently and identically distributed ,即每个数据不同,每一组样本由一组features或者covariates(协变量)组成,机器学习则会根据这些属性进行预测,预测一个label或者target。一般来说,数据越多,训练效果越好
模型:
模型主要是处理数据的转换,深度学习与经典方法的区别在于深度学习组合了多层的神经网络
目标函数:
机器学习意味从经验中学习,这里的学习是指自主提高模型对于某些任务的能力。目标函数用于定量模型的优劣程度,目标函数必须为可优化函数,即为凹函数。希望将目标函数优化到最低点,这些函数也被称为objective function,利用squared error评判预测值和实际值之间的误差来调整参数。数据集通常分为两部分,测试集用于评判目标函数,通常会出现overfitting的情况,实际训练中要避免这种情况。
优化函数:
搜索出最佳参数,最小化损失的的函数称为优化函数,通常为gradient descent。
常见机器学习问题:
监督学习:利用标签数据进行训练,得到一个带有特定参数的具结构神经网络,对未带标签的类进行预测
回归:简单的监督学习,回归一般用于预测连续值
分类:简单的监督学习,分类一般用于预测类别,分为二项分类和多分类,多分类用交叉熵作为损失函数,cross-entropy
标记问题:不排斥的分类问题,如一张图片中同时含有猫和狗
搜索问题:利用相关性进行排序
推荐系统:对用户进行特定化的,复杂的预测算法
序列学习:共性是固定大小的输入和固定大小的输出,大量的数据,是机器学习最令人兴奋的应用之一。语音识别,机器翻译等等都算序列学习。
无监督学习:unsupervised learning,自发性学习,数据不带标签
Clustering:无标签情况下对数据进行分类
Principal component analysis: 对特征进行优化,减小计算量
Causality(因果关系)和probabilistic graphical models(概率图模型):根据数据发现一些联系,比如尿布和啤酒
Generative adversarial networks(生成对抗性网络):提供一种合成数据的方法,甚至是像图像和音频这种复杂的非结构化数据,训练机制是生成器尽量生成出判别器判别不出来的假数据,判别器尽量判定出真实的数据
与环境进行互动:
这里所有学习都是在算法与环境断开后进行的,被称为离线学习(offline learning)。 对于监督学习,从环境中收集数据的过程类似于 图1.3.6。
图1.3.6 从环境中为监督学习收集数据。
这种简单的离线学习有它的魅力。 好的一面是,我们可以孤立地进行模式识别,而不必分心于其他问题。 但缺点是,解决的问题相当有限。 这时我们可能会期望人工智能不仅能够做出预测,而且能够与真实环境互动。 与预测不同,“与真实环境互动”实际上会影响环境。 这里的人工智能是“智能代理”,而不仅是“预测模型”。 因此,我们必须考虑到它的行为可能会影响未来的观察结果。agent会与环境进行交互
强化学习:
deep reinforcement learning,深度强化学习,代表作:Q-network问题建模模型:
在强化学习问题中,智能体(agent)在一系列的时间步骤上与环境交互。 在每个特定时间点,智能体从环境接收一些观察(observation),并且必须选择一个动作(action),然后通过某种机制(有时称为执行器)将其传输回环境,最后智能体从环境中获得奖励(reward)。 此后新一轮循环开始,智能体接收后续观察,并选择后续操作,依此类推。 强化学习的过程在 图1.3.7 中进行了说明。 请注意,强化学习的目标是产生一个好的策略(policy)。 强化学习智能体选择的“动作”受策略控制,即一个从环境观察映射到行动的功能。
图1.3.7 强化学习和环境之间的相互作用
强化学习框架的通用性十分强大。 例如,我们可以将任何监督学习问题转化为强化学习问题。 假设我们有一个分类问题,可以创建一个强化学习智能体,每个分类对应一个“动作”。 然后,我们可以创建一个环境,该环境给予智能体的奖励。 这个奖励与原始监督学习问题的损失函数是一致的。
机器学习的起源:
1.数据的分布:伯努利分布和高斯分布,统计学基础
2.智能的探讨:香农的信息论和图灵的计算理论,神经元理论:强化期望,减少不良行为
3.神经网络的研究实现:layers层数,backpropagation反向传播,调整网络中的所有参数
深度学习特点:
1.除了端到端的训练,人们正在经历从参数统计描述到完全非参数模型的转变
2.接受次优解,处理非凸非线性优化问题,并且愿意在证明之前尝试
3.深度学习是属于第四范式,通过数据(经验)来提高特定任务的性能
4.深度学习是通过学习多层次的转换来进行的多层次的表示学习
5.系统的整体优化十分重要
课后练习:
-
你当前正在编写的代码的哪些部分可以“学习”,即通过学习和自动确定代码中所做的设计选择来改进?你的代码是否包含启发式设计选择?
答:没有编写多少代码,但接触里面的pid算法可以学习,不包含启发式设计
-
你遇到的哪些问题有许多解决它们的样本,但没有具体的自动化方法?这些可能是使用深度学习的主要候选者。
答:金融投资,时间序列预测,无人机参数调整
-
如果把人工智能的发展看作一场新的工业革命,那么算法和数据之间的关系是什么?它类似于蒸汽机和煤吗?根本区别是什么?
相互依存,不类似,蒸汽机没有煤无法运转,但是算法可以没有数据,蒸汽机必须依靠煤,算法可以帮助我们得到更好的数据,但是蒸汽机无法帮助我们得到更好的煤
-
你还可以在哪里应用端到端的训练方法,比如 图1.1.2 、物理、工程和计量经济学?
控制
CH2 基础知识
数据相关操作
数据维度:
RGB图片是3幅图片,代表为MxNx3的图片,MxN代表图片的宽高,3代表3个通道,即为
数据读取操作
Linear algebra:
正定矩阵:一个矩阵乘以任意行或列的结果都是正数
按维度进行求和计算:根据给定的维度,在该维度上进行维度塌缩,给定keepdims参数会保持维度不变,原维度上的数字变为1