admin管理员组文章数量:1130349
最近已有不少大厂开启春招宣讲了。
节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。
针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了深入的讨论。
总结链接如下:
- 《大模型面试宝典》(2025版) 正式发布
这是星球成员面试小米大模型的一个面试,全程都是基本功的拷问。
这篇笔记我们就来看看,面试中把这位候选人拷打麻了的一个 Transformer 面试连环炮,到底应该如何作答?
01
面试题解析
第一轮拷问:transformer 的结构?
这个相信大部分同学都能回答上,Transformer 是由编码端和解码端组成,而编码端和解码端又由多个网络结构相同的 Block 堆叠组成。
每个 Block 由多头注意力层和前馈神经网络层组成。解码端跟编码部分类似,不同的是注意力机制采用的是 masked self-attention。
第二轮拷问:Transformer 输入向量的维度?
问这个问题,面试官其实主要是想考察你对 Transformer 的网络结构参数了不了解。
这里要答出两点:
-
输入 token 序列的维度:【batch, seqlen】
-
经过 embedding 之后的维度:【batch,seqlen,D】
其中 seqlen 是序列长度,D 是隐藏层的维度。后面多头注意力机制的变换,都是在 tensor 之间加权组合,不会改变这个输入的 shape。
举个例子:假如输入的原始句子是"我爱机器学习",我们按最简单的基于字的分词,这个样本的单词长度是 6,也就是 ‘我’ ‘爱’ ‘机’ ‘器’ ‘学’ ‘习’,这六个字。
经过 embedding 之后,每个词的 embedding 向量是 4096。那"我爱机器学习"这个句子 embedding 之后的维度就是【4096 】,如果是批量输入,那么 embedding 后的维度就是【batch, 4, 4096】
第三轮拷问:为什么在注意力机制这里要除以根号d?
这是一个老牌经典面试题了,对于这种题目,要注意的点就是,不要背八股答案,要用自己的话全程讲述出来。
我们对照公式来看:
这里主要有两点原因:首先,softmax 是一个 S 形的非线性函数,当输入很大时,输出趋近于 1,梯度会趋近于 0。
不过这只是直观上的,那为什么要除以根号 d,而不是其他数呢?
所以更深层的原因是,选择根号 d,可以让输入 softmax 的分布,也就是 Q*K^T 更加趋近一个标准的正态分布,也就是均值为 0,方差为 1 的正态分布。
方差为 1,会使得训练过程,变的更加稳定,每一层的激活,不会产生较大的数据漂移。
到这里,我们的回答又更进一步了。不过我们还可以再继续往前延伸,跟其他面试候选人拉开差距。
其实 Transformer 在实际实现中,在获取输入词向量之后,也需要对 embedding 矩阵乘以根号 d。
原理是类似的,embedding 矩阵的初始化方式是 xavier,方差是 1/根号 d,因此乘以根号 d,可以让 embedding 矩阵的方差是 1,从而加速模型的收敛。
第四轮拷问:layernorm 是对哪一个维度进行的?
这个问题面试官想看看,你对 layernorm 的公式了不了解。
我们先给出公式:
前面说过,layernorm 的输入维度是 [batch,seqlen,D],它是在一句话的序列内做归一化。
这跟 batch norm 是有区别的,batch norm 是在多句话之间做归一化。
其次 LayerNorm 是每个样本自己算均值和方差,不需要存全局的均值和方差,不管样本长还是短,均值和方差都是在每个样本内计算。
所以 layernorm 的归一化的维度是第二个维度 seqlen,也就是对每个单词 embedding 进行标准化。所以 layernorm 层里面的两个可学习参数的维度也是 D。
最近已有不少大厂开启春招宣讲了。
节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。
针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了深入的讨论。
总结链接如下:
- 《大模型面试宝典》(2025版) 正式发布
这是星球成员面试小米大模型的一个面试,全程都是基本功的拷问。
这篇笔记我们就来看看,面试中把这位候选人拷打麻了的一个 Transformer 面试连环炮,到底应该如何作答?
01
面试题解析
第一轮拷问:transformer 的结构?
这个相信大部分同学都能回答上,Transformer 是由编码端和解码端组成,而编码端和解码端又由多个网络结构相同的 Block 堆叠组成。
每个 Block 由多头注意力层和前馈神经网络层组成。解码端跟编码部分类似,不同的是注意力机制采用的是 masked self-attention。
第二轮拷问:Transformer 输入向量的维度?
问这个问题,面试官其实主要是想考察你对 Transformer 的网络结构参数了不了解。
这里要答出两点:
-
输入 token 序列的维度:【batch, seqlen】
-
经过 embedding 之后的维度:【batch,seqlen,D】
其中 seqlen 是序列长度,D 是隐藏层的维度。后面多头注意力机制的变换,都是在 tensor 之间加权组合,不会改变这个输入的 shape。
举个例子:假如输入的原始句子是"我爱机器学习",我们按最简单的基于字的分词,这个样本的单词长度是 6,也就是 ‘我’ ‘爱’ ‘机’ ‘器’ ‘学’ ‘习’,这六个字。
经过 embedding 之后,每个词的 embedding 向量是 4096。那"我爱机器学习"这个句子 embedding 之后的维度就是【4096 】,如果是批量输入,那么 embedding 后的维度就是【batch, 4, 4096】
第三轮拷问:为什么在注意力机制这里要除以根号d?
这是一个老牌经典面试题了,对于这种题目,要注意的点就是,不要背八股答案,要用自己的话全程讲述出来。
我们对照公式来看:
这里主要有两点原因:首先,softmax 是一个 S 形的非线性函数,当输入很大时,输出趋近于 1,梯度会趋近于 0。
不过这只是直观上的,那为什么要除以根号 d,而不是其他数呢?
所以更深层的原因是,选择根号 d,可以让输入 softmax 的分布,也就是 Q*K^T 更加趋近一个标准的正态分布,也就是均值为 0,方差为 1 的正态分布。
方差为 1,会使得训练过程,变的更加稳定,每一层的激活,不会产生较大的数据漂移。
到这里,我们的回答又更进一步了。不过我们还可以再继续往前延伸,跟其他面试候选人拉开差距。
其实 Transformer 在实际实现中,在获取输入词向量之后,也需要对 embedding 矩阵乘以根号 d。
原理是类似的,embedding 矩阵的初始化方式是 xavier,方差是 1/根号 d,因此乘以根号 d,可以让 embedding 矩阵的方差是 1,从而加速模型的收敛。
第四轮拷问:layernorm 是对哪一个维度进行的?
这个问题面试官想看看,你对 layernorm 的公式了不了解。
我们先给出公式:
前面说过,layernorm 的输入维度是 [batch,seqlen,D],它是在一句话的序列内做归一化。
这跟 batch norm 是有区别的,batch norm 是在多句话之间做归一化。
其次 LayerNorm 是每个样本自己算均值和方差,不需要存全局的均值和方差,不管样本长还是短,均值和方差都是在每个样本内计算。
所以 layernorm 的归一化的维度是第二个维度 seqlen,也就是对每个单词 embedding 进行标准化。所以 layernorm 层里面的两个可学习参数的维度也是 D。
版权声明:本文标题:小米大模型二面,我感觉要废了 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1758177925a2776223.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论