全部知识点

4.10.docx

1 / 12
1、 Linux基本命令
https://blog.csdn.net/qq_40910541/article/details/80686362

2、 LR推导、特征交叉,那不想手动交叉怎么办?(不知道啥意思)
为什么逻辑回归是分类 逻辑回归特征重复了一维会有什么影响。
logistic Regression的函数是什么 怎么实现二分类的 如果改变分类的阈值 准确率召回率等指标怎么变
上来先推了个LR,问了SVM的基本原理,两个算法各自的使用场景以及它们之间的区别。
3、 决策树
节点划分https://blog.csdn.net/HouDouZhou/article/details/88699765
ID3 最大信息增益
C4.5 最大信息增益率:解决了ID3方法中,不适用于特征内分类特别细的特征,需要除以自身熵值
CART : 用GINI系数衡量 类似于熵的计算方式 1-pk2

剪枝
首先剪枝(pruning)的目的是为了避免决策树模型的过拟合。
因为决策树算法在学习的过程中为了尽可能的正确的分类训练样本,不停地对结点进行划分,因此这会导致整棵树的分支过多,也就导致了过拟合。决策树的剪枝策略最基本的有两种:预剪枝(pre-pruning)和后剪枝(post-pruning):

预剪枝(pre-pruning):边建立边剪。设定一个阈值或者叶子节点 树的深度的大小,如果满足条件就不剪了。
预剪枝就是在构造决策树的过程中,先对每个结点在划分前进行估计,若果当前结点的划分不能带来决策树模型泛华性能的提升,则不对当前结点进行划分并且将当前结点标记为叶结点。
后剪枝(post-pruning):后剪枝就是先把整颗决策树构造完毕,然后自底向上的对非叶结点进行考察,(不记得这个标准是啥,越大越不好)若将该结点对应的子树换为叶结点能够带来泛华性能的提升,则把该子树替换为叶结点。
一个参数α,越大 注重于鲁棒性不注重结果,越小约注重结果

样本缺失会怎样表现
也就是面对两个问题:
1、如果样本某个属性有缺失值,那么怎么计算使用这个属性划分结点时的信息增益呢?
2、在第一步的基础上,即使信息增益计算出来了,那么由于样本这一属性值缺失了,应该将这一样本划分到哪个子结点呢?

我们分别来看一下训练集、测试集上怎么处理缺失值。
训练集:
对于问题1,在计算某一个属性的信息增益时,如果有的样本在这个属性上有缺失值,那么我们先计算在这个属性上没有缺失值的样本占此时总样本的比值,使用此属性上无缺失的样本如常计算信息增益,只是在最后要将得到的信息增益乘以我们先前计算
2 / 12
的比值,这样就得到最终的信息增益了。
对于问题2,如果一个样本的某属性值缺失了,那么在使用此属性划分时,这一样本到底该划分到哪个子结点呢?决策树的经典方法是将此样本划分到所有的子结点中,只是会改变这一样本的权重,权重是按照子结点中样本数目与父结点中样本总数目地比值确定地。直观地理解,就是样本以一定地概率划分到子结点中。在决策树中,样本地权重都为1,但如果样本权重改变之后,在后续划分结点过程中,样本地权重就变成了改变后地权重。
测试集:
因为对测试集进行预测时,树已经构建成功了,那么只涉及第2个问题。该将此样本划分到属性地哪个分支上?
比较常用的方法:对每个分支都探测一下,看看属于哪个类别的概率最大。(概率可以按照划分到此属性时某个类别的样本占总样本的比例确定)
4、 BN的原理和公式,以及为什么要用BN
BN是为了将数据归一化,它一般用在激活函数之前,让其分布在函数更敏感的区间,或者说梯度更大的区间,小小的输入差异也能带来较大的梯度变化,这样避免梯度消失加快收敛速度
就是归一化之后令 xhat=γX+β
· scale(γ),即缩放尺度,用于乘以输入进行缩放。
· offset(β),即偏移量,用于和输入相加进行偏移。
BN是拉平不同特征图(也可以说是特征)之间的差异,进行去均值归一化。而L2参数权重正则化则没有改变同一层参数的相对大小,而是对当前参数自身进行正则化。
本身每个参数的模长是不同的,而L2参数权重正则化会拉平参数之间的差异,让他们都往0靠近。而BN则不对此产生影响。
对于一个特征图,它们量级、方差可能都不同,而BN就让方差为1,均值为0,从而导致特征图之间的差异减小了。L2参数权重正则化不以此层面为目标产生影响。
L2参数权重正则化是对各个参数权重本身的,而BN是对特征图全局的。
L2参数权重正则化让网络的权重不会过大,而BN的主要目的是加快训练同时防止梯度消失。
5、 优化函数、机器学习的优化方法了解吗?(啥啊)
https://blog.csdn.net/shanglianlm/article/details/85019633
3 / 12

https://blog.csdn.net/qq_21460525/article/details/70146665

6、 相似度计算除了神经网络的方法还有什么方法?
https://blog.csdn.net/weixin_38225797/article/details/81021630
距离计算:欧式距离
曼哈顿距离: 想象你在曼哈顿要从一个十字路口开车到另外一个十字路口实际驾驶距离就是这个“曼哈顿距离” 南北方向距离相近
切比雪夫距离: max(|x2-x1|,|y2-y1|)

相似度
余弦相似度
皮尔逊相关系数:反映两个变量线性相关程度的统计量
Jaccard系数:用于关注两个变量中是否具有相同特征
TF-IDF :词频*逆序文档频率 就是出现次数和重要性
4 / 12

7、 最大似然估计的原理,公式如何推导?
最大似然估计的目的:我们要在参数空间\Gamma中找到一个值\theta(并且用值\hat{ \theta}来表示该估计值),它能使似然函数l(\theta)极大化。

8、 学习率是什么,学习率在梯度下降中起什么作用?公式?

1)什么是学习率,作用是什么?

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

2)学习率过大或过小会导致什么问题
学习率过大可能导致模型无法收敛,过小导致收敛速度过慢

9、 常见的梯度下降形式与其对应的梯度更新规则
https://zhuanlan.zhihu.com/p/158813090
简单来说 批梯度下降会获得全局最优解,缺点是在更新每个参数的时候需要遍历所有的数据,计算量会很大,并且会有很多的冗余计算,导致的结果是当数据量大的时候,每个参数的更新都会很慢。
随机梯度下降是以高方差频繁更新,优点是使得sgd会跳到新的和潜在更好的局部最优解,缺点是使得收敛到局部最优解的过程更加的复杂。
小批量梯度下降结合了sgd和batch gd的优点,每次更新的时候使用n个样本。减少了参数更新的次数,可以达到更加稳定收敛结果,一般在深度学习当中我们采用这种方法。
其实这里还有一个隐藏的更加深的加分项,看你了不了解诸如Adam,动量法等优化方法。因为上述方法其实还有两个致命的问题。
第一个是如何对模型选择合适的学习率。自始至终保持同样的学习率其实不太合适。因为一开始参数刚刚开始学习的时候,此时的参数和最优解隔的比较远,需要保持一个较大的学习率尽快逼近最优解。但是学习到后面的时候,参数和最优解已经隔的比较近了,你还保持最初的学习率,容易越过最优点,在最优点附近来回振荡,通俗一点说,就很容易学过头了,跑偏了。
第二个是如何对参数选择合适的学习率。在实践中,对每个参数都保持的同样的学习率也是很不合理的。有些参数更新频繁,那么学习率可以适当小一点。有些参数更新缓慢,那么学习率就应该大一点。这里我们不展开,有空我会专门出一个专题介绍。

10、 BP原理
什么是反向传播算法,为什么要使用反向传播算法

定义:反向传播是在深度神将网络中,根据输出层输出值,来反向调整影藏层权重的一种方法

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

11、 介绍一个了解的DL模型

12、 POOLING分几种 什么特点和作用

13、 L1 L2正则化方式和优缺点
https://www.csdn.net/tags/MtjaAgzsMzc0MzMtYmxvZwO0O0OO0O0O.html
正则化就是在cost func中加入惩罚项,降低模型的过拟合程度
理解:其中的λ设置为无限大时 W矩阵就是0,也就是说把隐藏层的这些都设置为0,当然不可能取到这里,从这个思想可以推论会有一个值能够降低模型的复杂程度
L0:非零个数
L1:绝对值之和,特征稀疏便于选择
L2:各元素平方和再开方的模
14、 用公式推导小的batchsize会对模型训练有什么影响?
batch size过小,花费时间多,②训练数据就会非常难收敛,从而导致欠拟合。
假设batchsize=1,每次用一个数据进行训练,则由于个体的差异性或者异常值的影响,模型的参数变化也会很大,从而导致模型非常难收敛
;batch size过大,不同batch的梯度方向没有任何变化,容易陷入局部极小值

为什么LB(Large batch size)为何不如SB(Small batch size)的原因猜测:

LB过度拟合模型
LB更容易陷入鞍点
LB更依赖于初始值,容易陷入初始点周围的最小值,而SB可以探索到离初始点更远的最小值
LB和SB收敛到具有不同泛化特性的最小化点
因此,batch_size是有一个阙值的,一旦超过这个阙值,模型性能就会退化。通俗解释一下,大的batch_size本质上是对训练数据更优的一种选择,但是同时也会限制模型的探索能力,模型训练的时候极易陷入这种很尖的极小值很难跳脱出来,但是相对小一些的batch_size就很容易能检索到一个非常好的极小值点。

,你可以不断的进行选择找到比较多的局部最优解,因为batch数据比较少,loss比较小,带来的阻力不会很大。
6 / 12

15、 attention机制的作用以及选用的原因
简单来说,就是一种权重参数的分配机制,目标是协助模型捕捉重要信息。具体一点就是,给定一组<key,value>,以及一个目标(查询)向量query,attention机制就是通过计算query与每一组key的相似性,得到每个key的权重系数,再通过对value加权求和,得到最终attention数值。
优点:

一步到位获取全局与局部的联系,不会像RNN网络那样对长期依赖的捕捉会收到序列长度的限制。
每步的结果不依赖于上一步,可以做成并行的模式
相比CNN与RNN,参数少,模型复杂度低。(根据attention实现方式不同,复杂度不一)
缺点:

没法捕捉位置信息,即没法学习序列中的顺序关系。这点可以通过加入位置信息,如通过位置向量来改善,具体可以参考最近大火的BERT模型。

16、 resnet的原理以及作用
https://www.jianshu.com/p/4c5e13122cf7

Resnet网络解决的什么问题 怎么解决的
何凯明在2015年提出的
当一个深层网络的激活函数全部采用sigmod函数时,会导致梯度消失的出现。可以从数学角度计算一下为什么会出现梯度消失(非严格证明)。

残差网络是由许多具有相似结构的部分组成的,每一部分通常被称为“残差块”,如下图,其中F(x)表示残差函数。残差网络的精妙之处在于它把对于完整的输出的学习问题归结于对于残差的学习(Residual Learning)问题。何凯
7 / 12
明有这样想法的灵感来源于如果只把浅层的输出做恒等映射(即F(X)=0)输入到深层,这样网络加深也并不会出现网络退化。所以,他在网络中加入了“短路”机制,并且这样不但解决了梯度消失问题,同时也提高了计算效率,可以从数学角度分析一下为什么会有这样的效果(非严格证明)。

17、 Python/C++ Python 中的可变对象与不可变对象;
不可变对象:整型 字符串 元组,如果改变的话,只是改变了指向值的地址
相当于 装修的时候,不可变对象是换了个房子,可变对象是在户口本上的房子上装修
可变对象:List 如果改变, 是去人家指向的值那里改

面向对象的三大特性;
封装、继承、多态
封装
封装是把客观事物抽象成类,并且把自己的属性和方法让可信的类或对象操作,对不可性的隐藏。

继承
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
继承的过程是一个从一般到特殊的的过程。
继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须
8 / 12
提供实现的能力;
继承与接口与抽象类

接口可以继承接口,但用extends 而不是implement。
接口不能继承抽象类,抽象类可以实现(implement)接口。原因是接口的实现和抽象类的继承都要重写父类的抽象方法。而接口里只能有抽象方法,抽象类里则允许有抽象方法和非抽象方法。
抽象类可以继承实体类。
多态
多态性(polymorphism)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。这就意味着虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

