type
status
date
slug
summary
tags
category
icon
password
🥱
Hi,there. 最近忙于毕业论文的撰写,有小半个月没更新了,今天午休的时候想起去年8月左右的秋招,当时记录了不少的面经,比较杂乱,想着做一些规整的整理,最近就以整理好的形式做个分享,权当给自己做个记录了。

一面

1.看做的工作中涉及到RL比较多,传统的机器学习了解吗。

传统机器学习是基础部分的东西。传统的比如线性回归和决策树,Kmeans聚类这些都有一定了解。

2.XGBoost的主要用途,除了用于数值的残差估计,还可否用于特征

XGBoost主要用于数值预测和分类任务。除了用于数值的残差估计也可以用于特征选择。在训练过程中,XGBoost根据特征对模型性能的贡献来评估特征的重要性,通过分析特征在树中的分裂次数、特征的增益这些指标,可以识别出对模型预测有重要影响的特征,从而筛选出关键特征。

3.简要介绍一下bagging和boosting

都是集成学习方法,用来提高模型的性能和泛化能力。bagging是自助聚合,通过从原始数据集中进行有放回的抽样,生成多个子数据集,然后在每个子数据集上独立训练一个模型,最后通过分类或取回归的方式将多个模型的预测结果结合起来。像随机森林就是基于bagging思想的算法。boosting是一种序贯的集成方法,把多个弱学习器组合成一个强学习器。训练过程中每个新的学习器都重点关注前一个学习器预测错误的样本,通过调整样本的权重或学习率,逐步提高模型对整个数据集的预测能力,典型的算法有Adaboost和梯度提升树,XGBoost也是基于梯度提升的优化算法。

4.你认为之前做的信息抽取任务和RL任务在推荐系统中有些什么应用,有了解的推荐系统的深度学习模型吗

我对信息抽取任务的理解就是从大量文本数据中提取出有价值的信息,如实体、关系和事件等,在推荐系统中,这些信息可以用于更好地理解用户兴趣和偏好,以及物品的特征和属性,为精准推荐提供依据。强化学习(RL)在推荐系统中可以用于优化推荐策略,将推荐过程视为一个序列决策问题,智能体根据用户的反馈动态调整推荐内容,以最大化用户的长期满意度和参与度。对于推荐系统的深度学习模型,了解的比如基于矩阵分解的深度学习模型,用神经网络来建模用户和物品的嵌入表示;还有基于序列的模型,使用循环神经网络(RNN)或Transformer架构来捕捉用户的动态行为序列,像GRU4Rec和BERT4Rec等。

5.MMoE中如何保证专家的随机性

  • 在专家网络的初始化阶段,用不同的随机种子初始化各个专家的参数,保证每个专家在训练开始时具有不同的初始状态,这样保证模型在学习过程中能够探索不同的特征子空间和模式。
  • 通过随机抽样或随机分配数据样本给不同的专家,让每个专家接触到的数据具有一定的随机性和多样性,避免专家之间学习到相似的特征表示。
  • 在模型中引入随机噪声或采用dropout等正则化技术,促使它们从不同的角度对输入数据进行建模和学习。

6.multi-head attention中每个head为什么要进行降维,如何保证每个head的随机性

在multi-head attention机制中,每个head进行降维主要有两个原因。一是计算效率的考虑,通过将高维的输入向量投影到低维空间,可以减少计算量和内存占用,加快模型的训练和推理速度;二是能够使每个head专注于学习输入数据的不同子空间或不同类型的特征关联,从而增强模型对复杂数据的建模能力。
为保证每个head的随机性,通常在初始化每个head的参数时使用不同的随机种子,这样每个head在训练开始时具有不同的参数配置。

😆
讲到这里的时候,面试官微微一笑,接下来我们做几道题吧
最长递增子序列
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
示例 :
这题应该是LC的中等题,比较经典的题,动规就可以解决。
有序数组中的单一元素
给定一个只包含整数的有序数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。
示例 :
这题比较简单,二分查找。

二面

1.让介绍一下自己的其中一篇论文

投屏开始讲

2.我看你论文中用到了RoPE,介绍一下这个方法。

我最早是在苏剑林的博客中看到这种方法的,这是一种位置编码方法,通过把输入向量在复数域内进行旋转来编码位置信息。最大的优点以绝对位置编码的形式实现相对位置编码,从而更好地捕捉序列中的相对位置关系。并且它不需要增加额外的参数,就可以有效地处理长序列和动态序列长度的问题。目前很多大模型就是采用的这个编码方案。

3.介绍一下BN层和LN层,什么时候用BN的效果不好

BN层和LN层都是归一化方法。BN层通过在每个小批量数据上对每个特征进行归一化,更适合于计算机视觉中的任务。BN层在处理序列数据(如RNN、Transformer)时效果不好,尤其是在文本长度不定和小批量数据的情况下。相比之下,LN层对单个样本进行归一化,不依赖于其他数据,因此更适合于处理小批量数据、动态网络结构和RNN等模型。

4.论文中提到了使用新的损失函数替代交叉熵损失函数,介绍一下交叉熵损失函数,为什么分类问题同交叉熵而不使用MSE

交叉熵损失函数用于衡量模型预测的概率分布与真实标签分布之间的差异。通过计算预测概率分布和真实分布之间的对数似然来评估模型的性能。交叉熵损失函数可以有效地处理多类别分类任务,并且能够快速收敛。均方误差(MSE)损失函数更适合于回归问题,因为它直接衡量预测值与真实值之间的平方差。在分类问题中对概率分布的差异不够敏感,所以训练过程缓慢。

5.如何解决梯度爆炸问题

  • 梯度裁剪
  • 学习率调整:使用Adam优化器。
  • 权重初始化
  • 归一化

😆
讲到这里的时候,你懂的
1.重排链表【要求:空间复杂度O(1)】
给定一个单链表 L 的头节点 head ,单链表 L 表示为:
L0 → L1 → … → Ln-1 → Ln
请将其重新排列后变为:
L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
三道题的合体形式:寻找链表中点 + 链表逆序 + 合并链表

总结:总体面下来感觉面试官比较友善,整体推进也很快,整体而言感觉重八股一些,对项目的细节挖掘没有特别深,也有可能是因为已有项目对部门工作帮助不大吧