面试题汇总---深度学习(图像识别,NLP内容)
文章目录
- 1.基本概念
- 1.1 为什么神经网络中深度网络的表现比广度网络表现好?
- 1.2 推导BP算法
- 1.3 什么是梯度消失和梯度爆炸?
- 1.4 常用的激活函数有哪些?
- 1.5 常用的参数更新方法有哪些?
- 1.6 解决过拟合的方法?
- 数据层面
- 模型层面
- 1.7 对卡在极小值的处理方法?
- 1.8 为何使用Batch Normalization?
- 1.9 学习的本质是什么?
- 2.卷积神经网络
- 2.1 1*1卷积核的作用有哪些?
- 2.2 CNN的思想是什么?
- 2.3 filter尺寸的选择
- 2. 4 输出尺寸计算公式
- 2. 5 pooling池化的作用
- 2.6 常用的CNN模型
- 3.循环神经网络
- 3.1 RNN的原理
- 3.2 RNN、LSTM、GRU区别?
- 3.3 LSTM防止梯度弥散和爆炸
- 3.4 word2vec思想
- 4.其他
- 4.1 简述一下GAN网络的原理?
- 4.2 GAN的表达式
- 4.3 GAN的实际计算方法
1.基本概念
1.1 为什么神经网络中深度网络的表现比广度网络表现好?
浅层结构算法:其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数)
深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。
浅层神经网络可以模拟任何函数,但数据量的代价是无法接受的。深层解决了这个问题。相比浅层神经网络,深层神经网络可以用更少的数据量来学到更好的拟合。深层的前提是:空间中的元素可以由迭代发展而来的。
1.2 推导BP算法
误差反向传播算法简称反向传播算法(即BP算法)。使用反向传播算法的多层感知器又称为BP神经网络。BP算法是一个迭代算法,它的基本思想为:(1)先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);(2)计算每一层的误差,误差的计算过程是从最后一层向前推进的(这就是反向传播算法名字的由来);(3)更新参数(目标是误差变小)。迭代前面两个步骤,直到满足停止准则(比如相邻两次迭代的误差的差别很小)。
参考博客
1.3 什么是梯度消失和梯度爆炸?
梯度消失:这本质上是由于激活函数的选择导致的, 最简单的sigmoid函数为例,在函数的两端梯度求导结果非常小(饱和区),导致后向传播过程中由于多次用到激活函数的导数值使得整体的乘积梯度结果变得越来越小,也就出现了梯度消失的现象。
梯度爆炸:同理,出现在激活函数处在激活区,而且权重W过大的情况下。但是梯度爆炸不如梯度消失出现的机会多
1.4 常用的激活函数有哪些?
1.5 常用的参数更新方法有哪些?
参考博客
1.6 解决过拟合的方法?
数据层面
- 采集更多的数据
- 数据增强:多用于图像方面
模型层面
dropout, regularization, batch normalizatin
- dropout只在训练的时候用,让一部分神经元随机失活。
- Batch normalization是为了让输出都是单位高斯激活,方法是在连接和激活函数之间加入BatchNorm层,计算每个特征的均值和方差进行规则化。
1.7 对卡在极小值的处理方法?
- 1.调节步伐:调节学习速率,使每一次的更新“步伐”不同;
- 2.优化起点:合理初始化权重(weights initialization)、预训练网络(pre-train),使网络获得一个较好的“起始点”,如最右侧的起始点就比最左侧的起始点要好。常用方法有:高斯分布初始权重(Gaussian distribution)、均匀分布初始权重(Uniform distribution)、Glorot 初始权重、He初始权、稀疏矩阵初始权重(sparse matrix)。
1.8 为何使用Batch Normalization?
参考博客
若用多个梯度的均值来更新权重的批量梯度下降法可以用相对少的训练次数遍历完整个训练集,其次可以使更新的方向更加贴合整个训练集,避免单个噪音样本使网络更新到错误方向。然而也正是因为平均了多个样本的梯度,许多样本对神经网络的贡献就被其他样本平均掉了,相当于在每个epoch中,训练集的样本数被缩小了。batch中每个样本的差异性越大,这种弊端就越严重。一般的解决方法就是在每次训练完一个epoch后,将训练集中样本的顺序打乱再训练另一个epoch,不断反复。这样重新组成的batch中的样本梯度的平均值就会与上一个epoch的不同。而这显然增加了训练的时间。同时因为没办法保证每次更新的方向都贴合整个训练集的大方向,只能使用较小的学习速率。这意味着训练过程中,一部分steps对网络最终的更新起到了促进,一部分steps对网络最终的更新造成了干扰,这样“磕磕碰碰”无数个epoch后才能达到较为满意的结果。
1.9 学习的本质是什么?
将变体拆分成因素和知识(Disentangle Factors of Variation)
2.卷积神经网络
2.1 1*1卷积核的作用有哪些?
参考博客
- 1.实现跨通道的交互和信息整合
- 2.进行卷积核通道数的降维和升维
2.2 CNN的思想是什么?
改变全连接为局部连接,这是由于图片的特殊性造成的(图像的一部分的统计特性与其他部分是一样的),通过局部连接和参数共享大范围的减少参数值。可以通过使用多个filter来提取图片的不同特征(多卷积核)。
2.3 filter尺寸的选择
通常尺寸多为奇数(1,3,5,7)
通常使用多个小的卷积核效果比使用少量的大的卷积核要好。
2. 4 输出尺寸计算公式
参考博客
输出尺寸=(N - F +padding*2)/stride + 1
步长可以自由选择通过补零的方式来实现连接。
Valid卷积意味着不填充,same是填充方式。
总结:padding = “Valid”,N = [(W-F+2P)/S]+1,这里表示的是向下取整再加1
padding = “same”,N = [W/S],这里表示向上取整
2. 5 pooling池化的作用
虽然通过.卷积的方式可以大范围的减少输出尺寸(特征数),但是依然很难计算而且很容易过拟合,所以依然利用图片的静态特性通过池化的方式进一步减少尺寸。
可以认为卷积层是特征的生成,pooling层是特征的选择。
2.6 常用的CNN模型
参考博客
3.循环神经网络
3.1 RNN的原理
在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward+Neural+Networks)。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i-1)层神经元在该时刻的输出外,还包括其自身在(m-1)时刻的输出。所以叫循环神经网络
3.2 RNN、LSTM、GRU区别?
3.3 LSTM防止梯度弥散和爆炸
LSTM用加和的方式取代了乘积,使得很难出现梯度弥散。但是相应的更大的几率会出现梯度爆炸,但是可以通过给梯度加门限解决这一问题。
3.4 word2vec思想
这个也就是Word Embedding,是一种高效的从原始语料中学习字词空间向量的预测模型。分为CBOW(Continous Bag of Words)和Skip-Gram两种形式。其中CBOW是从原始语句推测目标词汇,而Skip-Gram相反。CBOW可以用于小语料库,Skip-Gram用于大语料库。具体的就不是很会了。
4.其他
4.1 简述一下GAN网络的原理?
GAN结合了生成模型和判别模型,相当于矛与盾的撞击。生成模型负责生成最好的数据骗过判别模型,而判别模型负责识别出哪些是真的哪些是生成模型生成的。但是这些只是在了解了GAN之后才体会到的,但是为什么这样会有效呢?
假设我们有分布Pdata(x),我们希望能建立一个生成模型来模拟真实的数据分布,假设生成模型为Pg(x;θθ ),我们的目的是求解θθ 的值,通常我们都是用最大似然估计。但是现在的问题是由于我们相用NN来模拟Pdata(x),但是我们很难求解似然函数,因为我们没办法写出生成模型的具体表达形式,于是才有了GAN,也就是用判别模型来代替求解最大似然的过程。
在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。
4.2 GAN的表达式
通过分析GAN的表达可以看出本质上就是一个minmax问题。其中V(D, G)可以看成是生成模型和判别模型的差异,而minmaxD说的是最大的差异越小越好。这种度量差异的方式实际上叫做Jensen-Shannon divergence。
4.3 GAN的实际计算方法
因为我们不可能有Pdata(x)的分布,所以我们实际中都是用采样的方式来计算差异(也就是积分变求和)。具体实现过程如下:
有几个关键点:判别方程训练K次,而生成模型只需要每次迭代训练一次,先最大化(梯度上升)再最小化(梯度下降)。
但是实际计算时V的后面一项在D(x)很小的情况下由于log函数的原因会导致更新很慢,所以实际中通常将后一项的log(1-D(x))变为-logD(x)。
实际计算的时候还发现不论生成器设计的多好,判别器总是能判断出真假,也就是loss几乎都是0,这可能是因为抽样造成的,生成数据与真实数据的交集过小,无论生成模型多好,判别模型也能分辨出来。解决方法有两个:1、用WGAN 2、引入随时间减少的噪声
面试题汇总---深度学习(图像识别,NLP内容)相关推荐
- 回望2017,基于深度学习的NLP研究大盘点
回望2017,基于深度学习的NLP研究大盘点 雷锋网 百家号01-0110:31 雷锋网 AI 科技评论按:本文是一篇发布于 tryolabs 的文章,作者 Javier Couto 针对 2017 ...
- 微信高级研究员解析深度学习在NLP中的发展和应用 | 公开课笔记
作者 | 张金超(微信模式识别中心的高级研究员) 整理 | Just 出品 | 人工智能头条(公众号ID:AI_Thinker) 近年来,深度学习方法极大的推动了自然语言处理领域的发展.几乎在所有的 ...
- 基于深度学习的NLP 32页最新进展综述,190篇参考文献
来源:专知 摘要:深度学习使用多层学习层次的数据表示,并在许多领域得到了最优的结果.最近,各种各样的模型设计和方法在自然语言处理(NLP)蓬勃发展.在本文中,我们回顾了被广泛应用于各种NLP任务的深度 ...
- 30个免费资源:涵盖机器学习、深度学习、NLP及自动驾驶
摘要: 本文是一份免费资源清单,涵盖机器学习.深度学习.NLP.AI以及自动驾驶,方便相关研究者选择自己感兴趣的内容资源进行学习 随着碎片化的生活越来越日常化,大多数人都喜欢看总结性的的文章,这和时间 ...
- 微软新闻推荐:深度学习与 NLP 的融合,
让 Windows 11“新闻与兴趣”知你所需...
猜你喜欢 0.[免费下载]2021年12月热门报告盘点1.如何搭建一套个性化推荐系统?2.快手推荐系统精排模型实践.pdf3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进 ...
- 深度学习图像算法在内容安全领域的应用
互联网给人们生活带来便利的同时也隐含了大量不良信息,防范互联网平台有害内容传播引起了多方面的高度关注.本次演讲从技术层面分享网易易盾在内容安全领域的算法实践经验,包括深度学习图像算法在复杂场景下的效果 ...
- 微信高级研究员解析深度学习在 NLP 中的发展和应用
近年来,深度学习方法极大的推动了自然语言处理领域的发展.几乎在所有的 NLP 任务上我们都能看到深度学习技术的应用,并且在很多的任务上,深度学习方法的表现大大的超过了传统方法.可以说,深度学习方法给 ...
- 基于图深度学习的 NLP 综述!
本次分享的内容为图深度学习在自然语言处理领域的方法与应用,主要内容和素材都来自于我们Graph4NLP团队的一篇调研文章:Graph Neural Networks for Natural Langu ...
- 2017年深度学习在NLP领域的进展和趋势
本文翻译的是这篇文章 在过去的很多年里,深度学习架构和算法在某些领域,比如图像识别和语音处理,取得了令人印象深刻的进展. 最初,深度学习架构和算法在NLP领域并没能取得大的进展,但是最近深度学习在普通 ...
最新文章
- WCF动态添加ServiceKnownType
- javascript 生成一个一亿长度的随机数组,从中排列出最大的1000个项;
- 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一2.4 开发内部测试工具...
- Hibernate学习(4)- Hibernate对象的生命周期
- 《那些年啊,那些事——一个程序员的奋斗史》——72
- Python(5):循环
- 深度学习(三十九)——深度强化学习(2)概述, Deep Q-learning Network(1)
- protect 继承_(转)public、protect、private继承方式 C++
- python类方法继承_python类的继承
- linux下apache+openssl配置记录
- [MySQL]SQL
- php多条件检索怎么写,sql查询同时满足三个条件 php查询数据库,同时满足三个条件的sql怎么写?...
- 转载 Log4j2在WEB项目中配置
- windows sesrver2003下搭建DHCP服务器
- java打印某年日历_java打印指定年月份的日历
- windows下将python自带的pip卸载了,怎么重新装pip
- 循环实现自动售货机的学习笔记
- 计算机电脑网络电缆,宽带连不上网,电脑显示网络电缆被拔出
- c语言求等差数列的和oj,华为oj之等差数列前n项和
- java spring boot 微信公众号 分享功能
热门文章
- 服务器部署 配置jetty运行参数_Zookeeper+websocket实现对分布式服务器的实时监控...
- leftjoin多表联合查询_leetcode-sql练习精讲系列文章——一、多表如何连接
- arcgis报错常用解决方法
- 架构、框架和设计模式关系
- 第九节:基于MVC5+AutoFac+EF+Log4Net的基础结构搭建
- docker多个容器一起打包_如何链接多个Docker容器并封装结果?
- RestFul风格学习
- 【蓝桥杯官网训练 - 历届试题】对局匹配(dp,思维,取模)
- 【CH - 1401】 兔子与兔子(字符串哈希)
- 【HDU - 1412】 {A} + {B} (STL + set)