首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白面经 | 拼多多 AI算法岗 附带解析

小白面经 | 拼多多 AI算法岗 附带解析

作者头像
机器学习炼丹术
发布2020-08-18 16:24:17
7680
发布2020-08-18 16:24:17
举报

参考目录:

  • 1 介绍项目
  • 2 EfficientNet的特色
  • 3 python撕BN层前向算法
  • 4 线程和进程的区别
  • 5 SVM和逻辑回归在分类上的区别
  • 6. 有什么人脸检测的数据集
  • 7. YOLO训练的数据集是什么
  • 8. CNN参数初始化的方法

1 介绍项目

答案:略。

2 EfficientNet的特色

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

在这里插入图片描述

首先让深度宽度和分辨率满足一定的条件,当

\Phi=1

的时候,

d*w^2*r^2\approx2

,然后不断扩大

\Phi

,就可以得到更复杂的模型了。

3 python撕BN层前向算法

之前的文章详细讲解了BN的算法,所以这个不算太难哈哈。核心思想就是把数据沿着batch的维度,标准化成

\beta

均值,

\gamma

标准差的分布。减均值处以方差那种。

小白学图像 | BatchNormalization详解与比较

小白学图像 | Group Normalization详解+PyTorch代码

(这两个一起食用效果更佳哦)

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

4 线程和进程的区别

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

【进程多与线程比较】

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

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

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

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

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

g()

是Sigmoid激活函数。

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

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

z是

y_i*\hat{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这个我之前也在文章中详细讲解了,就是在这个范围内均匀分布

[-\sqrt{\frac{6}{n^k+n^{k+1}}},\sqrt{\frac{6}{n^k+n^{k+1}}}]

,其中

n^k

表示第k层卷积层的参数。

白话Xavier | 神经网络初始化的工程选择

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

\sqrt{\frac{2}{n^k}}

为标准差的高斯分布

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习炼丹术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 介绍项目
  • 2 EfficientNet的特色
  • 3 python撕BN层前向算法
  • 4 线程和进程的区别
  • 5 SVM和逻辑回归在分类上的区别
  • 6. 有什么人脸检测的数据集
  • 7. YOLO训练的数据集是什么
  • 8. CNN参数初始化的方法
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档