0809 在线笔试
前两题不难
第一题是个纯纯的 hello world,第二题是个 01 背包,数量是 5,所以不按背包做,直接枚举也是可以过的。
第三题…… 一下子懵了,完全不按套路出牌…… 算是「业务题」。给一大堆 Typedefine,求某个 Type 的原始形态。C++ Tokenizer 之类的东西比较恶心,就 Python 开撸,最后不知道哪里有 bug 拿了 42.38%
据说有人做的是给 ip 地址,问是哪一类 ip。
0816 现场面试
业务一面
面试官好像是自动驾驶解决方案开发Leader。
- 看简历,问项目
只问了研究生阶段的项目,本科阶段的只是提了一下。
-
问项目的一些实现细节。
-
问论文,和论文的大致细节
由于论文仍然在投,所以不方便透露细节,只能说大概
-
问为什么要用激活函数
增加非线性,受到生物启发
如果不用激活函数,每一层都是上一层的线性函数。无论多少层,都和只有一层相当——就是多层感知机了
激活函数会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生 - 鞍点的理解?怎么度过鞍点?
在某些维度上看是局部最小值,但在另一些维度上看是局部最大值
鞍点附近Hessian矩阵是不定的,非正定,非负定,非半正定(行列式小于0)(区别于局部极值附近的Hessian矩阵是正定的)
先保存checkpoint,然后用一个较大的学习率跳过这个鞍点,然后继续训练过程?
带动量的SGD可以帮助跳出鞍点
增加一点扰动,避免“某些维度上的局部最小值”的影响 - 学习率怎么设置
先大后小。这样前面可以快速收敛,后面慢速收敛不至于跳过最优值
最新算法推荐是先WalmUp,后逐渐减小
更新策略可以step、multistep、指数/对数 -
问怎么理解梯度消失问题,怎么解决
完全没答上来
在sigmoid接近饱和区时,变换太缓慢,导数趋于0
由于要对激活函数求导,当导数大于1的时候,梯度更新将以指数形式增加,当导数小于1的时候,梯度更新将以指数形式减小——层数多了,就会出现梯度爆炸和梯度消失逐层预训练(Hinton)
梯度剪切、权重正则化(防止梯度爆炸)
换激活函数
残差结构,直接将前面的输出拽到后面,强制得到梯度(防止梯度消失) - 问高斯分布的公式
只记得均值和方差两个参数,只记得形态,不记得具体公式了
-
问滤波器,边缘提取,边缘提取的算子
只能大致记住样子,具体细节忘记了
-
面试官简单介绍团队目前在做什么,说是杭州和上海都有团队,但没细说
遗言:
- 海思自称是“做AI芯片的”。这个概念太宽泛了。比如“做多媒体芯片的”我们知道产品肯定是硬件编解码器,“做工程控制芯片的”也能大致知道产品是干什么的,能直接用在什么地方。
- 神经网络通用操作的加速,比如卷积、池化等的加速,不是针对某个算法和网络的。
- 大致可以理解为一个定制的GPU,或者TPU。
- 全套解决方案,有芯片、算法、框架。跟Intel神经计算棒的想法有些像。
大概45分钟。
业务二面
面试官好像是自动驾驶解决方案算法Leader。
由于中午没有睡觉,已经很困了。加上突然多了个业务二面,一脸懵中。
- 问项目,和一些实现细节
-
知识蒸馏怎么做的
Hinton的文章有理论说明 -
问高中本科研究生的排名
没有了,大概20分钟
综合面试
面试官小哥蛮帅的。
困到爆。硬撑着面下来了,希望面试官小哥哥不要嫌弃一脸没睡醒的懵逼脸。
- 问学校、排名、本科学校、本科排名。
-
简单介绍一下项目。
-
“好了我这里没有什么想问的了,你有什么想问我的么”
瞬间懵了,说好的谈人生呢……
- 杭州和上海的团队有什么不同?
- 杭州人多,主要是算法
- 上海人稍微少一点,主要是算法落地,提供完整解决方案
- 杭州和上海的团队有什么不同?
8分钟不到。
发表回复