2023年6月21日发(作者:)

AI常见⾯试35题1.为什么LR⽤交叉熵损失⽽不是平⽅损失交叉熵做损失函数,训练时传播的梯度和训练误差是成正⽐的(单调),⽽当采⽤均⽅误差做损失函数时,训练时传播的梯度和训练误差不是成正⽐的(⾮单调),具体表现是,训练误差从0开始增⼤,梯度增⼤(这点与我们预期相符),但训练误差继续增⼤,梯度开始下降(这点就与我们的预期不符了),这样就显得,模型在训练误差⼤的时候,根本不愿意继续学习,模型显得“⾃暴⾃弃”不肯学习。2.为什么SVM要引⼊核函数?决在低维空间线性不可分的问题,通过核函数把低维映射到⾼维,实现线性可分。3.常见的svm核函数有哪些?常见核函数有线性核函数,多项式核函数,⾼斯核函数,sigmoid 核函数和ADABOOST区别?Adaboost⽤错分数据点来识别问题,通过调整错分数据点的权重来改进模型。GBDT通过负梯度来识别问题,通过计算负梯度来改进模型。和xgboost区别?1. xgboost在代价函数⾥加⼊了正则项,⽤于控制模型的复杂度。正则项⾥包含了树的叶⼦节点个数、每个叶⼦节点上输出的score的L2模的平⽅和。从Bias-variance tradeoff⾓度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防⽌过拟合,这也是xgboost优于传统GBDT的⼀个特性2. 公式推导⾥⽤到了⼆阶导数信息,⽽普通的GBDT只⽤到⼀阶3. 允许使⽤column(feature) sampling来防⽌过拟合,借鉴了Random Forest的思想,sklearn⾥的gbm好像也有类似实现。4.实现了⼀种分裂节点寻找的近似算法,⽤于加速和减⼩内存消耗。5.节点分裂算法能⾃动利⽤特征的稀疏性。事先排好序并以block的形式存储,利于并⾏计算ng和bagging区别?1.样本选择:bagging训练集是在原始集有放回的选取,每次选取训练集都是独⽴的.boosting:每⼀轮的训练集的数量不变,但是训练集⾥的样例⽐重根据上⼀轮的分类结果进⾏调整2.样本权重:bagging:均匀取样,每个样例的权重都相等。boosting:根据您错误率不断调整样例的权值,错误率越⼤的则权重越⼤3.预测函数:bagging每个基分类器投票,权重⽐例都是⼀样的,boosting每个分类器的权重是不⼀样的4.运⾏规律:bagging:各个预测函数可以并⾏⽣成 boosting:每个基分类器都都是根据前⼀个分类器的结果调整过来的7.为什么朴素贝叶斯被称为“朴素”?之所以被称为“朴素”, 是因为它假定所有的特征在数据集中的作⽤是同样重要和独⽴的,正如我们所知,这个假设在现实世界中是很不真实的,因此,说是很“朴素的”。8.机器学习中的回归模型有哪些?1.线性回归2.逻辑回归3.岭回归4.多项式回归8.特征值跟SVD的区别?顺序关系,先求出特征值再来求SVD9.解释ICA跟CCA?PCA: ⽆监督学习,找到最优重构⼦空间,使主成分能刻画样本绝⼤部分的⽅差。应⽤:数据降维、Eigenfaces、PCA-SIFTCCA(Canonical Correlation Analysis): ⽆监督学习,对两组变量降维,找到⼀个最优相关⼦空间进⾏相关性分析。应⽤:问卷调查中变量的相关性分析、跨模态学习。LDA: 有监督学习,学习⼀个可分性最好的投影⽅向。相当于是⽩化(whitening) + PCA,得到的是假设条件下的最优分类⼦空间(假设每个类都是单模态⾼斯分布、每个类协⽅差矩阵相同)。应⽤:数据降维、模式分类ICA: ⽆监督学习,各个分量之间相互独⽴,利⽤数据的⾼阶统计信息⽽不是⼆阶信息得到⽤于信号分离的独⽴⼦空间。应⽤:语⾳信号分离10.随机森林的随机体现在哪个⽅⾯?随机森林中树的选择是随机选择的,⽣成每棵树的样本也是随机采样有放回产⽣的11.神经⽹络怎么进⾏参数初始化?预训练初始化:⼀般是在⼤规模数据上已经训练过的模型可以提供⼀个较好的参数初始值,并能提升模型的泛化能⼒(⼀种解释是预训练任务起到⼀定的正则化作⽤)。随机初始化:如果全部初始化为0,在神经⽹络第⼀遍前向传播所有隐层神经⽹络激活值相同,反向传播权重更新也相同,导致隐层神经元没有区分性,称为“对称权重”现象。为打破这个平衡,⽐较好的⽅式是对每个参数进⾏随机初始化。固定值初始化:⽐如对于偏置(bias)通常⽤0初始化,LSTM遗忘门偏置通常为1或2,使时序上的梯度变⼤,对于ReLU神经元,偏置设为0.01,使得训练初期更容易激活。12.介绍常见的正则化⽅法?tL2正则化⽅法就是通过使参数变⼩,进⽽使模型变得简单的⽅法。dropout⽅法原理类似,只不过它不是减少权值,⽽是随机的删除某些节点,使得模型的⽹络结构变得简单,起到正则化的效果。直接限制模型参数的⽅法:L1,L2等惩罚项参数共享多任务学习(此⽅法也⽤到了参数共享)从数据集⼊⼿的⽅法:增加噪⾳:对输⼊数据对隐层权重对输⼊⽬标增⼤数据集重采样集成化⽅法(通过训练多个不同的模型,并让所有模型⼀起表决测试集的输出):baggingdropout其他:early stop交叉验证(bagging为⼜放回采样,⽽交叉验证可以理解为⽆放回模型平均)13.⾃注意机制跟多头注意⼒机制的公式?self-attention:attention(q,t,v) = softmax(qk.T/根号DK)*v多头的本质是多个独⽴的attention计算,作为⼀个集成的作⽤,不同的权重矩阵映射到不同的空间armer ,rnn,seq2seq之间的关系?RNN:输⼊与输出长度相等,很多时候机器翻译的输⼊跟输出是不等的seq2seq:encoder+decoder 所有输⼊的信息都保存在隐藏层的最后⼀个印象⾥,作为解码器的初始隐向量,银项链称之为上下⽂向量,长度固定,当输⼊句⼦很长的时候,上下⽂向量会丢失相关信息,效果很差seq2seq+attention:seq2seq忽略了输⼊跟输出之间的对应关系,利⽤attention来寻求输⼊跟输出之间的对应关系tranfarmer:解决了⼏圈翻译中⽹络训练时间过长,难以并⾏计算的问题,利⽤self-attention代替RNN实现并⾏计算,⽤postion embedding记录位置信息-head attention的作⽤类似cnn的多个卷积核,不同卷积核提取不同⽅⾯的特征,不同head关注不同的表⽰⼦控件,总和利⽤各⽅⾯的信息,获得更丰富的特征 faward是什么?由两个线性层组成,两个线性层直接具有relu激活函数17.为什么self-attention采⽤点乘注意⼒⽽不是加减注意⼒?点乘注意⼒可以⽤⾼度优化的矩阵乘法来实现速度更快,空间效率更⾼18.似然函数与概率密度函数的区别?概率密度函数:由已知计算未知似然函数:对于不同的模型参数,出现已知的概率是多少19.特征标准化的原因?将各个特征分布调整到标准正态分布,若某些特征⽅差很⼤,会主导⽬标函数从⽽使得模型⽆法正确学习其他特征20.K折交叉验证?将数据划分成K份,留作⼀份作为测试集,其他作为训练集重复K次得到K个测试结果,取平均21.进程跟线程的区别?进程是⽕车,线程是车厢1.线程在进程⾥运⾏2.⼀个进程包含很多线程3.不同进程很难数据共享,⽽线程可以4.进程不会相互影响,线程会22.信息增益跟信息增益⽐?信息增益:偏向取值较多的特征信息增益⽐:偏向取值较少的特征决策树步骤:特征选择:信息增益,信息增益⽐决策树⽣成:id3使⽤信息增益选择特征,c45使⽤信息增益⽐选择特征决策树剪枝:利⽤损失函数最⼩进⾏剪枝,当叶⼦节点回缩到⽗节点导致损失函数减⼩,则进⾏剪枝,将⽗节点变成新的叶⼦节点23.k-means聚类?算法步骤:1.随机选择K个中⼼点,2.求所有点到中⼼点的距离3.移动k个中⼼点属于他们的中⼼位置4.重复23K-Means的主要优点有:    1)原理⽐较简单,实现也是很容易,收敛速度快。    2)聚类效果较优。    3)算法的可解释度⽐较强。    4)主要需要调参的参数仅仅是簇数k。K-Means的主要缺点有:    1)K值的选取不好把握    2)对于不是凸的数据集⽐较难收敛    3)如果各隐含类别的数据不平衡,⽐如各隐含类别的数据量严重失衡,或者各隐含类别的⽅差不同,则聚类效果不佳。    4) 采⽤迭代⽅法,得到的结果只是局部最优。    5) 对噪⾳和异常点⽐较的敏感24.随机森林的随机性体现在哪⾥?1.每棵树的训练样本是随机的2.每棵树的叶⼦节点特征是随机的25.为什么要做模型压缩,模型压缩⽅法有哪些?复杂的模型占⽤⼤量内存,且具有庞⼤的计算开销,导致模型难以被部署在⼿机等计算能⼒较差的设备上,抑或是时延要求较⾼的应⽤中。模型压缩的主要⽅法可以分为:剪枝(Pruning):将模型中影响较⼩的部分舍弃,通过去除⽹络中冗余的channels,filters, neurons, or layers以得到⼀个更轻量级的⽹络,同时不影响性能。量化(Quantization):将⾼精度模型⽤低精度来表⽰,⼀个映射公式将输⼊数据映射到[0,255]的范围内;知识蒸馏(Knowledge Distillation):通过⼀些优化⽬标从⼤型、知识丰富、fixed的teacher模型学习⼀个⼩型的student模型。蒸馏机制主要分为3种类型矩阵分解(Matrix Decomposition):参数共享(Parameter Sharing):相似模型单元间的参数共享其他⽅法动态推理加速(Dynamic Inference Acceleration)⼆次Transformer模型(Sub-quadratic Transformer based model)26.怎么提升模型的计算效率?1.系统级优化,包括单设备优化和多设备优化。⽐如ZeRO-Offload,就设计了精细的策略来安排CPU内存和GPU内存之间的交换,以便内存交换和设备计算能够尽可能多地重叠。2.探索更⾼效的预训练⽅法和模型架构,以降低⽅案的成本。3.模型压缩策略,包括参数共享、模型剪枝、知识蒸馏和模型量化。27.为什么要进⾏预训练?深度学习时代,为了充分训练深层模型参数并防⽌过拟合,通常需要更多标注数据喂养。在NLP领域,标注数据更是⼀个昂贵资源。PTMs从⼤量⽆标注数据中进⾏预训练使许多NLP任务获得显著的性能提升。总的来看,预训练模型PTMs的优势包括:1. 在庞⼤的⽆标注数据上进⾏预训练可以获取更通⽤的语⾔表⽰,并有利于下游任务;2. 为模型提供了⼀个更好的初始化参数,在⽬标任务上具备更好的泛化性能、并加速收敛;3. 是⼀种有效的正则化⼿段,避免在⼩数据集上过拟合(⼀个随机初始化的深层模型容易对⼩数据集过拟合);28.什么是词嵌⼊和分布式表⽰?PTMs与分布式表⽰的关系?词嵌⼊是⾃然语⾔处理(NLP)中语⾔模型与表征学习技术的统称。概念上⽽⾔,它是指把⼀个维数为所有词的数量的⾼维空间嵌⼊到⼀个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量,这也是分布式表⽰:向量的每⼀维度都没有实际意义,⽽整体代表⼀个具体概念。分布式表⽰相较于传统的独热编码(one-hot)表⽰具备更强的表⽰能⼒,⽽独热编码存在维度灾难和语义鸿沟(不能进⾏相似度计算)等问题。传统的分布式表⽰⽅法,如矩阵分解(SVD/LSA)、LDA等均是根据全局语料进⾏训练,是机器学习时代的产物。有哪两⼤范式?对⽐不同的预训练编码器?PTMs的发展经历从浅层的词嵌⼊到深层编码两个阶段,按照这两个主要的发展阶段,我们归纳出PTMs两⼤范式:「浅层词嵌⼊」和「预训练编码器」。浅层词嵌⼊的主要缺陷为:词嵌⼊与上下⽂⽆关,每个单词的嵌⼊向量始终是相同,因此不能解决⼀词多义的问题。通常会出现OOV问题,为了解决这个问题,相关⽂献提出了字符级表⽰或sub-word表⽰,如CharCNN[5] 、FastText[6] 和 Byte-PairEncoding

