添加微信:julyedufu77,回复 “ 7 ”,领取最新升级版《名企AI面试100题》电子书!!

本文目录:

问题8:介绍下bert位置编码和transformer的区别,哪个好,为什么?

问题9:sigmod函数的缺点,为什么会产生梯度消失?不是以0为中心的话,为什么会收敛慢。

问题10:LN和BN的区别。

问题11:Leetcode 8. 字符串转换整数 (atoi),考虑科学计数法。

问题12:最长递增子序列。

问题13:全排列。

问题14:合并两个有序数组并去重。

答案解析:

问题8:介绍下bert位置编码和transformer的区别,哪个好,为什么?

Transformer解决并行计算问题的法宝,就是Positional Encoding,简单点理解就是,对于一句文本,每一个词语都有上下文关系,而RNN类网络由于其迭代式结构,天然可以表达词语的上下文关系,但transformer模型没有循环神经网络的迭代结构,所以我们必须提供每个字的位置信息给transformer,才能识别出语言中的顺序关系,为了解决这个问题,谷歌Transformer的作者提出了position encoding。

原版的Transformer中,谷歌对learned position embedding和sinusoidal position encoding进行了对比实验,结果非常相近。而Sinusoidal encoding更简单、更高效、并可以扩展到比训练样本更长的序列上,因此成为了Transformer的默认实现。对于机器翻译任务,encoder的核心是提取完整句子的语义信息,它并不关注某个词的具体位置是什么,只需要将每个位置区分开(三角函数对相对位置有帮助);而Bert模型对于序列标注类的下游任务,是要给出每个位置的预测结果的。

问题9:sigmod函数的缺点,为什么会产生梯度消失?不是以0为中心的话,为什么会收敛慢。

sigmoid函数特点:它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。

缺点:缺点1:在深度神经网络中梯度反向传递时导致梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。缺点2:Sigmoid 的 output不是0均值(即zero-centered)。缺点3:其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

问题10:Layer Normalization和Batch Normalization 的区别

Batch Normalization 是对这批样本的同一维度特征做归一化, Layer Normalization 是对这单个样本的所有维度特征做归一化。

BatchNorm的缺点:

  1. 需要较大的batch以体现整体数据分布2、训练阶段需要保存每个batch的均值和方差,以求出整体均值和方差在infrence阶段使用3、不适用于可变长序列的训练,如RNNLayer NormalizationLayer Normalization是一个独立于batch size的算法,所以无论一个batch样本数多少都不会影响参与LN计算的数据量,从而解决BN的两个问题。

LN的做法是根据样本的特征数做归一化。LN不依赖于batch的大小和输入sequence的深度,因此可以用于batch-size为1和RNN中对边长的输入sequence的normalize操作。但在大批量的样本训练时,效果没BN好。实践证明,LN用于RNN进行Normalization时,取得了比BN更好的效果。但用于CNN时,效果并不如BN明显。

问题11:Leetcode 8. 字符串转换整数 (atoi),考虑科学计数法解析:

有三种方法:正常遍历、有限状态机和正则表达式,这里只提供正则表达式的参考答案。

s.lstrip()表示把开头的空格去掉

使用正则表达式:

^:匹配字符串开头

[+-]:代表一个+字符或-字符?:前面一个字符可有可无

\d:一个数字 +: