机器学习的基本概念
什么是机器学习?
- 机器学习是人工智能的一个分支
- 机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法
- 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科
机器学习与人工智能的关系?
- 机器学习及其分支深度学习和神经网络都属于人工智能的子集
- 人工智能是基于数据处理来做出决策和预测。借助机器学习算法,人工智能不仅能够处理数据,还能在不需要任何额外编程的情况下,利用这些数据进行学习,变得更智能
机器学习的对象是什么?
- 统计学习的对象是数据。它从数据出发,提取数据的特征,抽象出数据的模型,发现数据中的知识,又回到对数据的分析与预测中去
机器学习的三要素?
- 模型: 模型就是所要学习的条件概率分布或决策函数
- 策略: 从假设空间中选取最优模型的方法,通常是经验风险最小化和结构风险最小化
- 算法: 指学习模型的具体计算方法(如梯度下降法 (Gradientdescent,GD))
- 统计学习基于训练集,根据常见算法学习策略,从假设空间中选择最优模型,最后需要考虑用什么样的计算方法求解最优模型
机器学习有哪几类?
- 监督式机器学习 (supervisedmachinelearning)
- 半监督学习 (semisupervisedlearning)
- 非监督式机器学习 (unsupervisedmachinelearning)
- 强化学习 (reinforcementlearning)
机器学习关于数据的基本假设?
- 同类数据具有一定的统计规律性:这是统计学习的前提。这里的同类数据是指具有某种共同性质的数据,例如英文文章、互联网网页、数据库中的数据等
- 训练数据与测试数据被看作是独立同分布
什么是监督式机器学习 (supervised machine learning)?
- 通过在有标注的数据上训练模型,并应用于未标注数据的一类模型,主要包括分类问题。如:最近邻 (KNN) 分类,和多项逻辑斯谛回归模型,支持向量机 (SVM),决策树 (Decisiontree,DT) 和随机森林 (RandomForest)
- 与非监督式机器学习 (unsupervisedmachinelearning) 相对
什么是非监督式机器学习 (unsupervised machine learning)?
- 又称归纳性学习,无需借助标注数据,通过循环和递减运算来减小误差,达到分类的目的,例如非监督式机器学习算法可以根据音乐的各种属性将歌曲分为不同的聚类
- 与监督式机器学习 (supervisedmachinelearning) 相对
什么是半监督学习 (semi supervised learning)?
- 数据集中的数据有一部分是有标签的,另一部分是没标签的,既不完全符合 监督式机器学习 (supervisedmachinelearning) 的要求,也不完全符合非监督式机器学习 (unsupervisedmachinelearning) 的要求。
- 比如说在图像识别领域,有一堆图片,手工标注出其中含有猫的图片,这样一个数据集就是一部分数据有标签一部分数据没标签,这样一个数据集就可以用用半监督学习的方法对数据集进行训练,使一个模型能够准确从一堆图片中识别出猫
什么是强化学习 (reinforcement learning)?
- 强化学习也是使用未标记的数据,但是可以通过某种方法知道你是离正确答案越来越近还是越来越远(即奖惩函数),强调的是如何基于环境而行动以取得最大化的收益
- 通过延迟性奖励进行学习,执行许多步之后才知道反馈,就像下棋(对比监督式机器学习 (supervisedmachinelearning) 的立即反馈)传统的 “冷热游戏” 很生动的解释了这个概念。你的朋友会事先藏好一个东西,当你离这个东西越来越近的时候,你朋友就说热,越来越远的时候,你朋友会说冷。冷或者热就是一个奖惩函数
什么是自监督(Self-supervised learning)?
- 在深度学习模型中,通常会通过 BackBone 提取特征,这些 BackBone 通常使用大量的人工标注数据训练得到,但是人工标注成本很高,能不能在没有标注数据的情况下,训练得到一个预训练模型呢?
- 预训练(pre-train)模型: 自监督学习可以解决这个问题,它的目标是基于无标注的数据,设计辅助任务来将数据本身的某一部分的信息作为监督信号,从而基于这个监督信号来训练模型
- 微调(fine-tuning): 去掉 decoder 解码器部分,将 encoder 编码器使用到下游任务,并进行训练的过程
- SEAM、MAE、全卷积掩码自编码器 (FCMAE) 都是属于自监督模型
什么是生成模型、判别模型?
- 生成模型:通过输入的数据学习得到每个类别的分布情况,当要对某个样本进行分类时,根据样本的特征和所有类别的分布,得到该样本处于每个分布的位置,即该分布产生这个样本的概率,认为最大概率对应的类别为该样本的类别,完成分类
- 判别模型:通过输入的数据学习得到每个类别的特征区别,当要对某个样本进行分类时,根据特征差别将样本划分到某个类别,完成分类
生成模型和判别模型的联系?
- 生成模型:生成模型首先需要学习得到 的联合概率分布 ,该联合概率分布即类别 的分布,然后通过联合概率分布与 的先验概率分布 的比值,得到每个类别的条件概率分布 ,取最大的条件概率分布 对应的类别为最终的分类
- 判别方法:直接学习得到条件概率分布 ,直接取最大的概率对应的分类即可
- 总结:因此这样看来,在分类问题下,两种模型的最终目的是一致的,都是要求出最大的条件概率分布,只不过对于生成模型而言,其先学习联合概率分布 ,再通过贝叶斯定理求得条件概率分布
生成模型和判别模型的区别?
- 样本数量:生成模型往往需要更多的样本,而判别模型需要的样本较少。这是因为想要习得联合概率分布,需要在统计学上有意义的数量的样本才可以,样本数量越大,其习得概率分布才越准确。而对于判别模型,较少数量的样本已足够习得决策边界,虽然这个边界可能没有样本数量较多时准确,但相对而言,样本数量对生成模型的影响更大
- 特征的处理:判别模型可以对样本特征数据进行处理和抽象,以简化问题或获得更有效的特征,比如可以对特征进行降维,或者通过特征交叉等方式构造新的特征。对于生成模型而言,如果训练该模型的目的是为了按照概率分布生成数据,是不能对样本的特征数据进行降维或构造新特征的,这是因为模型本身 是包含样本的特征数据的,不过若其目的是为了做分类,那么我认为也可以对特征进行处理。
- 隐变量:生成模型可用于存在隐变量的情况,判别模型无法在存在隐变量的情况下使用。当隐变量存在的情况下,生成模型学习的是隐变量与样本特征的联合概率分布 ,此处 z 代表隐变量
监督学习 / 无监督学习、判别模型 / 生成模型的区别?
- 判断监督学习、无监督学习:该模型在学习时,输入的样本数据中是否包含标记(label),如果包含标记则为监督学习,如果不包含标记,则为无监督学习,与生成还是判别没有关系
- 判断生成模型、判别模型:该模型学习的是联合概率分布还是条件概率分布,学习联合概率分布的是生成模型,学习条件概率分布的是判别模型,与监督还是无监督没有关系
- 在无监督学习里,由于 label 往往以隐变量的形式存在,所以常常使用生成模型
最大化后验概率 / 极大似然估计,生成模型 / 判别模型的关系?
- 最大化后验概率和极大似然估计的判断标准,就是在目标函数中是否存在先验知识,如果存在先验知识,那么我们可以认为就是最大化后验概率,如果不存在先验知识,则认为是极大似然估计,两者的关系如下,其中 MAP 是最大化后验概率,MLE 即极大似然估计, 就是对参数的先验知
- 在逻辑斯蒂回归中,加入 L 1 或者 L 2 正则项,就将其从 MLE 变为了 MAP,因为 L 1 正则或 L 2 正则的加入,就是认为模型的参数符合拉普拉斯分布或高斯分布,即加入了对参数的先验知识
什么是分类问题?
- 输出变量为有限个离散型随机变量的预测问题称为分类问题
什么是回归问题?
- 输入变量与输出变量均为连续型随机变量的预测问题称为回归问题,等价于函数拟合,即选择一条函数曲线使其很好地拟合已知数据且很好地预测未知数据
- 按照输入变量和输出变量之间关系的类型,分为线性回归和非线性回归
什么是标注问题?
- 标注问题也是一个监督式机器学习 (supervisedmachinelearning) 问题,可以认为标记问题是分类问题的一个推广,输入变量与输出变量均为变量序列的预测问题称为标注问题
- 标注问题输入与输出: 输入是一个观测序列,输出的是一个标记序列或状态序列
1
2
3
4# 输入
At Microsoft Research,we have an insatiable curiosity and the desire to create new technology that will help define the computing experience
# 输出【标记表示名词短语的“开始”、 “结束”或“其他”(分别以B, E, O表示)】
At/O Microsoft/B Research/E,we/O have/O an/O insatiable/B curiosity/E and/O the/O desire/BE to/O create/O new/B technology/E that/O will/O help/O define/O the/O computing/B experience/E - 常用标注方法: 隐马尔可夫模型、条件随机场 (CRF)
什么是假设空间?
- 模型是输入空间及输出空间的集合,这个集合就是假设空间
- 监督式机器学习 (supervised machine learning) 的目的在于学习一个由输入到输出的映射,这一映射由模型来表示,学习的目的就在于找到最好的这样的模型
什么是输入空间及输出空间?
- 在监督学习中,将输入与输出所有可能取值的集合分别称为输入空间与输出空间
- 输入与输出空间可以是有限元素的集合,也可以是整个欧氏空间
- 输入空间与输出空间可以是同一个空间,也可以是不同的空间
- 输出空间通常远远小于输入空间
什么是特征空间?
- 每个具体的输入是一个实例(样本),通常由特征向量表示
- 所有特征向量存在的空间称为特征空间
什么叫数据泄漏?
- 测试数据中的一些信息泄露到了训练集中
- 种类: 训练数据泄露和特征泄露。训练数据泄露通常是测试数据或者未来的数据混合在了训练数据中,特征泄露是指特征中包含了关于真实标签的信息
- 例子: 在零售网站中,预测用户浏览当前页面之后接下来是离开网站或是浏览另一个新页面时,有一个涉及数据泄露的特征叫做:session length,也就是用户在访问网站时浏览的页面总数
数据泄漏有什么后果?
- 当数据泄漏发生时,会导致模型离线的评估结果 “虚高”。“虚高” 的意思是说你在离线阶段评估模型的时候,在测试集上表现很好,但是等真正部署到生产环境解决实际业务问题的时候,效果表现会非常的差
如何修复数据泄漏?
- 数据划分:数据预处理时,不应该使用整个数据集来计算,而是应该使用划分后的训练集来生成
- 时间序列问题:一定要确保关联特征时的时间戳与发生时间一致,这样能避免训练数据中出现来自未来的信息
- 事后检测:针对一些与预测目标相关性特别高或者模型中权重特别高的特征,一定要好好地检查下是否发生了数据泄露,如果确实是,那么一定要剔除
什么是离线学习与在线学习?
- 离线学习: 所有的数据都可以被反复获取,比如上面的批量学习就是离线学习的一种。
- 在线学习: 每个观测值在处理以后会被遗弃,同时参数得到更新,可拓展性强和算法性能优越等特点,适合用于海量数据处理,例如:在网络异常检测中,网络异常通常包括各种网络故障、流量的异常表现和拥塞等,各种网络攻击层出不穷,数据是原数据中从未出现过的,因此要求新的在线学习方法能够自动地侦测当前要鉴别的流数据是原来数据中存在的还是新生
离线学习有什么优点?
- 训练方向可控: 对于任何固定个数的参数,目标函数都可以直接被计算出来,因此很容易验证模型训练是否在朝着所需要的方向发展
- 训练精度可控: 计算精度可以达到任意合理的程度
- 训练方法可控: 可以使用各种不同的算法来避免出现局部最优的情况
- 数据划分灵活: 可以采用训练、验证、测试三分法对模型的普适度进行验证
- 数据输出可解释: 可以计算预测值及其置信区间
请简要说说一个完整机器学习项目的流程?
- 抽象成数学问题: 指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题
- 获取数据: 数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限。对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了
- 特征预处理与特征选择: 良好的数据要能够提取出良好的特征才能真正发挥效力。 数据预处理是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化 (Normalization)、数据离散化、数据因子化、处理缺失值、共线性问题等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。 筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法
- 训练模型与调优: 直到这一步才用到我们上面说的算法进行训练。现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案
- 模型诊断: 如何确定模型调优的方向与思路呢?这就需要对模型进行诊断的技术。 过拟合 (overfitting)、欠拟合 (underfitting) 判断是模型诊断中至关重要的一步。常见的方法如 K 折交叉验证,绘制学习曲线等。误差分析 也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题…… 诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态
- 模型融合: 一般来说,模型融合后都能使得效果有一定提升。而且效果很好。 工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证
- 上线运行: 这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度 (时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。 这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程
在机器学习中,模型效果不好的时候,如何调试学习算法模型?
- 获取更多的数据量
- 特征减少 (降维) 或者特征增加 (是否删除了很重要的特征)―》特征工程
- 模型参数的调节 (超参)
- 模型融合(提升算法)
参考: