NLP面试

nlp:

1. word2vec原理(word2vec中CBOW和Skip-Gram训练模型的原理  word2vec 中的数学原理详解)

功能:将corpus(语料库)的one-hot向量(模型的输入)转换成低维关联词向量。

分为两种训练模式,CBOW和skip-gram,CBOW是根据上下关联词来预测中心词,skip-gram是通过中心词预测上下文的词。

两个模型。

有两种加速算法,一是Hierarchical Softmax(层次 Softmax),构建哈弗曼树(单词都在叶子节点上),通过将多分类变成2分类,复杂度从O(n)变成了O(logn)。

二是通过负采样,降低其它单词的预测概率。负采样中单词作为负样本的概率应该和其词频正相关,所以词频越高被抽到的概率越高,

(随机权重矩阵)

比较常见的组合为 skip-gram+负采样方法。

Q1. word2vec和one-hot的区别 

one-hot编码将每个词都表示为一个R|V|×1R|V|×1的向量,该词在词表中索引的位置是1,其他位置都是0。任意两词向量都正交。word2vec可以生成关联的词向量,在向量空间相似词的余弦距离小。

Q2.负采样加速的原理? 

负采样中认为,单词作为负样本的概率应该和其词频正相关,所以词频越高的越大概率被抽到。

Q3. word2vec和word embedding的区别 

简言之,word embedding 是一个将词向量化的概念,中文译名为"词嵌入"。 

word2vec是谷歌提出的一种word embedding的具体手段,采用了两种模型(CBOW与skip-gram模型)与两种方法(负采样与层次softmax方法)的组合,比较常见的组合为 skip-gram+负采样方法。

Q4. fastText的原理和使用,训练词向量有两种吗?跟word2vec的区别

功能:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。

(使用词embedding而非词本身作为特征,这是fastText效果好的一个原因;另一个原因就是字符级n-gram特征的引入对分类效果会有一些提升。fastText原理及实践)

区别:FastText模型架构和word2vec的CBOW模型架构非常相似,不同的是:

① CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征,这些特征用来表示单个文档;

② CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过;

③ CBOW预测中间词,fastText预测是文档对应的标签。

    Tomas Mikolov论文简评:从Word2Vec到FastText

3. LSTM原理和使用

    LSTM的公式推导详解    简单理解LSTM

    原理:描述一下三个门。

LSTM(长效短期记忆神经网络)是一种特殊的RNN,它能够学习到长的依赖关系。

细胞状态和三个门结构,遗忘门,输入输出门。

第一步是决定从细胞状态中丢弃什么信息(图一),由“忘记门”的Sigmoid层实现(0代表不通过任何信息,1代表全部通过)。

下一步决定我们要在细胞状态中存储什么信息。具体操作分为两部分,一是决定在细胞中更新哪些值,产生it和Ct两个新向量(图二),然后进行计算,即上一个状态值Ct乘以ft,再加上it*Ct,得到新的候选值(图三);

最后输出为Ct(单元格状态)通过tanh(将值规范化到-1和1之间),并乘以Sigmoid门输出到下一个单元。

LSTM学习笔记

Q1. Siamese LSTM

Siamese LSTM孪生神经网络,第一层由两个平行的双向LSTM构成的特征提取部分,第二部分由单层或单层全连接层构成的分类/拟合层,最后使用距离公式来对比Gw(X1)Gw(X1)与Gw(X2)两个向量的距离(可以使用欧式距离,余弦距离)。

总之,用来对比两个input的相似程度,(0,1]代表完全不相似到非常相似。

改进:1. 单选可以选择GRU,训练速度会更快。

           2.可以在全连接层输出做降维。

note: 训练时两个单元权重不共享(权重共享需要统一两个句子的长度),则全连接层需要使用加和取平均的方式,若只是采用全连接,则Q1Q2交换位置后,与输入Q1Q2结果不一致。

用于文本相似的Siamese Network

Q2. 知道GRU嘛

GRU则是LSTM的一个变体,GRU只有两个门了,分别为更新门和重置门。

更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。

5. lightGBM的原理和使用

6. pageRank top-n的问题

统计词频

7. RF的特征为什么要随机?

保证每一个基分类器都是弱分类器,防止过拟合现象。

步骤:

  • 从原始训练集中使用Bootstraping方法随机有放回采样选出m个样本,共进行n_tree次采样,生成n_tree个训练集
  • 对于n_tree个训练集,我们分别训练n_tree个决策树模型
  • 对于单个决策树模型,假设训练样本特征的个数为n,那么每次分裂时根据信息增益/信息增益比/基尼指数选择最好的特征进行分裂
  • 每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类。在决策树的分裂过程中不需要剪枝
  • 将生成的多棵决策树组成随机森林。对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果

优点:

  • 具有极高的准确率
  • 随机性的引入,使得随机森林不容易过拟合
  • 随机性的引入,使得随机森林有很好的抗噪声能力
  • 能处理很高维度的数据,并且不用做特征选择
  • 既能处理离散型数据,也能处理连续型数据,数据集无需规范化
  • 训练速度快,可以得到变量重要性排序
  • 容易实现并行化

缺点: 

  • 当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
  • 随机森林模型还有许多不好解释的地方,有点算个黑盒模型

 

项目:

tf搭建的模型,是cnn还是rnn,哪个效果更好点。为啥

灵魂拷问,词向量就是fastText训练的?

反垃圾项目

 

code:

python中的近似问题

动态规划(八皇后,匹配括号,0-9出现次数,两个字符串的编辑距离,走方格,滑动窗口)

re,前后项匹配。

项目详细介绍(短文本匹配用的什么算法)

 

 

你可能感兴趣的:(python,面经)