2019 秋招笔记之 华为海思

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 分钟不到。

留下评论