赞
踩
节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。
今天我分享一位小伙伴,今年成功找到实习机会,面试题整理后分享给大家,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以加入我们。
今年某985研二,本文章主要记录了本小菜研找实习的坎坷历程。
在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通能力。
初始化时,矩阵 A 随机高斯初始化,矩阵 B 初始化为0。之所以要这样初始化的原因是,在初始阶段这两个矩阵相乘为0,可以保证在初始阶段时,只有左边的主干生效。然后 BA 还会乘以一个缩放因子 a/r, a 也由我们自己指定。
训练的时候,预训练的权重矩阵全部都是冻结的。
在GPT(Generative Pre-trained Transformer)中,past_key_value是用于存储先前层的注意力权重的结构。在进行推理时,过去的注意力权重可以被重复使用,避免重复计算,提高效率。
在GPT One-by-One中,每一层的输入是上一层的输出。具体而言,输入是一个序列的嵌入表示(通常是词嵌入),并通过自注意力机制和前馈神经网络进行处理,得到输出序列的表示。
可以采用一些方法来处理模型输出的分布稀疏,例如使用softmax函数的温度参数调节来平滑输出分布,或者引入正则化技术,如Dropout,以减少模型对特定类别的过度依赖。
KL(Kullback-Leibler)散度衡量了两个概率分布之间的差异。其公式为:
KL散度指的是相对熵,KL散度是两个概率分布P和Q差别的非对称性的度量。KL散度越小表示两个分布越接近。也就是说KL散度是不对称的,且KL散度的值是非负数。(也就是熵和交叉熵的差)
文本嵌入(Text Embedding)是一种将自然语言文本数据转换为连续向量空间中稠密向量的技术,在这个向量空间中,语义相似的词或文本片段会拥有相近的向量表示。这种技术是现代自然语言处理(NLP)中的基石,它使得计算机可以理解和处理文本数据,并将其应用到诸如分类、聚类、检索、翻译、问答等多种下游任务。
以下是一些常见的文本嵌入方法:
Word2Vec:
GloVe:
FastText:
Paragraph Vector (Doc2Vec)
Transformer-based Embeddings:
ELMo:
Sentence-BERT (SBERT)
对BERT等Transformer模型进行微调,使其可以直接生成句子级别的嵌入,特别适用于句子对齐、相似度计算等任务。
通过这些文本嵌入技术,原本离散的文本数据得以转化为具有数学性质的向量表达,从而可以在机器学习和深度学习算法中更高效地处理和分析。随着技术的发展,新的嵌入方法不断涌现,且越来越适应大规模多语言和跨模态的应用场景。
ChatGPT模型的训练过程中,确实涉及到了一个基于人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF)的三阶段过程。以下是这个过程的一个概述:
预训练后的模型会被用于生成大量针对各种提示的回答。
这些生成的回答会由人工标注员进行评估,并给出好坏或满意度得分,形成一个带有质量评分的数据集。
基于这些人工标注的数据,训练一个奖励模型(Reward Model),该模型可以预测对于任何给定的输入和输出对,人类用户可能给予多大的满意程度分数。
通过这种方式,奖励模型能够理解并量化哪些类型的回答更符合人类期望的标准。
使用训练好的奖励模型作为指导信号,将预训练模型与强化学习算法结合,对模型进行微调(fine-tuning)。
模型现在以强化学习的方式进一步训练,目标是在生成响应时最大化来自奖励模型的预期奖励,也就是得到更高的满意度分数。
通过迭代优化,ChatGPT模型逐渐学会根据上下文生成更加准确、有用且合乎伦理道德的回答。
最终,经过这三阶段训练流程,ChatGPT不仅具备了强大的语言生成能力,还能够更好地理解和适应人类对话的需求,提供更为高质量的人工智能交互体验。
287. 寻找重复数
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。
假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。
你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。
示例 1:
输入:nums = [1,3,4,2,2]
输出:2
示例 2:
输入:nums = [3,1,3,4,2]
输出:3
class Solution:
def findDuplicate1(self, nums: List[int]) -> int:
''' 方法一:排序法
解析:包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),也就是排序之后,第一个值不等于 位置索引的 数 为 重复数
'''
nums = sorted(nums)
i = 1
while i < len(nums):
if nums[i] == nums[i-1]:
return nums[i]
i = i + 1
def findDuplicate2(self, nums: List[int]) -> int:
''' 方法二:位运算法'''
nums = sorted(nums)
i = 1
while i < len(nums):
print(nums[i] ^ nums[i-1])
if nums[i] ^ nums[i-1]==0:
return nums[i]
i = i + 1
def findDuplicate3(self, nums: List[int]) -> int:
''' 方法三:快慢指针法
解析:存在相同值,也就表示 快慢指针 会 相遇
'''
slow = 0
fast = 0
while 1:
slow = nums[slow]
fast = nums[nums[fast]]
if slow==fast:
fast = 0
while 1:
if slow==fast:
return slow
slow = nums[slow]
fast = nums[fast]
def findDuplicate(self, nums: List[int]) -> int:
'''方法四:哈希表法'''
dic = set()
for num in nums:
if num not in dic:
dic.add(num)
else:
return num
前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~
我们建了算法岗技术与面试交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:技术交流
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。