面经分享|面了好未来NLP算法岗(实习),经历坎坷但值了!

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

今天我分享一位小伙伴,今年成功找到实习机会,面试题整理后分享给大家,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以加入我们。


自我介绍

今年某985研二,本文章主要记录了本小菜研找实习的坎坷历程。

1. 自我介绍

在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通能力。

2. 技术问题

2.1 lora的矩阵怎么初始化?为什么要初始化为全0?

初始化时,矩阵 A 随机高斯初始化,矩阵 B 初始化为0。之所以要这样初始化的原因是,在初始阶段这两个矩阵相乘为0,可以保证在初始阶段时,只有左边的主干生效。然后 BA 还会乘以一个缩放因子 a/r, a 也由我们自己指定。

训练的时候,预训练的权重矩阵全部都是冻结的。

2.2 gpt源码past_key_value是干啥的?

在GPT(Generative Pre-trained Transformer)中,past_key_value是用于存储先前层的注意力权重的结构。在进行推理时,过去的注意力权重可以被重复使用,避免重复计算,提高效率。

2.3 gpt onebyone 每一层怎么输入输出?

在GPT One-by-One中,每一层的输入是上一层的输出。具体而言,输入是一个序列的嵌入表示(通常是词嵌入),并通过自注意力机制和前馈神经网络进行处理,得到输出序列的表示。

2.4 模型输出的分布比较稀疏,怎么处理?

可以采用一些方法来处理模型输出的分布稀疏,例如使用softmax函数的温度参数调节来平滑输出分布,或者引入正则化技术,如Dropout,以减少模型对特定类别的过度依赖。

2.5 kl散度的公式和kl散度与交叉熵的区别?

KL(Kullback-Leibler)散度衡量了两个概率分布之间的差异。其公式为:

KL散度指的是相对熵,KL散度是两个概率分布P和Q差别的非对称性的度量。KL散度越小表示两个分布越接近。也就是说KL散度是不对称的,且KL散度的值是非负数。(也就是熵和交叉熵的差)

2.6 介绍一下 文本embedding方法?

文本嵌入(Text Embedding)是一种将自然语言文本数据转换为连续向量空间中稠密向量的技术,在这个向量空间中,语义相似的词或文本片段会拥有相近的向量表示。这种技术是现代自然语言处理(NLP)中的基石,它使得计算机可以理解和处理文本数据,并将其应用到诸如分类、聚类、检索、翻译、问答等多种下游任务。

以下是一些常见的文本嵌入方法:

  1. Word2Vec

    • 包括CBOW(Continuous Bag-of-Words)和Skip-gram两种模型,由Google在2013年提出。它们通过神经网络学习词语与其上下文之间的关系,生成固定长度的词向量。
  2. GloVe

    • GloVe(Global Vectors for Word Representation),由斯坦福大学提出,该方法基于全局词频统计信息构建词共现矩阵,通过优化目标函数直接学习每个词的向量表示,使得词向量的点积近似于它们在语料库中的共现概率。
  3. FastText

    • 由Facebook AI Research开发,FastText在Word2Vec的基础上增加了对字符级n-grams的考虑,尤其适合处理形态丰富的低资源语言以及未登录词的表示问题。
  4. Paragraph Vector (Doc2Vec)

    • 可以扩展到句子和段落级别,除了学习单词向量外,还学习一个额外的“文档向量”,能够捕获较长文本整体的语义特征。
  5. Transformer-based Embeddings

    • 随着Transformer架构的出现,如BERT(Bidirectional Encoder Representations from Transformers)、GPT(Generative Pretrained Transformer)及其后续版本,预训练语言模型进一步提升了文本嵌入的质量。这些模型在大量无标签文本上进行自监督训练,得到的词嵌入包含了丰富的上下文信息。
  6. ELMo

    • ELMo(Embeddings from Language Models)利用双向LSTM的语言模型上下文敏感地计算词向量,词的表示取决于其在句子中的具体上下文。
  7. Sentence-BERT (SBERT)

    对BERT等Transformer模型进行微调,使其可以直接生成句子级别的嵌入,特别适用于句子对齐、相似度计算等任务。

    通过这些文本嵌入技术,原本离散的文本数据得以转化为具有数学性质的向量表达,从而可以在机器学习和深度学习算法中更高效地处理和分析。随着技术的发展,新的嵌入方法不断涌现,且越来越适应大规模多语言和跨模态的应用场景。

