type
status
date
slug
summary
tags
category
icon
password
😇
最近好忙,身边的人该旅游的旅游,该睡觉的睡觉。我到今天还在给老板干活,一茬干完还有一茬,鼠鼠我啊命比黄连苦。

一面


1.介绍项目

详细到RL算法的选取,网络架构优化的考虑,项目背景

2.直接开撕

  • 广义斐波那契数列,输入n,求矩阵相乘的结果。
  • 写出BCE loss,并介绍其中一篇论文中替代BCE loss使用的loss函数。
  • 写出sigmoid,relu,介绍各自的特点及优缺点
  • 实现一个两层神经网络,要求实验前向传播及反向传播
  • 实现MHA,时间复杂度是多少

🥶
一面面完其实感觉已经凉了,等了两周后被捞起来了

二面

1.介绍项目

问的问题比较细节,模型训练用的优化器,如何部署的

2.介绍提到的Adam优化器的原理

Adam基于梯度下降,结合了动量(Momentum)和自适应学习率(Adaptive Learning Rate)的思想。工作时,首先计算梯度的一阶矩估计捕捉参数更新的方向;然后计算梯度的二阶矩估计用于调整学习率以适应不同参数的更新幅度;接着对这两个矩估计进行偏差校正;最后利用校正后的矩估计来更新模型的参数。

3.写一下你在知识蒸馏任务中同时用到的交叉熵损失函数以及KL散度损失函数,介绍一下两者的区别

本质上来讲,两者均用于衡量两个概率分布之间的差异。
交叉熵损失函数(Cross-Entropy Loss)是基于概率分布差异的直接度量。在知识蒸馏任务中,当时设计交叉熵损失用于计算学生模型输出的概率分布与Gloden label的概率分布之间的差异。交叉熵损失的公式:
KL散度衡量的是一个分布相对于另一个分布的期望信息损失。在知识蒸馏任务中,KL散度损失函数用于让学生模型尽可能地模仿教师模型的输出分布。KL散度的公式:
 

4.还使用过什么损失函数,为什么回归任务的损失函数和分类任务的损失函数一般情况下不选择混用

MSE等损失函数在优化过程中,会根据预测值与真实值的数值差距来调整模型参数,使预测值尽可能接近真实值。其优化目标是减小数值上的误差,对于连续值的预测比较有效。交叉熵损失函数在优化时,会根据预测概率与真实类别的差异来调整模型,使模型更倾向于输出真实的类别。它更注重类别之间的区分度,能够有效引导模型学习到不同类别之间的边界,提高分类的准确性。

5.介绍一下dropout技术

Dropout用来防止神经网络的过拟合。在神经网络的训练中,随机地丢弃一部分神经元及其连接,从而避免网络对某些神经元的过度依赖,增强网络的泛化能力。

6.你认为为什么dropout能防止过拟合,增强泛化能力

神经网络中某些神经元可能对特定的训练样本或特征过度敏感,从而导致模型在训练数据上表现很好,但在未见过的数据上表现不佳。随机丢弃部分神经元,使得网络无法单纯依赖某些特定的神经元来拟合训练数据,迫使模型在不同的神经元子集上学习到更鲁棒、更通用的特征表示,降低了模型对某些特定神经元的依赖程度,从而降低了模型的复杂度,减少了过拟合的风险。

7.能否从其他角度解释为什么dropout有这种能力

答曰不知,随后面试官从几个方面简单介绍了一下

8.dropout训练和测试阶段都一样吗, 如何平衡训练和测试时的差异

在测试阶段一般不使用Dropout,将网络的所有神经元都保留下来。
平衡差异方面:根据网络复杂度选择合适的dropout rate,优化数据质量,或者选择其他的正则化方法。
 
 

⚠️
撕就完事儿了

1.连续子串乘积最大值,联通域个数

2.手撕sigmoid(x)的梯度下降过程


 
总结:有朋友说是面了4次,又被捞起来面,到最后面了六七次。而我。二面就挂了,我还是太菜了。不过可能确实不太match,暂时无缘了。