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 分钟不到。
发表回复