面了昆仑天工大模型算法岗(实习),感觉彻底凉凉。。。

我是过年某985研二,过完年打算找大厂实习 offer,本文章主要记录了本小菜研找实习的坎坷历程。

应聘岗位:昆仑天工大模型算法工程师
面试轮数:第一面

1. 自我介绍

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

2. 技术问题

2.1 如何理解过拟合欠拟合?

  • 欠拟合是指模型不能在训练集上获得足够低的误差。换句换说,就是模型复杂度低,模型在训练集上就表现很差,没法学习到数据背后的规律

  • 过拟合是指训练误差和测试误差之间的差距太大。换句换说,就是模型复杂度高于实际问题,模型在训练集上表现很好,但在测试集上却表现很差。模型对训练集"死记硬背"(记住了不适用于测试集的训练集性质或特点),没有理解数据背后的规律,泛化能力差。

2.2 如何避免过/欠拟合?

  • 欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。但是如果真的还是存在的话,可以通过增加网络复杂度或者在模型中增加特征,这些都是很好解决欠拟合的方法。

  • 要想解决过拟合问题,就要显著减少测试误差而不过度增加训练误差,从而提高模型的泛化能力。我们可以使用正则化(Regularization)方法。

2.3 那什么是正则化呢?

正则化是指修改学习算法,使其降低泛化误差而非训练误差。

2.4 常见的正则化有哪些?

  • (1)直接提供正则化约束的参数正则化方法,如L1/L2正则化;

  • (2)通过工程上的技巧来实现更低泛化误差的方法,如提前终止(Early stopping)和Dropout;

  • (3)不直接提供约束的隐式正则化方法,如数据增强等。

2.5 为什么transformer比rnn强?

RNN由于存在循环结构,每个时间步的计算都要依赖上一个时间步的隐藏状态,导致计算复杂度较高,而且容易出现梯度消失或梯度爆炸的问题,导致训练效率低下。Transformer采用自注意力机制进行特征提取,可以并行计算,提高训练效率。

2.6 llama 怎么扩大上下文窗口?

引入了位置插值(Position Interpolation,PI)来对某些现有的预训练 LLM(包括 LLaMA)的上下文窗口进行扩展。结果表明,LLaMA 上下文窗口从 2k 扩展到 32k,只需要小于 1000 步的微调。

2.7 什么是大模型外推性?

外推性是指大模型在训练时和预测时的输入长度不一致,导致模型的泛化能力下降的问题。例如,如果一个模型在训练时只使用了512个 token 的文本,那么在预测时如果输入超过512个 token,模型可能无法正确处理。这就限制了大模型在处理长文本或多轮对话等任务时的效果。

2.8 什么是大模型外推性?

参考:Transformer升级之路:2、博采众长的旋转式位置编码 https://spaces.ac.cn/archives/8265

3. Leetcode 题

具体题意记不清了,但是类似 【239. 滑动窗口最大值】

  • 题目内容

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回 滑动窗口中的最大值 。

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       3
 1 [3  -1  -3] 5  3  6  7       3
 1  3 [-1  -3  5] 3  6  7       5
 1  3  -1 [-3  5  3] 6  7       5
 1  3  -1  -3 [5  3  6] 7       6
 1  3  -1  -3  5 [3  6  7]      7
示例 2:

输入:nums = [1], k = 1
输出:[1]
  • 提示:

  • 1 <= nums.length <= 105

  • -104 <= nums[i] <= 104

  • 1 <= k <= nums.length

  • 解答

class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        # step 1:定义 双端队列
        deque = collections.deque()
        res = []
        # step 2:遍历数组
        for i,num in enumerate(nums):
            # 保证 双项队列中的所有值都要在窗口范围内
            while deque and i-deque[0]>=k:
                deque.popleft()
            # 变量的最前端(也就是 window.front())是此次遍历的最大值的下标
            while deque and nums[deque[-1]]<num:
                deque.pop()
            # 入队
            deque.append(i)
            # 保存窗口最大值
            if i>=k-1:
                res.append(nums[deque[0]])
        return res

技术交流

技术要学会分享、交流,不建议闭门造车。一个人走的很快、一堆人可以走的更远。

建立了大模型面试&技术交流群, 大模型学习资料、数据代码、技术交流提升, 均可加知识星球交流群获取,群友已超过2000人,添加时切记的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

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

用通俗易懂的方式讲解系列

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值