1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > 人工智能AI > 正文

人工智能AI

AI算法工程师面试题集

1987web2023-08-18人工智能AI70
机器学习部分一、特征工程

机器学习部分

一、特征工程

1. 特征归一化

1)什么是特征归一化

对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。

2)为什么要特征归一化

为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响,如果使用米(m)和千克(kg)作为单位,那么身高特征会在1.6~1.8m的数值范围内,体重特征会在50~100kg的范围内,分析出来的结果显然会倾向于数值差别比较大的体重特征。想要得到更为准确的结果,就需要进行特征归一化(Normalization)处理,使各指标处于同一数值量级,以便进行分析。

3)特征归一化常用的方法

  • 线性函数归一化(Min-Max Scaling)。它对原始数据进行线性变换,使结果映射到[0,1]的范围,实现对原始数据的等比缩放。
  • 零均值归一化(Z-Score Normalization)。它会将原始数据映射到均值为0、标准差为1的分布上。

4)归一化处理适用模型

  • 应用归一化的模型。在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型。
  • 不使用归一化的模型。如决策树。

2. 图像样本增强

1)在图像分类任务中,训练数据不足会带来什么问题?

当训练数据不足时,说明模型从原始数据中获取的信息比较少,这种情况下要想保证模型的效果,就需要更多先验信息。具体到图像分类任务上,训练数据不足带来的问题主要表现在过拟合方面,即模型在训练样本上的效果可能不错,但在测试集上的泛化效果不佳。

2)如何缓解数据量不足带来的问题?

  • 一定程度内的随机旋转、平移、缩放、裁剪、填充、左右翻转等,这些变换对应着同一个目标在不同角度的观察结果。
  • 对图像中的像素添加噪声扰动,比如椒盐噪声、高斯白噪声等。
  • 颜色变换。
  • 改变图像的亮度、清晰度、对比度、锐度等。

3. 什么是监督学习、非监督学习

1)监督学习。监督学习是使用已知正确答案的示例来训练网络。已知数据和其一一对应的标签,训练一个预测模型,将输入数据映射到标签的过程。

2)非监督学习。在非监督式学习中,数据并不被特别标识,适用于你具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。

4. 监督学习、非监督学习主要应用场景

1)监督学习:回归、分类

2)非监督学习:聚类

二、模型评估

1. 回归问题模型评估指标?

  • 平均绝对误差(Mean Absolute Deviation):单个观测值与算术平均值的偏差的绝对值的平均。
  • 均方误差:单个样本到平均值差值的平方平均值。
  • MAD(中位数绝对偏差):与数据中值绝对偏差的中值。
  • R2决定系数:趋向于1,模型越好;趋向于0,模型越差。

2. 分类问题模型评估指标?

查准率(Precision):分类正确数量 / (分类正确数量 + 多分类的数量),范围[0,1]。简单说来就是分类对不对。

召回率(Precision):分类正确数量 / (分类正确数量 + 少分类的数量),范围[0,1]。简单说来就是分类全不全。

F1得分:2 * 查询率 * 召回率 / (查准率 + 召回率), 范围[0, 1] ,综合考虑了查准率、召回率。

3. A/B测试

1)什么是A/B测试?

A/B测试就是两种模型同时运行,并在实际环境中验证其效果的方式。在互联网公司中,A/B 测试是验证新模块、新功能、新产品是否有效,新算法、新模型的效果是否有提升,新设计是否受到用户欢迎,新更改是否影响用户体验的主要测试方法。在机器学习领域中,A/B 测试是验证模型最终效果的主要手段。

2)为什么需要A/B测试?

  • 离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果。
  • 离线评估无法完全还原线上的工程环境。一般来讲,离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果是理想工程环境下的结果。
  • 线上系统的某些商业指标在离线评估中无法计算。

3)如何进行线上A/B测试?

进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取的user_id需要是一个随机数,这样才能保证桶中的样本是无偏的。

4. 超参数

1)什么是超参数?

超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。

2)超参数有哪些调优手段?

① 网格搜索

网格搜索指查找搜索范围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格搜索有很大概率找到全局最优值。然而,这种搜索方案十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。因此,在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种操作方案可以降低所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能会错过全局最优值。

② 随机搜索

随机搜索的思想与网格搜索比较相似,只是不再测试上界和下界之间的所有值,而是在搜索范围中随机选取样本点。它的理论依据是,如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值,或其近似值。随机搜索一般会比网格搜索要快一些,但是和网格搜索的快速版一样,它的结果也是没法保证的。

③ 验证曲线和学习曲线

  • 验证曲线:根据不同评估系数来确定超参数优劣。
  • 学习曲线:根据训练数据规模确定算法优劣。

3)常用超参数对模型的性能影响

① 学习率

学习率太大导致无法收敛,太小导致收敛慢

② 损失函数部分超参数

对于部分损失函数超参数其变化会对结果十分敏感,而有些则并不会太影响。在调整时,建议参考论文的推荐值,并在该推荐值数量级上进行最大最小值调试该参数对结果的影响。

③ 批样本数量

过大导致训练速度慢,过小导致收敛不稳定

④ 丢弃率

较小的丢弃率可提升准确度,但可能导致过拟合

⑤ 卷积核大小

增加卷积核尺寸意味着参数量的增加,同条件下,模型参数也相应的增加。尽量选取小的卷积核。

⑥ 模型深度

同条件,下增加深度意味着模型具有更多的参数,更强的拟合能力,深度越深意味着参数越多,需要的时间和硬件资源也越高。

5. 欠拟合与过拟合

1)什么是欠拟合、过拟合?

欠拟合指的是模型在训练和预测时表现都不好的情况;过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差。

2)如何避免过拟合?

  • 扩大样本数据。使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。
  • 降低模型复杂度。在数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如,在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。
  • 正则化方法。给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中。
  • 集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。
  • 树结构中,对树进行枝剪。
  • 减少训练迭代次数。
  • 神经网络中,加入dropout操作层。
  • 主动加入噪声数据样本。

3)如何避免欠拟合?

  • 添加新特征。当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。
  • 增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
  • 减小正则化系数。正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。

6. 什么是置信概率?

置信概率(Confidence Probability)是用来衡量推断靠程度的概率,该值越大说明推断结果确定性越大,该值越小说明推断结果不确定性越大。

7. 什么是交叉验证

交叉验证指将含有N个样本的数据集,分成K份,每份含有N/K个样本。选择其中1份作为测试集,另外K-1份作为训练集,测试集就有K种情况。将K种情况下,模型的泛化误差取均值,得到模型最终的泛化误差。

交叉验证的作用是为了得到更为稳健可靠的模型,对模型的泛化误差进行评估。

8. 列举解决类别不均衡问题的方法

1)扩大数据集。增加包含小类样本数据的数据,更多的数据能得到更多的分布信息。

2)对大类数据欠采样。减少大类数据样本个数,使与小样本个数接近。

3)使用新评价指标。如果当前评价指标不适用,则应寻找其他具有说服力的评价指标。

4)选择新算法。不同的算法适用于不同的任务与数据,应该使用不同的算法进行比较。

5)数据代价加权。例如当分类任务是识别小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值,从而使得分类器将重点集中在小类样本身上。

9. 什么是L1,L2正则化

机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作 L1-norm 和L2-norm,中文称作 L1正则化 和 L2正则化,或者 L1范数 和 L2范数。L1正则化和L2正则化可以看做是损失函数的惩罚项,所谓"惩罚"是指对损失函数中的某些参数做一些限制。范数的表达式为:||x||p=(|xi|p)1p||x||_p=(\sum|x_i|^p)^{\frac{1}{p}}当p=1时,是L1范数,其表示某个向量中所有元素绝对值的和

当p=2时,是L2范数, 表示某个向量中所有元素平方和再开根, 也就是欧几里得距离公式