18、 lstm公式
https://zhuanlan.zhihu.com/p/52701603

19、 特征提取的方式
one-hot 表示一个词
bag-of-words 表示一段文本
tf-idf 用频率的手段来表征词语的重要性
text-rank 借鉴page-rank来表征词语的权重
从基于SVD纯数学分解词文档矩阵的LSA,到pLSA中用概率手段来表征文档形成过程并将词文档矩阵的求解结果赋予概率含义,再到LDA中引入两个共轭分布从而完美引入先验
https://blog.csdn.net/miner_zhu/article/details/85061376?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%89%B9%E5%BE%81%E6%8F%90%E5%8F%96%E7%9A%84%E6%96%B9%E5%BC%8F&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-85061376.142v7control,157v4control&spm=1018.2226.3001.4187

20、 如果模型要实现multitask,要怎么处理?
共享知识表示的多个LOSS组合在一起多任务训练
在使用XGBoost进行单目标训练的时候,通过把点击的样本和下单的样本都作为正样本,并对下单的样本进行上采样或者加权,来平衡点击率和下单率。但这种样本的加权方式也会有一些缺点,例如调整下单权重或者采样率的成本较高,每次调整都需要重新训练,并且对于模型来说较难用同一套参数来表达这两种混合的样本分布。针对上述问题,可以利用DNN灵活的网络结构引入了Multi-task训练。

21、 fasttext/Glove/word2vec区别
word2vec是无监督学习,同样由于不需要人工标注;glove通常被认为是无监督学习,但实际上glove还是有label的,即共现次数[公式]
9 / 12
word2vec损失函数实质上是带权重的交叉熵,权重固定;glove的损失函数是最小平方损失函数,权重可以做映射变换。

1.word2vec是一个无监督算法,而fasttext是一个有监督算法。
2.模型的输入层:word2vec的输入层是上下文单词;而fasttext 对应的整个句子/文本的单词及其n-gram特征。word2vec要求训练样本是基于上下文带有“序”的属性,而fasttext使用的是词袋模型的思想,使用的是n-gram的无序属性。
可以更好的解决oov的问题;可以捕捉子词信息

22、 其他bert,如roberta, xlbert

23、 Xgboost的优势和劣势 Bagging和boosting的区别

1)GBDT以传统CART作为基分类器,而xgBoosting支持线性分类器,相当于引入L1和L2正则化项的逻辑回归(分类问题)和线性回归(回归问题);

2)GBDT在优化时只用到一阶导数,xgBoosting对代价函数做了二阶Talor展开,引入了一阶导数和二阶导数;

3)当样本存在缺失值是,xgBoosting能自动学习分裂方向;

4)xgBoosting借鉴RF的做法,支持列抽样,这样不仅能防止过拟合,还能降低计算;

5)xgBoosting的代价函数引入正则化项,控制了模型的复杂度,正则化项包含全部叶子节点的个数,每个叶子节点输出的score的L2模的平方和。从贝叶斯方差角度考虑,正则项降低了模型的方差,防止模型过拟合;

6)xgBoosting在每次迭代之后,为叶子结点分配学习速率,降低每棵树的权重,减少每棵树的影响,为后面提供更好的学习空间;

7)xgBoosting工具支持并行,但并不是tree粒度上的,而是特征粒度,决策树最耗时的步骤是对特征的值排序,xgBoosting在迭代之前,先进行预排序,存为block结构,每次迭代,重复使用该结构,降低了模型的计算;block结构也为模型提供了并行可能,在进行结点的分裂时,计算每个特征的增益,选增益最大的特征进行下一步分裂,那么各个特征的增益可以开多线程进行;

8)可并行的近似直方图算法,树结点在进行分裂时,需要计算每个节点的增益,若数据量较大,对所有节点的特征进行排序,遍历的得到最优分割点,这种贪心法异常耗时,这时引进近似直方图算法,用于生成高效的分割点,即用分裂后的某种值减去分裂前的某种值,获得增益,为了限制树的增长,引入阈值,当增益大于阈值时,进行分裂;

我:使用Early stop,训练可以同时给定验证集,在验证集上指标开始下降的拐点,停止训练,不再生成更多的树;
10 / 12