[7]。PTMs范式为预训练编码器,主要⽬的是通过⼀个预训练的编码器能够输出上下⽂相关的词向量,解决⼀词多义的问题。这⼀类预训练编码器输出的向量称之为「上下⽂相关的词嵌⼊」30.为什么会出现梯度消失跟梯度爆炸呢?随着⽹络层数的增加,从前⾯的层传递到后⾯的层的梯度会越来越⼩,进⽽就梯度消失了梯度消失和梯度爆炸,简单来说,就是因为激活函数sigmoid导致的,输⼊值过⼤或过⼩导致sigmoid函数趋于0和1,对应的求导趋近于0,⽽且sigmoid的导数在(0,1/4)之间,这就导致如果初始化W为0-1之间的⽐较⼩的值,通过过多的层数之后,梯度下降的时候,慢慢就会出现梯度消失。如果W初始化为较⼤的值,通过多层之后,梯度下降会导致梯度越来越⼤,产⽣爆炸。当w越⼤,其wx+b很可能变的很⼤,⽽根据上⾯sigmoid函数导数的图像可以看到,wx+b越⼤,导数的值也会变的很⼩。因此,若要出现梯度爆炸,其w既要⼤还要保证激活函数的导数不要太⼩。下⾯说下解决办法:预训练加微调梯度剪切、权重正则(针对梯度爆炸)使⽤不同的激活函数(⾮饱和的激活函数,如ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout等)使⽤batchnorm使⽤残差结构使⽤LSTM⽹络梯度截断(Gradient Clipping)更快的优化器好的参数初始化⽅式,如He初始化机器学习1.梯度下降的特征缩放1.使得算法不会受到某⼀特征的主导2.加快梯度下降算法的收敛速度2.梯度下降的学习率1.学习率太⼩,收敛会很慢,损失函数不断下降2.学习率过⼤,会越过最低点,导致⽆法收敛甚⾄发散,损失函数不断上升3.梯度下降的学习率1.学习率太⼩,收敛会很慢,损失函数不断下降2.学习率过⼤,会越过最低点,导致⽆法收敛甚⾄发散,损失函数不断上升4.前向传播跟反向传播的区别?前向传播:输⼊的加权和做⾮线性映射 = 激活值反向传播:误差的加权和与激活值的导数相乘 = 误差5.神经⽹络的参数为什么要随机初始化?设有⼀个多层感知机模型,假设输出层只保留⼀个输出单元 ,且隐藏层使⽤相同的激活函数。如果将每个隐藏单元的参数都初始化为相等的值,那么在正向传播时每个隐藏单元将根据相同的输⼊计算出相同的值,并传递⾄输出层。在反向传播中,每个隐藏单元的参数梯度值相等。因此,这些参数在使⽤基于梯度的优化算法迭代后值依然相等。之后的迭代也是如此。在这种情况下,⽆论隐藏单元有多少,隐藏层本质上只有⼀个隐藏单元在发挥作⽤。因此,通常对神经⽹络的模型参数,特别是权重参数进⾏随机初始化。随机初始化模型参数的⽅法有很多,可以使⽤正态分布的随机初始化⽅式。6.算法结题思路?1.赛题理解分析数据的特征理解业务背景构建解决问题的思路2.数据探索跟预处理数据探索分析缺失值填充异常值处理3.特征⼯程分析业务特点搜集⾏业经验数据探索分析头脑风暴特征优化调优4.算法尝试常见的机器学习算法常见的深度学习算法5 算法选择xgboostlightgbm6. 算法模型参数优化⽹格调参7. 模型融合stack平均值最⼤投票7.样本不均衡解决⽅法?1.随机⽋采样:优点:平衡数据的同事减⼩了数据量缺点:数据减少会影响模型的特征学习能⼒跟泛化能⼒2.随机过采样:优点:没有导致数据信息的丢失缺点:增加了过拟合的可能性8.类别特征的转换?类别特征常⽤的处理⽅法:1.序号编码:成绩的⾼中低,转成3,2,12.独热编码:⽐如⾎性中的a=[1,0,0,0],b = [0,1,0,0]3.⼆进制编码:跟独热类似9.⾼纬组合特征的处理?把⼀阶离散特征两两组合,就构成⾼阶组合特征中⽂ - 电影 = 中⽂电影,中⽂电视剧英⽂-电视剧 = 英⽂电影,英⽂电视剧,⼀般当引⼊id类型的特征,通常需要降维组合特征利⽤决策树⽅法来组合特征10.常见的机器学习算法?朴素贝叶斯,逻辑回归,sVM,感知机,最⼤熵模型,em算法,决策树,主成分分析感知机:是⼆类分类的线性分类模型,输⼊为实例的特征向量,输出是正负1K近邻算法:是⼀种基本分类跟回归算法,算法步骤是,计算当前数据跟其他数据距离最近的K个数据点,然后查看他们的类,类最多的就是数据的分类类别朴素贝叶斯:是⼀种基于贝叶斯定⼒跟条件独⽴假设的分类算法决策树:是⼀种基本的分类跟回归⽅法,呈现树形结构,基于树的特征依次对实例进⾏分类逻辑回归:对数线性模型分类回归⽅法11.为什么做反向传播?主要是为了加速,因为反向传播求导⼀次就可以求出所有的偏导数,反之前向传播因为数据的输⼊⼊⼝会变慢很多倍12.两种框架的区别?pytorch是⼀个动态的框架,⽽TensorFlow是⼀个静态的框架。何为静态的框架呢?我们知道,TensorFlow的尿性是,我们需要先构建⼀个TensorFlow的计算图,构建好了之后,这样⼀个计算图是不能够变的了,然后我们再传⼊不同的数据进去,进⾏计算。这就带来⼀个问题,就是固定了计算的流程,势必带来了不灵活性,如果我们要改变计算的逻辑,或者随着时间变化的计算逻辑,这样的动态计算TensorFlow是实现不了的,或者是很⿇烦12.有什么交叉验证的⽅法?K折交叉法,留⼀法,留P法13.怎么调参的?⽹格搜索,也就是⼀种穷举的⽅法,划定⼀个范围,不断的尝试,所有的可能性,选出表现最好的参数