正则化通过降低模型的复杂性, 达到避免过拟合的问题,原因是:(1)而加入正则能抑制系数过大的问题;(2)从贝叶斯的角度来分析, 正则化是为模型参数估计增加一个先验知识,先验知识会引导损失函数最小值过程朝着约束方向迭代。

10. 神经网络权重初始值如何设置?

在神经网络的学习中,权重的初始值特别重要。实际上,设定什么样的权重初始值,经常关系到神经网络的学习能否成功。

1)权重初始值不能设置为0

如果把权重初始值全部设为0,在误差反向传播法中,所有的权重值都会进行相同的更新,神经网络将无法正常学习。比如,在2层神经网络中,假设第1层和第2层的权重为0。这样一来,正向传播时,因为输入层的权重为0,所以第2层的神经元全部会被传递相同的值。第2层的神经元中全部输入相同的值,这意味着反向传播时第2层的权重全部都会进行相同的更新。因此,权重被更新为相同的值,并拥有了对称的值(重复的值)。这使得神经网络拥有许多不同的权重的意义丧失了。为了防止权重均一化(严格地讲,是为了瓦解权重的对称结构),必须随机生成初始值。

2)隐藏层激活值的分布

使用一个包含5层的神经网络,每层有100个神经元。然后,用高斯分布随机生成1000个数据作为输入数据,并把它们传给5层神经网络,观察激活值的分布并绘制直方图,从而反映激活值的分布情况。

① Sigmoid激活函数的参数分布

  • 高斯权重初始值

上图显示的是标准差为1的随机权重激活值分布。由图可见,各层激活值呈偏向0和1的分布,偏向0和1的数据分布会造成反向传播中梯度的值不断变小,最后消失。这个问题称为梯度消失(gradient vanishing)。将参数初始值的标准差设置为0.01,各层激活值分布如下图所示:

由图可见,当初始化权重参数时,标准差为0.01,激活值集中在0.5附近分布。虽然没有出现梯度消失情况,但激活值的分布有所偏向,说明在表现力上会有很大问题。因为如果有多个神经元都输出几乎相同的值,那它们就没有存在的意义了。

  • Xavier初始值

Xavier Glorot和Yushua Bengio等人的论文《Understanding the difficulty of training deep feedforward neural networks》(2010年)中推荐的权重初始值(俗称Xavier初始值)。现在,在一般的深度学习框架中,Xavier初始值已被作为标准使用。为了使各层的激活值呈现出具有相同广度的分布,论文建议,如果前一层的节点数为n,则初始值使用$\frac{1}{\sqrt n}$标准差为的分布。使用Xavier初始值后,前一层的节点数越多,要设定为目标节点的初始值的权重尺度就越小。

由图可见,Xavier初始值,后面的隐藏层的分布呈稍微歪斜的形状。如果用tanh函数(双曲线函数)代替sigmoid函数,这个稍微歪斜的问题就能得到改善,呈漂亮的吊钟型分布。

② Relu激活函数参数分布

Xavier初始值同样适合Relu激活函数,但当激活函数使用ReLU时,一般推荐使用ReLU专用的初始值,也就是Kaiming He等人推荐的初始值,也称为He初始值。当前一层的节点数为n时,He初始值使用标准差为$\sqrt{\frac{2}{n}}$的高斯分布。可以直观理解为,ReLU的负值区域的值为0,为了使它更有广度,所以需要2倍的系数。

由上图可知,当std = 0.01时,各层的激活值非常小。神经网络上传递的是非常小的值,说明逆向传播时权重的梯度也同样很小。使用Xavier初始值,随着层的加深,偏向一点点变大,层次较深时会出现梯度消失问题。而当初始值为He初始值时,各层中分布的广度相同。由于即便层加深,数据的广度也能保持不变,因此逆向传播时,也会传递合适的值。

三、回归问题

1. 线性回归

1)什么是线性回归

线性回归是指:通过数据样本,找到一个最佳拟合数据样本的线性模型,并用于预测。线性方程的一般表达形式为:y=w0+w1xy = w_0 + w_1x其中,xyx和y为已知,w0,w1w_0, w_1是要经过学习获得的参数。

2)什么情况下使用线性回归

  • 数据样本呈线性分布。在二维平面中,线性分布的特征是,数据呈一个狭长的条状分布,并且没有明显弯曲。
  • 已知模型为线性模型。

3)线性回归的特点

① 优点

  • 思想简单,实现容易。建模迅速,对于小数据量、简单的关系很有效。
  • 是许多强大的非线性模型的基础。
  • 线性回归模型十分容易理解,结果具有很好的可解释性,有利于决策分析。
  • 蕴含机器学习中的很多重要思想。

② 缺点

  • 对于非线性数据或者数据特征间具有相关性多项式回归难以建模。
  • 难以很好地表达高度复杂的数据。

4)多元回归

多元回归是线性回归的推广,含有一个变量称为线性回归,含有多个变量称为多元回归。多元回归的表达式为:y=w0+w1x1+w2x2+...+wnxny = w_0 + w_1x_1 + w_2x_2 + ... + w_nx_n只有一个变量的时候,模型是平面中的一条直线;有两个变量的时候,模型是空间中的一个平面;有更多变量时,模型将是更高维的。

2. 多项式回归

1)什么是多项式回归?

多项式回归是指使:根据样本数据,用高次多项式模型来最佳程度拟合样本的回归方法。多项式回归中,加入了特征的更高次方(例如平方项或立方项),也相当于增加了模型的自由度,用来捕获数据中非线性的变化。多项式回归模型一般表达式为:y=w0+w1x+w2x2+w3x3+...+wnxny = w_0 + w_1x + w_2x^2 + w_3x ^ 3 + ... + w_nx^n

2)什么情况下使用多项式回归?

在回归分析中有时会遇到线性回归的直线拟合效果不佳,如果发现散点图中数据点呈多项式曲线时,可以考虑使用多项式回归来分析。

3)多项式回归的特点

① 优点

  • 添加高阶项的时候,也增加了模型的复杂度。随着模型复杂度的升高,模型的容量以及拟合数据的能力增加

② 缺点

  • 需要一些数据的先验知识才能选择最佳指数
  • 如果指数选择不当容易出现过拟合

3. 决策树回归

1)什么是决策树

决策树(Decision Tree)的核心思想是:相似的输入必然产生相似的数据(同因同果)。决策树通过把数据样本分配到树状结构的某个叶子节点来确定数据集中样本所属的分类。决策树可用于回归和分类。当用于回归时,预测结果为叶子节点所有样本的均值。

我们使用熵来度量系统的混乱或有序程度。随着子表的划分,信息熵越来越小,信息越来越纯,数据越来越有序(同一个子节点下的数据越来越相同或相似)。信息熵表达式为:H=i=1nP(xi)log2P(xi)H = -\sum_{i=1}^{n}{P(x_i)log_2P(x_i)}其中,$P(x_i)$是某个分类的概率。当n的分类越大,H的值越大;当n=1时,信息熵为0.在构建决策树时,首先选择信息增益率大的属性作为分支判断的依据。

2)决策树的特点

① 优点

  • 简单易懂,容易解释,可视化,适用性广;
  • 可用于分类、回归问题。

② 缺点

  • 容易过拟合;
  • 数据中的小变化会影响结果,不稳定;
  • 每一个节点的选择都是贪婪算法,不能保证全局最优解。

3)什么情况下使用决策树

  • 适合与标称型(在有限目标集中取值)属性较多的样本数据
  • 具有较广的适用性,当对模型不确定时可以使用决策树进行验证

4)随机森林

随机抽取部分样本和随机抽取部分特征相结合构建多棵决策树,这样不仅削弱了强势样本对预测结果的印象,同时削弱了强势特征的影响,提高了模型的泛化能力。

四、分类问题

1. 二元分类

1)什么是二元分类

