赞
踩
转自:这篇文章
本文以QA形式对NLP/AI中的高频问题进行总结,均为自己在真实面试中所遇到的问题(持续更新中)。
部分问题答案已经写入可参见:
nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
一、AI算法基础 1、样本不平衡的解决方法? 2、交叉熵函数系列问题?与最大似然函数的关系和区别? 3、HMM、MEMM vs CRF 对比? 4、SVM和LR的区别与联系? 5、crf的损失函数是什么?lstm+crf怎么理解? 6、GBDT vs Xgboost 7、评估指标f1和auc的区别是哪些? 8、sigmoid用作激活函数时,分类为什么要用交叉熵损失,而不用均方损失? 9、神经网络中的激活函数的对比? 二、NLP高频问题 1、word2vec和tf-idf 相似度计算时的区别? 2、word2vec和NNLM对比有什么区别?(word2vec vs NNLM) 3、 word2vec负采样有什么作用? 4、word2vec和fastText对比有什么区别?(word2vec vs fastText) 5、glove和word2vec、 LSA对比有什么区别?(word2vec vs glove vs LSA) 6、 elmo、GPT、bert三者之间有什么区别?(elmo vs GPT vs bert) 7、LSTM和GRU的区别? 三、其他算法问题 1、怎么进行单个样本的学习? 2、 决策树 bagging boosting adaboost 区别?RF的特征随机目的是什么? 3、transformer各部分怎么用?Q K V怎么计算;Attention怎么用? 4、HMM 假设是什么?CRF解决了什么问题?CRF做过特征工程吗?HMM中的矩阵意义?5、说以一下空洞卷积?膨胀卷积怎么理解?什么是Piece-CNN? 6、怎么解决beam-search局部最优问题?global embedding 怎么做? 7、数学题:什么是半正定矩阵?机器学习中有什么应用? 8、卷积的物理意义是什么?傅里叶变换懂吗? 9、说一下Bert? 10、推导word2vec? 11、怎么理解传统的统计语言模型?现在的神经网络语言模型有什么不同? 12、神经网络优化的难点是什么?这个问题要展开来谈。 13、attention你知道哪些? 14、自动文章摘要抽取时,怎么对一篇文章进行分割?(从序列标注、无监督等角度思考) 15、在做NER任务时,lstm后面可以不用加CRF吗? 16、通过画图描述TextRank? 17、LDA和pLSA有什么区别? 18、Transformer在实际应用中都会有哪些做法? 19、讲出过拟合的解决方案? 20、说一下transforemr、LSTM、CNN间的区别?从多个角度进行讲解? 21、梯度消失的原因和解决办法有哪些? 22、数学题:贝叶斯计算概率? 23、数学题:25只兔子赛跑问题,共5个赛道,最少几次比赛可以选出前5名? 24、数学题:100盏灯问题?
1)上采样和子采样;2)修改权重(修改损失函数);3)集成方法:bagging,类似随机森林、自助采样;4)多任务联合学习;
1)交叉熵损失函数的物理意义:用于描述模型预测值与真实值的差距大小;
2)最小化交叉熵的本质就是对数似然函数的最大化;
3)对数似然函数的本质就是衡量在某个参数下,整体的估计和真实情况一样的概率,越大代表越相近;而损失函数的本质就是衡量预测值和真实值之间的差距,越大代表越不相近。
1)HMM是有向图模型,是生成模型;HMM有两个假设:一阶马尔科夫假设和观测独立性假设;但对于序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。
2)MEMM(最大熵马尔科夫模型)是有向图模型,是判别模型;MEMM打破了HMM的观测独立性假设,MEMM考虑到相邻状态之间依赖关系,且考虑整个观察序列,因此MEMM的表达能力更强;但MEMM会带来标注偏置问题:由于局部归一化问题,MEMM倾向于选择拥有更少转移的状态。这就是标记偏置问题。
最大熵模型(MEMM)
3)CRF模型解决了标注偏置问题,去除了HMM中两个不合理的假设,当然,模型相应得也变复杂了。
HMM、MEMM和CRF的优缺点比较:
a)与HMM比较。CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息。特征设计灵活(与ME一样)
b)与MEMM比较。由于CRF计算全局最优输出节点的条件概率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。
c)与ME比较。CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布.
首先,CRF,HMM(隐马模型),MEMM(最大熵隐马模型)都常用来做序列标注的建模,像分词、词性标注,以及命名实体标注
隐马模型一个最大的缺点就是由于其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择
最大熵隐马模型则解决了隐马的问题,可以任意选择特征,但由于其在每一节点都要进行归一化,所以只能找到局部的最优值,同时也带来了标记偏见的问题,即凡是训练语料中未出现的情况全都忽略掉。
条件随机场则很好的解决了这一问题,他并不在每一个节点进行归一化,而是所有特征进行全局归一化,因此可以求得全局的最优值。
下面引出损失函数(虽然我感觉这不应该称为“损失”),对真实标记序列y的概率取log:
那么我们的目标就是最大化上式(即真实标记应该对应最大概率值),因为叫损失函数,所以我们也可以对上式取负然后最小化之,这样我们就可以使用梯度下降等优化方法来求解参数。在这个过程中,我们要最大化真实标记序列的概率,也就训练了转移概率矩阵A和BiLSTM中的参数。
ID3、C4.5、CART、RF、boosting、Adaboost、GBDT、xgboost模型
那么如何得到优秀的组合树呢?
一种办法是贪心算法,遍历一个节点内的所有特征,按照公式计算出按照每一个特征分割的信息增益,找到信息增益最大的点进行树的分割。增加的新叶子惩罚项对应了树的剪枝,当gain小于某个阈值的时候,我们可以剪掉这个分割。但是这种办法不适用于数据量大的时候,因此,我们需要运用近似算法。
另一种方法:XGBoost在寻找splitpoint的时候,不会枚举所有的特征值,而会对特征值进行聚合统计,按照特征值的密度分布,构造直方图计算特征值分布的面积,然后划分分布形成若干个bucket(桶),每个bucket的面积相同,将bucket边界上的特征值作为split
point的候选,遍历所有的候选分裂点来找到最佳分裂点。
上图近似算法公式的解释:将特征k的特征值进行排序,计算特征值分布,rk(z)表示的是对于特征k而言,其特征值小于z的权重之和占总权重的比例,代表了这些特征值的重要程度,我们按照这个比例计算公式,将特征值分成若干个bucket,每个bucket的比例相同,选取这几类特征值的边界作为划分候选点,构成候选集;选择候选集的条件是要使得相邻的两个候选分裂节点差值小于某个阈值
传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。
word2vec 1、稠密的 低维度的 2、表达出相似度; 3、表达能力强;4、泛化能力强;
1)其本质都可以看作是语言模型;
2)词向量只不过NNLM一个产物,word2vec虽然其本质也是语言模型,但是其专注于词向量本身,因此做了许多优化来提高计算效率:
两个作用,1.加速了模型计算,2.保证了模型训练的效果,一个是模型每次只需要更新采样的词的权重,不用更新所有的权重,那样会很慢,第二,中心词其实只跟它周围的词有关系,位置离着很远的词没有关系,也没必要同时训练更新。
1)都可以无监督学习词向量, fastText训练词向量时会考虑subword;
2)fastText还可以进行有监督学习进行文本分类,其主要特点:
1)glove vs LSA
2)word2vec vs LSA
3)word2vec vs glove
之前介绍词向量均是静态的词向量,无法解决一次多义等问题。下面介绍三种elmo、GPT、bert词向量,它们都是基于语言模型的动态词向量。下面从几个方面对这三者进行对比:
(1)特征提取器
elmo采用LSTM进行提取,GPT和bert则采用Transformer进行提取。很多任务表明Transformer特征提取能力强于LSTM,elmo采用1层静态向量+2层LSTM,多层提取能力有限,而GPT和bert中的Transformer可采用多层,并行计算能力强。
(2)单/双向语言模型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。