小白面经 | 拼多多 深度学习算法岗 (附带解析)

拼多多一面

1 介绍项目

2 EfficientNet的特色

这个EfficientNet的核心思想是寻找标准化的模型缩放方法,一般来说,模型深度、宽度、分辨率越大,那么模型的效果就会有提高。以前的网络一般在某一个维度上进行尝试,而EfficientNet因为团队有钱(google的),愣是在三个维度上找到了一个平衡。EfficientNet在图像竞赛中也是直接拿来用,用的也多,所以之后有空把之前写的《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》论文笔记整理整理发出来。 总之这里回答的关键在于这个公式:

小白面经 | 拼多多 深度学习算法岗 (附带解析)

首先让深度宽度和分辨率满足一定的条件,当Φ=1的时候,d∗w2∗r2≈2,然后不断扩大Φ,就可以得到更复杂的模型了。

3 python撕BN层前向算法

之前的文章详细讲解了BN的算法,所以这个不算太难哈哈。核心思想就是把数据沿着batch的维度,标准化成β均值,γ标准差的分布。减均值处以方差那种。

突然一身冷汗,如果要让我写反向传播算法的代码。。。手推能算,代码的话。。。啧啧啧

4 线程和进程的区别

进程:进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间。比较稳定。线程:线程是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.它可与同属一个进程的其他的线程共享进程所拥有的全部资源。但是不够稳定容易丢失数据。

【进程多与线程比较】

  • 地址空间:线程是进程内的一个执行单元,进程内至少有一个线程,它们共享进程的地址空间,而进程有自己独立的地址空间
  • 资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
  • 线程是处理器调度的基本单位,但进程不是
  • 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制

5 SVM和逻辑回归在分类上的区别

这个问题我也被问了两次了,这里好好整理一下回答的核心:SVM和逻辑回归其实是只有损失函数有不同。这个问题其实就是让你分析损失函数不同对分类的影响。

我们先来看一下SVM和逻辑回归的损失函数(这里带上了正则项):

小白面经 | 拼多多 深度学习算法岗 (附带解析)

这损失函数看起来可能有些别扭,但是其实是和你内心想的那个是等价的(把这两个公式在纸上抄三遍,你就发现其实很好理解的)。在公式(1)中,SVM的损失函数那个+号,表示负数取0整数不变的一个成处理符号。公式(2)中的g()是Sigmoid激活函数。

这两个公式其实可以统一起来:

小白面经 | 拼多多 深度学习算法岗 (附带解析)

也就是说,它们的区别就在于逻辑回归采用的是 log loss(对数损失函数),svm采用的是hinge loss = max(0,1-z)。

z是yi∗y^i,z越大,说明分类越准确,z越小,分类越错误。这里类别标签是+1和-1.

  • SVM损失函数:loss=(1−z)+
  • logistic损失函数: loss=−log(sigmoid(z))=log(1+e−z)

两者损失函数的图像就是:

小白面经 | 拼多多 深度学习算法岗 (附带解析)

其实,这两个损失函数的目的都是给分类错误的样本大的损失,给分类正确的样本小的损失。SVM的处理方法是只考虑分类效果不够好的样本,对于已经分类正确的样本,就不再更新他们了,给他们0损失;逻辑回归希望正样本尽可能的大,副样本尽可能的小,所以就算已经分类正确了,也还是会给分类正确的样本一个损失。

辅导员(SVM)关心的是挂科边缘的人,常常找他们谈话,告诫他们一定得好好学习,不要浪费大好青春,挂科了会拿不到毕业证、学位证等等,相反,对于那些相对优秀或者良好的学生,他们却很少去问,因为辅导员相信他们一定会按部就班的做好分内的事;有的教师(逻辑回归)却不是这样的,他们关心的是班里的整体情况,不管你是60分还是90分,都要给我继续提升。

6. 有什么人脸检测的数据集

回答了IMDB-WIKI数据库。

IMDB-WIKI人脸数据库是有IMDB数据库和Wikipedia数据库组成,其中IMDB人脸数据库包含了460,723张人脸图片,而Wikipedia人脸数据库包含了62,328张人脸数据库,总共523,051张人脸数据库,IMDB-WIKI人脸数据库中的每张图片都被标注了人的年龄和性别,对于年龄识别和性别识别的研究有着重要的意义。

7. YOLO训练的数据集是什么

ImageNet和VOC2007.YOLO v1 好像只用了VOC2007,后面YOLOv2使用了ImageNet作为预训练。

8. CNN参数初始化的方法

我说了Xavier,然后均匀分布,0初始化,高斯分布初始化,预训练初始化。

Xavier这个我之前也在文章中详细讲解了,就是在这个范围内均匀分布[−nk+nk+16,nk+nk+16],其中nk表示第k层卷积层的参数。

其实还有一个HE初始化,这个的思想和Xavier其实相同,都是为了让正向传播和反向传播的过程中,输入数据和输出数据的方差保持不变。最终Xavier是一个均匀分布,而He初始化是一个以0为均值,以nk2为标准差的高斯分布

上一篇:ML之SVM:SVM算法的简介、应用、经典案例之详细攻略


下一篇:SVM支持向量机--曾经的王者