赞
踩
对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。
为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响,如果使用米(m)和千克(kg)作为单位,那么身高特征会在1.6~1.8m的数值范围内,体重特征会在50~100kg的范围内,分析出来的结果显然会倾向于数值差别比较大的体重特征。想要得到更为准确的结果,就需要进行特征归一化(Normalization)处理,使各指标处于同一数值量级,以便进行分析。
1)在图像分类任务中,训练数据不足会带来什么问题?
当训练数据不足时,说明模型从原始数据中获取的信息比较少,这种情况下要想保证模型的效果,就需要更多先验信息。具体到图像分类任务上,训练数据不足带来的问题主要表现在过拟合方面,即模型在训练样本上的效果可能不错,但在测试集上的泛化效果不佳。
2)如何缓解数据量不足带来的问题?
1)监督学习。监督学习是使用已知正确答案的示例来训练网络。已知数据和其一一对应的标签,训练一个预测模型,将输入数据映射到标签的过程。
2)非监督学习。在非监督式学习中,数据并不被特别标识,适用于你具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。
1)监督学习:回归、分类
2)非监督学习:聚类
查准率(Precision):分类正确数量 / (分类正确数量 + 多分类的数量),范围[0,1]。简单说来就是“分类对不对”。
召回率(Precision):分类正确数量 / (分类正确数量 + 少分类的数量),范围[0,1]。简单说来就是“分类全不全”。
F1得分:2 * 查询率 * 召回率 / (查准率 + 召回率), 范围[0, 1] ,综合考虑了查准率、召回率。
A/B测试就是两种模型同时运行,并在实际环境中验证其效果的方式。在互联网公司中,A/B 测试是验证新模块、新功能、新产品是否有效,新算法、新模型的效果是否有提升,新设计是否受到用户欢迎,新更改是否影响用户体验的主要测试方法。在机器学习领域中,A/B 测试是验证模型最终效果的主要手段。
进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取的user_id需要是一个随机数,这样才能保证桶中的样本是无偏的。
超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。
网格搜索指查找搜索范围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格搜索有很大概率找到全局最优值。然而,这种搜索方案十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。因此,在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种操作方案可以降低所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能会错过全局最优值。
随机搜索的思想与网格搜索比较相似,只是不再测试上界和下界之间的所有值,而是在搜索范围中随机选取样本点。它的理论依据是,如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值,或其近似值。随机搜索一般会比网格搜索要快一些,但是和网格搜索的快速版一样,它的结果也是没法保证的。
学习率太大导致无法收敛,太小导致收敛慢
对于部分损失函数超参数其变化会对结果十分敏感,而有些则并不会太影响。在调整时,建议参考论文的推荐值,并在该推荐值数量级上进行最大最小值调试该参数对结果的影响。
过大导致训练速度慢,过小导致收敛不稳定
较小的丢弃率可提升准确度,但可能导致过拟合
增加卷积核尺寸意味着参数量的增加,同条件下,模型参数也相应的增加。尽量选取小的卷积核。
同条件,下增加深度意味着模型具有更多的参数,更强的拟合能力,深度越深意味着参数越多,需要的时间和硬件资源也越高。
欠拟合指的是模型在训练和预测时表现都不好的情况;过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差。
置信概率(Confidence Probability)是用来衡量推断靠程度的概率,该值越大说明推断结果确定性越大,该值越小说明推断结果不确定性越大。
交叉验证指将含有N个样本的数据集,分成K份,每份含有N/K个样本。选择其中1份作为测试集,另外K-1份作为训练集,测试集就有K种情况。将K种情况下,模型的泛化误差取均值,得到模型最终的泛化误差。
交叉验证的作用是为了得到更为稳健可靠的模型,对模型的泛化误差进行评估。
1)扩大数据集。增加包含小类样本数据的数据,更多的数据能得到更多的分布信息。
2)对大类数据欠采样。减少大类数据样本个数,使与小样本个数接近。
3)使用新评价指标。如果当前评价指标不适用,则应寻找其他具有说服力的评价指标。
4)选择新算法。不同的算法适用于不同的任务与数据,应该使用不同的算法进行比较。
5)数据代价加权。例如当分类任务是识别小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值,从而使得分类器将重点集中在小类样本身上。
机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作 L1-norm 和L2-norm,中文称作 L1正则化 和 L2正则化,或者 L1范数 和 L2范数。L1正则化和L2正则化可以看做是损失函数的惩罚项,所谓"惩罚"是指对损失函数中的某些参数做一些限制。范数的表达式为:
∣
∣
x
∣
∣
p
=
(
∑
∣
x
i
∣
p
)
1
p
||x||_p=(\sum|x_i|^p)^{\frac{1}{p}}
∣∣x∣∣p=(∑∣xi∣p)p1
当p=1时,是L1范数,其表示某个向量中所有元素绝对值的和
当p=2时,是L2范数, 表示某个向量中所有元素平方和再开根, 也就是欧几里得距离公式
正则化通过降低模型的复杂性, 达到避免过拟合的问题,原因是:(1)而加入正则能抑制系数过大的问题;(2)从贝叶斯的角度来分析, 正则化是为模型参数估计增加一个先验知识,先验知识会引导损失函数最小值过程朝着约束方向迭代。
在神经网络的学习中,权重的初始值特别重要。实际上,设定什么样的权重初始值,经常关系到神经网络的学习能否成功。
如果把权重初始值全部设为0,在误差反向传播法中,所有的权重值都会进行相同的更新,神经网络将无法正常学习。比如,在2层神经网络中,假设第1层和第2层的权重为0。这样一来,正向传播时,因为输入层的权重为0,所以第2层的神经元全部会被传递相同的值。第2层的神经元中全部输入相同的值,这意味着反向传播时第2层的权重全部都会进行相同的更新。因此,权重被更新为相同的值,并拥有了对称的值(重复的值)。这使得神经网络拥有许多不同的权重的意义丧失了。为了防止“权重均一化”(严格地讲,是为了瓦解权重的对称结构),必须随机生成初始值。
使用一个包含5层的神经网络,每层有100个神经元。然后,用高斯分布随机生成1000个数据作为输入数据,并把它们传给5层神经网络,观察激活值的分布并绘制直方图,从而反映激活值的分布情况。
① Sigmoid激活函数的参数分布
上图显示的是标准差为1的随机权重激活值分布。由图可见,各层激活值呈偏向0和1的分布,偏向0和1的数据分布会造成反向传播中梯度的值不断变小,最后消失。这个问题称为梯度消失(gradient vanishing)。将参数初始值的标准差设置为0.01,各层激活值分布如下图所示:
由图可见,当初始化权重参数时,标准差为0.01,激活值集中在0.5附近分布。虽然没有出现梯度消失情况,但激活值的分布有所偏向,说明在表现力上会有很大问题。因为如果有多个神经元都输出几乎相同的值,那它们就没有存在的意义了。
Xavier Glorot和Yushua Bengio等人的论文《Understanding the difficulty of training deep feedforward neural networks》(2010年)中推荐的权重初始值(俗称“Xavier初始值”)。现在,在一般的深度学习框架中,Xavier初始值已被作为标准使用。为了使各层的激活值呈现出具有相同广度的分布,论文建议,如果前一层的节点数为n,则初始值使用 1 n \frac{1}{\sqrt n} n 1标准差为的分布。使用Xavier初始值后,前一层的节点数越多,要设定为目标节点的初始值的权重尺度就越小。
由图可见,Xavier初始值,后面的隐藏层的分布呈稍微歪斜的形状。如果用tanh函数(双曲线函数)代替sigmoid函数,这个稍微歪斜的问题就能得到改善,呈漂亮的吊钟型分布。
② Relu激活函数参数分布
Xavier初始值同样适合Relu激活函数,但当激活函数使用ReLU时,一般推荐使用ReLU专用的初始值,也就是Kaiming He等人推荐的初始值,也称为“He初始值”。当前一层的节点数为n时,He初始值使用标准差为 2 n \sqrt{\frac{2}{n}} n2 的高斯分布。可以直观理解为,ReLU的负值区域的值为0,为了使它更有广度,所以需要2倍的系数。
由上图可知,当“std = 0.01”时,各层的激活值非常小。神经网络上传递的是非常小的值,说明逆向传播时权重的梯度也同样很小。使用Xavier初始值,随着层的加深,偏向一点点变大,层次较深时会出现梯度消失问题。而当初始值为He初始值时,各层中分布的广度相同。由于即便层加深,数据的广度也能保持不变,因此逆向传播时,也会传递合适的值。
线性回归是指:通过数据样本,找到一个最佳拟合数据样本的线性模型,并用于预测。线性方程的一般表达形式为:
y
=
w
0
+
w
1
x
y = w_0 + w_1x
y=w0+w1x
其中,
x
x
x和
y
y
y为已知,
w
0
,
w
1
w_0, w_1
w0,w1是要经过学习获得的参数。
① 优点
② 缺点
多元回归是线性回归的推广,含有一个变量称为线性回归,含有多个变量称为多元回归。多元回归的表达式为:
y
=
w
0
+
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
n
x
n
y = w_0 + w_1x_1 + w_2x_2 + ... + w_nx_n
y=w0+w1x1+w2x2+...+wnxn
只有一个变量的时候,模型是平面中的一条直线;有两个变量的时候,模型是空间中的一个平面;有更多变量时,模型将是更高维的。
多项式回归是指使:根据样本数据,用高次多项式模型来最佳程度拟合样本的回归方法。多项式回归中,加入了特征的更高次方(例如平方项或立方项),也相当于增加了模型的自由度,用来捕获数据中非线性的变化。多项式回归模型一般表达式为:
y
=
w
0
+
w
1
x
+
w
2
x
2
+
w
3
x
3
+
.
.
.
+
w
n
x
n
y = w_0 + w_1x + w_2x^2 + w_3x ^ 3 + ... + w_nx^n
y=w0+w1x+w2x2+w3x3+...+wnxn
在回归分析中有时会遇到线性回归的直线拟合效果不佳,如果发现散点图中数据点呈多项式曲线时,可以考虑使用多项式回归来分析。
① 优点
② 缺点
决策树(Decision Tree)的核心思想是:相似的输入必然产生相似的数据(同因同果)。决策树通过把数据样本分配到树状结构的某个叶子节点来确定数据集中样本所属的分类。决策树可用于回归和分类。当用于回归时,预测结果为叶子节点所有样本的均值。
我们使用“熵”来度量系统的混乱或有序程度。随着子表的划分,信息熵越来越小,信息越来越纯,数据越来越有序(同一个子节点下的数据越来越相同或相似)。信息熵表达式为:
H
=
−
∑
i
=
1
n
P
(
x
i
)
l
o
g
2
P
(
x
i
)
H = -\sum_{i=1}^{n}{P(x_i)log_2P(x_i)}
H=−i=1∑nP(xi)log2P(xi)
其中,
P
(
x
i
)
P(x_i)
P(xi)是某个分类的概率。当n的分类越大,H的值越大;当n=1时,信息熵为0.在构建决策树时,首先选择信息增益率大的属性作为分支判断的依据。
容易过拟合;
数据中的小变化会影响结果,不稳定;
每一个节点的选择都是贪婪算法,不能保证全局最优解。
随机抽取部分样本和随机抽取部分特征相结合构建多棵决策树,这样不仅削弱了强势样本对预测结果的印象,同时削弱了强势特征的影响,提高了模型的泛化能力。
二元分类又称逻辑回归,是将一组样本划分到两个不同类别的分类方式。
逻辑回归属于广义线性回归模型(generalized linear model),使用线性模型计算函数值,再通过逻辑函数将连续值进行离散化处理。逻辑函数(又称sigmoid函数)表达式为:
y
=
1
1
+
e
−
t
y= \frac{1}{1+e^{-t}}
y=1+e−t1
该函数能将
(
−
∞
,
+
∞
)
(-\infty, +\infty)
(−∞,+∞)的值压缩到(0, 1)区间,通过选取合适的阈值转换为两个离散值(大于0.5为1,小于0.5为0)。
贝叶斯定理描述为:
P
(
A
∣
B
)
=
P
(
A
)
P
(
B
∣
A
)
P
(
B
)
P(A|B) = \frac{P(A)P(B|A)}{P(B)}
P(A∣B)=P(B)P(A)P(B∣A)
其中,
P
(
A
)
P(A)
P(A)和
P
(
B
)
P(B)
P(B)是A事件和B事件发生的概率,这两个事件是独立的,不相互影响的(朴素的含义);
P
(
A
∣
B
)
P(A|B)
P(A∣B)称为条件概率,表示B事件发生条件下,A事件发生的概率。
P
(
A
)
P(A)
P(A)也称为先验概率,
P
(
A
∣
B
)
P(A|B)
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)=P(B)P(A∣B)P(B,A)=P(A)P(B∣A)
其中
P
(
A
,
B
)
P(A,B)
P(A,B)称为联合概率,指事件B发生的概率,乘以事件A在事件B发生的条件下发生的概率。因为
P
(
A
,
B
)
=
P
(
B
,
A
)
P(A,B)=P(B,A)
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)P(A∣B)=P(A)P(B∣A)
两边同时除以P(B),则得到贝叶斯定理的表达式。
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。“朴素”的含义为:假设问题的特征变量都是相互独立地作用于决策变量的,即问题的特征之间都是互不相关的。
决策树分类和决策树回归思想基本相同,不同的是,决策树分类器输出为离散值。通过决策树进行分支处理,最后落到叶子节点上,使用投票的方式来决定预测结果属于哪个类别。
支持向量机(Support Vector Machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化。所谓“支持向量”,就是下图中虚线穿过的边缘点。支持向量机就对应着能将数据正确划分并且间隔最大的直线(下图中红色直线)。
SVM寻找最优边界时,需满足以下几个要求:
(1)正确性:对大部分样本都可以正确划分类别;
(2)安全性:支持向量,即离分类边界最近的样本之间的距离最远;
(3)公平性:支持向量与分类边界的距离相等;
(4)简单性:采用线性方程(直线、平面)表示分类边界,也称分割超平面。如果在原始维度中无法做线性划分,那么就通过升维变换,在更高维度空间寻求线性分割超平面. 从低纬度空间到高纬度空间的变换通过核函数进行。
如果一组样本能使用一个线性函数分开,称这些数据样本是线性可分的。那么什么是线性函数呢?在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。
如图中的A,B两个样本点,B点被预测为正类的确信度要大于A点,所以SVM的目标是寻找一个超平面,使得离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点,只需让求得的超平面使得离它近的点间隔最大。
线性不可分是指无法在样本空间下找到一个线性模型来进行划分类别。以下是一个一维线性不可分的示例,无法找到一条直线,分开两类点:
核函数用来对原还是进行升维和特征变换处理,使得低纬度线性不可分问题变维高纬度线性可分问题。常用的核函数有:
线性核函数。表达式: k ( x , y ) = x T ⋅ y + c k(x,y)=x^T·y+c k(x,y)=xT⋅y+c. 线性核函数是原始输入空间的内积,即特征空间和输入空间的维度是一样的,参数较少,运算速度较快。一般情况下,在特征数量相对于样本数量非常多时,适合采用线性核函数。
多项式核函数。多项式核函数(Polynomial Kernel)用增加高次项特征的方法做升维变换,当多项式阶数高时复杂度会很高,其表达式为:
K
(
x
,
y
)
=
(
α
x
T
⋅
y
+
c
)
d
K(x,y)=(αx^T·y+c)d
K(x,y)=(αxT⋅y+c)d
其中,α表示调节参数,d表示最高次项次数,c为可选常数。
径向基核函数。径向基核函数(Radial Basis Function Kernel)具有很强的灵活性,应用很广泛。与多项式核函数相比,它的参数少,因此大多数情况下,都有比较好的性能。在不确定用哪种核函数时,可优先验证高斯核函数。
应用广泛,可以解决高维、复杂特征下的分类问题;
具有较好的泛化能力;
聚类是指根据数据本身的特征,将样本按照相似度(距离相近)划分为不同的类簇,从而揭示样本之间内在的性质以及相互之间的联系规律。聚类属于无监督学习。
理想的聚类可以用四个字概况:内密外疏,即同一聚类内部足够紧密,聚类之间足够疏远. 学科中使用“轮廓系数”来进行度量,见下图:
假设我们已经通过一定算法,将待分类数据进行了聚类。常用的比如使用K-means将待分类数据分为了 k 个簇 。对于簇中的每个向量。分别计算它们的轮廓系数。对于其中的一个点 i 来说:
a(i) = average(i向量到所有它属于的簇中其它点的距离)
b(i) = min (i向量到各个非本身所在簇的所有点的平均距离)
那么 i 向量轮廓系数就为:
S
(
i
)
=
b
(
i
)
−
a
(
i
)
m
a
x
(
b
(
i
)
,
a
(
i
)
)
S(i)=\frac{b(i)-a(i)}{max(b(i), a(i))}
S(i)=max(b(i),a(i))b(i)−a(i)
由公式可以得出:
(1)当 b ( i ) > > a ( i ) b(i)>>a(i) b(i)>>a(i)时, S ( i ) S(i) S(i)越接近于1,这种情况聚类效果最好;
(2)当 b ( i ) < < a ( i ) b(i)<<a(i) b(i)<<a(i)时, S ( i ) S(i) S(i)越接近于-1,这种情况聚类效果最差;
(3)当 b ( i ) = a ( i ) b(i)=a(i) b(i)=a(i)时, S ( i ) S(i) S(i)的值为0,这种情况聚类出现了重叠.
K均值聚类算法(k-means clustering algorithm)是一种常用的聚类算法,简单高效。其步骤为:
第一步:根据事先已知的聚类数,随机选择若干样本作为聚类中心,计算每个样本与每个聚类中心的欧式距离,离哪个聚类中心近,就算哪个聚类中心的聚类,完成一次聚类划分.
第二步:计算每个聚类的集合中心(平均值),如果几何中心与聚类中心不重合,再以几何中心作为新的聚类中心,重新划分聚类. 重复以上过程,直到某一次聚类划分后,所得到的各个几何中心与其所依据的聚类中心重合或足够接近为止.
均值漂移是一种基于聚类中心的聚类算法。其核心思想是:在数据集中选定一个点,然后以这个点为圆心,r为半径,画一个圆(二维下是圆,这里可以推广为高维圆),求出这个点到所有点的向量的平均值,而圆心与向量均值的和为新的圆心,然后迭代此过程,直到满足一点的条件结束。
在实际计算时,首先随便选择一个中心点,然后计算该中心点一定范围之内所有点到中心点的距离向量的平均值,计算该平均值得到一个偏移均值,然后将中心点移动到偏移均值位置,通过这种不断重复的移动,可以使中心点逐步逼近到最佳位置。这种思想类似于梯度下降方法,通过不断的往梯度下降的方向移动,可以到达梯度上的局部最优解或全局最优解。
噪声密度(Density-Based Spatial Clustering of Applications with Noise, 简写DBSCAN)随机选择一个样本做圆心,以事先给定的半径做圆,凡被该圆圈中的样本都被划为与圆心样本同处一个聚类,再以这些被圈中的样本做圆心,以事先给定的半径继续做圆,不断加入新的样本,扩大聚类的规模,知道再无新的样本加入为止,即完成一个聚类的划分. 以同样的方法,在其余样本中继续划分新的聚类,直到样本空间被耗尽为止,即完成整个聚类划分过程.
凝聚层次(Agglomerative)算法,首先将每个样本看做独立的聚类,如果聚类数大于预期,则从每个样本出发凝聚离它最近的样本,将样本凝聚所形成的团块作为新的聚类,再不断扩大聚类规模的同时,减少聚类的总数,直到聚类数减少到预期值为止. 这里的关键问题是如何计算聚类之间的距离.
依据对距离的不同定义,将Agglomerative Clustering的聚类方法分为三种:
ward适用于大多数数据集。如果簇中的成员个数非常不同(比如其中一个比其他所有都大得多),那么average或complete可能效果更好。
前馈神经网络(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(x)=f(3)(f(2)(f(1)(x)))
其中,
f
(
1
)
f^{(1)}
f(1) 被称为网络的 第一层(first layer), $f^{(2)} $被称为 第二层(second layer),以此类推。链的全长称为模型的深度(depth)。
1)优点
2)缺点
激活函数(activation function),指神经网络中将输入信号的总和转换为输出信号的函数,激活函数将多层感知机输出转换为非线性,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
1)sigmoid
① 定义:sigmoid函数也叫Logistic函数,用于隐层神经元输出,能将
(
−
∞
,
+
∞
)
(-\infty,+\infty)
(−∞,+∞)的数值映射到(0,1)的区间,可以用来做二分类。表达式为:
f
(
x
)
=
1
1
+
e
−
x
f(x) = \frac{1}{1+e^{-x}}
f(x)=1+e−x1
② 特点
2)tanh
① 定义:双曲正切函数,表达式为:
f
(
x
)
=
1
−
e
−
2
x
1
+
e
−
2
x
f(x) = \frac{1-e^{-2x}}{1+e^{-2x}}
f(x)=1+e−2x1−e−2x
② 特点
3)relu
① 定义:修正线性单元,其表达式为:
f
(
x
)
=
{
x
(
x
>
0
)
0
(
x
<
=
0
)
f(x) =
② 特点:
1)定义:Softmax函数就可以将多分类的输出数值转化为相对概率,而这些值的累和为1。表达式为:
S
i
=
e
V
i
∑
i
C
e
V
i
S_i = \frac{e^{V_i}}{\sum_i^Ce^{V_i}}
Si=∑iCeVieVi
其中
V
i
V_i
Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。
S
i
S_i
Si表示的是当前元素的指数与所有元素指数和的比值。
2)作用:softmax一般用于分类输出层,计算属于每个类别的概率。
损失函数(Loss Function),也有称之为代价函数(Cost Function),用来度量预测值和实际值之间的差异,从而作为模型性能参考依据。损失函数值越小,说明预测输出和实际结果(也称期望输出)之间的差值就越小,也就说明我们构建的模型越好,反之说明模型越差。
交叉熵(Cross Entropy)主要用于度量两个概率分布间的差异性信息,在机器学习中用来作为分类问题的损失函数。当预测概率越接近真实概率,该函数值越小,反之越大。
梯度(gradient)是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大。
梯度下降是一个最优化算法,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型,核心思想是按照梯度相反的方向,不停地调整函数权值。其步骤为:
1)求损失函数值
2)损失是否足够小?如果不是,计算损失函数的梯度
3)按梯度的反方向走一小步(调整权重, w i = w i + δ w i w_i = w_i + \delta w_i wi=wi+δwi)
4)循环到第2步,迭代执行
机器学习中,如果模型的优化依赖于梯度下降,梯度消失会导致模型无法进一步进行优化。
1)更换激活函数:如更滑为relu, leakrelu
2)批量规范化处理:通过规范化操作将输出信号x规范化到均值为0,方差为1保证网络的稳定性
3)使用残差结构:通过引入残差结构,能有效避免梯度消失问题
1)梯度爆炸。梯度消失是在计算中出现了梯度过小的值,梯度爆炸则相反,梯度计算出现了过大的值。梯度过大,可能使参数更新幅度过大,超出了合理范围。
2)解决梯度爆炸的方法
① 定义:批量梯度下降(Batch Gradient Descent,BGD)是指在每一次迭代时使用所有样本来进行梯度的更新
② 特点
① 定义:随机梯度下降法(Stochastic Gradient Descent,SGD)每次迭代使用一个样本来对参数进行更新,使得训练速度加快
② 特点
在梯度下降法中,都是给定的统一的学习率,整个优化过程中都以确定的步长进行更新, 在迭代优化的前期中,学习率较大,则前进的步长就会较长,这时便能以较快的速度进行梯度下降,而在迭代优化的后期,逐步减小学习率的值,减小步长,这样将有助于算法的收敛,更容易接近最优解。
学习率过大可能导致模型无法收敛,过小导致收敛速度过慢
1)定义
反向传播(Backpropagation algorithm)全称“误差反向传播”,是在深度神经网络中,根据输出层输出值,来反向调整隐藏层权重的一种方法
2)对于多个隐藏层的神经网络,输出层可以直接求出误差来更新参数,但隐藏层的误差是不存在的,因此不能对它直接应用梯度下降,而是先将误差反向传播至隐藏层,然后再应用梯度下降
Momentum、AdaGrad、Adam是针对SGD梯度下降算法的缺点的改进算法。在SGD算法中,如果函数的形状非均向(参数大小差异较大),SGD的搜索路径会呈“之字形”移动,搜索效率较低。如下图所示:
Momentum是“动量”的意思,和物理有关。用数学式表示Momentum方法,如下所示:
v
←
α
v
−
η
∂
L
∂
W
W
←
W
+
v
v ← \alpha v - \eta \frac{\partial L}{\partial W} \\ W ← W + v
v←αv−η∂W∂LW←W+v
其中,W表示要更新的权重参数,
∂
L
∂
W
\frac{\partial L}{\partial W}
∂W∂L表示W的梯度,
η
\eta
η表示学习率,v对应物理上的速度。在物体不受任何力时,该项承担使物体逐渐减速的任务(α设定为0.9之类的值),对应物理上的地面摩擦或空气阻力。和SGD相比,我们发现“之”字形的“程度”减轻了。这是因为,虽然x轴方向上受到的力非常小,但是一直在同一方向上受力,所以朝同一个方向会有一定的加速。反过来,虽然y轴方向上受到的力很大,但是因为交互地受到正方向和反方向的力,它们会互相抵消,所以y轴方向上的速度不稳定。因此,和SGD时的情形相比,可以更快地朝x轴方向靠近,减弱“之”字形的变动程度。如下图所示:
AdaGrad会为参数的每个元素适当地调整学习率,与此同时进行学习(AdaGrad的Ada来自英文单词Adaptive,即“适当的”的意思),其表达式为:
h
←
h
+
∂
L
∂
W
⨀
∂
L
∂
W
W
←
W
−
η
1
h
∂
L
∂
W
h ← h + \frac{\partial L} {\partial W} \bigodot \frac{\partial L} {\partial W} \\ W ← W - \eta \frac{1}{\sqrt h} \frac{\partial L}{\partial W}
h←h+∂W∂L⨀∂W∂LW←W−ηh
1∂W∂L
其中,W表示要更新的权重参数,
∂
L
∂
W
\frac{\partial L}{\partial W}
∂W∂L表示W的梯度,
η
\eta
η表示学习率,
∂
L
∂
W
⨀
∂
L
∂
W
\frac{\partial L} {\partial W} \bigodot \frac{\partial L} {\partial W}
∂W∂L⨀∂W∂L表示所有梯度值的平方和。在参数更新时,通过乘以
1
h
\frac{1}{\sqrt h}
h
1就可以调整学习的尺度。这意味着,参数的元素中变动较大(被大幅更新)的元素的学习率将变小。也就是说,可以按参数的元素进行学习率衰减,使变动大的参数的学习率逐渐减小。其收敛路径如下图所示:
Adam是2015年提出的新方法。它的理论有些复杂,直观地讲,就是融合了Momentum和AdaGrad的方法。通过组合前面两个方法的优点,有望实现参数空间的高效搜索。其收敛路径如下图所示:
以下是几种梯度下降算法的收敛情况对比:
卷积函数指一个函数和另一个函数在某个维度上的加权“叠加”作用,其表达式为:
s
(
t
)
=
∫
−
∞
+
∞
f
(
a
)
∗
g
(
t
−
a
)
d
a
s(t) = \int ^{+\infty}_{-\infty}f(a)*g(t-a)da
s(t)=∫−∞+∞f(a)∗g(t−a)da
离散化卷积函数表示为:
s
(
t
)
=
f
(
t
)
∗
g
(
t
)
=
∑
n
=
−
∞
∞
f
(
a
)
g
(
t
−
a
)
s(t) =f(t)*g(t)= \sum_{n=-\infty}^{\infty}f(a)g(t-a)
s(t)=f(t)∗g(t)=n=−∞∑∞f(a)g(t−a)
O H = H + 2 P − F H S + 1 O W = W + 2 P − F W S + 1 OH = \frac{H+2P-FH}{S} + 1 \\ OW = \frac{W+2P-FW}{S} + 1 OH=SH+2P−FH+1OW=SW+2P−FW+1
也称子采样层或下采样层(Subsampling Layer),目的是缩小高、长方向上的空间的运算,以降低计算量,提高泛化能力。
最大池化:取池化区域内的最大值作为池化输出
平均池化:取池化区域内的平均值作为池化输出
1)没有要学习的参数
2)通道数不发生变化
3)对微小的变化具有鲁棒性
1)归一化的含义。归一化是指归纳统一样本的统计分布性。归一化在 $ 0-1$ 之间是统计的概率分布,归一化在$ -1–+1$ 之间是统计的坐标分布。
2)归一化处理的目的
1)批量归一化(Batch Normalization,简写BN)指在神经网络中间层也进行归一化处理,使训练效果更好的方法,就是批归一化。
2)优点
减少了人为选择参数。在某些情况下可以取消 dropout 和 L2 正则项参数,或者采取更小的 L2 正则项约束参数;
减少了对学习率的要求。现在我们可以使用初始很大的学习率或者选择了较小的学习率,算法也能够快速训练收敛;
可以不再使用局部响应归一化(BN 本身就是归一化网络) ;
破坏原来的数据分布,一定程度上缓解过拟合;
减少梯度消失,加快收敛速度,提高训练精度。
Dropout是用于深度神经网络防止过拟合的一种方式,在神经网络训练过程中,通过忽略一定比例的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。简单来说,在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。
假设我们要训练这样一个网络,结构如下图所示:
输入是x输出是y,正常的流程是:我们首先把x通过网络前向传播,然后把误差反向传播以决定如何更新参数让网络进行学习。使用Dropout之后,过程变成如下:
(1)首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(上图中虚线表示临时被删除的神经元)
(2) 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)
(3)然后继续重复以下过程:
(1)取平均作用。不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。
(2)减少神经元之间复杂的共适应关系。因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。
卷积层核池化层在结构上具有一定的相似性,都是对感受域内的特征进行提取,并且根据步长设置获取到不同维度的输出,但是其内在操作是有本质区别的,如下表所示:
卷积层 | 池化层 | |
---|---|---|
结构 | 通道数改变 | 通常特征维度会降低,通道数不变 |
稳定性 | 输入特征发生细微改变时,输出结果会改变 | 感受域内的细微变化不影响输出结果 |
作用 | 感受域内提取局部关联特征 | 感受域内提取泛化特征,降低维度 |
参数量 | 与卷积核尺寸、卷积核个数相关 | 不引入额外参数 |
在早期的卷积神经网络中(如LeNet-5、AlexNet),用到了一些较大的卷积核( 11 × 11 11\times11 11×11),受限于当时的计算能力和模型结构的设计,无法将网络叠加得很深,因此卷积网络中的卷积层需要设置较大的卷积核以获取更大的感受域。但是这种大卷积核反而会导致计算量大幅增加,不利于训练更深层的模型,相应的计算性能也会降低。后来的卷积神经网络(VGG、GoogLeNet等),发现通过堆叠2个 3 × 3 3\times 3 3×3卷积核可以获得与 5 × 5 5\times 5 5×5卷积核相同的感受视野,同时参数量会更少( 3 × 3 × 2 + 1 3×3×2+1 3×3×2+1 < $ 5×5×1+1$), 3 × 3 3\times 3 3×3卷积核被广泛应用在许多卷积神经网络中。因此可以认为,在大多数情况下通过堆叠较小的卷积核比直接采用单个更大的卷积核会更加有效。
1)样本优化
2)参数优化
3)模型优化
该任务将文本语料库分隔成原子单元(例如,单词或词组),分词是自然语言处理的一项重要任务,直接关系到对语义的正确理解。
FMM的步骤是:
RMM的基本原理与FMM基本相同,不同的是分词的方向与FMM相反。RMM是从待分词句子的末端开始,也就是从右向左开始匹配扫描,每次取末端m个字作为匹配字段,匹配失败,则去掉匹配字段前面的一个字,继续匹配。
Bi-MM是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。
据SunM.S.和Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确,只有大概9.0%的句子两种切分方法得到的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,使用正向最大匹配法和逆向最大匹配法的切分虽然重合但是错的,或者两种方法切分不同但结果都不对(歧义检测失败)。双向最大匹配的规则是:
(1)如果正反向分词结果词数不同,则取分词数量少的那个;
(2)如果分词结果词数相同:
词性标记(Part-Of-Speech tagging, POS tagging)是将单词分配到各自对应词性的任务。它既可以是名词、动词、形容词、副词、介词等基本词、也可以是专有名词、普通名词、短语动词、动词等。
词干提取(stemming)是抽取词的词干或词根形式(不一定能够表达完整语义),文本样本中的单词的词性与时态对于语义分析并无太大影响,所以需要对单词进行词干提取。
(1)查找算法。一个简单的词干提取器从查找表中查找词尾变化。这种方法的优势是简单、速度快并容易控制异常情况。但它的缺点是所有的词尾变化的形式必须明确地包含在查询表中:一个新的或者是陌生的词是没办法控制的,即使是具有完整的规则(如iPads ~ iPad),并且表会变得非常大。对于具有简单形态的语言,像英文,表的大小比较适中,但对于变化较大语言,如土耳其语,对于每个词根都可能有几百个潜在的变化形式。 一个查找算法初步词性标注来避免过度词干化。
(2)后缀去除法。后缀去除算法不依赖于包含词形变换和词根的查询表,而是使用一个普遍性规则小列表提取词根形式。如,其中的一些规则包括:去掉结尾是"ed",“ing”,"ly"等后缀。
(3)lemmatization算法。一种更加复杂的确定一个词汇停顿词的方法是lemmatisation。这种处理方式包括首先确定词汇的发音部分,接着,根据发音的部分确定词汇的根。停顿词规则随着单词的发声部分的改变而改变。
(4)混合法。混合方法同时使用上述的方法中的两种或更多种。
词形还原就是去掉单词的词缀,提取单词的主干部分,通常提取后的单词会是字典中的单词,不同于词干提取(stemming),提取后的单词不一定会出现在单词中。词形还原是基于词典,将单词的复杂形态转变成最基础的形态。词形还原不是简单地将前后缀去掉,而是会根据词典将单词进行转换。比如drove会转换为drive。词形还原可以将复数还原为单数,也可将带时态的分词还原为原型。
词袋模型(Bag-of-words model,简称 BoW )假设我们不考虑文本中词与词之间的上下文关系,一句话的语义很大程度取决于某个单词出现的次数,所以可以把句子中所有可能出现的单词作为特征名,每一个句子为一个样本,单词在句子中出现的次数为特征值构建数学模型,称为词袋模型。可以理解为用词频作为每个样本的特征。
词袋模型仅仅考虑了词频,没有考虑上下文的关系(即词语间的顺序),因此会丢失一部分文本的语义。
词频(Term Frequency)是指单词在句子中出现的次数除以句子的总词数,即一个单词在一个句子中出现的频率。词频相比单词的出现次数可以更加客观的评估单词对一句话的语义的贡献度。词频越高,对语义的贡献度越大。
D F = 含 有 某 个 单 词 的 文 档 样 本 数 总 文 档 样 本 数 DF = \frac{含有某个单词的文档样本数}{总文档样本数} DF=总文档样本数含有某个单词的文档样本数
逆文档频率是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。即文档总数n与词w所出现文件数docs(w, D)比值的对数。
I
D
F
=
log
(
n
d
o
c
s
(
w
,
D
)
+
1
)
IDF = \log(\frac{n}{docs(w, D) + 1})
IDF=log(docs(w,D)+1n)
词频-逆文档频率(Term Frequency - Inverse Document Frequency)指词频矩阵中的每一个元素乘以相应单词的逆文档频率:
T
F
−
I
D
F
=
T
F
∗
I
D
F
TF-IDF = TF * IDF
TF−IDF=TF∗IDF
其值越大说明该词对样本语义的贡献越大,根据每个词的贡献力度,构建学习模型。如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
1)独热编码把每个词表示为一个长向量。这个向量的维度是词表大小,向量中只有一个维度的值为1,其余维度为0,这个维度就代表了当前的词。例如:
减肥 [1,0,0,0,0,0,0,0,0,0]
瘦身 [0,1,0,0,0,0,0,0,0,0]
减脂 [0,0,1,0,0,0,0,0,0,0]
降脂 [0,0,0,1,0,0,0,0,0,0]
增肥 [0,0,0,0,1,0,0,0,0,0]
2)独热编码的缺点:
丢弃了词与词之间的联系,无法反映出词的距离关系
独热编码产生一个高纬度稀疏矩阵,会导致特征空间非常大
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就是一个特征向量维度。
语料库(corpus)是指存放语言材料的仓库。现代的语料库是指存放在计算机里的原始语料文本或经过加工后带有语言学信息标注的语料文本。以语言的真实材料为基础来呈现语言知识,反映语言单位的用法和意义,基本以知识的原型形态表现——语言的原貌。
语料库中存放的是实际中真实出现过的语言材料
语料库是以计算机为载体承载语言知识的基础资源,但不等于语言知识
真实语料需要经过分析、处理和加工,才能成为有用的资源
支持语言学研究和语言教学研究
支持NLP系统的开发
1)共现(co-occurrence)矩阵指通过统计一个事先指定大小的窗口内的word共现次数,以word周边的共现词的次数做为当前word的vector。具体来说,我们通过从大量的语料文本中构建一个共现矩阵来定义word representation。例如,有语料如下:
I like deep learning.
I like NLP.
I enjoy flying.
则其共现矩阵如下:
2)特点
Word2vec是最近推出的分布式单词表示学习技术,目前被用作许多NLP任务的特征工程技术(例如,机器翻译、聊天机器人和图像标题生成)。从本质上讲,Word2vec通过查看所使用的单词的周围单词(即上下文)来学习单词表示。更具体地说,我们试图通过神经网络根据给定的一些单词来预测上下文单词(反之亦然),这使得神经网络被迫学习良好的词嵌入。
Word2vec通过查看单词上下文并以数字方式表示它,来学习给定单词的含义。所谓“上下文”,指的是在感兴趣的单词的前面和后面的固定数量的单词。假设我们有一个包含N个单词的语料库,在数学上,这可以由以 w 0 , w 1 , . . . , w i w_0,w_1, ..., w_i w0,w1,...,wi和 w N w_N wN表示的一系列单词表示,其中 w i w_i wi是语料库中的第i个单词。
如果我们想找到一个能够学习单词含义的好算法,那么,在给定一个单词之后,我们的算法应该能够正确地预测上下文单词。这意味着对于任何给定的单词wi,以下概率应该较高:
为了得到等式右边,我们需要假设给定目标单词(wi)的上下文单词彼此独立(例如,wi-2和wi-1是独立的)。虽然不完全正确,但这种近似使得学习问题切合实际,并且在实际中效果良好。
考虑以下非常小的文本:
There was a very rich king. He had a beautiful queen. She was very kind.
做一些预处理并删除标点符号和无信息的单词:
was rich king he had beautiful queen she was kind
现在,让我们用其上下文单词为每个单词形成一组元组,其格式为:目标单词→上下文单词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个单词。因此,我们不能手动为大型文本语料库开发词向量,而需要设计一种方法来使用一些机器学习算法(例如,神经网络)自动找到好的词嵌入,以便有效地执行这项繁重的任务。
采样是按照某种时间间隔或空间间隔,将空间上连续的图像变换成离散点的操作称为图像采样。
采样后得到离散图像的尺寸称为图像分辨率。分辨率是数字图像可辨别的最小细节。分辨率由宽(width)和高(height)两个参数构成。宽表示水平方向的细节数,高表示垂直方向的细节数。例如:一副640*480分辨率的图像,表示这幅图像是由 640*480=307200个点组成;一副1920*1080分辨率的图像,表示这幅图像是由1920*1080= 2073600个点组成。
RGB颜色空间中每个像素点有三个维度,分别记录在红(Red)、绿(Green)、蓝(Blue)三原色的分量上的亮度。
HSV颜色空间是另一种常用的计算机中表示颜色的方法。HSV表示色相(hue)、饱和度(saturation)和亮度(value)。H表示颜色的相位角(hue) ,取值范围是0—360;S表示颜色的饱和度(saturation) ,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率;V表示色彩的明亮程度(value) ,范围从0到1。
在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。将RGB图像转换为灰度图像的过程称为图像灰度化处理。
1)分量法。将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。
2)最大值法。将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。
3)将彩色图像中的三分量亮度求平均得到一个灰度值。
4)根据重要性及其它指标,将三个分量以不同的权值进行加权平均。例如,由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像。
f
(
i
,
j
)
=
0.30
R
(
i
,
j
)
+
0.59
G
(
i
,
j
)
+
0.11
B
(
i
,
j
)
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)
1)图像加法可以用于多幅图像平均去除噪声。如下图:
2)图像加法实现水印的叠加效果。
主要意义是增强图像间的差别,图像减法在连续图像中可以实现消除背景和运动检测。如下图:
1)最邻近插值法。最邻近插值法使用点 ( x ′ , y ′ ) (x', y') (x′,y′)最近的整数坐标处的灰度值作为 ( x ′ , y ′ ) (x',y') (x′,y′)的值。这种插值方法计算量小,但精度不高,并且可能破坏图像中的线性关系。
2)双线性插值法。双线性插值法使用点 ( x ′ , y ′ ) (x', y') (x′,y′)最邻近的4个像素值进行插值计算,在两个方向上执行两次线性插值操作。
直方图均衡化将原始图像的直方图,即灰度概率分布图,进行调整,使之变化为均衡分布的样式,达到灰度级均衡的效果,可以有效增强图像的整体对比度。
直方图均衡化能够自动的计算变化函数,通过该方法自适应得产生有均衡直方图的输出图像。能够对图像过暗、过亮和细节不清晰的图像得到有效的增强。
均值滤波指模板权重都为1的滤波器。它将像素的邻域平均值作为输出结果,均值滤波可以起到图像平滑的效果,可以去除噪声,但随着模板尺寸的增加图像会变得更为模糊。经常被作为模糊化使用。
为了减少模板尺寸增加对图像的模糊化,可以使用高斯滤波器,高斯滤波的模板根据高斯分布来确定模板系数,接近中心的权重比边缘的大。大小为5的高斯滤波器及滤波效果如下所示:
1)图像二值化(Image Binarization)就是将图像上的像素点的灰度值全部设置为黑色(0)或白色(255),也就是将整个图像分割成明显的黑白效果的过程。二值化的方法是通过设定一个阈值,大于阈值部分全部置成255,小于阈值部分全部置成0。
2)优点
图像膨胀(dilate)是指根据原图像的形状,向外进行扩充。
图像腐蚀(erode)是指根据原图像的形状,向内进行收缩。
开运算就是先腐蚀再膨胀。开运算能够把比结构元素小的噪声和突刺过滤掉,并切断细长的连接起到分离的作用。例如将因噪声影响粘连在一起的区域分割开来。
闭运算就是先膨胀再腐蚀。闭运算可以把比结构元素小的缺憾或者空洞补上,将细小断裂的区域进行连通。例如将因图像质量而断裂的目标区域进行合并连通。
仿射变换是指图像可以通过一系列的几何变换来实现平移、旋转等多种操作。该变换能够保持图像的平直性和平行性。平直性是指图像经过仿射变换后,直线仍然是直线;平行性是指图像在完成仿射变换后,平行线仍然是平行线。
礼帽运算是用原始图像减去其开运算图像的操作。礼帽运算能够获取图像的噪声信息,或者得到比原始图像的边缘更亮的边缘信息。
黑帽运算是用闭运算图像减去原始图像的操作。黑帽运算能够获取图像内部的小孔,或前景色中的小黑点,或者得到比原始图像的边缘更暗的边缘部分。
图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合。该组图像是由单个图像通过不断地降采样所产生的,最小的图像可能仅仅有一个像素点。通常情况下,图像金字塔的底部是待处理的高分辨率图像(原始图像),而顶部则为其低分辨率的近似图像。向金字塔的顶部移动时,图像的尺寸和分辨率都不断地降低。通常情况下,每向上移动一级,图像的宽和高都降低为原来的二分之一。
图像金子塔可以得到大小不同的图像,从而更方便进行图像处理、计算、识别以及特征提取。
霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方式来获取当前图像内的形状集合,该变换由Paul Hough(霍夫)于1962年首次提出。最初的霍夫变换只能用于检测直线,经过发展后,霍夫变换不仅能够识别直线,还能识别其他简单的图形结构,常见的有圆、椭圆等。
1)填空题:在SVM、逻辑回归等二分类模型中,在模型训练完成后,如果调高分类阈值,会导致模型的精准率(precision)【提高】,模型的召回率(recall)【降低】,模型的auc(Area Under Curve)【增大】。
2)填空题:在模型训练过程中,一般情况下,增加batch size会导致模型的收敛速度【变慢】,减少学习率/步长会导致模型的收敛速度【变慢】。
3)填空题:LSTM对比原始RNN的最大改进是【解决了梯度消失,能处理更长的序列】;bi-LSTM对比LSTM最大的改进是【能够提取反向序列特征】
4)问答题:用户的年龄是离散特征还是连续特征?在输入模型之前如何进行处理?
答:年龄是连续特征。对连续特征处理有如下方式:
5)问答题:假如训练集正负样本比例为1:9,准确率(accuracy)为90%,验证集(测试集)正负样本比例为1:1,准确率为50%,能否肯定发生了过拟合现象?如何解决上述问题?
答:该现象 为样本不均衡导致的欠拟合,由于样本不均衡,导致模型并没有学习到数据的真实分布规律。解决方法是对多数样本进行降采样,对少数样本进行升采样。
6)问答题:经过下列卷积操作后,3*3 conv -> 3*3 conv -> 2*2 max pool -> 3*3 conv,卷积步长为1,没有填充,输出神经元感受野是多大?
答:例如输入是32*32的图像,经过第一层3*3卷积,特征图大小30*30(感受野大小 3*3),再经过 3*3卷积(感受野大小5*5),特征图大小28*28,2*2池化后特征图大小14*14(感受野大小10*10)
7)神经网络加速训练方法有哪些?
答:可以从多个层级对模型进行优化和加速:
8)解释一下BN层的作用,并简述其公式含义
BN的作用:缓解梯度消失,缓解过拟合,加快模型收敛速度,增加模型稳定性
BN的计算公式
9)写出SVM中的硬间隔分类的loss
答:硬间隔指分类误差为0(即所有的样本都分类正确),软间隔指允许有一定程度的较小分类误差。SVM损失函数的推导过程如下:
根据SVM正负例都在间隔上或间隔外,样本需满足以下条件:
θ
T
x
(
i
)
+
b
∣
∣
θ
∣
∣
≥
d
,
y
(
i
)
=
1
θ
T
x
(
i
)
+
b
∣
∣
θ
∣
∣
≤
d
,
y
(
i
)
=
−
1
\frac{\theta ^ T x^{(i)} + b}{||\theta||} \ge d,\ \ y^{(i)} = 1 \\ \frac{\theta ^ T x^{(i)} + b}{||\theta||} \le d,\ \ y^{(i)} = -1
∣∣θ∣∣θTx(i)+b≥d, y(i)=1∣∣θ∣∣θTx(i)+b≤d, y(i)=−1
不等式左右同时除以d得:
θ
T
x
(
i
)
+
b
∣
∣
θ
∣
∣
d
≥
1
,
y
(
i
)
=
1
θ
T
x
(
i
)
+
b
∣
∣
θ
∣
∣
d
≤
1
,
y
(
i
)
=
−
1
\frac{\theta ^ T x^{(i)} + b}{||\theta||d} \ge 1,\ \ y^{(i)} = 1 \\ \frac{\theta ^ T x^{(i)} + b}{||\theta||d} \le 1,\ \ y^{(i)} = -1
∣∣θ∣∣dθTx(i)+b≥1, y(i)=1∣∣θ∣∣dθTx(i)+b≤1, y(i)=−1
上式中主要关注
θ
T
∣
∣
θ
∣
∣
d
\frac{\theta ^T}{||\theta||d}
∣∣θ∣∣dθT和
b
∣
∣
θ
∣
∣
d
\frac{b}{||\theta||d}
∣∣θ∣∣db,可以发现,本质没有什么变化,只是在原基础上进行了一定程度的缩放,所以等式可简化为:
θ
T
x
(
i
)
+
b
≥
1
,
y
(
i
)
=
1
θ
T
x
(
i
)
+
b
≤
1
,
y
(
i
)
=
−
1
\theta ^ T x^{(i)} + b \ge 1,\ \ y^{(i)} = 1 \\ \theta ^ T x^{(i)} + b \le 1,\ \ y^{(i)} = -1
θTx(i)+b≥1, y(i)=1θTx(i)+b≤1, y(i)=−1
综合上面两种情况,将
y
(
i
)
y^{(i)}
y(i)乘进去,可以写成一个不等式:
y
(
i
)
θ
T
x
(
i
)
+
b
≥
1
y^{(i)}\theta ^ T x^{(i)} + b \ge 1
y(i)θTx(i)+b≥1
同时,可以通过计算,求得支持向量到分类边界的间隔为:
d
=
θ
T
x
+
b
∣
∣
θ
∣
∣
=
1
∣
∣
θ
∣
∣
d = \frac{\theta^Tx +b}{||\theta||} = \frac{1}{||\theta||}
d=∣∣θ∣∣θTx+b=∣∣θ∣∣1
所以,要想获得最大间隔的SVM,即要满足约束条件同时最大化几何间隔:
m
a
x
(
1
∣
∣
θ
∣
∣
)
s
.
t
.
y
(
i
)
(
θ
T
x
(
i
)
+
b
)
≥
1
max(\frac{1}{||\theta||}) \\ s.t. \ \ y^{(i)}(\theta ^T x^{(i)} + b) \ge 1
max(∣∣θ∣∣1)s.t. y(i)(θTx(i)+b)≥1
10)问答题:TF-IDF与DF相比优势是什么?
答:单词权重最为有效的实现方法就是TF-IDF, 其指导思想建立在这样一条基本假设之上: 在一个文本中出现很多次的单词, 在另一个同类文本中出现次数也会很多, 反之亦然。所以如果特征空间坐标系取TF 词频作为测度, 就可以体现同类文本的特点。另外还要考虑单词区别不同类别的能力, TF*IDF 法认为一个单词出现的文本频率越小, 它区别不同类别的能力就越大, 所以引入了逆文本频度IDF 的概念, 以TF 和IDF 的乘积作为特征空间坐标系的取值测度。
文档频数(Document Frequency, DF)是最为简单的一种特征选择算法,它指的是在整个数据集中有多少个文本包含这个单词。在训练文本集中对每个特征计一算它的文档频次,并且根据预先设定的阑值去除那些文档频次特别低和特别高的特征。
11)问答题:对于中文LDA、NER和文本分类任务,是字向量好一些还是词向量好一些?为什么?
答:当使用机器学习的算法构建文本向量时,如词袋模型、TF-IDF和N-gram模型时,词向量算法会优于字向量,因为这些算法本身不能表示单词的语言信息,而机器学习算法通过分词后更能表达语句的含义,所以词向量优于字向量。
而采用深度学习算法构建文本向量时,字向量优于词向量,本质是指字向量在保持本身运算性能优越的同时,语义上可以表达词向量等级的更细腻语义。
12)简述离散化的好处,并写出离散化的常用方法有哪些?
离散化的好处:降维;非线性化;容易增加和减少特征;降低噪声值的影响
离散化的方法:
区间划分法。如1-100岁可以划分为:(0-18)未成年、(18-50)中青年、(50-100)中老年。区间划分包括等距划分、按阶段划分、特殊点划分等
卡方检验。分裂方法,就是找到一个分裂点看,左右2个区间,在目标值上分布是否有显著差异,有显著差异就分裂,否则就忽略。这个点可以每次找差异最大的点。合并类似,先划分如果很小单元区间,按顺序合并在目标值上分布不显著的相邻区间,直到收敛。卡方值通常由χ2分布近似求得。 χ2表示观察值与理论值之问的偏离程度。
信息增益法。这个和决策树的学习很类似。分裂方法,就是找到一个分裂点看,左右2个区间,看分裂前后信息增益变化阈值,如果差值超过阈值(正值,分列前-分裂后信息熵),则分裂。每次找差值最大的点做分裂点,直到收敛。合并类似,先划分如果很小单元区间,按顺序合并信息增益小于阈值的相邻区间,直到收敛。
13)利用梯度下降法优化目标函数ln(wx),给定第一轮参数w=2, x=10,请写出第三轮优化后的参数值(学习率 λ \lambda λ = 0.1)
第一步:根据初始值计算梯度
∂
y
∂
w
=
(
l
n
(
w
)
+
l
n
(
x
)
)
′
=
(
l
n
(
w
)
)
′
=
1
w
\frac{\partial y}{\partial w} = (ln(w) + ln(x))' = (ln(w))'= \frac{1}{w}
∂w∂y=(ln(w)+ln(x))′=(ln(w))′=w1
所以w的初始梯度为 1 / 2 = 0.5.
第二步:根据梯度更新公式计算更新w
w
=
w
+
Δ
w
=
2
−
(
0.1
∗
0.5
)
=
1.95
w = w + \Delta w = 2 - (0.1 * 0.5) = 1.95
w=w+Δw=2−(0.1∗0.5)=1.95
第三步:继续计算第二轮梯度,并更新
w
=
w
+
Δ
w
=
1.95
−
(
0.1
∗
1
1.95
)
≈
1.8987
w = w + \Delta w = 1.95 - (0.1 * \frac{1}{1.95}) \approx 1.8987 \\
w=w+Δw=1.95−(0.1∗1.951)≈1.8987
第四步:计算第三轮梯度,并更新
w
=
w
+
Δ
w
=
1.8987
−
(
0.1
∗
1
1.8987
)
≈
1.846
w = w + \Delta w = 1.8987 - (0.1 * \frac{1}{1.8987}) \approx 1.846 \\
w=w+Δw=1.8987−(0.1∗1.89871)≈1.846
14)已知卷积层中输入尺寸32 * 32 *3,有10个大小为5*5的卷积核,stride=1,pad=2,输出大小为多少?
输出特征图大小:OH = OW = (32 + 2 * 2 - 5 / 1 ) + 1 = 32
10个卷积核输出10个通道,总特征数量:10 * 32 * 32 = 10240
15)在把神经网络用于N个类别的分类任务时,输出层一般采用N路softmax神经元和Cross Entropy误差函数。但是在只有两个类别时,一般直接用一个sigmoid神经元,请证明2路softmax神经元和1个sigmoid神经元是等价的
16)Faster RCNN中,ROI pooling具体如何工作(怎么把不同大小的框,pooling到同样大小)?
答:ROI pooling的主要作用,是将候选区域的特征图处理成同样大小输出。例如,输入8x8的特征图,输出2x2的特征图,其工作原理入下:
输入:
第一步:根据ROI projection算法计算候选区对应的特征图区域
第二步:将其划分为2x2个区域,针对每个区域做max pooling
第三步:产生输出
17)tensorflow[while_loop]和python[for]循环的区别,什么情况下for更优?
答:tensorflow的流程控制,是执行在tensorflow平台上,python语言的for循环执行在Python解释器中。如果Python解释器能独立完成for循环中的计算(即不包含tensorflow中的operation),使用Python的for循环效率更高
18)Sigmoid函数的求导过程
答:根据分数求导公式
(
U
V
)
′
=
U
′
V
−
U
V
′
V
2
(\frac {U}{V})' = \frac {U'V - UV'} {V^2}
(VU)′=V2U′V−UV′
Sigmoid函数表达式:$y = \frac{1}{1+e^{-x}} $,先对分母部分求导:
(
1
+
e
−
x
)
′
=
e
−
x
l
n
(
e
)
=
e
−
x
(1 + e^{-x})' = e^{-x} ln(e) = e^{-x}
(1+e−x)′=e−xln(e)=e−x
再根据分数求导公式有:
(
1
1
+
e
−
x
)
′
=
0
∗
(
1
+
e
−
x
)
−
1
∗
e
−
x
(
1
+
e
−
x
)
2
=
1
+
e
−
x
−
1
(
1
+
e
−
x
)
2
=
1
+
e
−
x
(
1
+
e
−
x
)
2
−
1
(
1
+
e
−
x
)
2
=
1
1
+
e
−
x
(
1
−
1
1
+
e
−
x
)
=
f
(
x
)
(
1
−
f
(
x
)
)
(\frac{1}{1+e^{-x}})' = \frac{0 * (1+e^{-x}) - 1 * e^{-x}}{(1+e^{-x})^2} \\ = \frac{1 + e^{-x} -1}{(1+e^{-x})^2} \\ = \frac{1 + e^{-x}}{(1+e^{-x})^2} - \frac{1}{(1+e^{-x})^2} \\ = \frac{1}{1+e^{-x}} (1- \frac{1}{1+e^{-x}}) \\ = f(x)(1 - f(x))
(1+e−x1)′=(1+e−x)20∗(1+e−x)−1∗e−x=(1+e−x)21+e−x−1=(1+e−x)21+e−x−(1+e−x)21=1+e−x1(1−1+e−x1)=f(x)(1−f(x))
推导完毕.
19)Sigmoid函数为什么会出现梯度消失?Sigmoid函数导数最大值出现在哪个值?Relu为什么能解决梯度消失问题?
答:Sigmoid函数当自变量大于某个值或小于某个值时,函数梯度接近于0,出现梯度消失。当自变量的值为0时,函数导数最大。Relu大于0的部分梯度均为1,所以避免了梯度消失情况。
20)SSD和YOLO的区别?YOLOv2和YOLOv3的区别?
答:(1)抛开具体实现上的差异, SSD检测精度优于YOLO3,YOLO3检测时间快于SSD
(2)YOLOv2与YOLOv3的区别
21)测试集中有1000个样本,600个是A类,400个B类,模型预测结果700个判断为A类,其中正确有500个,300个判断为B类,其中正确有200个。请计算B类的查准率(Precision)和召回率(Recall)
答:可以建立以下混淆矩阵
A | B | |
---|---|---|
A | 500 | 100 |
B | 200 | 200 |
类别B查准率:200 / (200 + 100) = 2/3
类别B召回率:200 / (200 + 200) = 1/2 = 0.5
22)训练模型时,如果样本类别不均衡,有什么办法解决?如何判断模型是否过拟合?对于神经网络中有哪些方法解决过拟合问题?
答:(1)对于类别不均衡问题,可以对样本多的类别采用降采样,对少的类别采用过采样
(2)通过对比训练集和测试集准确率判断模型是否过拟合,如果训练集准确率较高、测试集准确率较低则判断为过拟合
(3)见前面章节
23)神经网络节点激活函数的作用是什么?Sigmoid,Relu和softmax函数的表达式是什么?各自作用的优缺点是什么?
答案见前面章节
24)下采样和上采样的理解
答:对矩阵缩小称为下采样,对矩阵放大称为上采样
25)深度可分离卷积是什么?
答:深度可分离卷积由depthwise卷积和pointwise卷积两部分结合起来,在提取特征同时对数据进行降维
普通卷积:输入5x5三通道图像,4个3x3三通道卷积核,总参数量为4 × 3 × 3 × 3 = 108,如下图所示:
采用深度可分离卷积时,先做逐通道卷积:
再做逐点卷积:
最终得到四个通道的特征图,但参数总量减少为:
逐通道卷积:3 × 3 × 3 = 27
逐点卷积:1 × 1 × 3 × 4 = 12
共39个参数。
26)目标检测常用算法有哪些,简述对算法的理解
答:目标检测可分为两阶段检测和一阶段检测,两阶段检测先产生候选区,再做分类和回归,分类问题确定目标物体的类别,回归问题确定目标物体的位置。
(1)两阶段检测技术
步骤:先产生候选区,再做分类和回归
特点:检测速度慢,检测精度高
代表性模型:R-CNN/Fast R-CNN/Faster R-CNN系列;SPP-Net
(2)一阶段检测技术
步骤:直接在特征图上做分类和回归
特点:检测速度快,检测精度较低
代表性模型:YOLO1/2/3/4/5系列,SSD,RetinaNet
27)LSTM跟GRU的区别
答:GRU是LSTM的简化版,GRU参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。从结构上来说,GRU只有两个门(update和reset),LSTM有三个门(forget,input,output)
28)用伪代码形式写出双线性插值的核心公式
答:双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。其原理为:
假如我们想得到未知函数f在点P= (x,y) 的值,假设我们已知函数f在Q11 = (x1,y1)、Q12 = (x1,y2),Q21 = (x2,y1) 以及Q22 = (x2,y2) 四个点的值。首先在x方向进行线性插值,得到R1和R2,然后在y方向进行线性插值,得到P.
表示成公式:
f
(
R
1
)
≈
x
2
−
x
x
2
−
x
1
f
(
Q
11
)
+
x
−
x
1
x
2
−
x
1
f
(
Q
21
)
w
h
e
r
e
R
1
=
(
x
,
y
1
)
f
(
R
2
)
≈
x
2
−
x
x
2
−
x
1
f
(
Q
12
)
+
x
−
x
1
x
2
−
x
1
f
(
Q
22
)
w
h
e
r
e
R
1
=
(
x
,
y
2
)
f(R_1) \approx \frac{x_2 - x}{x_2 - x_1} f(Q_{11}) + \frac{x - x_1}{x_2 - x_1} f({Q21}) \ \ where R_1 =(x, y_1) \\ f(R_2) \approx \frac{x_2 - x}{x_2 - x_1} f(Q_{12}) + \frac{x - x_1}{x_2 - x_1} f({Q22}) \ \ where R_1 =(x, y_2)
f(R1)≈x2−x1x2−xf(Q11)+x2−x1x−x1f(Q21) whereR1=(x,y1)f(R2)≈x2−x1x2−xf(Q12)+x2−x1x−x1f(Q22) whereR1=(x,y2)
29)介绍一种图像特征提取方法(如Sift特征、Hog特征、LBP特征等),从方法实现的过程原理、方法的用途、特征的特点,或其它你了解的方面任选一种介绍即可
(1)Sift特征
(2)Hog特征
(3)LBP特征
30)求矩阵特征值、特征向量,或谈谈特征值分解(或奇异值分解)在图像中的应用
A
=
(
1
2
3
4
5
6
7
8
9
)
(2)
A = \left(
31)写出一维傅里叶正、逆变换公式,或谈谈傅里叶变换在图像分析中有哪些作用?
答:一维傅里叶变换:
F
(
u
)
=
∑
M
=
0
M
−
1
f
(
x
)
(
e
−
j
u
x
2
π
M
)
,
u
=
0
,
1
,
2
,
.
.
.
,
M
−
1
⇒
F
(
u
)
=
∑
M
=
0
M
−
1
f
(
x
)
(
c
o
s
(
u
x
2
π
M
)
−
j
s
i
n
(
u
x
2
π
M
)
)
,
u
=
0
,
1
,
2
,
.
.
.
,
M
−
1
F(u) = \sum_{M=0}^{M-1} f(x)(e^{-jux \frac{2 \pi}{M}}), u = 0,1,2,...,M-1 \\ \Rightarrow F(u) = \sum_{M=0}^{M-1} f(x)(cos(ux \frac{2 \pi}{M}) - jsin(ux \frac{2 \pi}{M})), u = 0,1,2,...,M-1
F(u)=M=0∑M−1f(x)(e−juxM2π),u=0,1,2,...,M−1⇒F(u)=M=0∑M−1f(x)(cos(uxM2π)−jsin(uxM2π)),u=0,1,2,...,M−1
一维傅里叶逆变换:
F
(
u
)
=
1
M
∑
u
=
0
M
−
1
F
(
u
)
e
j
u
x
2
π
M
,
x
=
0
,
1
,
2
,
.
.
.
,
M
−
1
⇒
F
(
u
)
=
1
M
∑
u
=
0
M
−
1
F
(
u
)
(
c
o
s
(
u
x
2
π
M
)
−
j
s
i
n
(
u
x
2
π
M
)
)
,
x
=
0
,
1
,
2
,
.
.
.
,
M
−
1
F(u) = \frac{1}{M}\sum_{u=0}^{M-1} F(u)e^{jux \frac{2 \pi}{M}}, x = 0,1,2,...,M-1 \\ \Rightarrow F(u) = \frac{1}{M} \sum_{u=0}^{M-1} F(u)(cos(ux \frac{2 \pi}{M}) - jsin(ux \frac{2 \pi}{M})), x = 0,1,2,...,M-1
F(u)=M1u=0∑M−1F(u)ejuxM2π,x=0,1,2,...,M−1⇒F(u)=M1u=0∑M−1F(u)(cos(uxM2π)−jsin(uxM2π)),x=0,1,2,...,M−1
傅里叶变换用于在时域信号和频域信号之间进行转换,在图像处理中,能分离出图像高频部分和低频部分。
32)常用图像分割算法有哪些?各有什么优缺点?
答:(1)传统图像算法:分水岭算法
(2)深度学习算法
33)简单介绍几种典型的传统人脸检测算法和基于深度学习的人脸检测算法
答:(1)基于传统人脸检测算法:Haar级联人脸检测算法
(2)深度学习人脸检测算法:MTCNN模型,Cascade CNN模型
34)简单介绍几种具有代表性的人脸识别模型结构及算法,以及常用的损失函数
答:(1)基于传统人脸识别算法:LBPH人脸识别算法,EigenFaces人脸识别算法
(2)深度学习人脸检测算法:DeepFace模型,FaceNet模型,DeepID系列模型
35)简单介绍常用人脸活体检测算法,可以从动作配合式和静默检测两个方面进行阐述
答:所谓“活体检测”是指判断捕捉到的人脸是真实人脸,还是伪造的人脸攻击(如:彩色纸张打印人脸图,电子设备屏幕中的人脸数字图像 以及 面具 等)
36)简单介绍几种常用的人脸属性及识别算法
答:性别识别、年龄估计、种族识别、表情识别
37)简单介绍几种典型传统文字行检测算法和基于深度学习的文字行检测算法
答:文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。
文字检测的场景主要分为两种,一种是简单场景,另一种是复杂场景。其中,简单场景的文字检测较为简单,例如像书本扫描、屏幕截图、或者清晰度高、规整的照片等;而复杂场景,主要是指自然场景,情况比较复杂,例如像街边的广告牌、产品包装盒、设备上的说明、商标等等,存在着背景复杂、光线忽明忽暗、角度倾斜、扭曲变形、清晰度不足等各种情况,文字检测的难度更大。
传统检测方法 包括形态学操作、MSER+NMS等方法;深度学习文字检测主要包括CTPN、SegLink、EAST等方法。
38)简单介绍CRNN+CTC和CRNN+Attention文字行识别方法
答:(1)CRNN+CTC模型。该模型主要实现了端对端的文字识别,其主要流程为:输入 --> 卷积(提取特征) --> 特征图转序列 --> 双向循环神经网络 --> CTC。
(2)CRNN+Attension模型。该模型在CRNN网络的输出层后面加上一层Attention(注意力)机制。Attention 机制在序列学习任务上具有巨大的提升作用,在编解码器框架内,通过在编码段加入Attention模型,对源数据序列进行数据加权变换,或者在解码端引入Attention 模型,对目标数据进行加权变化,可以有效提高序列对序列的自然方式下的系统表现。
39)简述AdaBoost,BP神经网络基本原理
答:(1)Boosting,也称为增强学习或提升法,是一种重要的集成学习技术,能够将预测精度仅比随机猜度略高的弱学习器增强为预测精度高的强学习器,这在直接构造强学习器非常困难的情况下,为学习算法的设计提供了一种有效的新思路和新方法。作为一种元算法框架,Boosting几乎可以应用于所有目前流行的机器学习算法以进一步加强原算法的预测精度,应用十分广泛,产生了极大的影响。AdaBoost正是其中最成功的代表,被评为数据挖掘十大算法之一,其主要思想为:
Aadboost 算法系统具有较高的检测速率,且不易出现过适应现象。但是该算法在实现过程中为取得更高的检测精度则需要较大的训练样本集,在每次迭代过程中,训练一个弱分类器则对应该样本集中的每一个样本,每个样本具有很多特征,因此从庞大的特征中训练得到最优弱分类器的计算量增大。
(2)BP神经网络。BP(back propagation)神经网络按照误差反向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络。在神经网络训练过程中,使用梯度下降法对模型参数进行优化。因为深度神经网络存在隐藏层,隐藏层的误差或偏导数不容易求解,所以采用反向传播算法,根据输出层的误差(或参数偏导数)一次倒退每个隐藏层的每个参数的误差(或偏导数)的方式进行训练。
40)贝叶斯公式(N++个公司都考到了)
答:贝叶斯定义是通过先验概率计算后验的公式,公式定义为:
P
(
A
∣
B
)
=
P
(
A
)
P
(
B
∣
A
)
P
(
B
)
P(A|B) = \frac{P(A)P(B|A)}{P(B)}
P(A∣B)=P(B)P(A)P(B∣A)
推导过程:
P
(
A
)
P(A)
P(A)和
P
(
B
)
P(B)
P(B)是A事件和B事件发生的概率.
P
(
A
∣
B
)
P(A|B)
P(A∣B)称为条件概率,表示B事件发生条件下,A事件发生的概率;
P
(
A
,
B
)
P(A,B)
P(A,B)为联合概率,即时间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)=P(B)P(A∣B)P(B,A)=P(A)P(B∣A)
因为
P
(
A
,
B
)
=
P
(
B
,
A
)
P(A,B)=P(B,A)
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)P(A∣B)=P(A)P(B∣A)
两边同时除以P(B),则得到贝叶斯定理的表达式。
41)使用过哪些图像算法库
答:opencv,PIL
42)在你以前有关图像信号的处理工作中,请列举你单独负责的项目,并简述你在项目中的职责;项目困难点在哪里,是如何解决的?
答:参照关于项目问题的总结
43)简述常用边沿检测算子,各有什么特性?
答:(1)Sobel算子。Sobel算子是典型的基于一阶导数的边缘检测算子,由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。Sobel算子对于象素的位置的影响做了加权,与Prewitt算子、Roberts算子相比因此效果更好。Sobel算子包含两组3x3的矩阵,分别为横向及纵向模板,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。实际使用中,常用如下两个模板来检测图像边缘:
G
x
=
[
−
1
0
1
−
2
0
2
−
1
0
1
]
,
G
y
=
[
1
2
1
0
0
0
−
1
−
2
1
]
G_x = \left[
其中,第一个为水平边沿检测模板,第二个为垂直边沿检测模板。图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小:
G
=
G
x
2
+
G
y
2
G = \sqrt{G_x^2 + G_y^2}
G=Gx2+Gy2
(2)Prewitt算子。Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。对数字图像f(x,y),Prewitt算子的定义如下:
G(i)=|[f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)]-[f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)]|
G(j)=|[f(i-1,j+1)+f(i,j+1)+f(i+1,j+1)]-[f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)]|
则 P(i,j)=max[G(i),G(j)]或 P(i,j)=G(i)+G(j)
Prewitt梯度算子法就是先求平均,再求差分来求梯度。水平和垂直梯度模板分别为:
G
x
=
[
−
1
0
1
−
1
0
1
−
1
0
1
]
,
G
y
=
[
1
1
1
0
0
0
−
1
−
1
1
]
G_x = \left[
该算子与Sobel算子类似,只是权值有所变化。
(3)Laplace算子。 Laplace算子是一种各向同性算子,二阶微分算子,在只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。了更适合于数字图像处理,将拉式算子表示为离散形式:
▽
2
f
=
∂
2
f
∂
x
2
+
∂
2
f
∂
y
2
\bigtriangledown ^2f = \frac{\partial ^2 f}{\partial x^2} + \frac{\partial ^2 f}{\partial y^2}
▽2f=∂x2∂2f+∂y2∂2f
离散拉普拉斯算子的模板:
G
x
=
[
0
1
0
1
−
4
1
0
1
0
]
,
G
y
=
[
1
1
1
1
−
8
1
1
1
1
]
G_x = \left[
(4)Canny算子。该算子功能比前面几种都要好,但是它实现起来较为麻烦,Canny算子是一个具有滤波,增强,检测的多阶段的优化算子,在进行处理前,Canny算子先利用高斯平滑滤波器来平滑图像以除去噪声,Canny分割算法采用一阶偏导的有限差分来计算梯度幅值和方向,在处理过程中,Canny算子还将经过一个非极大值抑制的过程,最后Canny算子还采用两个阈值来连接边缘。其步骤为:
step1: 用高斯滤波器平滑图象;
step2: 用一阶偏导的有限差分来计算梯度的幅值和方向;
step3: 对梯度幅值进行非极大值抑制;
step4: 用双阈值算法检测和连接边缘。
44)简述常用图像去噪方法,各有什么特性?(N个公司都考到了)
答:(1)均值滤波。在N领域内求均值;
(2)中值滤波。在N邻域内求终止,对椒盐噪声抑制效果较好,图像细节损失较大;
(3)高斯滤波。采用满足高斯分布的滤波器进行滤波,大小、标准差可根据参数设置;
(4)双边滤波。在保留轮廓清晰的情况下进行降噪处理。
45)请列举几种常用的图像空间
答:图像空间指图像的色彩表示方式,常用的有RBG,HSV,YUV等色彩空间
47)常用插值算法有哪些?
答:最邻近插值法、双线性插值法
48)什么叫算子?请列举常用的边沿检测算子
答:算子(Operator)是一个数学概念,它将一个元素在向量空间(或模)中转换为另一个元素的映射,简单来说就是独立的计算单元或规则。常用边沿检测算子有Sobel算子、Prewitt算子、Laplacian算子、Canny算子。
49)【选择题】下列算法中属于图像锐化处理的是(B)
A、低通滤波
B、加权平均法
C、高通滤波
D、中值滤波
解析:低通滤波指低频信号能正常通过,而高于设定临界值的高频信号则被阻隔、减弱;高通滤波高频信号能正常通过,而低于设定临界值的低频信号则被阻隔、减弱。在图像中,梯度较大的部分为图像高频部分,梯度较小的为图像低频部分。高通滤波是提取出边沿和轮廓,低通滤波是取出边沿轮廓以外的部分。中值滤波主要用于图像模糊及降噪。图像锐化是要加强边沿部分,增加像素差异,所以加权平均法可以实现。
50)【选择题】图像与灰度直方图间的对应关系是(B)
A、一一对应
B、多对一
C、一对多
D、以上都不是
答:图像灰度直方图反映的是图像像素值分布情况,一个图像只有一个直方图;但直方图相同的图像,可能有不同的像素排列,而呈现出不同的图像内容。
51)【判断题】以下说法是否正确
52)将高频加强和直方图均衡相结合是得到边沿锐化和对比度增强的有效方法。上述两个操作先后顺序对结果有影响吗?为什么?
54)HOUGH变换的原理是什么?HOUGH变换用在检测圆上应该怎么做?
答:HOUGH(霍夫)变换主要用于检测图像中的简单几何形状,如直线/线段、圆形、椭圆等。在使用HOUGH变换检测圆形时,实际是找边沿是否满足(x, y)为中心,R为半径的圆的方程式。在实际使用中,可以先对图像进行灰度化处理、二值化处理或求图像轮廓、梯度信息,再使用HOUGH变换,以获得更好的效果。
55)简述傅里叶变换在图像处理中的应用
答:傅里叶变换是将时域信号转换为频域信号的一种方式。简单来说,该变换能将一组周期信号转变为多个正弦信号的叠加。在图像处理中,利用傅里叶变换,可以分离出图像的高频部分、低频部分,从而提取出图像的轮廓边沿,或轮廓边沿以外的部分。
56)什么是神经网络,有什么主要特点?选择神经网络应该考虑什么因素?
答:见讲义部分
57)解释线性判别
答:LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,其思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”,即将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。如下图所示:
例如,有以下两种投影方式,第二种投影方式更好,因为红色数据和蓝色数据各个较为集中,且类别之间的距离明显。
在实际应用中,数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。
58)深度学习中,常见的layer的类别有哪些?其作用分别是什么?
答:常见的层有:
59)常用的图像二值化方法及使用示例
答:设定一个阈值,用每个图像的像素值跟阈值进行比较,大于阈值设为最大值,小于阈值设为最小值,实现图像二值化。
60)写出Sobel算子,拉普拉斯算子,以及它们梯度方向上的区别,并编程实现
答:见前面
61)列出机器学习中常见的分类算法,并比较各自的特点
答:机器学习中常见的分类算法有:
(1)线性分类器。使用线性模型计算连续值,然后进行离散化处理。特点是计算相对简单
(2)支持向量机。二分类模型,寻找最优线性分类边界,所谓最优分类边界指支持向量间隔最大化。强分类器。
(3)决策树。决策树根据样本属性,构建一个树状结构,将具有相同属性的样本划分到一个子节点下,通过投票法产生分类结果。弱分类器。
(4)朴素贝叶斯。利用贝叶斯定理,计算样本属于某个类别的概率,分类到概率最高的类别中。所谓“朴素”,指假设特征之间是独立的。
(5)KNN。找与这个待分类样本在特征空间中距离最近的K个已标注样本作为参考,做出分类决策。
62)二值图、灰度图及RGB彩色图像的概念、表示及存储
答:(1)二值图:图像灰度值只有两种颜色
(2)灰度图:只有亮度信号,没有色彩信号,灰度图像表示一个单通道矩阵
(3)彩色图像:包含彩色信号的图像,彩色图像表示一个三通道数组。RGB色彩空间三个通道分别存储红色、绿色、蓝色三原色信息,HSV色彩空间分别存储图像的色相、饱和度和亮度。
63)实现对一彩色图像的灰度化算法,可以写多个
答:(1)平均值法
(2)最大值法
(3)取单通道值
(4)加权平均法
64)数码相机大多使用jpg格式存储数字相片,如果一般情况下jpg格式的压缩比为5-10,请估计使用500万像素数码相机所拍摄到的彩色数字相片的高、宽,以及文件大小
65)你是否学习或接触过数字图像技术?如果学习或接触过,试写一算法,实现将彩色图像旋转180度
66)给定一个n*n的二维矩阵表示一个图像,将图像顺时针旋转90度,并在下方写出代码。(说明:必须在原地旋转,这意味着需要直接修改输入二维矩阵,不要使用另一个矩阵来旋转图像)
原矩阵:
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
旋转后:
[[7, 4, 1],
[8, 5, 2],
[9, 6, 3]]
67)朴素贝叶斯分析的关键假设是什么?基于几点需要做这样的假设?
答:假设样本特征是独立的、不相互影响。在计算中,如果不引入该假设,可能某些先验概率无法计算出来。
68)简述k-means算法的输入、输出及聚类过程
答:见前面章节
69)基于用户协同过滤的算法思想是什么?
70)我们想要减少数据集中的特征,即降维,选择以下合适的方案(ABCD)
A、使用前向特征选择方法
B、使用后向特征选择方法
C、先把所有特征都使用,去训练一个模型,得到测试集上的表现,然后去掉一个特征,再去训练,用交叉验证看看测试集上的表现。如果表现比原来好,可以去除这个特性
D、查看相关性表,去除相关性高的一些特征
解析:特征选择 ( Feature Selection )也称特征子集选择( Feature Subset Selection , FSS ) ,或属性选择( Attribute Selection ) ,是指从全部特征中选取一个特征子集,使构造出来的模型更好。特征越多,维度越高,模型分析、训练越复杂,且容易引起过拟合。选择特征方法有:
71)ResNet网络最后两层是什么?
答:ResNet最后三层为平均池化层、全连接层、softmax,产生1000路输出。
72)【选择题】以下说法正确的是(ABC)
A、语义分割需要区分到图中每一点像素点,而不仅仅是矩形框中的部分。但是同一个物体不同实例不需要单独分割出来
B、实例分割只对图像中object进行检测,并对检测到的object进行分割
C、全景分割是对图中所有物体包括背景都要进行检测和分割
D、Unet是可以不反向传播的,它的网络结构是基于多尺度的
73)【选择题】以下说法中正确的是(A)
A、SVM对噪声(如来自其他分部的噪声样本)鲁棒
B、在AdaBoost中,所有被分错的样本的权重更新比例相同
C、Boosting和Bagging都是组合多个分类器投票的方法,二者都是根据单个分类器正确率决定其权重
D、给定N个数据点,如果其中一半用于训练,一半用于测试,则训练误差和测试误差之间的差别会随着N的增加而减少
74)【选择题】假定某同学使用朴素贝叶斯分类模型时,不小心将训练数据两个维度搞重了,那么以下说法正确对的是(A)
A、这个被重复的特征在模型中决定的作用会被加强
B、模型效果相比无重复特征情况下精度会降低
C、如果所有特征都被重复一遍,得到的模型预测结果相对于不重复的情况下的模型预测结果一样
D、当两列特征高度相关时,无法用两列特征相同时所得到的结论来分析问题
E、NB可以用来做最小二乘回复
F、以上说法都不正确
75)【选择题】机器学习中L1正则化和L2正则化的区别是(AD)
A、使用L1可以得到稀疏的权值
B、使用L1可以得到平滑的权值
C、使用L2可以得到稀疏的权值
D、使用L2可以得到平滑的权值
76)【选择题】关于线性回归的描述,以下正确的有(BC)
A、基本假设包括随机干扰项是均值为0,方差为1的标准正态分布
B、基本假设包括随机干扰项是均值为0的同方差正态分布
C、在违背基本假设时,普通最小二乘估计量不再是最佳线性无偏估计量
D、在违背基本假设时,模型不再可以估计
E、可以用DW检验残差是否存在序列相关性
F、多重共线会使得参数估计方差减小
解析:线性回归有五个基本假设:
假设失效带来的影响:
77)【选择题】在分类问题中,我们经常会遇到正负样本数量不等的情况,比如正样本为10W条数据,负样本只有1W条数据,以下最合适的处理方法是(A)
A、将负样本重复10次,生成10W样本量,打乱顺序参与分类
B、直接进行分类,可以最大限度利用数据
C、从10W正样本中随机抽取1W参与分类
D、将负样本每个权重设置为10,正样本权重为1,参与训练过程
78)假定目标变量的类别非常不平衡,即主要类别占据了训练数据的99%。现在你的模型在测试集上表现为99%的准确率,那么下面哪一项表述是正确的(AD)
A、准确率并不适合与衡量不平衡类别问题
B、准确率适合与衡量不平衡类别问题
C、精确率和召回率适合于衡量不平衡类别问题
D、精确率和召回率不适合于衡量不平衡类别问题
79)其它条件不变的情况下,哪种做法容易引起过拟合(D)
A、增加训练集量
B、减少神经网络隐藏层节点数
C、删除系数特征
D、SVM算法中使用高斯核/RBF核替代线性核
80)以下选项属于梯度下降学习率设定的策略有(ABCD)
A、固定学习率
B、循环学习率
C、余弦退火
D、热重启随机梯度下降
E、不同的网络层使用不同学习率
81)以下选项中,叙述正确的是(DE)
A、利用函数最优化算法,可以得到全局最优解
B、卷积核可以设定为长方形
C、池化核中的数值是自定义的
D、卷积核的数据决定输出特征图的维度
E、逻辑回归是线性分类器
82)在深度学习中,涉及到大量的矩阵相乘,现在需要计算三个稠密矩阵A,B,C的乘积,假设三个矩阵尺寸分别为m*n, n*p, p*q,且m<n<p<q,以下计算顺序效率最高的是(A)
A、(AB)C
B、AC(B)
C、A(BC)
D、效率都相同
解析 :AC不能相乘,所以B答案错误;
A选项计算次数A选项的乘法计算次数,m*n*p+m*p*q,C选项计算次数n*p*q+m*n*q,因为m<n<p<q,所以m*n*p<m*n*q,m*p*q<n*p*q
83)L1与L2范数在Logistic Regression中,如果同时加入L1和L2范数,会产生什么效果(A)
A、可以做特征选择,并一定程度防止过拟合
B、能解决维度灾难问题
C、能加快计算速度
D、可以获得更准确的结果
解析:L1范数是指向量中各个元素绝对值之和,用于特征选择。L2范数 是指向量各元素的平方和然后求平方根,用于 防止过拟合,提升模型的泛化能力。
84)简述CNN、LSTM原理和两者适合应用的场合,叙述CNN如何进行特征提取、分类预测
答:原理见讲义
适用场景:CNN主要用于图像问题;LSTM主要用于序列问题,如NLP,语音识别
sigmid与softmax的区别
网络模型都调什么参数
介绍一下项目模型的结构
梯度爆炸梯度消失
vgg16的特点 以及模型的结构
resnet模型结构与特点
残差网络的内容与特点
yolo3的输出是什么样的
交叉验证怎么工作的,以及如何提高模型精度
输入图片的大小?
照片上的图形是什么是怎么出来的?
原函数 | 导函数 |
---|---|
y = c y=c y=c | y ′ = 0 y'=0 y′=0 |
y = n x y=n^x y=nx | y ′ = n x l n ( n ) y'=n^x ln(n) y′=nxln(n) |
y = l o g a x y=log_a x y=logax | y ′ = 1 x l n ( a ) y'= \frac{1}{x ln(a)} y′=xln(a)1 |
y = l n ( x ) y= ln (x) y=ln(x) | y ′ = 1 x y' = \frac {1} {x} y′=x1 |
y = x n y=x^n y=xn | y ′ = n x n − 1 y' = n x^{n-1} y′=nxn−1 |
y = 1 x n y= \frac{1}{x^n} y=xn1 | y ′ = − n x n + 1 y'= - \frac {n} {x^{n+1}} y′=−xn+1n |
y = s i n ( x ) y=sin (x) y=sin(x) | y ′ = c o s ( x ) y'=cos (x) y′=cos(x) |
y = c o s ( x ) y=cos (x) y=cos(x) | y ′ = − s i n ( x ) y'=-sin (x) y′=−sin(x) |
y = t a n ( x ) y=tan (x) y=tan(x) | y ′ = 1 c o s 2 x y'= \frac{1}{cos^2x} y′=cos2x1 |
U V \frac{U}{V} VU | $ \frac {U’V - UV’} {V^2}$ |
[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问》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。