2.7 chatgpt的reward model怎么来的,三阶段?

ChatGPT模型的训练过程中,确实涉及到了一个基于人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF)的三阶段过程。以下是这个过程的一个概述:

  1. 预训练(Pre-training)阶段
  • 在这个阶段,GPT模型通过无监督学习的方式在大规模文本数据集上进行训练。该模型的目标是预测下一个词语给定前面的词语序列,从而学习语言模型的基本结构和模式。
  1. 奖励模型训练(Reward Model Training)阶段
  • 预训练后的模型会被用于生成大量针对各种提示的回答。

  • 这些生成的回答会由人工标注员进行评估,并给出好坏或满意度得分,形成一个带有质量评分的数据集。

  • 基于这些人工标注的数据,训练一个奖励模型(Reward Model),该模型可以预测对于任何给定的输入和输出对,人类用户可能给予多大的满意程度分数。

  • 通过这种方式,奖励模型能够理解并量化哪些类型的回答更符合人类期望的标准。

  1. 强化学习微调(Fine-tuning with Reinforcement Learning)阶段
  • 使用训练好的奖励模型作为指导信号,将预训练模型与强化学习算法结合,对模型进行微调(fine-tuning)。

  • 模型现在以强化学习的方式进一步训练,目标是在生成响应时最大化来自奖励模型的预期奖励,也就是得到更高的满意度分数。

  • 通过迭代优化,ChatGPT模型逐渐学会根据上下文生成更加准确、有用且合乎伦理道德的回答。

最终,经过这三阶段训练流程,ChatGPT不仅具备了强大的语言生成能力,还能够更好地理解和适应人类对话的需求,提供更为高质量的人工智能交互体验。

3. Leetcode 题

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 = 1while i < len(nums):if nums[i] == nums[i-1]:return nums[i]i = i + 1def findDuplicate2(self, nums: List[int]) -> int:''' 方法二:位运算法'''nums = sorted(nums)i = 1while i < len(nums):print(nums[i] ^ nums[i-1])if nums[i] ^ nums[i-1]==0:return nums[i]i = i + 1def findDuplicate3(self, nums: List[int]) -> int:''' 方法三:快慢指针法解析:存在相同值,也就表示 快慢指针 会 相遇'''slow = 0fast = 0while 1:slow = nums[slow]fast = nums[nums[fast]]if slow==fast:fast = 0while 1:if slow==fast:return slowslow = 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,备注:技术交流

用通俗易懂方式讲解系列

  • 用通俗易懂的方式讲解:自然语言处理初学者指南(附1000页的PPT讲解)
  • 用通俗易懂的方式讲解:1.6万字全面掌握 BERT
  • 用通俗易懂的方式讲解:NLP 这样学习才是正确路线
  • 用通俗易懂的方式讲解:28张图全解深度学习知识!
  • 用通俗易懂的方式讲解:不用再找了,这就是 NLP 方向最全面试题库
  • 用通俗易懂的方式讲解:实体关系抽取入门教程
  • 用通俗易懂的方式讲解:灵魂 20 问帮你彻底搞定Transformer
  • 用通俗易懂的方式讲解:图解 Transformer 架构
  • 用通俗易懂的方式讲解:大模型算法面经指南(附答案)
  • 用通俗易懂的方式讲解:十分钟部署清华 ChatGLM-6B,实测效果超预期
  • 用通俗易懂的方式讲解:内容讲解+代码案例,轻松掌握大模型应用框架 LangChain
  • 用通俗易懂的方式讲解:如何用大语言模型构建一个知识问答系统
  • 用通俗易懂的方式讲解:最全的大模型 RAG 技术概览
  • 用通俗易懂的方式讲解:利用 LangChain 和 Neo4j 向量索引,构建一个RAG应用程序
  • 用通俗易懂的方式讲解:使用 Neo4j 和 LangChain 集成非结构化知识图增强 QA
  • 用通俗易懂的方式讲解:面了 5 家知名企业的NLP算法岗(大模型方向),被考倒了。。。。。
  • 用通俗易懂的方式讲解:NLP 算法实习岗,对我后续找工作太重要了!。
  • 用通俗易懂的方式讲解:理想汽车大模型算法工程师面试,被问的瑟瑟发抖。。。。
  • 用通俗易懂的方式讲解:基于 Langchain-Chatchat,我搭建了一个本地知识库问答系统
  • 用通俗易懂的方式讲解:面试字节大模型算法岗(实习)
  • 用通俗易懂的方式讲解:大模型算法岗(含实习)最走心的总结
  • 用通俗易懂的方式讲解:大模型微调方法汇总

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【复试2.293.1】c语言——基础杂项

