小米 AIGC 大模型实习面试题4道|含解析

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。

合集在这里:《大模型面试宝典》(2024版) 正式发布!

今天我们分享合集中一个同学的面试题,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以文末加入我们。

技术交流群

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了大模型算法岗技术与面试交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:技术交流

问题1、讲一下transformer的原理

transformer的主要组成部分包括自注意力机制和位置编码。

  • 自注意力机制(Self-Attention):它允许模型在输入序列中的不同位置之间建立关联。通过计算每个位置与其他所有位置的相关性得分,模型可以学习到输入序列中各个部分之间的依赖关系。

  • 位置编码(Positional Encoding):Transformer通过将位置信息编码到输入向量中,使得模型能够区分不同位置的词语或标记。这样,模型能够利用位置信息更好地理解输入序列。

  • 多头注意力机制(Multi-Head Attention):为了增强模型对不同表示空间的关注,Transformer引入了多个注意力头,允许模型并行地关注不同的表示子空间,从而提高了模型的表征能力。

  • 前馈神经网络(Feed-Forward Neural Network):每个注意力模块之后都连接着一个前馈神经网络,它通过应用全连接层和激活函数来对特征进行变换和组合。

通过这些组件的组合和堆叠,Transformer模型能够捕捉长距离依赖关系,同时避免了传统循环神经网络中的序列依赖问题,使其在处理长序列时表现更好。

问题2、讲一下微调方法p-tuning v2的原理

P-Tuning V2在P-Tuning V1的基础上进行了下述改进:

  • 在每一层都加入了Prompts tokens作为输入,而不是仅仅加在输入层,这与Prefix Tuning的做法相同。这样得到了更多可学习的参数,且更深层结构中的Prompt能给模型预测带来更直接的影响。

  • 去掉了重参数化的编码器。在 P-tuning v2 中,作者发现重参数化的改进很小,尤其是对于较小的模型,同时还会影响模型的表现。

  • 针对不同任务采用不同的提示长度。提示长度在提示优化方法的超参数搜索中起着核心作用。在实验中,我们发现不同的理解任务通常用不同的提示长度来实现其最佳性能,这与Prefix-Tuning中的发现一致,不同的文本生成任务可能有不同的最佳提示长度。

  • 可选的多任务学习。先在多任务的Prompt上进行预训练,然后再适配下游任务。一方面,连续提示的随机惯性给优化带来了困难,这可以通过更多的训练数据或与任务相关的无监督预训练来缓解;另一方面,连续提示是跨任务和数据集的特定任务知识的完美载体。

问题3、什么是bilstm-crf

BiLSTM-CRF是一种用于序列标注任务的神经网络模型,结合了双向长短期记忆网络(BiLSTM)和条件随机场(CRF)。

  • 双向长短期记忆网络(BiLSTM):BiLSTM是一种循环神经网络变种,能够有效地捕捉输入序列中的长期依赖关系。通过同时考虑输入序列的正向和反向信息,BiLSTM可以更好地理解整个序列的语境。

  • 条件随机场(CRF):CRF是一种概率图模型,常用于序列标注任务。它能够对序列中的标记进行全局建模,利用标记之间的依赖关系来提高标注的一致性和准确性。

BiLSTM-CRF模型首先利用BiLSTM对输入序列进行特征提取,然后将提取的特征作为CRF模型的输入,利用CRF模型对序列进行标注。通过结合BiLSTM和CRF,BiLSTM-CRF模型能够更好地处理序列标注任务,同时充分利用上下文信息和标记之间的依赖关系。

问题4、代码题:给整数数组和target,找数组当中和为目标值的两个整数返回下标。

使用一个字典来存储遍历过的数字及其下标,通过查找字典来判断是否存在与当前数字配对的数字,从而实现寻找和为目标值的两个数的功能。

def two_sum(nums, target):
    num_dict = {}  # 用字典存储数字和对应的下标
    for i, num in enumerate(nums):
        complement = target - num  # 计算目标值与当前值的差值
        if complement in num_dict:  # 如果差值在字典中,则找到了符合条件的两个数
            return [num_dict[complement], i]
        num_dict[num] = i  # 否则将当前数字及其下标存入字典
    return None  # 如果未找到符合条件的两个数,则返回None

# 示例
nums = [2, 7, 11, 15]
target = 9
print(two_sum(nums, target))  # 输出 [0, 1],因为 nums[0] + nums[1] = 2 + 7 = 9

版权声明:本文为博主作者:深度学习算法与自然语言处理原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/2201_75499313/article/details/136952815

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2024年4月10日
下一篇 2024年4月10日

相关推荐