2023年6月21日发(作者:)

AI常见⾯试35题1.为什么LR⽤交叉熵损失⽽不是平⽅损失交叉熵做损失函数,训练时传播的梯度和训练误差是成正⽐的(单调),⽽当采⽤均⽅误差做损失函数时,训练时传播的梯度和训练误差不是成正⽐的(⾮单调),具体表现是,训练误差从0开始增⼤,梯度增⼤(这点与我们预期相符),但训练误差继续增⼤,梯度开始下降(这点就与我们的预期不符了),这样就显得,模型在训练误差⼤的时候,根本不愿意继续学习,模型显得“⾃暴⾃弃”不肯学习。2.为什么SVM要引⼊核函数?决在低维空间线性不可分的问题,通过核函数把低维映射到⾼维,实现线性可分。3.常见的svm核函数有哪些?常见核函数有线性核函数,多项式核函数,⾼斯核函数,sigmoid 核函数和ADABOOST区别?Adaboost⽤错分数据点来识别问题,通过调整错分数据点的权重来改进模型。GBDT通过负梯度来识别问题,通过计算负梯度来改进模型。和xgboost区别?1. xgboost在代价函数⾥加⼊了正则项,⽤于控制模型的复杂度。正则项⾥包含了树的叶⼦节点个数、每个叶⼦节点上输出的score的L2模的平⽅和。从Bias-variance tradeoff⾓度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防⽌过拟合,这也是xgboost优于传统GBDT的⼀个特性2. 公式推导⾥⽤到了⼆阶导数信息,⽽普通的GBDT只⽤到⼀阶3. 允许使⽤column(feature) sampling来防⽌过拟合,借鉴了Random Forest的思想,sklearn⾥的gbm好像也有类似实现。4.实现了⼀种分裂节点寻找的近似算法,⽤于加速和减⼩内存消耗。5.节点分裂算法能⾃动利⽤特征的稀疏性。事先排好序并以block的形式存储,利于并⾏计算ng和bagging区别?1.样本选择:bagging训练集是在原始集有放回的选取,每次选取训练集都是独⽴的.boosting:每⼀轮的训练集的数量不变,但是训练集⾥的样例⽐重根据上⼀轮的分类结果进⾏调整2.样本权重:bagging:均匀取样,每个样例的权重都相等。boosting:根据您错误率不断调整样例的权值,错误率越⼤的则权重越⼤3.预测函数:bagging每个基分类器投票,权重⽐例都是⼀样的,boosting每个分类器的权重是不⼀样的4.运⾏规律:bagging:各个预测函数可以并⾏⽣成 boosting:每个基分类器都都是根据前⼀个分类器的结果调整过来的7.为什么朴素贝叶斯被称为“朴素”?之所以被称为“朴素”, 是因为它假定所有的特征在数据集中的作⽤是同样重要和独⽴的,正如我们所知,这个假设在现实世界中是很不真实的,因此,说是很“朴素的”。8.机器学习中的回归模型有哪些?1.线性回归2.逻辑回归3.岭回归4.多项式回归8.特征值跟SVD的区别?顺序关系,先求出特征值再来求SVD9.解释ICA跟CCA?PCA: ⽆监督学习,找到最优重构⼦空间,使主成分能刻画样本绝⼤部分的⽅差。应⽤:数据降维、Eigenfaces、PCA-SIFTCCA(Canonical Correlation Analysis): ⽆监督学习,对两组变量降维,找到⼀个最优相关⼦空间进⾏相关性分析。应⽤:问卷调查中变量的相关性分析、跨模态学习。LDA: 有监督学习,学习⼀个可分性最好的投影⽅向。相当于是⽩化(whitening) + PCA,得到的是假设条件下的最优分类⼦空间(假设每个类都是单模态⾼斯分布、每个类协⽅差矩阵相同)。应⽤:数据降维、模式分类ICA: ⽆监督学习,各个分量之间相互独⽴,利⽤数据的⾼阶统计信息⽽不是⼆阶信息得到⽤于信号分离的独⽴⼦空间。应⽤:语⾳信号分离10.随机森林的随机体现在哪个⽅⾯?随机森林中树的选择是随机选择的,⽣成每棵树的样本也是随机采样有放回产⽣的11.神经⽹络怎么进⾏参数初始化?预训练初始化:⼀般是在⼤规模数据上已经训练过的模型可以提供⼀个较好的参数初始值,并能提升模型的泛化能⼒(⼀种解释是预训练任务起到⼀定的正则化作⽤)。随机初始化:如果全部初始化为0,在神经⽹络第⼀遍前向传播所有隐层神经⽹络激活值相同,反向传播权重更新也相同,导致隐层神经元没有区分性,称为“对称权重”现象。为打破这个平衡,⽐较好的⽅式是对每个参数进⾏随机初始化。固定值初始化:⽐如对于偏置(bias)通常⽤0初始化,LSTM遗忘门偏置通常为1或2,使时序上的梯度变⼤,对于ReLU神经元,偏置设为0.01,使得训练初期更容易激活。12.介绍常见的正则化⽅法?tL2正则化⽅法就是通过使参数变⼩,进⽽使模型变得简单的⽅法。dropout⽅法原理类似,只不过它不是减少权值,⽽是随机的删除某些节点,使得模型的⽹络结构变得简单,起到正则化的效果。直接限制模型参数的⽅法:L1,L2等惩罚项参数共享多任务学习(此⽅法也⽤到了参数共享)从数据集⼊⼿的⽅法:增加噪⾳:对输⼊数据对隐层权重对输⼊⽬标增⼤数据集重采样集成化⽅法(通过训练多个不同的模型,并让所有模型⼀起表决测试集的输出):baggingdropout其他:early stop交叉验证(bagging为⼜放回采样,⽽交叉验证可以理解为⽆放回模型平均)13.⾃注意机制跟多头注意⼒机制的公式?self-attention:attention(q,t,v) = softmax(qk.T/根号DK)*v多头的本质是多个独⽴的attention计算,作为⼀个集成的作⽤,不同的权重矩阵映射到不同的空间armer ,rnn,seq2seq之间的关系?RNN:输⼊与输出长度相等,很多时候机器翻译的输⼊跟输出是不等的seq2seq:encoder+decoder 所有输⼊的信息都保存在隐藏层的最后⼀个印象⾥,作为解码器的初始隐向量,银项链称之为上下⽂向量,长度固定,当输⼊句⼦很长的时候,上下⽂向量会丢失相关信息,效果很差seq2seq+attention:seq2seq忽略了输⼊跟输出之间的对应关系,利⽤attention来寻求输⼊跟输出之间的对应关系tranfarmer:解决了⼏圈翻译中⽹络训练时间过长,难以并⾏计算的问题,利⽤self-attention代替RNN实现并⾏计算,⽤postion embedding记录位置信息-head attention的作⽤类似cnn的多个卷积核,不同卷积核提取不同⽅⾯的特征,不同head关注不同的表⽰⼦控件,总和利⽤各⽅⾯的信息,获得更丰富的特征 faward是什么?由两个线性层组成,两个线性层直接具有relu激活函数17.为什么self-attention采⽤点乘注意⼒⽽不是加减注意⼒?点乘注意⼒可以⽤⾼度优化的矩阵乘法来实现速度更快,空间效率更⾼18.似然函数与概率密度函数的区别?概率密度函数:由已知计算未知似然函数:对于不同的模型参数,出现已知的概率是多少19.特征标准化的原因?将各个特征分布调整到标准正态分布,若某些特征⽅差很⼤,会主导⽬标函数从⽽使得模型⽆法正确学习其他特征20.K折交叉验证?将数据划分成K份,留作⼀份作为测试集,其他作为训练集重复K次得到K个测试结果,取平均21.进程跟线程的区别?进程是⽕车,线程是车厢1.线程在进程⾥运⾏2.⼀个进程包含很多线程3.不同进程很难数据共享,⽽线程可以4.进程不会相互影响,线程会22.信息增益跟信息增益⽐?信息增益:偏向取值较多的特征信息增益⽐:偏向取值较少的特征决策树步骤:特征选择:信息增益,信息增益⽐决策树⽣成:id3使⽤信息增益选择特征,c45使⽤信息增益⽐选择特征决策树剪枝:利⽤损失函数最⼩进⾏剪枝,当叶⼦节点回缩到⽗节点导致损失函数减⼩,则进⾏剪枝,将⽗节点变成新的叶⼦节点23.k-means聚类?算法步骤:1.随机选择K个中⼼点,2.求所有点到中⼼点的距离3.移动k个中⼼点属于他们的中⼼位置4.重复23K-Means的主要优点有:    1)原理⽐较简单,实现也是很容易,收敛速度快。    2)聚类效果较优。    3)算法的可解释度⽐较强。    4)主要需要调参的参数仅仅是簇数k。K-Means的主要缺点有:    1)K值的选取不好把握    2)对于不是凸的数据集⽐较难收敛    3)如果各隐含类别的数据不平衡,⽐如各隐含类别的数据量严重失衡,或者各隐含类别的⽅差不同,则聚类效果不佳。    4) 采⽤迭代⽅法,得到的结果只是局部最优。    5) 对噪⾳和异常点⽐较的敏感24.随机森林的随机性体现在哪⾥?1.每棵树的训练样本是随机的2.每棵树的叶⼦节点特征是随机的25.为什么要做模型压缩,模型压缩⽅法有哪些?复杂的模型占⽤⼤量内存,且具有庞⼤的计算开销,导致模型难以被部署在⼿机等计算能⼒较差的设备上,抑或是时延要求较⾼的应⽤中。模型压缩的主要⽅法可以分为:剪枝(Pruning):将模型中影响较⼩的部分舍弃,通过去除⽹络中冗余的channels,filters, neurons, or layers以得到⼀个更轻量级的⽹络,同时不影响性能。量化(Quantization):将⾼精度模型⽤低精度来表⽰,⼀个映射公式将输⼊数据映射到[0,255]的范围内;知识蒸馏(Knowledge Distillation):通过⼀些优化⽬标从⼤型、知识丰富、fixed的teacher模型学习⼀个⼩型的student模型。蒸馏机制主要分为3种类型矩阵分解(Matrix Decomposition):参数共享(Parameter Sharing):相似模型单元间的参数共享其他⽅法动态推理加速(Dynamic Inference Acceleration)⼆次Transformer模型(Sub-quadratic Transformer based model)26.怎么提升模型的计算效率?1.系统级优化,包括单设备优化和多设备优化。⽐如ZeRO-Offload,就设计了精细的策略来安排CPU内存和GPU内存之间的交换,以便内存交换和设备计算能够尽可能多地重叠。2.探索更⾼效的预训练⽅法和模型架构,以降低⽅案的成本。3.模型压缩策略,包括参数共享、模型剪枝、知识蒸馏和模型量化。27.为什么要进⾏预训练?深度学习时代,为了充分训练深层模型参数并防⽌过拟合,通常需要更多标注数据喂养。在NLP领域,标注数据更是⼀个昂贵资源。PTMs从⼤量⽆标注数据中进⾏预训练使许多NLP任务获得显著的性能提升。总的来看,预训练模型PTMs的优势包括:1. 在庞⼤的⽆标注数据上进⾏预训练可以获取更通⽤的语⾔表⽰,并有利于下游任务;2. 为模型提供了⼀个更好的初始化参数,在⽬标任务上具备更好的泛化性能、并加速收敛;3. 是⼀种有效的正则化⼿段,避免在⼩数据集上过拟合(⼀个随机初始化的深层模型容易对⼩数据集过拟合);28.什么是词嵌⼊和分布式表⽰?PTMs与分布式表⽰的关系?词嵌⼊是⾃然语⾔处理(NLP)中语⾔模型与表征学习技术的统称。概念上⽽⾔,它是指把⼀个维数为所有词的数量的⾼维空间嵌⼊到⼀个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量,这也是分布式表⽰:向量的每⼀维度都没有实际意义,⽽整体代表⼀个具体概念。分布式表⽰相较于传统的独热编码(one-hot)表⽰具备更强的表⽰能⼒,⽽独热编码存在维度灾难和语义鸿沟(不能进⾏相似度计算)等问题。传统的分布式表⽰⽅法,如矩阵分解(SVD/LSA)、LDA等均是根据全局语料进⾏训练,是机器学习时代的产物。有哪两⼤范式?对⽐不同的预训练编码器?PTMs的发展经历从浅层的词嵌⼊到深层编码两个阶段,按照这两个主要的发展阶段,我们归纳出PTMs两⼤范式:「浅层词嵌⼊」和「预训练编码器」。浅层词嵌⼊的主要缺陷为:词嵌⼊与上下⽂⽆关,每个单词的嵌⼊向量始终是相同,因此不能解决⼀词多义的问题。通常会出现OOV问题,为了解决这个问题,相关⽂献提出了字符级表⽰或sub-word表⽰,如CharCNN[5] 、FastText[6] 和 Byte-PairEncoding