1.define定义常量类似全局变量&#xff0c;引用是直接拼到代码中去。 2.关于e 3.参数传递 形参直接接收的是数组的起始地址 4.数组越界乱码问题 5.scanf读字符串的时候会自动在末尾放0&#xff08;结束符 6.scanf是读取输入缓冲区的数据&#xff0c;是一种拿走操作。读取若有…

文本多分类

还在用BERT做文本分类&#xff1f;分享一套基于预训练模型ERNIR3.0的文本多分类全流程实例【文本分类】_ernir 文本分类-CSDN博客 /usr/bin/python3 -m pip install --upgrade pip python3-c"import platform;print(platform.architecture()[0]);print(platform.machine…

C语言实现航班管理

航班管理系统&#xff0c;用C语言实现&#xff0c;可以作为课程设计&#xff0c;代码如下&#xff1a; #include<iostream> #include<fstream> #include<vector> #include<string> #include<stdlib.h> using namespace std; //信息基类 clas…

Linux第67步_linux字符设备驱动_注册和注销

1、字符设备注册与注销的函数原型” /*字符设备注册的函数原型*/ static inline int register_chrdev(unsigned int major,\ const char *name, \ const struct file_operations *fops) /* major:主设备号&#xff0c;Limnux下每个设备都有一个设备号&#xff0c;设备号分…

【六袆 - React】Next.js:React 开发框架;Next.js开发框架的特点

Next.js&#xff1a;React 开发框架 Next.js的特点 1.直观的、基于页面的路由系统&#xff08;并支持动态路由&#xff09; Next.js 提供了基于文件系统的路由&#xff0c;意味着你可以通过创建页面文件来定义路由。 伪代码示例&#xff1a; // pages/index.js export defa…

【GStreamer】basic-tutorial-2:创建、链接GstElement,修改其属性、状态

【目录】郭老二博文之:图像视频汇总 1、示例注释 #include <gst/gst.h>int main (int argc, char *argv[]) {GstElement *pipeline,

MYSQL--JDBC优化

一.JDBC优化: 优化前提: 有时候我们并不清楚某些表当中一共有多少列,以及这些列的数据类型,这个时候我们就需要提前通过一些方法提前了解到这些数据,从而更好的进行输出 具体语句: package cn.jdbc;import java.sql.*;public class JDBCDEmo1 {public static void main(String…

C语言中的动态内存管理技巧:实现灵活的内存分配和释放

概念 在C语言中&#xff0c;动态内存管理是实现灵活内存分配和释放的关键。合理地管理动态内存可以提高程序的效率和扩展性。本文将介绍C语言中常用的动态内存管理方法和技巧&#xff0c;帮助读者优化内存分配和释放的过程。 常用的动态内存管理方法 内存分配&#xff1a;C语…

【数学建模获奖经验】2023第八届数维杯数学建模:华中科技大学本科组创新奖获奖分享

2024年第九届数维杯大学生数学建模挑战赛将于&#xff1a;2024年5月10日08:00-5月13日09:00举行&#xff0c;近期同学们都开始陆续进入了备赛阶段&#xff0c;今天我们就一起来看看上一届优秀的创新奖选手都有什么获奖感言吧~希望能帮到更多热爱数学建模的同学。据说点赞的大佬…

elment-ui table表格排序后 清除排序箭头/恢复默认排序 的高亮样式

问题描述&#xff1a; 1.默认排序是按照名称升序排列&#xff08;图一&#xff09; 2.在选择了筛选项以及其他排序方式之后&#xff0c;箭头高亮是这样的&#xff08;图二&#xff09; 3.当我点击清空按钮后&#xff0c;类型清空了&#xff0c;并且传给后端的排序方式是名称/升…

探索色彩搭配的奥秘:如何选择适合产品的理想配色方案

title: 探索色彩搭配的奥秘&#xff1a;如何选择适合产品的理想配色方案 date: 2024/3/1 20:47:45 updated: 2024/3/1 20:47:45 tags: 色彩搭配品牌形象用户体验情感连接信息传达视觉层次色调选择 引言 友善的色彩搭配和色调选择是现代产品设计中不可忽视的关键因素。通过正确…

Linux yum安装pgsql出现Bad GPG signature错误

官方文档&#xff1a;https://www.postgresql.org/download/linux/redhat/ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y postgresql12-server sudo /usr/pgsql-12/bin/…

Rust使用calamine读取excel文件,Rust使用rust_xlsxwriter写入excel文件

Rust使用calamine读取已存在的test.xlsx文件全部数据&#xff0c;还读取指定单元格数据&#xff1b;Rust使用rust_xlsxwriter创建新的output.xlsx文件&#xff0c;并写入数据到指定单元格&#xff0c;然后再保存工作簿。 Cargo.toml main.rs /*rust读取excel文件*/ use cala…

