阅读大概需要5分钟

跟随小博主,每天进步一丢丢

共有五道经典面试题!

上一篇:

【深度学习】你该会的精选面试题(一)

第一题

请简要介绍下tensorflow的计算图。

解析

Tensorflow是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可以把计算图看做是一种有向图,Tensorflow中的每一个节点都是计算图上的一个Tensor, 也就是张量,而节点之间的边描述了计算之间的依赖关系(定义时)和数学操作(运算时)。

如下两图表示:

a=x*y; b=a+z; c=tf.reduce_sum(b)

第二题

你有哪些deep learning(rnn、cnn)调参的经验?

解析

一、参数初始化

下面几种方式,随便选一个,结果基本都差不多。但是一定要做。否则可能会减慢收敛速度,影响收敛结果,甚至造成Nan等一系列问题。

下面的n_in为网络的输入大小,n_out为网络的输出大小,n为n_in或(n_in+n_out)*0.5

Xavier初始法论文:

http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdff

He初始化论文:

https://arxiv.org/abs/1502.01852

uniform均匀分布初始化:

w = np.random.uniform(low=-scale, high=scale, size=[n_in,n_out])

Xavier初始法,适用于普通激活函数(tanh,sigmoid):scale = np.sqrt(3/n)

He初始化,适用于ReLU:scale = np.sqrt(6/n)

normal高斯分布初始化:w = np.random.randn(n_in,n_out) * stdev # stdev为高斯分布的标准差,均值设为0

Xavier初始法,适用于普通激活函数 (tanh,sigmoid):stdev = np.sqrt(n)

He初始化,适用于ReLU:stdev = np.sqrt(2/n)

svd初始化:对RNN有比较好的效果。

二、数据预处理方式

zero-center ,这个挺常用的.X -= np.mean(X, axis = 0) # zero-centerX /= np.std(X, axis = 0) # normalize

PCA whitening,这个用的比较少.

三、训练技巧

要做梯度归一化,即算出来的梯度除以minibatch size

clip c(梯度裁剪): 限制最大梯度,其实是value = sqrt(w1^2+w2^2….),如果value超过了阈值,就算一个衰减系系数,让value的值等于阈值: 5,10,15

dropout对小数据防止过拟合有很好的效果,值一般设为0.5,小数据上dropout+sgd在我的大部分实验中,效果提升都非常明显.因此可能的话,建议一定要尝试一下。 dropout的位置比较有讲究, 对于RNN,建议放到输入->RNN与RNN->输出的位置.关于RNN如何用dropout,可以参考这篇论文:http://

https://arxiv.org/abs/1409.2329

adam,adadelta等,在小数据上,我这里实验的效果不如sgd, sgd收敛速度会慢一些,但是最终收敛后的结果,一般都比较好。如果使用sgd的话,可以选择从1.0或者0.1的学习率开始,隔一段时间,在验证集上检查一下,如果cost没有下降,就对学习率减半. 我看过很多论文都这么搞,我自己实验的结果也很好. 当然,也可以先用ada系列先跑,最后快收敛的时候,更换成sgd继续训练.同样也会有提升.据说adadelta一般在分类问题上效果比较好,adam在生成问题上效果比较好。

除了gate之类的地方,需要把输出限制成0-1之外,尽量不要用sigmoid,可以用tanh或者relu之类的激活函数.1. sigmoid函数在-4到4的区间里,才有较大的梯度。之外的区间,梯度接近0,很容易造成梯度消失问题。2. 输入0均值,sigmoid函数的输出不是0均值的。

rnn的dim和embdding size,一般从128上下开始调整. batch size,一般从128左右开始调整.batch size合适最重要,并不是越大越好。

word2vec初始化,在小数据上,不仅可以有效提高收敛速度,也可以可以提高结果。

四、尽量对数据做shuffle

LSTM 的forget gate的bias,用1.0或者更大的值做初始化,可以取得更好的结果,来自这篇论文:htt

phttp://proceedings.mlr.press/v37/jozefowicz15.pdf

我这里实验设成1.0,可以提高收敛速度.实际使用中,不同的任务,可能需要尝试不同的值.

