腾讯犀牛鸟面试小记

本文最后更新于:2022年7月29日 晚上

面试准备

自我介绍

我叫赵一鸣,是来自南京航空航天大学的研一的学生,平时比较热爱互联网技术,本科主要学习的软件开发,擅长安卓开发。掌握C、Java以及Python语言,可以自己搭建服务器以及网站前后端,对部署嵌入式设备深度学习环境比较熟练。

研究方向及亮点介绍

我目前在做的研究方向主要集中在移动设备多模态的智能感知技术,具体到在做的东西主要是基于超声波的手势识别,毕业论文基于元学习的超声波手势识别系统,研一上学期主要在进行嵌入式设备的神经网络开发,目前正在准备结合声波物理模型和深度学习模型对移动端声波手势识别进行模型压缩,主要是teacher-student网络。

我比较擅长嵌入式设备的工程实践,可以熟练地使用树莓派和Nvidia的Tx2开发板交叉编译神经网络库以及配置深度学习环境。可以在实践中来对嵌入式设备模式识别进行创新改进。

个人研究方向与申报课题的相关性

我个人研究方向主要集中在移动设备的智能感知领域,已经做的工作主要是关于(智能手机、VR/AR之类的)商业移动设备的超声波手势识别,由于使用神经网络要求算力高,数据量大,声波手势识别会耗费大量的计算资源,要想在实际移动设备部署中获得优秀的效能,一定绕不开模型压缩。 所以我想结合本领域内容和模型压缩来继续我的研究工作,在无线网络顶刊中知识蒸馏方法经常出现。

你的深度学习研究项目

我参与过的深度学习项目主要是基于元学习的超声波手势识别系统和一个战场识别系统。

  • 超声波识别系统是我的本科毕业论文,主要是借助商业手机扬声器发出超声波,麦克风接受超声波信号,然后通过一个特别设计的孪生网络对测试样本和支持集样本提取特征,最后通过一个特别的深度关系网络评估相似度得到测试样本标签,训练方法使用一种基于metric learning元学习的特定方法,通过将训练集划分为测试样本和支持样本直接模拟推理过程增加泛化性能。
  • 战场识别系统主要使用yolov4结合多模态来进行一些战场物体的识别,我主要负责的是模型的推理以及在一台arm架构的设备上进行模型部署,由于使用的嵌入式设备只支持C++动态库,所以我负责处理推理代码的C++实现,编译一些必要的神经网络库,编译代码实现,构建前后端系统。
  • 简单介绍元学习:元学习,也可以叫做学习去学习,区别于深度学习这种通过训练数据学习输入到输出之间的映射关系,优化损失函数来进行优化参数,元学习通过大量训练和目标任务相似的任务来训练一个元学习器,从而实现只需要极少样本就可以实现模型训练。

其他准备

深度学习的特点

  • 局部连接
  • 权值共享
  • 池化操作
  • 多层次结构

深度学习中的超参数

  • 正则化参数
    • L1 L2
  • 网络结构
    • 各层size
  • 优化参数
    • LR
    • Batch Size
    • Dropout
    • 优化器

模型压缩

  • 剪枝

    NAS

  • 量化

    int8 int4 二值

  • 知识蒸馏

    TS网络

  • 轻量化模型

一些深度学习面试问题

  • 线性回归和逻辑回归区别联系

    • 都为线性模型
    • 线性回归解决回归任务,逻辑回归解决分类任务
    • 线性回归进行线性预测,逻辑回归在线性回归的基础上增加sigmoid函数对预测结果进行分类
  • 性能评估

    • 查准率
    • 查全率
  • dropout作用

    在网络训练时,在全连接层随机丢弃一些神经元,使隐层神经元不会太依赖局部特征,防止过拟合。

  • 不同损失函数特点差异

    • cross-entropy
    • MSE
  • 权重初始化方法特点

    • Goss
    • Uniform
    • Xavier
    • kaiming
  • Bagging and boosting

    • bagging

      从原始数据随机挑选数据训练k个分类器,然后对预测值投票决定。

  • K折交叉验证

    将所有训练数据分为k份,将k-1份作为训练数据,余下1份作为测试数据,直到所有数据都被测试后,将结果加权平均

  • 梯度爆炸和梯度消失

    • 从网络阶段来说,网络层数太多,而卷积神经网络的反向梯度更新过程又需要大量的(损失函数对第一层权重求导需要从最后一层开始链式原则相乘)乘积计算,出现过小的值会导致梯度消失,出现过大的值则会导致梯度爆炸。
    • 从激活函数来说,sigmoid函数的特性导致(或者说sigmoid函数将函数的映射挤压在一个小范围内),数据在极大或极小的情况下,梯度的变化率很小,导致梯度消失。使用relu函数即可解决问题。
  • loss不变化原因以及解决方案

    可能是梯度消失,建议改变权重初始化或者改变激活函数。

  • 为什么使用尺寸更小的卷积核

    在相同激活野的情况下拥有更少的参数,防止过拟合,减少网络结构。

面试总结

1
2
完全没有问到模型压缩和深度学习的知识。
问的问题主要集中在:

元学习

  • 元学习训练过程

  • 元学习原理

  • 具体PyTorch实现的一些代码

信号处理

  • 手机发射收集信号的过程原理

  • I、Q为什么能提取特征?

安卓

  • 子线程更新主线程UI的方法

  • 网络编程是否擅长

  • 对相机编程有没有了解