二元分类又称逻辑回归,是将一组样本划分到两个不同类别的分类方式。

2)如何实现二元分类

逻辑回归属于广义线性回归模型(generalized linear model),使用线性模型计算函数值,再通过逻辑函数将连续值进行离散化处理。逻辑函数(又称sigmoid函数)表达式为:y=11+ety= \frac{1}{1+e^{-t}}该函数能将$(-\infty, +\infty)$的值压缩到(0, 1)区间,通过选取合适的阈值转换为两个离散值(大于0.5为1,小于0.5为0)。

3. 朴素贝叶斯分类

1)贝叶斯定理

贝叶斯定理描述为:P(A|B)=P(A)P(B|A)P(B)P(A|B) = \frac{P(A)P(B|A)}{P(B)}其中,$P(A)$和$P(B)$是A事件和B事件发生的概率,这两个事件是独立的,不相互影响的(朴素的含义);$P(A|B)$称为条件概率,表示B事件发生条件下,A事件发生的概率。$P(A)$也称为先验概率,$P(A|B)$也称为后验概率。先验概率主要根据统计获得,后验概率利用贝叶斯定理计算后并根据实际情况进行修正。其公式推导过程:P(A,B)=P(B)P(A|B)P(B,A)=P(A)P(B|A)P(A,B) =P(B)P(A|B)\\ P(B,A) =P(A)P(B|A)其中$P(A,B)$称为联合概率,指事件B发生的概率,乘以事件A在事件B发生的条件下发生的概率。因为$P(A,B)=P(B,A)$, 所以有:P(B)P(A|B)=P(A)P(B|A)P(B)P(A|B)=P(A)P(B|A)两边同时除以P(B),则得到贝叶斯定理的表达式。

2)什么是朴素贝叶斯分类

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。朴素的含义为:假设问题的特征变量都是相互独立地作用于决策变量的,即问题的特征之间都是互不相关的。

3)朴素贝叶斯分类的特点

① 优点

  • 逻辑性简单
  • 算法较为稳定。当数据呈现不同的特点时,朴素贝叶斯的分类性能不会有太大的差异。
  • 当样本特征之间的关系相对比较独立时,朴素贝叶斯分类算法会有较好的效果。

② 缺点

  • 特征的独立性在很多情况下是很难满足的,因为样本特征之间往往都存在着相互关联,如果在分类过程中出现这种问题,会导致分类的效果大大降低。

4)什么时候使用朴素贝叶斯

  • 根据先验概率计算后验概率的情况,且样本特征之间独立性较强。

4. 决策树分类

决策树分类和决策树回归思想基本相同,不同的是,决策树分类器输出为离散值。通过决策树进行分支处理,最后落到叶子节点上,使用投票的方式来决定预测结果属于哪个类别。

5. 支持向量机

1)什么是支持向量机

支持向量机(Support Vector Machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化。所谓支持向量,就是下图中虚线穿过的边缘点。支持向量机就对应着能将数据正确划分并且间隔最大的直线(下图中红色直线)。

2)SVM寻找最优边界要求有哪些?

SVM寻找最优边界时,需满足以下几个要求:

(1)正确性:对大部分样本都可以正确划分类别;

(2)安全性:支持向量,即离分类边界最近的样本之间的距离最远;

(3)公平性:支持向量与分类边界的距离相等;

(4)简单性:采用线性方程(直线、平面)表示分类边界,也称分割超平面。如果在原始维度中无法做线性划分,那么就通过升维变换,在更高维度空间寻求线性分割超平面. 从低纬度空间到高纬度空间的变换通过核函数进行。

3)什么是线性可分与线性不可分?

① 线性可分

如果一组样本能使用一个线性函数分开,称这些数据样本是线性可分的。那么什么是线性函数呢?在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。

如图中的A,B两个样本点,B点被预测为正类的确信度要大于A点,所以SVM的目标是寻找一个超平面,使得离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点,只需让求得的超平面使得离它近的点间隔最大。

② 线性不可分

线性不可分是指无法在样本空间下找到一个线性模型来进行划分类别。以下是一个一维线性不可分的示例,无法找到一条直线,分开两类点:

一维线性不可分 以下是一个二维不可分的示例:

二维线性不可分 对于该类线性不可分问题,可以通过升维,将低纬度特征空间转换为高纬度特征空间,实现线性可分,如下图所示:

一维空间升至二维空间实现线性可分

二维空间升至三维空间实现线性可分 那么如何实现升维?这就需要用到核函数。

4)什么是核函数?

核函数用来对原还是进行升维和特征变换处理,使得低纬度线性不可分问题变维高纬度线性可分问题。常用的核函数有:

  • 线性核函数。表达式:k(xy)=xT·y+ck(x,y)=x^T·y+c. 线性核函数是原始输入空间的内积,即特征空间和输入空间的维度是一样的,参数较少,运算速度较快。一般情况下,在特征数量相对于样本数量非常多时,适合采用线性核函数。
  • 多项式核函数。多项式核函数(Polynomial Kernel)用增加高次项特征的方法做升维变换,当多项式阶数高时复杂度会很高,其表达式为:K(xy)=(αxT·y+c)dK(x,y)=(αx^T·y+c)d其中,α表示调节参数,d表示最高次项次数,c为可选常数。
  • 径向基核函数。径向基核函数(Radial Basis Function Kernel)具有很强的灵活性,应用很广泛。与多项式核函数相比,它的参数少,因此大多数情况下,都有比较好的性能。在不确定用哪种核函数时,可优先验证高斯核函数。

5)SVM的特点?

① 优点

  • 应用广泛,可以解决高维、复杂特征下的分类问题;
  • 具有较好的泛化能力;

② 缺点

  • 当样本很多时,效率并不是很高;
  • 对缺失数据敏感。

五、聚类问题

1. 基本概念

1)什么是聚类问题

聚类是指根据数据本身的特征,将样本按照相似度(距离相近)划分为不同的类簇,从而揭示样本之间内在的性质以及相互之间的联系规律。聚类属于无监督学习。

2)好的聚类算法有哪些特征?

  • 良好的可伸缩性。不仅能在小数据集上拥有良好性能,得到较好聚类结果,而且在处理大数据集时同样有较好的表现。
  • 处理不同类型数据的能力。不仅能够对数值型的数据进行聚类,也能够对诸如图像、文档、序列等复杂数据进行聚类,甚至在多种类型的混合数据集中有良好的表现。
  • 处理噪声数据的能力。实际应用中,数据集的质量往往不理想,包含很多噪声数据。一个良好的聚类算法降低噪声数据对聚类结果的影响,在低质量数据集中同样能够得到不错的聚类结果。
  • 对样本顺序的不敏感性。良好的聚类算法应当不受输入数据顺序的影响,任意顺序数据输入都能够得到相同的聚类结果。
  • 约束条件下的表现。实际应用场景中,聚类算法需要受到应用背景的约束。良好的聚类算法在约束条件下同样能够对数据集进行良好的聚类,并且得到高质量聚类结果。
  • 易解释性和易用性。不是所有的聚类分析使用者都是数据分析专家,对于用户来说,聚类分析算法应该方便使用,且聚类得到的结果容易解释。

3)聚类模型如何评价?

理想的聚类可以用四个字概况:内密外疏,即同一聚类内部足够紧密,聚类之间足够疏远. 学科中使用轮廓系数来进行度量,见下图:

假设我们已经通过一定算法,将待分类数据进行了聚类。常用的比如使用K-means将待分类数据分为了 k 个簇 。对于簇中的每个向量。分别计算它们的轮廓系数。对于其中的一个点 i 来说: a(i) = average(i向量到所有它属于的簇中其它点的距离) b(i) = min (i向量到各个非本身所在簇的所有点的平均距离) 那么 i 向量轮廓系数就为:S(i)=b(i)a(i)max(b(i),a(i))S(i)=\frac{b(i)-a(i)}{max(b(i), a(i))}由公式可以得出:

(1)当b(i)>>a(i)时,S(i)越接近于1,这种情况聚类效果最好;

(2)当b(i)<

(3)当b(i)=a(i)时,S(i)的值为0,这种情况聚类出现了重叠.

2. K-Means聚类

1)什么是K-Means聚类

K均值聚类算法(k-means clustering algorithm)是一种常用的聚类算法,简单高效。其步骤为:

第一步:根据事先已知的聚类数,随机选择若干样本作为聚类中心,计算每个样本与每个聚类中心的欧式距离,离哪个聚类中心近,就算哪个聚类中心的聚类,完成一次聚类划分.

第二步:计算每个聚类的集合中心(平均值),如果几何中心与聚类中心不重合,再以几何中心作为新的聚类中心,重新划分聚类. 重复以上过程,直到某一次聚类划分后,所得到的各个几何中心与其所依据的聚类中心重合或足够接近为止.

2)K-Means的特点

① 优点

  • 原理简单,实现方便,收敛速度快;
  • 聚类效果较优;
  • 模型的可解释性较强;

② 缺点

  • 需要事先知道聚类数量;
  • 聚类初始中心的选择对聚类结果有影响;
  • 采用的是迭代的方法,只能得到局部最优解;
  • 对于噪音和异常点比较敏感。

3. 均值漂移

1)什么是均值漂移

均值漂移是一种基于聚类中心的聚类算法。其核心思想是:在数据集中选定一个点,然后以这个点为圆心,r为半径,画一个圆(二维下是圆,这里可以推广为高维圆),求出这个点到所有点的向量的平均值,而圆心与向量均值的和为新的圆心,然后迭代此过程,直到满足一点的条件结束。

在实际计算时,首先随便选择一个中心点,然后计算该中心点一定范围之内所有点到中心点的距离向量的平均值,计算该平均值得到一个偏移均值,然后将中心点移动到偏移均值位置,通过这种不断重复的移动,可以使中心点逐步逼近到最佳位置。这种思想类似于梯度下降方法,通过不断的往梯度下降的方向移动,可以到达梯度上的局部最优解或全局最优解。

均值向量(左)与均值移动(右)示意图

2)均值漂移算法特点

① 优点

  • 聚类数量不必已知;
  • 聚类中心不依赖于初始值选取,聚类划分结果较为稳定。

② 缺点

  • 样本空间服从某种概率分布规则,否则算法准确性会大打折扣。

4. 噪声密度

1)什么是噪声密度

噪声密度(Density-Based Spatial Clustering of Applications with Noise, 简写DBSCAN)随机选择一个样本做圆心,以事先给定的半径做圆,凡被该圆圈中的样本都被划为与圆心样本同处一个聚类,再以这些被圈中的样本做圆心,以事先给定的半径继续做圆,不断加入新的样本,扩大聚类的规模,知道再无新的样本加入为止,即完成一个聚类的划分. 以同样的方法,在其余样本中继续划分新的聚类,直到样本空间被耗尽为止,即完成整个聚类划分过程.

  • 边界点(Border point):所处聚类中样本数少于某个阈值,该聚类就不被视为一个聚类,其中的样本则称为边界点;
  • 噪声点(Noise):无法划分到某个聚类中的点;
  • 核心点(Core point):除了孤立样本和外周样本以外的样本都是核心点.。

2)DBSCAN的特点

① 算法优点

  • 不用人为提前确定聚类类别数K;
  • 聚类速度快;
  • 能够有效处理噪声点(因为异常点不会被包含于任意一个簇,则认为是噪声);
  • 能够应对任意形状的空间聚类。

② 算法缺点

  • 当数据量过大时,要求较大的内存支持I/O消耗很大;
  • 当空间聚类的密度不均匀、聚类间距差别很大时、聚类效果有偏差;
  • 调参相对复杂,主要调整距离阈值和MinPts(最少个数阈值)。

5. 凝聚层次

1)什么是凝聚层次

凝聚层次(Agglomerative)算法,首先将每个样本看做独立的聚类,如果聚类数大于预期,则从每个样本出发凝聚离它最近的样本,将样本凝聚所形成的团块作为新的聚类,再不断扩大聚类规模的同时,减少聚类的总数,直到聚类数减少到预期值为止. 这里的关键问题是如何计算聚类之间的距离.

依据对距离的不同定义,将Agglomerative Clustering的聚类方法分为三种:

  • ward:默认选项,挑选两个簇来合并,是的所有簇中的方差增加最小。这通常会得到大小差不多相等的簇。
  • average链接:将簇中所有点之间平均距离最小的两个簇合并。
  • complete链接:也称为最大链接,将簇中点之间最大距离最小的两个簇合并。

ward适用于大多数数据集。如果簇中的成员个数非常不同(比如其中一个比其他所有都大得多),那么average或complete可能效果更好。

2)凝聚层次特点

① 优点

  • 没有聚类中心,不依赖于中心点的选择;
  • 对于中心不明显的样本聚类性能更稳定。

② 缺点

  • 事先给定期望划分的聚类数(k),来自业务或指标优化。

深度学习部分

一、基本理论

1. 什么是前馈神经网络

前馈神经网络(feedforward neural network)又称多层感知机(multilayer perceptron, MLP),是典型的深度学习模型。它是一种单向多层结构,其中每一层包含若干个神经元。在此种神经网络中,各神经元可以接收前一层神经元的信号,并产生输出到下一层。第0层叫输入层,最后一层叫输出层,其他中间层叫做隐含层(或隐藏层、隐层),隐含层可以是一层,也可以是多层。整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。

前馈神经网络使用数学公式可以表示为:f(x)=f(3)(f(2)(f(1)(x)))f(x) = f^{(3)}(f^{(2)}(f^{(1)}(x)))其中,f(1)f^{(1)}被称为网络的 第一层(first layer),f(2)f^{(2)}被称为 第二层(second layer),以此类推。链的全长称为模型的深度(depth)。

2. 深度学习有什么优缺点

1)优点

  • 性能更优异
  • 不需要特征工程
  • 在大数据样本下有更好的性能
  • 能解决某些传统机器学习无法解决的问题

2)缺点

  • 小数据样本下性能不如机器学习
  • 模型复杂
  • 过程不可解释

3. 什么是激活函数,为什么要使用激活函数

激活函数(activation function),指神经网络中将输入信号的总和转换为输出信号的函数,激活函数将多层感知机输出转换为非线性,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

4. 神经网络中常用的激活函数有哪些,各自有什么特点

1)sigmoid

① 定义:sigmoid函数也叫Logistic函数,用于隐层神经元输出,能将(,+)(-\infty,+\infty)的数值映射到(0,1)的区间,可以用来做二分类。表达式为:f(x)=11+exf(x) = \frac{1}{1+e^{-x}}

② 特点

  • 优点:平滑、易于求导
  • 缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失

2)tanh

① 定义:双曲正切函数,表达式为:f(x)=1e2x1+e2xf(x) = \frac{1-e^{-2x}}{1+e^{-2x}}② 特点

  • 优点:平滑、易于求导;输出均值为0,收敛速度要比sigmoid快,从而可以减少迭代次数
  • 缺点:很容易就会出现梯度消失

3)relu

① 定义:修正线性单元,其表达式为:0) \\ 0 & (x≤0) \end{cases} ">f(x)={x(x>0)0(x0)f(x) =\begin{cases} x & (x>0) \\ 0 & (x≤0) \end{cases}② 特点:

  • 优点:计算过程简单;避免了梯度爆炸和梯度消失问题
  • 缺点:小于等于0时无输出

5. 什么是softmax函数,其主要作用是什么

1)定义:Softmax函数就可以将多分类的输出数值转化为相对概率,而这些值的累和为1。表达式为:Si=eViiCeViS_i = \frac{e^{V_i}}{\sum_i^Ce^{V_i}}其中$V_i$ 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。SiS_i表示的是当前元素的指数与所有元素指数和的比值。

