一面 技术面 (30min)

  • 自我介绍
  • 特征工程中的特征选择有哪些方法
  • 卷积怎么兴起的(感觉是考察卷积的发展史的)

深度学习的发展历史​​​​​​​

  • resnet跳跃连接的作用

1.改善了训练深度神经网络的梯度消失、梯度爆炸(面试官:还有吗 我:???) 

下来查了应该是考察权值退化的

2.《Skip connections eliminate singularities》的研究直接表明训练深度神经网络失败的原因并不是梯度消失,而是权重矩阵的退化,所以这是直接从源头上挖了根?

作者们认为神经网络的退化才是难以训练深层网络根本原因所在,而不是梯度消散。虽然梯度范数大,但是如果网络的可用自由度对这些范数的贡献非常不均衡,也就是每个层中只有少量的隐藏单元对不同的输入改变它们的激活值,而大部分隐藏单元对不同的输入都是相同的反应,此时整个权重矩阵的秩不高。并且随着网络层数的增加,连乘后使得整个秩变的更低。

这也是我们常说的网络退化问题,虽然是一个很高维的矩阵,但是大部分维度却没有信息,表达能力没有看起来那么强大。

残差连接正是强制打破了网络的对称性。

第1种(图a),输入权重矩阵(灰色部分)完全退化为0,则输出W已经失去鉴别能力,此时加上残差连接(蓝色部分),网络又恢复了表达能力。第2种(图b),输入对称的权重矩阵,那输出W一样不具备这两部分的鉴别能力,添加残差连接(蓝色部分)可打破对称性。第3种(图c)是图b的变种,不再说明。

总的来说一句话,打破了网络的对称性,提升了网络的表征能力,关于对称性引发的特征退化问题,大家还可以去参考更多的资料【4】。



作者:龙鹏-言有三
链接:https://zhuanlan.zhihu.com/p/42833949
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 为什么全局平均池化能获取全局上下文信息

通常认为如果选取区域均值(mean pooling),往往能保留整体数据的特征,较好的突出背景信息;如果选取区域最大值(max pooling),则能更好保留纹理特征。

来自:【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化(pooling),到底是什么?

1、什么是池化?

我们之所以使用卷积后的特征,是因为图像具有“静态型”的属性,也就意味着在一个图像区域的特征极有可能在另一个区域同样适用。所以,当我们描述一个大的图像的时候就可以对不同位置的特征进行聚合统计(例如:可以计算图像一个区域上的某个特定特征的平均值 or 最大值)这种统计方式不仅可以降低纬度,还不容易过拟合。这种聚合统计的操作就称之为池化,或平均池化、最大池化。

2、池化作用

2.1、增大感受野

所谓感受野,即一个像素对应回原图的区域大小,假如没有pooling,一个3*3,步长为1的卷积,那么输出的一个像素的感受野就是3*3的区域,再加一个stride=1的3*3卷积,则感受野为5*5。

假如我们在每一个卷积中间加上3*3的pooling呢?很明显感受野迅速增大,这就是pooling的一大用处。感受野的增加对于模型的能力的提升是必要的,正所谓“一叶障目则不见泰山也”。

2.2、平移不变性

我们希望目标的些许位置的移动,能得到相同的结果。因为pooling不断地抽象了区域的特征而不关心位置,所以pooling一定程度上增加了平移不变性。

2.3、降低优化难度和参数

我们可以用步长大于1的卷积来替代池化,但是池化每个特征通道单独做降采样,与基于卷积的降采样相比,不需要参数,更容易优化。全局池化更是可以大大降低模型的参数量和优化工作量。

另:Global Average Pooling全局平均池化的一点理解

  • 卷积是局部连接的,如何避免获取不到全局信息
  • 算法题:任意正数求平方根(二分法)

def SquarerootBi(x, epsilon):
    '''Return the squareroot of a nonnegative number x 
    with the precision epsilon'''
    assert x >= 0, '%f is not a nonnegative number' %x
    assert epsilon > 0, '%f is not a positive number' %epsilon
    low = 0
    high = x
    guess = (low + high) / 2
    ctn = 1
    while abs(guess**2 - x) >= epsilon and ctn < 100:
        if guess**2 > x: 
            high = guess
            guess = (low + high) / 2
        else: 
            low = guess
            guess = (low + high) / 2
        ctn += 1
    print("SquarerootBI, Iteration time: %i, Answere: %f" %(ctn, guess))

--------------------- 
作者:Mr_JjPolarBear 
来源:CSDN 
原文:https://blog.csdn.net/Mr_JjPolarBear/article/details/89599204 
版权声明:本文为博主原创文章,转载请附上博文链接!

  •  

二面 HR面(20min)

  • 自我介绍

  •  家庭成员,做什么的

  • 自己的优势

  • 工作中遇到技术问题一般如何解决

  •