面试了字节大模型算法岗(实习),快被问哭了。。。。

news2024/11/27 22:37:41

最近技术群组织了一次算法面试讨论会,今天分享的是一位小伙子的痛苦面试经历,如果你想加入我们的讨论群,见文末

本次分享的内容如下:

应聘岗位:字节大模型算法实习生
面试轮数:第一轮
整体面试感觉:偏难

1. 自我介绍

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

2. 技术问题回答

2.1 介绍一下 transformer?

传统的seq2seq模型使用循环神经网络(RNN)来处理序列数据,但RNN存在一些限制,如难以并行计算和难以捕捉长期依赖关系。Transformer则通过使用自注意力机制(self-attention)来解决这些问题。

Transformer模型由编码器和解码器组成。编码器将输入序列转换为一系列高维特征表示,而解码器则将这些特征表示转换为输出序列。编码器和解码器都由多个相同的层组成。每个层都包含一个自注意力子层和一个前馈神经网络子层。

自注意力机制允许模型在编码和解码过程中对输入序列的不同部分进行加权。它通过计算每个输入位置与其他位置之间的相关性得分,来决定每个位置的重要性。这样,模型可以更好地关注关键的上下文信息。

除了自注意力机制,Transformer还引入了残差连接和层归一化,来帮助模型更好地训练和优化。残差连接允许模型在不同层之间直接传递信息,层归一化则有助于减轻训练过程中的梯度问题。

Transformer模型的训练通常使用无监督的方式,如自编码器或语言模型。一旦训练完成,它可以用于各种序列到序列任务,如机器翻译、文本摘要、对话生成等。

2.2 transformer的输入和输出分别是什么?

Transformer 的输入是经过词嵌入(Word Embedding)和位置嵌入(Positional Embedding)处理后的序列输出也是经过词嵌入和位置嵌入处理后的序列

具体来说,Transformer 的输入是一个由单词或符号组成的序列,如句子或文本。首先,将这些单词或符号转换为它们的嵌入向量,通常是通过词嵌入技术实现的。然后,为每个单词或符号分配一个位置嵌入向量,以表示它们在序列中的位置。这些嵌入向量和位置嵌入向量被组合在一起,形成一个三维的张量,作为 Transformer 的输入。

Transformer 的输出也是一个由单词或符号组成的序列,与输入序列具有相同的形状。在 Transformer 中,输入序列和输出序列之间通过自注意力机制(Self-Attention)进行交互。在每个时间步,Transformer 都会计算输入序列中每个单词或符号与输出序列中每个单词或符号的注意力权重,并基于这些权重生成输出序列中的每个单词或符号的嵌入向量。最终,这些嵌入向量被转换回单词或符号,形成输出序列。

2.3 说一下 Bert模型?

BERT 模型的核心思想是通过大规模的无监督预训练来学习通用的语言表示,然后在特定任务上进行微调。相比传统的基于词的语言模型,BERT 引入了双向 Transformer 编码器,使得模型能够同时利用上下文信息,从而更好地理解词语在不同上下文中的含义。

BERT 模型的预训练阶段包含两个任务:Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。在 MLM 任务中,模型会随机遮盖输入序列的一部分单词,然后预测这些被遮盖的单词。这样的训练方式使得模型能够学习到单词之间的上下文关系。在 NSP 任务中,模型会输入两个句子,并预测这两个句子是否是连续的。这个任务有助于模型理解句子之间的关联性。

在预训练完成后,BERT 模型可以通过微调在各种下游任务上进行应用,如文本分类、命名实体识别、问答系统等。通过微调,BERT 模型能够根据具体任务的数据进行特定领域的学习,从而提高模型在特定任务上的性能。

BERT 模型的优势在于它能够捕捉词语之间的上下文信息,从而更好地理解自然语言。它在多项自然语言处理任务中取得了领先的性能,并推动了该领域的发展。

2.4 说一下 transformer的输出和 bert 有什么区别?

  • Transformer输出:在标准的Transformer模型中,输出是由解码器的最终层产生的,通常是一个表示整个序列的向量。这个向量可以用于各种任务,如文本分类、生成等。

  • BERT输出:BERT(Bidirectional Encoder Representations from Transformers)是基于Transformer的预训练模型,主要用于学习丰富的上下文语境。BERT的输出不仅包含了整个序列的向量,还包括了每个输入词的上下文相关表示。BERT的预训练阶段包括两个任务:Masked Language Model(MLM)和Next Sentence Prediction(NSP)。