2)作用:softmax一般用于分类输出层,计算属于每个类别的概率。

6. 什么是损失函数,损失函数的作用是什么

损失函数(Loss Function),也有称之为代价函数(Cost Function),用来度量预测值和实际值之间的差异,从而作为模型性能参考依据。损失函数值越小,说明预测输出和实际结果(也称期望输出)之间的差值就越小,也就说明我们构建的模型越好,反之说明模型越差。

7. 什么是交叉熵,其作用是什么

交叉熵(Cross Entropy)主要用于度量两个概率分布间的差异性信息,在机器学习中用来作为分类问题的损失函数。当预测概率越接近真实概率,该函数值越小,反之越大。

8. 解释什么是梯度

梯度(gradient)是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大。

9. 什么是梯度下降

梯度下降是一个最优化算法,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型,核心思想是按照梯度相反的方向,不停地调整函数权值。其步骤为:

1)求损失函数值

2)损失是否足够小?如果不是,计算损失函数的梯度

3)按梯度的反方向走一小步(调整权重,wi=wi+δwiw_i = w_i + \delta w_i

4)循环到第2步,迭代执行

10. 激活函数出现梯度消失会有什么后果

机器学习中,如果模型的优化依赖于梯度下降,梯度消失会导致模型无法进一步进行优化。

11. 如何解决梯度消失问题

1)更换激活函数:如更滑为relu, leakrelu

2)批量规范化处理:通过规范化操作将输出信号x规范化到均值为0,方差为1保证网络的稳定性

3)使用残差结构:通过引入残差结构,能有效避免梯度消失问题

12. 什么是梯度爆炸,如何解决梯度爆炸问题

1)梯度爆炸。梯度消失是在计算中出现了梯度过小的值,梯度爆炸则相反,梯度计算出现了过大的值。梯度过大,可能使参数更新幅度过大,超出了合理范围。

2)解决梯度爆炸的方法

  • 梯度裁剪:把沿梯度下降方向的步长限制在一个范围之内,计算出来的梯度的步长的范数大于这个阈值的话,就以这个范数为基准做归一化,使这个新的的梯度的范数等于这个阈值
  • 权重正则化:通过正则化,可以部分限制梯度爆炸的发生

13. 什么是批量梯度下降、随机梯度下降,分别有何特点

1)批量梯度下降

① 定义:批量梯度下降(Batch Gradient Descent,BGD)是指在每一次迭代时使用所有样本来进行梯度的更新 ② 特点

  • 优点:收敛比较稳定
  • 缺点:当样本数目很大时,每迭代一步都需要对所有样本计算,训练过程会很慢

2)随机梯度下降

① 定义:随机梯度下降法(Stochastic Gradient Descent,SGD)每次迭代使用一个样本来对参数进行更新,使得训练速度加快 ② 特点

  • 优点:计算量小,每一轮训练更新速度快
  • 缺点:收敛不稳定

14. 什么是学习率,作用是什么

在梯度下降法中,都是给定的统一的学习率,整个优化过程中都以确定的步长进行更新, 在迭代优化的前期中,学习率较大,则前进的步长就会较长,这时便能以较快的速度进行梯度下降,而在迭代优化的后期,逐步减小学习率的值,减小步长,这样将有助于算法的收敛,更容易接近最优解。

15. 学习率过大或过小会导致什么问题

学习率过大可能导致模型无法收敛,过小导致收敛速度过慢

16. 什么是反向传播算法,为什么要使用反向传播算法

1)定义

反向传播(Backpropagation algorithm)全称误差反向传播,是在深度神经网络中,根据输出层输出值,来反向调整隐藏层权重的一种方法

2)对于多个隐藏层的神经网络,输出层可以直接求出误差来更新参数,但隐藏层的误差是不存在的,因此不能对它直接应用梯度下降,而是先将误差反向传播至隐藏层,然后再应用梯度下降

17. 请说明Momentum、AdaGrad、Adam梯度下降法的特点

Momentum、AdaGrad、Adam是针对SGD梯度下降算法的缺点的改进算法。在SGD算法中,如果函数的形状非均向(参数大小差异较大),SGD的搜索路径会呈之字形移动,搜索效率较低。如下图所示:

1)Momentum

Momentum是动量的意思,和物理有关。用数学式表示Momentum方法,如下所示:vαvηLWWW+vv ← \alpha v - \eta \frac{\partial L}{\partial W} \\ W ← W + v其中,W表示要更新的权重参数,LW\frac{\partial L}{\partial W}表示W的梯度,η\eta表示学习率,v对应物理上的速度。在物体不受任何力时,该项承担使物体逐渐减速的任务(α设定为0.9之类的值),对应物理上的地面摩擦或空气阻力。和SGD相比,我们发现之字形的程度减轻了。这是因为,虽然x轴方向上受到的力非常小,但是一直在同一方向上受力,所以朝同一个方向会有一定的加速。反过来,虽然y轴方向上受到的力很大,但是因为交互地受到正方向和反方向的力,它们会互相抵消,所以y轴方向上的速度不稳定。因此,和SGD时的情形相比,可以更快地朝x轴方向靠近,减弱之字形的变动程度。如下图所示:

2)AdaGrad

AdaGrad会为参数的每个元素适当地调整学习率,与此同时进行学习(AdaGrad的Ada来自英文单词Adaptive,即适当的的意思),其表达式为:hh+LWLWWWη1hLWh ← h + \frac{\partial L} {\partial W} \bigodot \frac{\partial L} {\partial W} \\ W ← W - \eta \frac{1}{\sqrt h} \frac{\partial L}{\partial W}其中,W表示要更新的权重参数,LW\frac{\partial L}{\partial W}表示W的梯度,η\eta表示学习率,LWLW\frac{\partial L} {\partial W} \bigodot \frac{\partial L} {\partial W}表示所有梯度值的平方和。在参数更新时,通过乘以1h\frac{1}{\sqrt h}就可以调整学习的尺度。这意味着,参数的元素中变动较大(被大幅更新)的元素的学习率将变小。也就是说,可以按参数的元素进行学习率衰减,使变动大的参数的学习率逐渐减小。其收敛路径如下图所示:

3)Adam

Adam是2015年提出的新方法。它的理论有些复杂,直观地讲,就是融合了Momentum和AdaGrad的方法。通过组合前面两个方法的优点,有望实现参数空间的高效搜索。其收敛路径如下图所示:

以下是几种梯度下降算法的收敛情况对比:

18. 什么是卷积函数

卷积函数指一个函数和另一个函数在某个维度上的加权叠加作用,其表达式为:s(t)=+f(a)g(ta)das(t) = \int ^{+\infty}_{-\infty}f(a)*g(t-a)da离散化卷积函数表示为:s(t)=f(t)g(t)=n=f(a)g(ta)s(t) =f(t)*g(t)= \sum_{n=-\infty}^{\infty}f(a)g(t-a)

19. 二维卷积运算中,输出矩阵大小与输入矩阵、卷积核大小、步幅、填充的关系?

OH=H+2PFHS+1OW=W+2PFWS+1OH = \frac{H+2P-FH}{S} + 1 \\ OW = \frac{W+2P-FW}{S} + 1

20. 什么是池化,池化层的作用是什么

也称子采样层或下采样层(Subsampling Layer),目的是缩小高、长方向上的空间的运算,以降低计算量,提高泛化能力。

21. 什么是最大池化、平均池化

最大池化:取池化区域内的最大值作为池化输出

平均池化:取池化区域内的平均值作为池化输出

22. 池化层有什么特征

1)没有要学习的参数

2)通道数不发生变化

3)对微小的变化具有鲁棒性

23. 什么是归一化, 为什么要进行归一化