[7]。PTMs范式为预训练编码器,主要⽬的是通过⼀个预训练的编码器能够输出上下⽂相关的词向量,解决⼀词多义的问题。这⼀类预训练编码器输出的向量称之为「上下⽂相关的词嵌⼊」30.为什么会出现梯度消失跟梯度爆炸呢?随着⽹络层数的增加,从前⾯的层传递到后⾯的层的梯度会越来越⼩,进⽽就梯度消失了梯度消失和梯度爆炸,简单来说,就是因为激活函数sigmoid导致的,输⼊值过⼤或过⼩导致sigmoid函数趋于0和1,对应的求导趋近于0,⽽且sigmoid的导数在(0,1/4)之间,这就导致如果初始化W为0-1之间的⽐较⼩的值,通过过多的层数之后,梯度下降的时候,慢慢就会出现梯度消失。如果W初始化为较⼤的值,通过多层之后,梯度下降会导致梯度越来越⼤,产⽣爆炸。当w越⼤,其wx+b很可能变的很⼤,⽽根据上⾯sigmoid函数导数的图像可以看到,wx+b越⼤,导数的值也会变的很⼩。因此,若要出现梯度爆炸,其w既要⼤还要保证激活函数的导数不要太⼩。下⾯说下解决办法:预训练加微调梯度剪切、权重正则(针对梯度爆炸)使⽤不同的激活函数(⾮饱和的激活函数,如ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout等)使⽤batchnorm使⽤残差结构使⽤LSTM⽹络梯度截断(Gradient Clipping)更快的优化器好的参数初始化⽅式,如He初始化机器学习1.梯度下降的特征缩放1.使得算法不会受到某⼀特征的主导2.加快梯度下降算法的收敛速度2.梯度下降的学习率1.学习率太⼩,收敛会很慢,损失函数不断下降2.学习率过⼤,会越过最低点,导致⽆法收敛甚⾄发散,损失函数不断上升3.梯度下降的学习率1.学习率太⼩,收敛会很慢,损失函数不断下降2.学习率过⼤,会越过最低点,导致⽆法收敛甚⾄发散,损失函数不断上升4.前向传播跟反向传播的区别?前向传播:输⼊的加权和做⾮线性映射 = 激活值反向传播:误差的加权和与激活值的导数相乘 = 误差5.神经⽹络的参数为什么要随机初始化?设有⼀个多层感知机模型,假设输出层只保留⼀个输出单元 ,且隐藏层使⽤相同的激活函数。如果将每个隐藏单元的参数都初始化为相等的值,那么在正向传播时每个隐藏单元将根据相同的输⼊计算出相同的值,并传递⾄输出层。在反向传播中,每个隐藏单元的参数梯度值相等。因此,这些参数在使⽤基于梯度的优化算法迭代后值依然相等。之后的迭代也是如此。在这种情况下,⽆论隐藏单元有多少,隐藏层本质上只有⼀个隐藏单元在发挥作⽤。因此,通常对神经⽹络的模型参数,特别是权重参数进⾏随机初始化。随机初始化模型参数的⽅法有很多,可以使⽤正态分布的随机初始化⽅式。6.算法结题思路?1.赛题理解分析数据的特征理解业务背景构建解决问题的思路2.数据探索跟预处理数据探索分析缺失值填充异常值处理3.特征⼯程分析业务特点搜集⾏业经验数据探索分析头脑风暴特征优化调优4.算法尝试常见的机器学习算法常见的深度学习算法5 算法选择xgboostlightgbm6. 算法模型参数优化⽹格调参7. 模型融合stack平均值最⼤投票7.样本不均衡解决⽅法?1.随机⽋采样:优点:平衡数据的同事减⼩了数据量缺点:数据减少会影响模型的特征学习能⼒跟泛化能⼒2.随机过采样:优点:没有导致数据信息的丢失缺点:增加了过拟合的可能性8.类别特征的转换?类别特征常⽤的处理⽅法:1.序号编码:成绩的⾼中低,转成3,2,12.独热编码:⽐如⾎性中的a=[1,0,0,0],b = [0,1,0,0]3.⼆进制编码:跟独热类似9.⾼纬组合特征的处理?把⼀阶离散特征两两组合,就构成⾼阶组合特征中⽂ - 电影 = 中⽂电影,中⽂电视剧英⽂-电视剧 = 英⽂电影,英⽂电视剧,⼀般当引⼊id类型的特征,通常需要降维组合特征利⽤决策树⽅法来组合特征10.常见的机器学习算法?朴素贝叶斯,逻辑回归,sVM,感知机,最⼤熵模型,em算法,决策树,主成分分析感知机:是⼆类分类的线性分类模型,输⼊为实例的特征向量,输出是正负1K近邻算法:是⼀种基本分类跟回归算法,算法步骤是,计算当前数据跟其他数据距离最近的K个数据点,然后查看他们的类,类最多的就是数据的分类类别朴素贝叶斯:是⼀种基于贝叶斯定⼒跟条件独⽴假设的分类算法决策树:是⼀种基本的分类跟回归⽅法,呈现树形结构,基于树的特征依次对实例进⾏分类逻辑回归:对数线性模型分类回归⽅法11.为什么做反向传播?主要是为了加速,因为反向传播求导⼀次就可以求出所有的偏导数,反之前向传播因为数据的输⼊⼊⼝会变慢很多倍12.两种框架的区别?pytorch是⼀个动态的框架,⽽TensorFlow是⼀个静态的框架。何为静态的框架呢?我们知道,TensorFlow的尿性是,我们需要先构建⼀个TensorFlow的计算图,构建好了之后,这样⼀个计算图是不能够变的了,然后我们再传⼊不同的数据进去,进⾏计算。这就带来⼀个问题,就是固定了计算的流程,势必带来了不灵活性,如果我们要改变计算的逻辑,或者随着时间变化的计算逻辑,这样的动态计算TensorFlow是实现不了的,或者是很⿇烦12.有什么交叉验证的⽅法?K折交叉法,留⼀法,留P法13.怎么调参的?⽹格搜索,也就是⼀种穷举的⽅法,划定⼀个范围,不断的尝试,所有的可能性,选出表现最好的参数