然而,与LightGBM相比,又表现出了明显的不足:

1)xgBoosting采用预排序,在迭代之前,对结点的特征做预排序,遍历选择最优分割点,数据量大时,贪心法耗时,LightGBM方法采用histogram算法,占用的内存低,数据分割的复杂度更低;

2)xgBoosting采用level-wise生成决策树,同时分裂同一层的叶子,从而进行多线程优化,不容易过拟合,但很多叶子节点的分裂增益较低,没必要进行跟进一步的分裂,这就带来了不必要的开销;LightGBM采用深度优化,leaf-wise生长策略,每次从当前叶子中选择增益最大的结点进行分裂,循环迭代,但会生长出更深的决策树,产生过拟合,因此引入了一个阈值进行限制,防止过拟合.
我的补充:最多到千百量级的特征,特征再多了效果提升不明显(LR+FTRL可到十亿百亿级);不支持线上实时训练(LR+FTRL支持)

gbdt和rf的区别,gbdt哪些部分可以做并行化,那xgboost呢。
24、 说几个神经网络的激活函数 特点分别是什么
本上
25、 数据不平衡怎么处理的
欠采样
过采样
SMOTE
26、 数据增强的方法
EDA方法
同义词替换、随机插入、随机交换、随机删除。

同义词替换(Synonym Replacement, SR):从句子中随机选取n个不属于停用词集的单词,并随机选择其同义词替换它们;
随机插入(Random Insertion, RI):随机的找出句中某个不属于停用词集的词,并求出其随机的同义词,将该同义词插入句子的一个随机位置。重复n次;
随机交换(Random Swap, RS):随机的选择句中两个单词并交换它们的位置。重复n次;
随机删除(Random Deletion, RD):以 p p p 的概率,随机的移除句中的每个单词。

知识图谱增强

27、 评价指标
解释一下AUC的计算方法和它代表的意义。问了一个相关的问题,当时没有答的很好,就是一个数据如果分成两份,分别在两份数据上计算出AUC为AUC_1和AUC_2,问整体数据的AUC是多少?面试的时候一直以为这个是能算出来的,所以一直在推导公式。最后的答案其实是无法得到,因为从局部的有序无法直接退出全局的有序,这个题目其实还是考查对于AUC这个指标的理解深度。
11 / 12

28、 BERT和ELMo的区别
ELMO是基于双向RNN的语言模型,将同一个词的前向隐层状态和后向隐层状态拼接在一起,可以作为该单词的Contextualized word embedding(综合上下文语境的词嵌入)。
GPT与BERT区别:BERT是基于Transformer的Encoder构建的,而GPT是基于Transformer的Decoder构建的。这就导致GPT类似于传统的语言模型,即一次只输出一个单词进行序列预测,也就是下一词预测。因为Decoder部分与RNN思想还是比较类似的,尤其是其中Masked attention部分,能够屏蔽来自未来的信息,因此GPT是单向的模型,无法考虑语境的下文。
29、 贝叶斯思想
30、 各种attention, 加性乘性self-attn,稀疏atten,局部attention等。
31、 分词算法,如何处理颗粒度的问题。
https://blog.csdn.net/sysu63/article/details/80185555?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164950712516782248555184%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164950712516782248555184&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-4-80185555.142v7control,157v4control&utm_term=%E5%88%86%E8%AF%8D%E7%AE%97%E6%B3%95&spm=1018.2226.3001.4187

32、 手写multihead attention。
https://zhuanlan.zhihu.com/p/172400219
class MultiHeadedAttention(nn.Module):
def init(self, h, d_model, dropout=0.1):
“Take in model size and number of heads.”
super(MultiHeadedAttention, self).init()
assert d_model % h == 0
# We assume d_v always equals d_k
self.d_k = d_model // h
self.h = h
self.linears = clones(nn.Linear(d_model, d_model), 4)
self.attn = None
self.dropout = nn.Dropout(p=dropout)

def forward(self, query, key, value, mask=None):
“Implements Figure 2”
if mask is not None:
# Same mask applied to all h heads.
mask = mask.unsqueeze(1)
nbatches = query.size(0)

   # 1) Do all the linear projections in batch from d_model => h x d_k
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值