1)归一化的含义。归一化是指归纳统一样本的统计分布性。归一化在 0-1之间是统计的概率分布,归一化在1+1-1--+1之间是统计的坐标分布。

2)归一化处理的目的

  • 为了后面数据处理的方便,归一化的确可以避免一些不必要的数值问题。
  • 为了程序运行时收敛加快。
  • 同一量纲。样本数据的评价标准不一样,需要对其量纲化,统一评价标准。
  • 避免神经元饱和。当神经元的激活在接近 0 或者 1 时会饱和,在这些区域,梯度几乎为 0,这样,在反向传播过程中,局部梯度就会接近 0,这会有效地杀死梯度。

24. 什么是批量归一化,其优点是什么

1)批量归一化(Batch Normalization,简写BN)指在神经网络中间层也进行归一化处理,使训练效果更好的方法,就是批归一化。

2)优点

  • 减少了人为选择参数。在某些情况下可以取消 dropout 和 L2 正则项参数,或者采取更小的 L2 正则项约束参数;
  • 减少了对学习率的要求。现在我们可以使用初始很大的学习率或者选择了较小的学习率,算法也能够快速训练收敛;
  • 可以不再使用局部响应归一化(BN 本身就是归一化网络) ;
  • 破坏原来的数据分布,一定程度上缓解过拟合;
  • 减少梯度消失,加快收敛速度,提高训练精度。

25. 请列举AlexNet的特点

  • 使用ReLU作为激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度消失问题
  • 使用Dropout(丢弃学习)随机忽略一部分神经元防止过拟合
  • 在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果
  • 提出了LRN(Local Response Normalization,局部正规化)层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力
  • 使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算

26. 什么是dropout操作,dropout的工作原理?

1)定义

Dropout是用于深度神经网络防止过拟合的一种方式,在神经网络训练过程中,通过忽略一定比例的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。简单来说,在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。

2)dropout工作原理

假设我们要训练这样一个网络,结构如下图所示:

输入是x输出是y,正常的流程是:我们首先把x通过网络前向传播,然后把误差反向传播以决定如何更新参数让网络进行学习。使用Dropout之后,过程变成如下:

(1)首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(上图中虚线表示临时被删除的神经元)

(2) 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)

(3)然后继续重复以下过程:

  • 恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)
  • 从隐藏层神经元中随机选择一定比率子集临时删除掉(备份被删除神经元的参数)
  • 对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)

3)为什么dropout能避免过拟合

(1)取平均作用。不同的网络可能产生不同的过拟合,取平均则有可能让一些相反的拟合互相抵消。

(2)减少神经元之间复杂的共适应关系。因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。

27. 卷积层和池化层有什么区别

卷积层核池化层在结构上具有一定的相似性,都是对感受域内的特征进行提取,并且根据步长设置获取到不同维度的输出,但是其内在操作是有本质区别的,如下表所示:

卷积层池化层
结构通道数改变通常特征维度会降低,通道数不变
稳定性输入特征发生细微改变时,输出结果会改变感受域内的细微变化不影响输出结果
作用感受域内提取局部关联特征感受域内提取泛化特征,降低维度
参数量与卷积核尺寸、卷积核个数相关不引入额外参数

28. 如何选择卷积核大小

在早期的卷积神经网络中(如LeNet-5、AlexNet),用到了一些较大的卷积核(11×1111\times11),受限于当时的计算能力和模型结构的设计,无法将网络叠加得很深,因此卷积网络中的卷积层需要设置较大的卷积核以获取更大的感受域。但是这种大卷积核反而会导致计算量大幅增加,不利于训练更深层的模型,相应的计算性能也会降低。后来的卷积神经网络(VGG、GoogLeNet等),发现通过堆叠2个3×33\times 3卷积核可以获得与5×55\times 5卷积核相同的感受视野,同时参数量会更少(3×3×2+1<5×5×1+13×3×2+1 < 5×5×1+1),3×33\times 3卷积核被广泛应用在许多卷积神经网络中。因此可以认为,在大多数情况下通过堆叠较小的卷积核比直接采用单个更大的卷积核会更加有效。

29. 如何提高图像分类的准确率

1)样本优化

  • 增大样本数量
  • 数据增强:形态、色彩、噪声扰动

2)参数优化

  • 批量正则化
  • 变化学习率
  • 权重衰减

3)模型优化

  • 增加网络模型深度
  • 更换更复杂的模型

自然语言处理

一、基本理论

1. 什么是分词,分词的作用是什么

该任务将文本语料库分隔成原子单元(例如,单词或词组),分词是自然语言处理的一项重要任务,直接关系到对语义的正确理解。

2. 中文分词有哪些方法

1)正向最大匹配法(FMM)

FMM的步骤是:

  • 从左向右取待分汉语句的m个字作为匹配字段,m为词典中最长词的长度;
  • 查找词典进行匹配;
  • 若匹配成功,则将该字段作为一个词切分出去;
  • 若匹配不成功,则将该字段最后一个字去掉,剩下的字作为新匹配字段,进行再次匹配;
  • 重复上述过程,直到切分所有词为止。

2)逆向最大匹配法(RMM)

RMM的基本原理与FMM基本相同,不同的是分词的方向与FMM相反。RMM是从待分词句子的末端开始,也就是从右向左开始匹配扫描,每次取末端m个字作为匹配字段,匹配失败,则去掉匹配字段前面的一个字,继续匹配。

3)双向最大匹配法(Bi-MM)

Bi-MM是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。

据SunM.S.和Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确,只有大概9.0%的句子两种切分方法得到的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,使用正向最大匹配法和逆向最大匹配法的切分虽然重合但是错的,或者两种方法切分不同但结果都不对(歧义检测失败)。双向最大匹配的规则是:

(1)如果正反向分词结果词数不同,则取分词数量少的那个;

(2)如果分词结果词数相同:

  • 分词结果相同,没有歧义,返回任意一个;
  • 分词结果不同,返回其中单字数量较少的那个。

3. 什么是词性标记

词性标记(Part-Of-Speech tagging, POS tagging)是将单词分配到各自对应词性的任务。它既可以是名词、动词、形容词、副词、介词等基本词、也可以是专有名词、普通名词、短语动词、动词等。

4. 什么是词干提取

词干提取(stemming)是抽取词的词干或词根形式(不一定能够表达完整语义),文本样本中的单词的词性与时态对于语义分析并无太大影响,所以需要对单词进行词干提取。

5. 词干提取主要有哪些方法

(1)查找算法。一个简单的词干提取器从查找表中查找词尾变化。这种方法的优势是简单、速度快并容易控制异常情况。但它的缺点是所有的词尾变化的形式必须明确地包含在查询表中:一个新的或者是陌生的词是没办法控制的,即使是具有完整的规则(如iPads ~ iPad),并且表会变得非常大。对于具有简单形态的语言,像英文,表的大小比较适中,但对于变化较大语言,如土耳其语,对于每个词根都可能有几百个潜在的变化形式。 一个查找算法初步词性标注来避免过度词干化。

(2)后缀去除法。后缀去除算法不依赖于包含词形变换和词根的查询表,而是使用一个普遍性规则小列表提取词根形式。如,其中的一些规则包括:去掉结尾是"ed","ing","ly"等后缀。

(3)lemmatization算法。一种更加复杂的确定一个词汇停顿词的方法是lemmatisation。这种处理方式包括首先确定词汇的发音部分,接着,根据发音的部分确定词汇的根。停顿词规则随着单词的发声部分的改变而改变。

(4)混合法。混合方法同时使用上述的方法中的两种或更多种。

6. 什么是词形还原

词形还原就是去掉单词的词缀,提取单词的主干部分,通常提取后的单词会是字典中的单词,不同于词干提取(stemming),提取后的单词不一定会出现在单词中。词形还原是基于词典,将单词的复杂形态转变成最基础的形态。词形还原不是简单地将前后缀去掉,而是会根据词典将单词进行转换。比如drove会转换为drive。词形还原可以将复数还原为单数,也可将带时态的分词还原为原型。