总的来说,BERT的输出更注重于每个词的上下文相关表示,而标准的Transformer输出更倾向于整个序列的表示。

2.5 注意力机制都有哪些?能不能简单介绍一下?

  • 自注意力机制(Self-Attention):给定一个输入序列,自注意力机制通过对序列中每个元素计算权重,然后将这些权重加权求和得到输出。这个权重表示了模型对输入中不同位置的关注程度。具体来说,对于每个位置,通过计算与其他位置的相似度得到一个权重,最后将这些权重应用于输入序列上。这使得模型能够同时关注序列中的多个位置。

  • 多头注意力机制(Multi-Head Attention):

  • 思路:为了提高模型的表达能力,Transformer引入了多头注意力机制,允许模型学习多组不同的注意力权重。每个注意力头都产生一个输出,最后通过线性变换和拼接得到最终的多头注意力输出。

  • 缺点:MQA(multi query attention)会导致quality degradation,我们不希望仅仅是推理快,而且还希望quality可以对标MHA;

  • Group Query Attention(GQA)

  • 动机:改进多查询注意力(MQA)的性能,以加速解码器的推理速度。现有的MQA方法可能导致质量下降,并且为了更快的推理速度需要训练单独的模型,并不理想。

  • 方法:通过预训练模型进行上训练(uptraining),将现有的多头注意力(MHA)模型转换为使用MQA的模型,并引入分组查询注意力(GQA),多查询注意力和多头注意力的一种泛化方法。GQA使用中间数量的键值头(大于一个,小于查询头的数量),实现了性能和速度的平衡。

  • 优势:论文的主要优势是通过上训练(uptraining)现有模型,以较小的计算成本将多头注意力模型转换为多查询模型,从而实现快速的多查询和高质量的推理。同时,引入的分组查询注意力方法在接近多头注意力的质量的同时,速度几乎与多查询注意力相当。

2.6 树模型是如何计算每个特征的重要性的?

树模型计算特征重要性主要是根据不用的指标来计算的。

  • 基尼重要性(Gini Importance):基尼重要性衡量了一个特征在决策树中的节点分裂中对纯度改善的贡献程度。通过计算每个特征在不同节点上的基尼指数减小量,然后加权求和,得到特征的重要性。

  • 信息增益(Information Gain):信息增益用于衡量一个特征在决策树节点分裂中对不确定性的减小程度。通过计算每个特征对目标变量的信息增益,可以评估其重要性。

2.7 如何构建多模态模型?

多模态模型结合了来自不同数据源或模态的信息,通常包括视觉、语言、音频等。构建多模态模型的一般步骤包括:

  • 数据预处理:将不同模态的数据统一格式,确保能够输入到模型中。

  • 模型设计:使用适当的深度学习架构,如融合型(Fusion-based)或并行型(Parallel-based),将不同模态的信息整合在一起。

  • 训练和微调:利用多模态数据进行模型训练,并通过微调来适应具体任务。

2.8 在多模态任务中,如果视觉模型的输出张量比语言模型的输出张量短很多,该进行什么操作?

可以尝试使用以下方法:

  • 填充(Padding):在视觉模型的输出中添加适当数量的填充,使其长度与语言模型的输出一致。

  • 剪裁(Trimming):在语言模型的输出中剪裁一部分,使其长度与视觉模型的输出一致。

  • 使用注意力机制:在模型设计中,可以使用注意力机制来动态地对不同模态的信息进行权重分配,从而处理不同长度的输出。

3. Leetcode 题

具体题意记不清了,但是类似 【3. 无重复字符的最长子串】

  • 题目内容

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
  • 提示:

  • 0 <= s.length <= 5 * 104

  • s 由英文字母、数字、符号和空格组成

  • 题目解答

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        '''
            方法:左右指针+哈希表
            解析:
                无重复字串哈希表:存储当前遍历到的元素,并由于判断是否重复
                左右指针:
                    r 用于 添加 不重复的字符
                    l 用于 删除元素,直到 字串中无 重复字符位置
            思路:
                1.定义 左右指针 l和r,和 无重复字串哈希表
                2.当 遇到不重复的字符,将其加入 dic,r 并往右移动;
                3. 当 遇到重复的字符, l 边往右移动,边移除左边元素,直到遇到 s[l]!=s[r]
                4. 计算 当前不含有重复字符的 最长子串 的长度
            复杂度:
                时间:O(n)
                空间:O(n)
        '''
        l = 0
        r = 0
        s_len = len(s)
        s_set = set()
        res = 0
        while r<s_len and r>=l:
            if s[r] not in s_set:
                s_set.add(s[r])
                r = r+1
            else:
                while s[l]!=s[r]:
                    s_set.remove(s[l])
                    l = l+1
                s_set.remove(s[l])
                l = l+1
            res = max(res,r-l)
        return res

