机器学习必会面试知识点
标量(scalar)
标量是一个独立存在的数,比如线性代数中的一个实数5就可以被看作一个标量,所以标量的运算相对简单,与平常做的算数运算类似。
向量(vector)
向量指一列顺序排列的元素,我们通常习惯用括号将这些元素扩起来,其中每个元素都又一个索引值来唯一的确定其中在向量中的位置。
矩阵(matrix)
矩阵是二维数组,其中的每一个元素被两个索引而非一个所确定,我们通常会赋值矩阵粗体大写变量名称,比如一个实数矩阵Height=m,Weight=n,如图所示
矩阵在机器学习中用到的很多,比如我们有N个用户,每个用户有M个特征,那这个数据集就可以用一个NM的矩阵表示,还有在卷积神经网路中我们输入模型的最初的数据是一个图片,我们读取图片上的像素点(Pixel)作为输入,一张256256的一张图片,实质上就可以用256*256的矩阵表示。
张量(tensor)
在几何代数中,张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量是为0阶张量,矢量视为一阶张量,矩阵视为二阶张量,例如一张彩色图片,可以表示成一个三阶张量,因为彩色图片的每个像素点可以看成一个(RGB)3*1的矩阵[12,242,43](也可以看作二维张量),然后我们把这些像素点拼接成一个面,就变成了三维张量,如图所示:
The end to end(非端到端)
传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词、词性标注、句法分析、语义分析等多个独立步骤,每个步骤是一个独立的任务,其结果的好坏会影响到下一步骤,从而影响整个训练的结果,这是非端到端的。
End to end(端到端)
从输入端到输出端会得到一个预测结果,将预测结果和真实结果进行比较得到误差,将误差反向传播到网络的各个层之中,调整网络的权重和参数直到模型收敛或者达到预期的效果为止,中间所有的操作都包含在神经网络内部,不再分成多个模块处理。由原始数据输入,到结果输出,从输入端到输出端,中间的神经网络自成一体(也可以当做黑盒子看待),这是端到端的。
Sota
sota实际上就是State of the arts 的缩写,指的是在某一个领域做的Performance最好的model,一般就是指在一些benchmark的数据集上跑分非常高的那些模型。
Benchmark、Baseline
Benchmark和baseline都是指最基础的比较对象。你论文的motivation来自于想超越现有的baseline/benchmark,你的实验数据都需要以baseline/benckmark为基准来判断是否有提高。唯一的区别就是baseline讲究一套方法,而benchmark更偏向于一个目前最高的指标,比如precision,recall等等可量化的指标。举个例子,NLP任务中BERT是目前的SOTA,你有idea可以超过BERT。那在论文中的实验部分你的方法需要比较的baseline就是BERT,而需要比较的benchmark就是BERT具体的各项指标。
深度学习基础:矩阵和向量相乘
设矩阵矩阵A,B相乘结果为矩阵C,可以用下面公式表示:
$$a_{i,j}*b_{j,i}=C_{i,i}$$
其中当矩阵与向量相乘是,可以把向量看成一个矩阵的特殊情况,比如矩阵A为一个n*1的矩阵
如何判断正定矩阵?
1、所有顺序主子式大于0.
2、特征值全为正。
3、标准型中主对角元素全为>0。
4、正惯性指数等于n。
5、合同于单位矩阵等于E(规范形为E)
6、存在可逆矩阵C使$C^TC$=该矩阵。
机器学习:导数与偏导数
导数和偏导数没有本质区别,都是当自变量的变化趋于0时,函数值的变化量与自变量变化量的比值的极限(如果极限存在的话)。
一元函数,一个y对应一个x,导数只有一个。
二元函数,一个z对应一个x和一个y,有两个导数:一个z对x的导数,一个z对y的导数,也叫做偏导数。
求偏导数时要注意,对一个变量求导,另一个变量视为常数,只对改变量求导,从而将偏导数的求解转化为了一元函数的求解。
有可逆矩阵X,$X^TX$为什么为半正定矩阵?
如果有一个$n*n$的实对称矩阵定义为A,一个n维的vector定义为x,如果满足$x^TAx>=0$,就可以把实对称矩阵A定义为半正定矩阵,我们从数学函数的角度来理解,初中二次函数$Y = x^2$是恒定大于等于0的,我们可以把·$x^TAx>=0$理解为$Y = Ax^2$的高纬度映射,因为A在二次函数中的作用是改变图形的开口大小,并不影响值域范围,所以我们A换成n*n的单位矩阵I,单位矩阵I(单位矩阵也为实对称矩阵),I的的一维的矩阵是1,变成了y=$x^2$,他是核定大于等于0的,映射到高维度,$x^TIX>=0$,又因为I可以去掉,所以$X^TX$也是恒定大于0的,所以$X^TX$是半阵。
矩阵不可逆的原因
1.特征x1与特征x2线性相关(例如x1为厘米,x2为米,100x1=x2),遇到此状况可去掉一个参数。
2.数据太少,但是数据的维度太大。
可采用伪逆计算法。
机器学习:变量与随机变量的区别
随机变量
随机变量表示随机现象(在一定条件下并不是总出现相同结果)中各种结果的实值函数(一切可能的样本点),发生概率不为1且大于0的变量都属于随机变量,随机变量具有随机性与不确定性,但是在随机变量的值落在某一个范围的概率是一定会的。例如:筛子的点数,某一时间内公共汽车的乘车人数。。。。。
随机变量与模糊变量的不确定性的本质差别在于,后者测定的结果,仍具有不确定性,即模糊性。
变量与随机变量的区别
当变量的取值概率不是1是,变量就变成了随机变量,当随机变量的取值概率是1时,随机变量就变成了变量。
比如:
当变量x的值为100的概率为1时,那么x=100就是确定了的,不会再有变化,除非进一步运算。
当变量x的值为100的概率不是1时,比如取值为50和100的概率都为50%,那么取值就会随着条件变化而变化。
特征值分解与特征向量
特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么。
如果说一个向量v是一个方阵A的特征向量,将一可以表示成下面形式
A v = λ v Av=\lambda v
Av=λv
λ \lambdaλ为特征向量v的特征值,特征值分解是将一个矩阵分解为如下形式:
A = Q ∑ Q − 1 A=Q\sum Q^{-1}
A=Q∑Q
−1
其中Q是这个矩阵A的特征向量所组成的矩阵,∑ \sum∑是一个对角矩阵,每一个对角线元素就是一个特征值,里面的特征值有大到小排列,这些特征值所对应的特征向量就是描述这个矩阵变化方向,(从主要的变化到次要的变化排序)。也就是说矩阵A的信息可以由其特征值和特征向量表示。
对于矩阵为高纬的情况下,那么这个矩阵就是高维空间下的一个线性变换,可以想像,这个变化也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那就对应了这个矩阵最主要的N个变化方向,我们利用这前N个变化方向,就可以近似这个矩阵(变换)。
机器学习基础:独立性与条件独立性
独立性
两个随机变量x,y,概率分布表示称两个因子的乘积形式,一个因子只包含x,另一个因子只包含y,两个随机变量相互独立。
条件有时为不独立的事件之间带来独立,有时也会吧本来独立的事件带来不独立。
举例:$(P(XY)=P(X)P(Y)$,事件X和事件Y独立,此时给定Z,$P(X,Y|Z) \not=P(X|Z)P(Y|Z)$
事件独立时,联合概率等于概率的乘积(也就是事件处于独立同分布时),这是一个非常好的数学性质,然而不幸的是,无条件的独立是十分稀少的,因为大部分的情况事件之间之间都是相互影响的。
条件独立性
给定Z的情况下,X和Y条件独立,当且仅当$$X\bot Y|Z \Leftrightarrow P(X,Y|Z)=P(X|Z)P(Y|Z)$$
X和Y是依赖于Z,而不是直接产生的。
举例:定义如下事件:
X:明天下雨;
Y:明天地面是湿的;
Z:今天是否下雨;
Z时间的成立,对X,Y均有影响,然而,在Z事件成立的前提下,今天的地面情况对明天是否下雨没影响。
机器学习基础:大数据与深度学习的关系
概念
大数据通常被定义为“超出常用软件工具捕获的数据集,管理和和处理的能力”的数据集。
机器学习关心的问题是如何构建计算机程序使用经验自动改进。
数据挖掘是从数据中提取模式特性的算法应用。在数据挖掘中,重点在于算法应用,而不是算法本身。
关系
机器学习与数据挖掘的关系:数据挖掘是一个过程,在此过程中机器学习算法被用作提取数据集中潜在有价值模式的工具。
大数据与深度学习的关系如下:深度学习是一种模拟模拟大脑的行为,可以从所学习的对象的机制以及行为等等很多相关的地方学习,模仿行为以及思维。深度学习对于大数据的发展有帮助,深度学习对于大数据技术开发的每一个阶段均有帮助,不管书数据的分析、建模还是挖掘,只有深度学习,这些东西才会一一得到实现。深度学习转变了解决问题的思维,很多时候发现问题到解决问题,走一步看一步,不是一个主要的解决问题的手段,在深度学习基础上,要求我们从开始到最后都要基于同一个目标,为了优化那个最终的目标去畸形数据处理以及将数据放在数据应用平台上去,大数据的深度学习需要一个框架,在大数据方面的深度学习都是从基础的角度出发,深度学习需要一个框架或者一个系统的总体而言,需要将你的大数据通过深度分析变为现实这就是他们的直接关系。
多实例学习综述
概念
多实例学习(multiple instance learning):已知包含多个数据的数据包和数据包的标签,训练智能算法,将数据包映射到标签的过程,在有的问题中也同时给出包内每个数据的标签。
举例
比如说一段视频由很多张图片组成,假如10000张,那么我们判断视频里是否包含某一物体,比如气球。单张标注每一帧的是否有气球时间成本太大,通常人们看一遍说这个视频里是否有气球,就得到了多实例学习的数据,10000帧的数据不是每一帧都有气球,只要有一帧有气球,那么我们就认为这个数据包中有气球,只有当所有的视频的帧都没有气球,才是没有气球的,从这里学习去哪一段视频是否有气球出现称为多实例学习的问题。