文末彩蛋:七月在线干货组最新升级的《2021大厂最新AI面试题 [含答案和解析, 更新到前121题]》免费送!

1.使用Word2vec算法计算得到的词向量之间为什么能够表征词语之间的语义近似关系?

参考答案:

word2vec是一种高效实现word embedding的算法,word2vec模型其实就是一个简单化的神经网络,输入是One-Hot向量,Hidden Layer没有激活函数,也就是线性的单元。Output Layer维度跟Input Layer的维度一样,用的是Softmax回归。word2vec得出的词向量其实就是训练后的一个神经网络的隐层的权重矩阵,经过CBOW或Skip-Gram模型的训练后,此意相近的词语就会获得更为接近的权重,因此可以用向量的距离来衡量词的相似度。

2.在样本量较少的情况下如何扩充样本数量?

参考答案:

  1. 同义词替换(SR: Synonyms Replace):不考虑stopwords,在句子中随机抽取n个词,然后从同义词词典中(wordnet)随机抽取同义词,并进行替换。
  2. 随机插入(RI: Randomly Insert):不考虑stopwords,随机抽取一个词,然后在该词的同义词集合中随机选择一个,插入原句子中的随机位置。该过程可以重复n次。
  3. 随机交换(RS: Randomly Swap):句子中,随机选择两个词,位置交换。该过程可以重复n次。
  4. 随机删除(RD: Randomly Delete):句子中的每个词,以概率p随机删除。

3.介绍一下Python的装饰器。

参考答案:

装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。

装饰器的作用是装饰函数,即在不改变原有函数的基础上,增加新的函数功能,让函数更加强大。

装饰器适用的两个场景:增强被装饰函数的行为;代码复用。

4.什么是梯度消失和梯度爆炸?

参考答案:

根据损失函数计算的误差通过梯度反向传播的方式对深度网络权值进行更新时,得到的梯度值接近0或特别大,也就是梯度消失或爆炸。梯度消失或梯度爆炸在本质原理上其实是一样的。

5.leetcode46. 全排列

预备知识回溯法:一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。方法一:回溯思路和算法这个问题可以看作有nn 个排列成一行的空格,我们需要从左往右依此填入题目给定的nn 个数,每个数只能使用一次。那么很直接的可以想到一种穷举的算法,即从左往右每一个位置都依此尝试填入一个数,看能不能填完这nn 个空格,在程序中我们可以用「回溯法」来模拟这个过程。我们定义递归函数 backtrack(first, output) 表示从左往右填到第firstfirst 个位置,当前排列为outputoutput。 那么整个递归函数分为两个情况:如果first==nfirst==n,说明我们已经填完了nn 个位置(注意下标从00 开始),找到了一个可行的解,我们将outputoutput 放入答案数组中,递归结束。如果first<nfirst<n,我们要考虑这第firstfirst 个位置我们要填哪个数。根据题目要求我们肯定不能填已经填过的数,因此很容易想到的一个处理手段是我们定义一个标记数组vis[]vis[] 来标记已经填过的数,那么在填第firstfirst 个数的时候我们遍历题目给定的nn 个数,如果这个数没有被标记过,我们就尝试填入,并将其标记,继续尝试填下一个位置,即调用函数 backtrack(first + 1, output)。回溯的时候要撤销这一个位置填的数以及标记,并继续尝试其他没被标记过的数。使用标记