Pytest-parametrize实现测试用例与测试数据分离

Pytest自动化框架&#xff0c;实现自动化测试用例与测试数据分离方法&#xff1a; 1.测试用例数据准备&#xff0c;使用yaml文件编辑&#xff0c;如下述teladress.yaml 2.通过pytest框架装饰器pytest.mark.parametrize实现测试数据传参 示例&#xff1a; 测试用例文件&…

Tomcat 架构

一、Http工作原理 HTTP协议是浏览器与服务器之间的数据传送协议。作为应用层协议&#xff0c;HTTP是基于TCP/IP协议来传递数据的&#xff08;HTML文件、图片、查询结果等&#xff09;&#xff0c;HTTP协议不涉及数据包&#xff08;Packet&#xff09;传输&#xff0c;主要规定了…

c语言之字符串的输入和输出

c语言在输出字符串时&#xff0c;用格式符‘%s"&#xff0c;代码比较简洁 如果说数组长度大于字符串长度&#xff0c;也只输出\0前的内容 字符串默认后面有\0. 如果字符串有多个\0&#xff0c;会默认在第一个\0结束 #include<stdio.h> int main() {int i;char a…

GO数组切片

1. 数组 数组是一个由固定长度的特定类型元素组成的序列&#xff0c;一个数组可以由零个或多个元素组成。 因为数组的长度是固定的&#xff0c;所以在Go语言中很少直接使用数组。 Go语言数组的声明&#xff1a; var 数组变量名 [元素数量]Type 1 数组变量名&#xff1a;数…

本地快速部署谷歌开放模型Gemma教程(基于WasmEdge)

本地快速部署谷歌开放模型Gemma教程&#xff08;基于WasmEdge&#xff09; 一、介绍 Gemma二、部署 Gemma2.1 部署工具2.1 部署步骤 三、构建超轻量级 AI 代理四、总结 一、介绍 Gemma Gemma是一系列轻量级、最先进的开放式模型&#xff0c;采用与创建Gemini模型相同的研究和技…

持续集成(CICD)- Jenkins插件安装失败解决办法

解决办法&#xff1a;将插件安装更新源需要改成国内镜像源 具体步骤如下&#xff1a; 步骤一&#xff1a;修改Jenkins工作目录下的 hudson.model.UpdateCenter.xml 文件&#xff0c;将url 改为http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 步骤二…

RuoYi-Vue-Plus功能分析-jackson配置

文章目录 前言一、配置文件二、配置类三、注解四、json工具类1. 工具内容2. 使用工具 前言 前端在给我发送请求的时候一般包含三个部分url&#xff0c;header&#xff0c;body。那么就会涉及我们后端如何接收这些请求参数并且我们处理完毕参数后前端又如何接收参数 通过url传…