Batch Normalization据说可以提升效果,不过我没有尝试过,建议作为最后提升模型的手段,参考论文:

Accelerating Deep Network Training by Reducing Internal Covariate Shift

如果你的模型包含全连接层(MLP),并且输入和输出大小一样,可以考虑将MLP替换成Highway Network,我尝试对结果有一点提升,建议作为最后提升模型的手段,原理很简单,就是给输出加了一个gate来控制信息的流动,详细介绍请参考论文:

https://arxiv.org/abs/1505.00387

五、Ensemble

Ensemble是论文刷结果的终极核武器,深度学习中一般有以下几种方式

同样的参数,不同的初始化方式

不同的参数,通过cross-validation,选取最好的几组

同样的参数,模型训练的不同阶段,即不同迭代次数的模型。

不同的模型,进行线性融合. 例如RNN和传统模型。

第三题

CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?

解析

Deep Learning -Yann LeCun, Yoshua Bengio & Geoffrey Hinton

Learn TensorFlow and deep learning, without a Ph.D.

The Unreasonable Effectiveness of Deep Learning -LeCun 16 NIPS Keynote

以上几个不相关问题的相关性在于,都存在局部与整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。如下图:低层次的直线/曲线等特征,组合成为不同的形状,最后得到汽车的表示。

CNN抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构。

局部连接使网络可以提取数据的局部特征;权值共享大大降低了网络的训练难度,一个Filter只提取一个特征,在整个图片(或者语音/文本) 中进行卷积;池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。如下图:

上图中,如果每一个点的处理使用相同的Filter,则为全卷积,如果使用不同的Filter,则为Local-Conv。

第四题

LSTM结构推导,为什么比RNN好?

解析

推导forget gate,input gate,cell state, hidden information等的变化;因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸。

第五题

Sigmoid、Tanh、ReLu这三个激活函数有什么缺点或不足,有没改进的激活函数。

解析

sigmoid、Tanh、ReLU的缺点在121问题中已有说明,为了解决ReLU的dead cell的情况,发明了Leaky Relu, 即在输入小于0时不让输出为0,而是乘以一个较小的系数,从而保证有导数存在。同样的目的,还有一个ELU,函数示意图如下。

还有一个激活函数是Maxout,即使用两套w,b参数,输出较大值。本质上Maxout可以看做Relu的泛化版本,因为如果一套w,b全都是0的话,那么就是普通的ReLU。Maxout可以克服Relu的缺点,但是参数数目翻倍。

资料来源

1.寒小阳&AntZ,张雨石博客等;

2.萧瑟

https://www.zhihu.com/question/41631631/answer/94816420https

3.许韩

https://zhuanlan.zhihu.com/p/25005808

4.《 CNN笔记:通俗理解卷积神经网络》

https://link.zhihu.com/?target=http%3A//blog.csdn.net/v_july_v/article/details/51812459

5.我愛大泡泡

https://blog.csdn.net/woaidapaopao/article/details/77806273

作者 七月在线

知乎

链接 https://zhuanlan.zhihu.com/p/39367605

IELTS a bit

cavort vi 腾跃;欢跃

rehabilitate vt. 使康复;是恢复名誉;使恢复现状

vi. 复兴;复权;恢复正常生活

nuisance n. 讨厌的人;损害;麻烦事;讨厌的东西

under no circumstances 绝不

conviction n. 定罪;确信;证明有罪;确信,坚定的信仰

推荐阅读:

一大批历史精彩文章啦

整理了自己关于机器学习,深度学习,python,NLP,pytorch,linux,数学基础等精彩文章。


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