7. 什么是词袋模型?词袋模型的缺点是什么

词袋模型(Bag-of-words model,简称 BoW )假设我们不考虑文本中词与词之间的上下文关系,一句话的语义很大程度取决于某个单词出现的次数,所以可以把句子中所有可能出现的单词作为特征名,每一个句子为一个样本,单词在句子中出现的次数为特征值构建数学模型,称为词袋模型。可以理解为用词频作为每个样本的特征。

词袋模型仅仅考虑了词频,没有考虑上下文的关系(即词语间的顺序),因此会丢失一部分文本的语义。

8. 什么是词频、文档频率、逆文档频率

1)词频

词频(Term Frequency)是指单词在句子中出现的次数除以句子的总词数,即一个单词在一个句子中出现的频率。词频相比单词的出现次数可以更加客观的评估单词对一句话的语义的贡献度。词频越高,对语义的贡献度越大。

2)文档频率

DF=DF = \frac{含有某个单词的文档样本数}{总文档样本数}

3)逆文档频率

逆文档频率是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。即文档总数n与词w所出现文件数docs(w, D)比值的对数。IDF=log(ndocs(w,D)+1)IDF = \log(\frac{n}{docs(w, D) + 1})

9. 什么是词频-逆文档频率(TF-IDF)

词频-逆文档频率(Term Frequency - Inverse Document Frequency)指词频矩阵中的每一个元素乘以相应单词的逆文档频率:TFIDF=TFIDFTF-IDF = TF * IDF其值越大说明该词对样本语义的贡献越大,根据每个词的贡献力度,构建学习模型。如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

10. 文本表示如何采用独热编码,其缺点是什么

1)独热编码把每个词表示为一个长向量。这个向量的维度是词表大小,向量中只有一个维度的值为1,其余维度为0,这个维度就代表了当前的词。例如:

减肥[1000000000]瘦身[0100000000]减脂[0010000000]降脂[0001000000]增肥[0000100000]

2)独热编码的缺点:

  • 丢弃了词与词之间的联系,无法反映出词的距离关系
  • 独热编码产生一个高纬度稀疏矩阵,会导致特征空间非常大

11. 什么是N-gram模型

1)定义:N-Gram模型是一种基于统计语言模型,语言模型是一个基于概率的判别模型,它的输入是个句子(由词构成的顺序序列),输出是这句话的概率,即这些单词的联合概率。

N-Gram本身也指一个由N个单词组成的集合,各单词具有先后顺序,且不要求单词之间互不相同。常用的有Bi-gram(N=2)和Tri-gram(N=3)。例如:

句子:L love deep learning

Bi-gram: {I, love}, {love, deep}, {deep, learning}

Tri-gram: {I, love, deep}, {love deep learning}

2)基本思想:N-Gram基本思想是将文本里面的内容按照字节进行大小为n的滑动窗口操作,形成了长度是n的字节片段序列。每一个字节片段称为一个gram,对所有gram的出现频度进行统计,并按照事先设置好的频度阈值进行过滤,形成关键gram列表,也就是这个文本向量的特征空间,列表中的每一种gram就是一个特征向量维度。

12. 语料库

1)什么是语料库

语料库(corpus)是指存放语言材料的仓库。现代的语料库是指存放在计算机里的原始语料文本或经过加工后带有语言学信息标注的语料文本。以语言的真实材料为基础来呈现语言知识,反映语言单位的用法和意义,基本以知识的原型形态表现——语言的原貌。

2)语料库的特征

  • 语料库中存放的是实际中真实出现过的语言材料
  • 语料库是以计算机为载体承载语言知识的基础资源,但不等于语言知识
  • 真实语料需要经过分析、处理和加工,才能成为有用的资源

3)语料库的作用

  • 支持语言学研究和语言教学研究
  • 支持NLP系统的开发

4)语料库的类型

① 按照内容分类

  • 异质的:最简单的语料收集方法,没有事先规定和选材原则
  • 同质的:与异质的正好相反,比如美国的TIPSTER项目只收集军事方面的文本
  • 系统的:充分考虑语料动态和静态问题、代表性和平衡问题以及语料库规模等问题
  • 专用的:如北美人文科学语料库

② 按照语言分类

  • 单语
  • 双语或多语的。平行语料库: 篇章对齐/句子对齐/结构对齐

③ 按是否加工

  • 生语料库:未经过加工的,没有任何切分、标注标记的原始语料库
  • 熟语料库:经过加工的,带有切分、标注标记的语料库,包括词性标注、句法结构信息标注、语义信息标注

④ 共时语料库与历时语料库

  • 共时语料库:为了对语言进行同一时段研究而建立的语料库
  • 历时语料库:为了对语言进行历时研究建立的语料库

13. 什么是共现矩阵,特点是什么

1)共现(co-occurrence)矩阵指通过统计一个事先指定大小的窗口内的word共现次数,以word周边的共现词的次数做为当前word的vector。具体来说,我们通过从大量的语料文本中构建一个共现矩阵来定义word representation。例如,有语料如下:

I like deep learning.
I like NLP.
I enjoy flying.

则其共现矩阵如下:

2)特点

  • 优点:矩阵定义的词向量在一定程度上缓解了one-hot向量相似度为0的问题;
  • 缺点:但没有解决数据稀疏性和维度灾难的问题。

14. Word2vec

1)什么是Word2vec

Word2vec是最近推出的分布式单词表示学习技术,目前被用作许多NLP任务的特征工程技术(例如,机器翻译、聊天机器人和图像标题生成)。从本质上讲,Word2vec通过查看所使用的单词的周围单词(即上下文)来学习单词表示。更具体地说,我们试图通过神经网络根据给定的一些单词来预测上下文单词(反之亦然),这使得神经网络被迫学习良好的词嵌入。

Word2vec通过查看单词上下文并以数字方式表示它,来学习给定单词的含义。所谓上下文,指的是在感兴趣的单词的前面和后面的固定数量的单词。假设我们有一个包含N个单词的语料库,在数学上,这可以由以w0w1,...,wiwNw_0,w_1, ..., w_i和w_N表示的一系列单词表示,其中wiw_i是语料库中的第i个单词。

如果我们想找到一个能够学习单词含义的好算法,那么,在给定一个单词之后,我们的算法应该能够正确地预测上下文单词。这意味着对于任何给定的单词wi,以下概率应该较高:

为了得到等式右边,我们需要假设给定目标单词(wi)的上下文单词彼此独立(例如,wi-2和wi-1是独立的)。虽然不完全正确,但这种近似使得学习问题切合实际,并且在实际中效果良好。

2)Word2vec的优点

  • Word2vec方法并不像基于WordNet的方法那样对于人类语言知识具有主观性。
  • 与独热编码表示或单词共现矩阵不同,Word2vec表示向量大小与词汇量大小无关。
  • Word2vec是一种分布式表示。与表示向量取决于单个元素的激活状态的(例如,独热编码)局部表示不同,分布式表示取决于向量中所有元素的激活状态。这为Word2vec提供了比独热编码表示更强的表达能力。

3)示例

考虑以下非常小的文本:

Therewasaveryrichking.Hehadabeautifulqueen.Shewasverykind.

做一些预处理并删除标点符号和无信息的单词:

wasrichkinghehadbeautifulqueenshewaskind

现在,让我们用其上下文单词为每个单词形成一组元组,其格式为:目标单词→上下文单词1,上下文单词2(目标是给出左侧的单词能够预测右侧的单词)。我们假设两边的上下文窗口大小为1:

was --> rich
rich --> was, king
king --> rick, he
he --> king, had
had --> he, beautiful
beautiful --> had, queen
she --> queen, was
was --> she, kind
kind --> was

表示成词向量如下所示:

可以得到如下推导:

queen=king-he+she=[0,0.8]-[0.5,0.8]+[0.5,0.6]=[0,0.6]

对于现实世界的语料库来说,这是一个不切实际的缩小规模之后的练习。因此,仅仅通过处理十几个数字是无法手工计算出这些词向量的值的。这是复杂的函数逼近方法,如神经网络为我们做的那样。实际任务中,词汇量也很容易超过10000个单词。因此,我们不能手动为大型文本语料库开发词向量,而需要设计一种方法来使用一些机器学习算法(例如,神经网络)自动找到好的词嵌入,以便有效地执行这项繁重的任务。

计算机视觉

一、基本理论

1. 什么是图像采样

采样是按照某种时间间隔或空间间隔,将空间上连续的图像变换成离散点的操作称为图像采样。

2. 什么是分图像辨率

采样后得到离散图像的尺寸称为图像分辨率。分辨率是数字图像可辨别的最小细节。分辨率由宽(width)和高(height)两个参数构成。宽表示水平方向的细节数,高表示垂直方向的细节数。例如:一副640*480分辨率的图像,表示这幅图像是由 640*480=307200个点组成;一副1920*1080分辨率的图像,表示这幅图像是由1920*1080= 2073600个点组成。

3. 什么是RGB颜色空间

RGB颜色空间中每个像素点有三个维度,分别记录在红(Red)、绿(Green)、蓝(Blue)三原色的分量上的亮度。

4. 什么是HSV颜色空间

HSV颜色空间是另一种常用的计算机中表示颜色的方法。HSV表示色相(hue)、饱和度(saturation)和亮度(value)。H表示颜色的相位角(hue) ,取值范围是0---360;S表示颜色的饱和度(saturation) ,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率;V表示色彩的明亮程度(value) ,范围从0到1。

5. 什么是图像灰度化处理

在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。将RGB图像转换为灰度图像的过程称为图像灰度化处理。

6. 图像灰度化处理有哪些方法

1)分量法。将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。

2)最大值法。将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。

3)将彩色图像中的三分量亮度求平均得到一个灰度值。

4)根据重要性及其它指标,将三个分量以不同的权值进行加权平均。例如,由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像。f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)

7. 图像加法运算有什么应用

1)图像加法可以用于多幅图像平均去除噪声。如下图:

2)图像加法实现水印的叠加效果。

8. 图像减法运算有什么应用

主要意义是增强图像间的差别,图像减法在连续图像中可以实现消除背景和运动检测。如下图:

9. 图像放大时,可以采用哪些插值法

1)最邻近插值法。最邻近插值法使用点(x, y)最近的整数坐标处的灰度值作为(x,y)的值。这种插值方法计算量小,但精度不高,并且可能破坏图像中的线性关系。

2)双线性插值法。双线性插值法使用点(x, y)最邻近的4个像素值进行插值计算,在两个方向上执行两次线性插值操作。

10. 什么是直方图均衡化

直方图均衡化将原始图像的直方图,即灰度概率分布图,进行调整,使之变化为均衡分布的样式,达到灰度级均衡的效果,可以有效增强图像的整体对比度。 直方图均衡化能够自动的计算变化函数,通过该方法自适应得产生有均衡直方图的输出图像。能够对图像过暗、过亮和细节不清晰的图像得到有效的增强。

11. 什么是均值滤波

均值滤波指模板权重都为1的滤波器。它将像素的邻域平均值作为输出结果,均值滤波可以起到图像平滑的效果,可以去除噪声,但随着模板尺寸的增加图像会变得更为模糊。经常被作为模糊化使用。

12. 什么是高斯滤波

为了减少模板尺寸增加对图像的模糊化,可以使用高斯滤波器,高斯滤波的模板根据高斯分布来确定模板系数,接近中心的权重比边缘的大。大小为5的高斯滤波器及滤波效果如下所示:

13. 什么是图像二值化处理,有什么优点

1)图像二值化(Image Binarization)就是将图像上的像素点的灰度值全部设置为黑色(0)或白色(255),也就是将整个图像分割成明显的黑白效果的过程。二值化的方法是通过设定一个阈值,大于阈值部分全部置成255,小于阈值部分全部置成0。

2)优点

  • 二值图像在数字图像处理中占有非常重要的地位,可以方便得进行连通域提取、形态学变化、感兴趣区域分割等操作。
  • 图像的二值化使图像中数据量大为减少,并且能突显出目标的轮廓。二值化后的图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且计算过程中数据的处理量减小。

14. 什么是图像膨胀

图像膨胀(dilate)是指根据原图像的形状,向外进行扩充。

15. 什么是图像腐蚀

图像腐蚀(erode)是指根据原图像的形状,向内进行收缩。

16. 什么是图像开运算

开运算就是先腐蚀再膨胀。开运算能够把比结构元素小的噪声和突刺过滤掉,并切断细长的连接起到分离的作用。例如将因噪声影响粘连在一起的区域分割开来。

17. 什么是图像闭运算

闭运算就是先膨胀再腐蚀。闭运算可以把比结构元素小的缺憾或者空洞补上,将细小断裂的区域进行连通。例如将因图像质量而断裂的目标区域进行合并连通。

18. 什么是仿射变换

仿射变换是指图像可以通过一系列的几何变换来实现平移、旋转等多种操作。该变换能够保持图像的平直性和平行性。平直性是指图像经过仿射变换后,直线仍然是直线;平行性是指图像在完成仿射变换后,平行线仍然是平行线。

19. 什么是礼帽运算

礼帽运算是用原始图像减去其开运算图像的操作。礼帽运算能够获取图像的噪声信息,或者得到比原始图像的边缘更亮的边缘信息。

20. 什么是图像黑帽运算

黑帽运算是用闭运算图像减去原始图像的操作。黑帽运算能够获取图像内部的小孔,或前景色中的小黑点,或者得到比原始图像的边缘更暗的边缘部分。

21. 什么是图像金字塔

图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合。该组图像是由单个图像通过不断地降采样所产生的,最小的图像可能仅仅有一个像素点。通常情况下,图像金字塔的底部是待处理的高分辨率图像(原始图像),而顶部则为其低分辨率的近似图像。向金字塔的顶部移动时,图像的尺寸和分辨率都不断地降低。通常情况下,每向上移动一级,图像的宽和高都降低为原来的二分之一。

图像金子塔可以得到大小不同的图像,从而更方便进行图像处理、计算、识别以及特征提取。

22. 什么是霍夫变换

霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方式来获取当前图像内的形状集合,该变换由Paul Hough(霍夫)于1962年首次提出。最初的霍夫变换只能用于检测直线,经过发展后,霍夫变换不仅能够识别直线,还能识别其他简单的图形结构,常见的有圆、椭圆等。

参考文献

[1] 赵卫东、董亮. 《机器学习》[M]. 北京:中国工信出版社, 人民邮电出版社,2018

[2] 葫芦娃. 《百面机器学习》[M]. 北京:中国工信出版社, 人民邮电出版社,2018

[3] Prateek Joshi. 《Python机器学习经典实例》[M]. 北京:中国工信出版社, 人民邮电出版社

[4] Ian Goodfellow,Yoshua Bengio,Aaron Courville. 《深度学习》[M]. 北京:中国工信出版社, 人民邮电出版社,2017

[5] 张玉宏. 《深度学习之美》[M]. 北京:中国工信出版社, 电子工业出版社,2018

[6] Thushan Ganegedara. 《Tensorflow自然语言处理》[M]. 北京:机械工业出版社,2019

[7] 李立宗. 《OpenCV轻松入门——面向Python》[M]. 北京:中国工信出版社, 电子工业出版社,2019

[8] 斋藤康毅. 《深度学习入门——基于Python理论与实现》[M]. 北京:中国工信出版社, 人民邮电出版社,2018

[9]《深度学习500问》