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

七月在线实验室

共 3007字,需浏览 7分钟

 ·

2024-04-11 07:37

12本七月在线内部电子书在文末,自取~

公众号福利

👉回复【100题】领取《名企AI面试100题》PDF

👉回复【干货资料】领取NLP、CV、ML等AI方向干货资料

f0a87c7ad21b76af66ecbcd1c12629b3.webp 327fc484a8ace7921e6bf245e6bdaeb3.webp f0a87c7ad21b76af66ecbcd1c12629b3.webp

问题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

免费送


↓以下12本书电子版免费领,直接送↓ 71397082e89e318731581d78b3878ca0.webp

a7d5e5f84b1b17ca201743d77a58a5e0.webp

以上8本+2022年Q4面试题-69道》、2022年Q3面试题-83道》、2023年Q1面试题-65道》、2023年Q2面试题-103道共12本, 免费送


扫码回复【999】免费领12本电子书

      

(或 找七月在线其他老师领取

点击 阅读原文 ”抢新人 福利 ~

浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报