【深度学习】你该会的精选面试题(二)相关推荐

  1. 深度学习论文阅读目标检测篇(二):Fast R-CNN《Fast R-CNN》

    深度学习论文阅读目标检测篇(二):Fast R-CNN<Fast R-CNN> Abstract 摘要 1. Introduction 引言 1.1 RCNN and SPPnet 1.2 ...

  2. 深度学习(24)随机梯度下降二: 常见函数的梯度

    深度学习(24)随机梯度下降二: 常见函数的梯度 Common Functions 1. y=xw+by=xw+by=xw+b 2. y=xw2+b2y=xw^2+b^2y=xw2+b2 3. y=x ...

  3. 深度学习(6)TensorFlow基础操作二: 创建Tensor

    深度学习(6)TensorFlow基础操作二: 创建Tensor 一. 创建方式 1. From Numpy,List 2. zeros,ones (1) tf.zeros() (2) tf.zero ...

  4. [深度学习] 分布式Tensorflow 2.0 介绍(二)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow 2.0介绍(二) [深度学习] 分布式Pytorch 1.0介绍(三) [深度学习] 分布式Horovod介绍(四) 一 ...

  5. 深度学习笔记(17) 误差分析(二)

    深度学习笔记(17) 误差分析(二) 1. 使用来自不同分布的数据进行误差分析 2. 数据分布不匹配时的偏差与方差 3. 处理数据不匹配问题 1. 使用来自不同分布的数据进行误差分析 越来越多的团队都 ...

  6. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)

    长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...

  7. 【Pytorch深度学习实践】B站up刘二大人之SoftmaxClassifier-代码理解与实现(8/9)

    这是刘二大人系列课程笔记的倒数第二个博客了,介绍的是多分类器的原理和代码实现,下一个笔记就是basicCNN和advancedCNN了: 写在前面: 这节课的内容,主要是两个部分的修改: 一是数据集: ...

  8. 深度学习经典网络解析图像分类篇(二):AlexNet

    深度学习经典网络解析图像分类篇(二):AlexNet 1.背景介绍 2.ImageNet 3.AlexNet 3.1AlexNet简介 3.2AlexNet网络架构 3.2.1第一层(CONV1) 3 ...

  9. 基于深度学习的目标检测算法综述(二)

    转自:https://zhuanlan.zhihu.com/p/40020809 基于深度学习的目标检测算法综述(一) 基于深度学习的目标检测算法综述(二) 基于深度学习的目标检测算法综述(三) 本文 ...

  10. 深度学习模型压缩与加速技术(二):参数量化

    目录 总结 参数量化 参数量化定义 参数量化特点 1.二值化 二值化权重 二值化权重与激活函数 2.三值化 3.聚类量化 4.混合位宽 手工固定 自主确定 训练技巧 参考文献 深度学习模型的压缩和加速 ...

最新文章

  1. 使用Notepad++比较文件的差异
  2. Java 技术之动态代理机制
  3. python访问网页时401_在python上访问带有基本身份验证的网页
  4. XScuGic_Connect分析
  5. Linux学习之系统编程篇:死锁的情形及其解决
  6. PhoneGap极光推送 cordova消息推送
  7. 在线网页快捷方式创建工具
  8. 在QtCreator中手动添加signal和slot
  9. rn 视频播放组件react-native-video
  10. 从国家统计局爬取山东省市区县乡镇
  11. [deepstream][原创]更改deepstream_test1_app在弹出视频上显示fps
  12. rovio环境配置与测试笔记
  13. foxpro导入 mysql_Foxpro DBF数据库转换成SQL Server 6.5表的几种方法
  14. HTTP传输大文件的方法
  15. Python初学笔记1-【循环语句】
  16. 数据挖掘综合应用:贷款产品预测案例
  17. 如何做用户画像分析?
  18. 互联网盈利模式77种创新 【 很八股的标题,不过内容还是可以参考一下的 】
  19. 【蝴蝶效应】【青蛙现象】【鳄鱼法则】 【鲇鱼效应】 【羊群效应】 【刺猬法则】 【手表定律】 ...
  20. php blog 博客程序那个好

热门文章

  1. 在InstallShield中发布单一的Setup.exe文件
  2. 自定义snmp oid
  3. java day44【JQuery 基础:概念,快速入门,JQuery对象和JS对象区别与转换,选择器,DOM操作,案例】...
  4. 剖析vector.erase()实现
  5. css各种居中解决方法
  6. 三组划分//巧妙填数
  7. Android雁翎刀之ImageView之定制头像
  8. C++进阶之函数模板
  9. MongoDB DBA 实践2-----MongoDB CRUD操作
  10. Linux运维基础入门(二):网络基础知识梳理02