type
status
date
slug
summary
tags
category
icon
password
OK,又来更新了,最近毕业的事情快看到胜利的输光了。这样拖沓不知道啥时候能把面经更完哟。
一面
1.你对自己哪一项工作比较满意,着重讲一下
介绍了一下持续学习的工作。
2.哪些工作是由你自己开发的
Data_reader这些工作,由于使用的公开数据集,因此是直接使用的已有的方式。预训练模型是调用的,其余的包括网络结构等工作是由自己开发的。
3.当时课程学习也比较火,有没有想过为什么课程学习不work然后采用了RL为什么work了
在实验过程中其实最开始考虑的就是课程学习,但是在持续学习这样的任务背景下,虽然也是分解为多任务学习去做,但是并不好定义数据的难易程度,让模型从易到难去学习。
4.看下来工作代码量很大,都是自己写的还是有一些其他的工具包
预训练模型是调用的,除了常用的库函数,其余的是自己写的。
5.除了自己的领域,还会关注什么其他的领域吗,通过什么方式关注
介绍了一些LLM相关的工作,包括Lora,GeLore等微调手段,简要介绍了一下。同时介绍了一些VIT,Diffusion Model的工作。
6.实际部署算法的时候,会遇到什么问题吗,会涉及重训练还是增加一些模块
重训练很少涉及,主要是通过增加模块适应实际部署时的数据问题。
7.你现在的编程语言是什么,python,还是说会涉及到C++
硕士阶段是100%python编程,但本科的时候一直使用C++编程,基本功还可以,捡起来会很快。
8.为什么选择科大讯飞
相关产品接触得多,看好前景。
追问什么产品:
答星火大模型,一波彩虹pi
二面
1.介绍一下其中一篇会议论文
屏幕共享开始讲。
2.这个工作中的多标签损失函数为什么work
具体来说,假设要识别文本序列长度为n,简单起见先假定只有一种实体要识别,并且假定每个待识别实体是该序列的一个连续片段,长度不限,并且可以相互嵌套(两个实体之间有交集),那么该序列有n(n+1)/2个候选实体,即长度为n的序列有n(n+1)/2个不同的连续子序列,这些子序列包含了所有可能的实体,而我们要做的就是从这n(n+1)/2个“候选实体”里边挑出真正的实体,其实就是一个“n(n+1)/2选k”的多标签分类问题。
损失函数的设计。最朴素的思路是变成n(n+1)/2个二分类(用sigmoid激活,然后变成n个二分类问题,用二分类的交叉熵之和作为loss。显然,当n≫k时,这种做法会面临着严重的类别不均衡问题,这时候需要一些平衡策略,比如手动调整正负样本的权重、focal loss等。训练完成之后,还需要根据验证集来进一步确定最优的阈值。),然而实际使用时n往往并不小,那么n(n+1)/2更大,而每个句子的实体数不会很多(每一类的实体数目往往只是个位数),所以如果是n(n+1)/2个二分类的话,会带来极其严重的类别不均衡问题。
希望“每个目标类得分都不小于每个非目标类的得分”,所以下述形式的loss就呼之欲出了:

由于k值不确定,引入一个额外的s0类为阈值:

3.使用到的数据集什么规模
Fewnerd:30w条文本数据。
Ontonotes5:15w条文本数据。
bert-large参数:3.35亿。
4.实际算法落地应用时遇到过什么困难
技术层面来讲。数据质量问题比较严重。从项目层面来讲,还是沟通协调比较耗费精力。
5.介绍以下你了解的知识蒸馏,强化学习的范式
知识蒸馏:特征蒸馏,输出蒸馏以及关系蒸馏。
RL:Online,Off-Policy, Offline。
总结:总体面下来感觉面试官非常友好,不过面试推进感觉比较慢,依稀记得一面和二面隔了三周的样子,也不知道是不是因为是被捞起来的。也是为数不多的不用我手撕代码的好公司。