Bryce1010 / DeepLearning-Project

7 stars 5 forks source link

Work 找工作 #7

Open Bryce1010 opened 4 years ago

Bryce1010 commented 4 years ago

找工作面试经验记录

自我介绍

时长:3 Min

Detection方向。
在科研方面:

简历

面试准备

找到一个自己突出的方向,比较重要

Bryce1010 commented 4 years ago

算法岗面试准备,机器学习基础

算法岗

面经

机器学习

模型评估

本节将会涉及以下内容:

分类模型评估常用方法:Accuracy, Precision, Recall, P-R曲线, F1, Confusion Matrix, ROC, AUC ;

回归模型评估常用方法:MSE, MAE, R-Squard ;

误差,偏差和方差;过拟合和欠拟合;交叉验证;Unblanced Data;

指标 描述
Accuracy 准确率
Precision 精准度/查准率
Recall 召回率/查全率
P-R曲线 查准率为纵轴,查全率为横轴,作图
F1 F1值
Confusion Matrix 混淆矩阵
ROC ROC曲线
AUC ROC曲线下的面积

回归模型常用评估方法:

指标 描述
Mean Square Error (MSE, RMSE) 平均方差
Absolute Error (MAE, RAE) 绝对误差
R-Squared R平方值

查准率和查全率(precision&recall)

ROC和AUC

F1-score

解决unbalanced data的方法

如何解决过拟合和欠拟合

如何解决欠拟合?

如何解决过拟合?

解决过拟合的方法主要有两个,一个是增加数据,另一个是做正则化;

支持向量机

支持向量机是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是边界最大化,最终转化为一个凸二次规划问题来求解.

聚类和降维

本节将会将会涉及以下内容:

维数灾难,常用的聚类方法,降维方法

  1. 为什么会产生维数灾难?
    特征数多 样本密度

    假设在分类人物场景下,在低维空间中,样本特征数量少,分类任务难度大;所以容易想到增加特征数量,扩充维度空间,在高纬度中,特征数增加,样本区分度更高,分类任务难度降低。但是换个角度来看,在低纬度情况下样本的密度大,区分度小;在高维空间,样本密度小,样本空间稀疏,区分度大。但是如果样本空间的的维数太大,导致样本密度过于稀疏,造成分类器学习到一些过于特殊的样本,造成过拟合的现象。那么这种现象怎么来避免呢?

  2. 怎样避免维数灾难?
    降维

    一般维数灾难的原因是特征数太多,维数太大,通过降维避免。常用方法有主成分分析法(PCA),线性判别法(LDA),奇异值分解简化数据,拉普拉斯特征映射等。

  3. 聚类和降维的关系?
    数据点 数据特征 聚类方法 降维方法

    聚类是针对数据点的操作,而降维是针对数据特征的操作;常用的聚类方法有K-Means,层次聚类和基于密度的聚类等;常用的降维方法有PCA,lsomap,LLE等。

四种常用聚类算法

  1. K-Means聚类
  1. 层次聚类算法
    凝聚

    将所有对象看成单独的一个类,计算两两之间的距离,将距离最小的两类合并成一个新类;重新计算新类与其他所有类的距离,重复以上步骤,直至所有类最后合并成要求的类别数量。

  2. SOM聚类算法
    self-Organization Maps

    (1) 网络初始化,对输出层每个节点权重赋初值; (2) 从输入样本中随机选取输入向量并且归一化,找到与输入向量距离最小的权重向量; (3) 定义获胜单元,在获胜单元的邻近区域调整权重使其向输入向量靠拢; (4) 提供新样本、进行训练; (5) 收缩邻域半径、减小学习率、重复,直到小于允许值,输出聚类结果。

  3. FCM聚类算法
    Fuzzy C-Means

    (1) 标准化数据矩阵;  (2) 建立模糊相似矩阵,初始化隶属矩阵;  (3) 算法开始迭代,直到目标函数收敛到极小值;  (4) 根据迭代结果,由最后的隶属矩阵确定数据所属的类,显示最后的聚类结果。

  4. 四种聚类算法比较

聚类方法 聚错样本数 运行时间/s 平均准确率/(%)
K-Means 17 0.146001 89
层次聚类 51 0.128744 66
SOM 22 5.267283 86
FCM 12 0.470417 92

两种常用的降维方法

  1. PCA

    • PCA思想总结
    • PCA算法推理
    • PCA算法流程
  2. LDA

    • LDA核心思想 我们以分类为例, 将高维空间的特征属性映射到低维或者是一维空间, 然后使得类内的数据点尽可能的接近, 而类间的数据点尽可能的原理, 当我们采用测试点进行测试的时候, 也将其投影到这样一条直线上, 根据投影点的位置来确定类别.
    • LDA算法原理
    • LDA算法流程
Bryce1010 commented 4 years ago

刷题记录

Bryce1010 commented 4 years ago

算法岗面试准备,深度学习基础

深度学习基础

网络为什么难以训练 ?

神经网络的训练难度与梯度的反向传播过程密切相关,如果反向回传的梯度越来越小,那么浅层网络更小慢或者不更新,这被成为梯度消失;在深层网络中或者循环神经网络中,如果返现回传的梯度大,那么网络参数更新太快,造成不稳定的现象,这被成为梯度爆炸。那么是什么原因造成梯度消失和梯度爆炸的呢?

知道原因以后,有什么方法避免吗?

超参数

如何寻找最优超参数

超参数搜索的一般过程

激活函数

为什么需要激活函数?

常见的激活函数?

归一化

为什么要归一化 ?

常见的归一化方法?

Batch Normalization

Group Normalization

损失函数 Loss Function

[基本loss function] [进阶loss function]

回归损失函数 MSE (Mean Squared Error)

回归损失函数 MAE (Mean Absolute Error)

回归函数 Huber Loss

二分类损失函数 Binary Cross-Entropy or Log-Loss

二分类损失函数 Hinge Loss

多分类损失函数 Multi-class Cross Entropy Loss

多分类损失函数 Kullback Leibler Divergence Loss (KL-Divergence)

深度学习常用的数据增强方法

Bryce1010 commented 4 years ago

算法岗面试准备,深度学习进阶

卷积核有哪几种类型?

常见的卷积主要是由连续紧密的卷积核对输入的图像特征进行滑窗式点乘求和操作,除此之外还有其他类型的卷积核在不同的任务中会用到,具体分类如表5.5所示。 表5.5 卷积核分类

卷积类别 示意图 作用
标准卷积 image 最常用的卷积核,连续紧密的矩阵形式可以提取图像区域中的相邻像素之间的关联关系,$3\times3$的卷积核可以获得$3\times3$像素范围的感受视野
扩张卷积(带孔卷积或空洞卷积) image 引入一个称作扩张率(Dilation Rate)的参数,使同样尺寸的卷积核可以获得更大的感受视野,相应的在相同感受视野的前提下比普通卷积采用更少的参数。同样是$3\times3$的卷积核尺寸,扩张卷积可以提取$5\times5$范围的区域特征,在实时图像分割领域广泛应用
转置卷积 image 先对原始特征矩阵进行填充使其维度扩大到适配卷积目标输出维度,然后进行普通的卷积操作的一个过程,其输入到输出的维度变换关系恰好与普通卷积的变换关系相反,但这个变换并不是真正的逆变换操作,通常称为转置卷积(Transpose Convolution)而不是反卷积(Deconvolution)。转置卷积常见于目标检测领域中对小目标的检测和图像分割领域还原输入图像尺度。
可分离卷积 image 标准的卷积操作是同时对原始图像$H\times W\times C$三个方向的卷积运算,假设有$K$个相同尺寸的卷积核,这样的卷积操作需要用到的参数为$H\times W\times C\times K$个;若将长宽与深度方向的卷积操作分离出变为$H\times W$与$C$的两步卷积操作,则同样的卷积核个数$K$,只需要$(H\times W + C)\times K$个参数,便可得到同样的输出尺度。可分离卷积(Seperable Convolution)通常应用在模型压缩或一些轻量的卷积神经网络中,如MobileNet$^{[1]}$、Xception$^{[2]}$等

在进行卷积时,必须同时考虑通道和区域吗?

Bryce1010 commented 4 years ago

循环神经网络

RNN为什么会出现梯度消失现象?

在网络结构里面, 一般都存在很多的激活函数, 使用最广泛两个激活函数是sigmoid函数和tanh函数, 这两个函数的导数值都不大于, 也就是说, RNN的多次循环以后, 梯度的大小在不断减小, 最后可能编程很小的小数, 造成梯度消失的现象.

如何解决RNN中的梯度消失问题?

我从三个方面进行考虑:
一是更改激活函数, 比如采用relu激活函数, 在正数部分梯度恒为1, 但是有可能导致梯度爆炸;
二是添加BN层, 在每层卷积后添加BN层, 不仅能对参数归一化, 还能控制过拟合, 加速收敛; 三是更改网络结构, 将RNN更改为LSTM结构;

LSTM介绍

LSTM2

细胞状态
![Uploading LSTM4.png…]() LSTM上方是一条贯穿的细胞状态, 类似于传送带,在上面进行细胞交互;

通过读取 h_{t-1} 和输入x_t , sigmoid 输出一个概率表示遗忘的程度f_t;

第一步, 读入 h_{t-1} 和 x_t , 决定输出的内容o_t 第二步, 将o_t 和 C_t 做相乘, 得到应该输出的结果.

LSTM的变体

Bryce1010 commented 4 years ago

旷视 05/06 一面

这场面试我的是做检测和crowd counting的师姐, 师姐对论文的细节比较关注;
前面问了我两个项目, 最后问了crowd counting相关的和detection相关的;
总结是, 最近有点每太关注detection和crowd counting的文章, 有一些被问到了, 后面也要增加detection方向的论文阅读量 和实践能力;

最后是 做题;
leetcode的原题, 接雨水;
这个题正经思路忘了, 用的stack;

旷视 05/06 二面

这场面试官好像不是很有耐心, 一上来问我cross entropy的公式, 又让我说RNN和LSTM的区别, 我吐了, 这不是为难人吗?

交叉熵: J=1/n sum_x( yln(a)+(1-y)ln(1-a) )

tanh sigmoid

从上图观察可知,sigmoid函数的导数范围是(0,0.25],tanh函数的导数范围是(0,1],他们的导数最大都不大于1。

梯度消失现象:基于上式,会发现累乘会导致激活函数导数的累乘,如果取tanh或sigmoid函数作为激活函数的话,那么必然是一堆小数在做乘法,结果就是越乘越小。随着时间序列的不断深入,小数的累乘就会导致梯度越来越小直到接近于0,这就是“梯度消失“现象。

​ 实际使用中,会优先选择tanh函数,原因是tanh函数相对于sigmoid函数来说梯度较大,收敛速度更快且引起梯度消失更慢。

如何解决RNN梯度消失问题?

1、选取更好的激活函数,如Relu激活函数。ReLU函数的左侧导数为0,右侧导数恒为1,这就避免了“梯度消失“的发生。但恒为1的导数容易导致“梯度爆炸“,但设定合适的阈值可以解决这个问题。

​ 2、加入BN层,其优点包括可加速收敛、控制过拟合,可以少用或不用Dropout和正则、降低网络对初始化权重不敏感,且能允许使用较大的学习率等。

​ 2、改变传播结构,LSTM结构可以有效解决这个问题。下面将介绍LSTM相关内容。

后面出了一个题目, 一条线上, 有n个建筑物, k个仓库, 要求这k个仓库到n个建筑物的总距离最短;

Bryce1010 commented 4 years ago

因为,关于「未来五年计划」的问题,HR真正想了解的,是以下3点:

1、你真的对这个职位感兴趣吗?

2、你能在公司长期稳定的发展吗?

3、你能自主地完成工作吗?

image

image

我想把未来的五年计划分为大概3个阶段:
第一个阶段是1年内:
找到一个像阿里这么优秀的公司实习,向周围优秀的师兄师姐学习, 持续加速自己的成长和专业技能的把控。

第二阶段是2-3内: 稳定自己的工作内容和方向,把技术做成T型发展,对自己的方向能够深入了解并掌握, 对相关的知识

Bryce1010 commented 3 years ago

2020招聘

百度

头条

腾讯

常规批开始 5.7

阿里巴巴

7.15开始投简历 7月中下旬面试 8月下旬发放offer

美团

Intel

https://chinacampus.jobs.intel.com/intel/position/index?recruitmentType=CAMPUSRECRUITMENT&jobCategory=%E7%A0%94%E5%8F%91%E7%B1%BB