技术交流群

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

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

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

资料1
在这里插入图片描述

用通俗易懂方式讲解系列

  • 用通俗易懂的方式讲解:自然语言处理初学者指南(附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.coloradmin.cn/o/1425674.html

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

相关文章

银行数据仓库体系实践(17)--数据应用之营销分析

营销是每个银行业务部门重要的工作任务&#xff0c;银行产品市场竞争激烈&#xff0c;没有好的营销体系是不可能有立足之地&#xff0c;特别是随着互联网金融发展,金融脱媒”已越来越普遍&#xff0c;数字化营销方兴未艾&#xff0c;银行的营销体系近些年也不断发展&#xff0c…

基于SpringBoot开发的JavaWeb智能家电商城[附源码]

基于SpringBoot开发的JavaWeb智能家电商城[附源码] &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &a…

Linux系统中的日志管理工具和技术

Linux系统中的日志管理工具和技术 在Linux系统中&#xff0c;日志管理对于系统管理员和开发人员来说至关重要。它能够帮助用户监视系统运行时的行为、故障和安全问题。以下是一些常用的日志管理工具和技术&#xff0c;包括使用logrotate和ELK堆栈。 1. 日志管理工具 - **rsys…

Flutter canvas 画一条会动的波浪线 进度条

之前用 Flutter Canvas 画过一个三角三角形&#xff0c;html 的 Canvas 也画过一次类似的&#xff0c; 今天用 Flutter Canvas 试了下 感觉差不多&#xff1a; html 版本 大致效果如下&#xff1a; 思路和 html 实现的类似&#xff1a; 也就是找出点的位置&#xff0c;使用二阶…

PySimpleGUI 综合应用|英语文本朗读以及转换为语音Mp3

PySimpleGUI 综合应用 目录 PySimpleGUI 综合应用 应用界面 完整代码 所需模块 PySimpleGUI pyttsx3 pyaudio rapidfuzz 字典格式 应用界面 完整代码 英语朗读器.pyw import PySimpleGUI as sg import pyttsx3,pyaudio,pyperclip import os,re,datetime,wave,threa…

如何分辨坏信息?

每当有社会热点&#xff0c;大家也许都会遇到一个困扰&#xff1a; 铺天盖地的信息&#xff0c;实在是太多了。究竟哪一些值得信任&#xff0c;哪些不值得信任&#xff1f;哪些可以接受&#xff0c;哪些最好保持怀疑&#xff1f; 我想用这篇文章&#xff0c;彻底把这个问题讲清…

python数据类型-元组

1 元组(tuple)的定义 元组是集合类型&#xff0c;和列表类似&#xff0c;元组中的元组类型可以不同&#xff0c;元素间用逗号隔开&#xff0c;和列表的不同之处在于&#xff1a; 1 元组的元组不可改变&#xff0c;也被称为只读列表 2 且元组用括号()表示&#xff0c;列表用方括…

HTML+JavaScript-06

节点操作 目前对于节点操作还是有些困惑&#xff0c;只是了解简单的案例 具体操作可以看菜鸟教程&#xff1a;https://www.runoob.com/js/js-htmldom-elements.html 案例-1 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8…

前端构建变更:从 webpack 换 vite

现状 这里以一个 op &#xff08;内部运营管理用&#xff09;项目为例&#xff0c;从 webpack 构建改为 vite 构建&#xff0c;提高本地开发效率&#xff0c;顺便也加深对 webpack 、 vite 的了解。 vite 是前端构建工具&#xff0c;使用 一系列预配置进行rollup 打包&#x…

获客助手助力提升企业微信添加客户的效率和精准度

数字化营销时代&#xff0c;企业微信成为企业与客户沟通的重要渠道&#xff0c;但如何快速、精准地添加潜在客户&#xff0c;一直是企业面临的一大挑战。获客助手作为一款企业微信服务商数灵通外链工具提供的营销工具&#xff0c;为企业提供了一种高效、精准的解决方案。 获客助…

【C++】 C++入门 — auto关键字

C入门 auto 关键字1 介绍2 使用细则3 注意事项 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下一篇文章见&#xff01;&#xff01;&#xff01; auto 关键字 1 介绍 编程时常常需要把表达式的值赋给变量&#xff0c;这就要求在声明变量时清楚地知道表达式的类…

服务网格(Service Mesh)流行工具

在这篇博客中&#xff0c;我们将介绍微服务的最佳服务网格工具列表&#xff0c;这些工具提供安全性、金丝雀部署、遥测、负载均衡等。 用于部署和操作微服务的服务网格工具的数量不断增加。在这篇文章中&#xff0c;我们将探讨您应该用来构建自己的服务网格架构的顶级服务网格…

(已解决)spingboot项目如何做QQ邮箱注册功能,如何在邮箱注册中进行随机数添加作为动态验证码,并满足分层解耦

前面我们已经完成了发送静态验证码&#xff0c;现在用随机数作为动态验证码。 文章地址&#xff1a;spingboot 后端发送QQ邮箱验证码 使用注解Component进行分层解耦加入ioc容器&#xff0c;方便调用。 package com.example.tianyidemo.utils; import org.springframework.st…

深度学习(7)--Keras项目详解(卷积神经网络)

目录 一.项目介绍 二.卷积神经网络构造 2.1.判断是否是channels first的back end 2.2.卷积层构造 2.3.添加激活函数 2.4.池化层构造 2.5.全连接FC层构造 三.完整代码 3.1.学习率衰减设置 四.首次运行结果 五.数据增强对结果的影响 六.BatchNormalization对结果的影…

MIT6.5830 实验3

前置回顾 在实验2中&#xff0c;完成了增删查改、排序、分组、聚合、连接等基本操作&#xff0c;在已提供 sql 解析器的基础上&#xff0c;能够运行进本的 sql 语句。都是逻辑层的实现&#xff0c;没有涉及物理存储方面的内容。 实验目标 实现最简单的基于锁的transaction&am…

RabbitMQ之死信交换机

前言 消息队列是分布式系统中常用的组件&#xff0c;用于异步通信、解耦和提高系统可靠性。然而&#xff0c;在实际应用中&#xff0c;难免会遇到一些异常情况&#xff0c;例如消息处理失败、超时等。为了更好地处理这些异常情况&#xff0c;死信交换机&#xff08;Dead Lette…

搭建高效企业培训平台:教育系统源码开发详解

为了更好地满足企业培训的需求&#xff0c;许多组织纷纷转向数字化教育&#xff0c;搭建高效的企业培训平台成为当务之急。本篇文章&#xff0c;小编将为您讲解教育系统源码的开发细节&#xff0c;为搭建一个功能强大、灵活高效的企业培训平台提供详尽的指南。 一、教育系统的…

“2024成都国际自动驾驶技术展览会”展示前沿技术与创新融合

近年来&#xff0c;新一轮科技革命和产业革命正向纵深发展&#xff0c;以互联网为代表的新一代信息技术与汽车产业的加速融合推动了汽车产品形态和分布的深刻变革&#xff0c;汽车已开始向大型移动智能终端的方向演变。汽车、信息、互联网等企业、研究院所、高校及各国政府纷纷…

单细胞scRNA-seq测序基础知识笔记

单细胞scRNA-seq测序基础知识笔记 scRNA-seq技术scRNA-seq 分析流程数据预处理聚类标准化数据筛选有用的数据数据降维聚类 Clustering 注释细胞类型 scRNA数据分析结尾 该笔记来源于 B站up 江湾青年 scRNA-seq技术 首先是如何测序&#xff0c;上图瓶中有很多细胞&#xff0c;…

echarts 饼图循环高亮展示

echarts 饼图循环高亮展示 this.categorychart.setOption(option);let currentIndex 0; // 当前高亮图形在饼图数据中的下标selectPie()if (this.changePieInterval)clearInterval(this.changePieInterval);this.changePieInterval setInterval(selectPie, 5000); // 设置自动…