神经网络相关的笔试题目集合(一)

在找工作的过程中发现好多公司没有专门的、传统的图像处理岗位,所以只能参加算法类的笔试甚至AI类的笔试。在AI的笔试中几乎全是关于神经网络的问题,其实也都是很基础的一些问题,如果事先做了准备,可以从容应对。而对于我这种从传统图像处理算法向深度学习靠拢的新手,不失为一种很好的入门方法。

既然是考察神经网络,激活函数activation function作为模拟人脑中神经元之间的激活/抑制的关键,经常会被考察。问:常用的激活函数有什么,各自有什么特点。关于这个问题可以从网上找到很多答案,比如参考链接1和2,主要讲了常见的激活函数Sigmoid、tanh、ReLu、Leaky ReLus。Sigmoid范围在0~1(这也是具有压缩数据功能的原因),所以Tanh=2*Sigmoid(2x)-1的范围在[-1,1],tanh读作Hyperbolic Tangent,解决了Sigmoid的均值非0的问题(这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入),但是梯度消失的问题更加严重(红色梯度曲线下降得更快,参数的学习要靠梯度的后向传播)。而ReLU=max(0,x),在输入很大的情况下梯度也不会像Sigmoid一样饱和,且由于计算简单,利用SGD(随机梯度下降)算法收敛速度更快,但缺点是在输入为复数的时候激活函数直接为0,造成所谓的神经元坏死,不能给之后的神经元传递信息,这时就必须十分小心learning Rate的选取,步长不能太大,也可以使用adagrad自动调节learningrate,同时参数的初始化也很重要,一般使用Xavier初始化。Leaky ReLU是为了解决ReLU神经元坏死的问题的,在输入小于0时,输出不再是0,而是一条斜率较小(a)的通过原点的直线。但是现在还没有足够的理论证明Leaky ReLU一定好于ReLU。也可以将斜率a也作为参数进行训练,即PReLU,kaiming He在2015年的论文中就使用了Parametric ReLU。

 

Randomized Leaky ReLU. Randomized Leaky ReLU 是 leaky ReLU 的random 版本, 其核心思想就是,在训练过程中,a是从一个高斯分布中随机出来的,然后再在测试过程中进行修正。

这么多的激活函数都有一个共同点,就是他们都是非线性的。抛开用激活函数去模拟神经元的仿生想法,激活函数的作用在数学上到底有什么意义呢?从网上资料看就是为了加入非线性因素。因为感知机其实是最原始的神经网络,同时感知机是一个判别模型,可用于分类,如果没有激活函数,我们就无法实现线性不可分问题,包括简单的异或XOR问题。如果没有激活函数,多个感知机的组合得到的仍然是一个线性分类器,仍然无法解决非线性问题。

参考链接2中知乎有人的回答中提到Google的论文Batch normalization: Accelerating deep network training by reducing internal covariate shift尽可能保证每一层网络的输入具有相同的分布,解决了Sigmoid的saturate的问题,但效果仍然没有ReLU好。正好笔试过程中也遇到了Batch Normalization的问题,那么接下来就看一下它到底为何物。

先来说归一化,归一化是对于输入特征来说的,特征可能是多维的,同时他们之间的量纲可能不一样,就会造成不同维度的大小存在很大的差异,这对于训练来说不太友好,因为我们设置的learning rate不可能适应所有的维度,会导致训练过慢。

归一化不仅能加快训练速度(最快梯度下降法的求解),有时候还可以提高精度。比如KNN分类器中要求样本之间的距离,归一化使得不同维度对距离造成的影响大小相同,而不会使得结果主要取决于某一维度。

归一化常用方法有最大最小归一化(线性归一化),max和min值不稳定时可以取常数;z-score标准化(均值方差标准化),归一化后的数据符合标准正态分布,即进行白化whiten;函数转化(非线性归一化,函数可使用对数、正切等)。

其实之前提到的归一化是相对于机器学习领域说的。在深度学习中由于涉及到了多层的网络模型,归一化会显得更加重要,因为机器学习中有一个数据之间是独立同分布IID的假设(这样才能通过训练样本预测新的数据),而神经网络中由于底层参数的更新会影响之后高层的输入,这在paper中被称为Internal Covariate Shift(ICS)问题。所以我们就需要对每一层的输出都进行归一化。但是底层的输出被归一化也意味着之前学到的特征分布被破坏了,所以batch Normalization(BN)又加入了变换重构,引入了可学习参数缩放因子和平移因子。

这里简单介绍一下batch的概念。首先,我们的训练数据集是有限的,我们会使用这一训练数据集训练多次,相对于巩固学习,但训练太多次又会导致过拟合。每次训练后参数完成一次更新,称这一过程是一个epoch。而在每次epoch中,我们把训练数据集分成几个较小的子集,这就是batch,子集的大小是batch_size。数据集较大不利于通过训练网络,分成子集有利于加快训练。训练数据集分成子集,epoch也分成了几个iteration。根据batch_size的选择,可以把训练情况分成三种,第一种是batch取最大值,即Full Batch Learning,一次性将训练数据通过训练网络,这只适用于训练数据少的情况。第二种是另外一个极端,batch_size取1,即Online Learning在线学习/Stochastic随机学习,这种情况难以收敛,因为每次梯度方向以各自样本的梯度方向收敛。我们看到batch_size其实是在内存利用率和内存容量之间的平衡,增大了batch_size,相对于通过并行化提高了内存利用率,但占用的内存也变大。第三种是Mini-batch,在之前两个极端情况下选择一个平衡点。BN就是基于了Mini-batch SGD。BN适用于mini-batch样本量较大且与各mini-batch分布相近似的场景下(训练前需进行充分的shuffle)。不适用于动态网络结构和RNN。

结合前面讲到的激活函数,BN在归一化的同时还可以解决Sigmoid函数的梯度饱和的问题。因为经过BN后,通过激活函数的输入是标准正态分布,经过非线性变换时的输入大概率保持在0均值附近,反向传播时梯度值较大,从而避免了梯度消失。BN增加scale和shift的原因也可以通过对激活函数的输入的处理来说明。因为在进入激活函数之前进行了归一化,将输入集中在了Sigmoid中心附近,而Sigmoid函数虽然本身是非线性函数,但是中心附近是接近线性的,这样一来我们就失去了非线性函数的优势,而补救措施就是增加scale和shift元素。BN的细节还是要看论文《Batch Normalization: Accelerating Deep Network Training by  Reducing Internal Covariate Shift》。

总结一下BN的优势:1.提升了训练速度(避免了梯度双端饱和,保证了IID)2.类似于Dropout,可以防止过拟合(加入了随机性的scale、shift?)3.对初始化的要求没有那么高(因为不必使用ReLU?即使使用ReLU也可以避免梯度为0),可以使用较大的学习率。

除了BN,还有其他的归一化方式。BN针对的是单一的神经元,Layer Normalization考虑一层的信息,并将该层的均值和方差作为归一化标准。weight normalization则将参数也进行了规范化。

Reference:

  1. 面面观https://blog.csdn.net/cyh_24/article/details/50593400
  2. 神经网络激励函数的作用是什么?有没有形象的解释? - 论智的回答 - 知乎https://www.zhihu.com/question/22334626/answer/465380541
  3. https://blog.csdn.net/yangdashi888/article/details/78015448
  4. 激活函数的作用https://blog.csdn.net/program_developer/article/details/78704224
  5. DeeplearningAI实用层面https://www.cnblogs.com/cloud-ken/p/7709447.html
  6. 归一化优点和方法和结构https://blog.csdn.net/qq_28618765/article/details/78221571
  7. Batch_size知乎https://www.zhihu.com/question/32673260
  8. 深度学习29https://blog.csdn.net/hjimce/article/details/50866313
  9. Normalization方式https://blog.csdn.net/qq_24153697/article/details/79880202

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中美超算“你追我赶” 中国优势可圈可点

来源:新华网摘要:中美超算“你追我赶” 中国优势可圈可点新一期全球超级计算机500强榜单12日在美国达拉斯发布。与半年前的榜单相比,全球格局变化不大,美国在最快超算上…

吴恩达作业1:逻辑回归实现猫的分类

思路:输入样本X与随机初始权重W相乘,利用sigmoid激活函数输出值,对于二分类问题,用交叉熵损失函数来计算损失值,通过交叉熵损失函数利用链式法则求出W和b的偏导,梯度下降更新W和b即可,&#xff…

双摄与双目视觉

越来越多的手机开始上双摄,首先解释一下双摄的目的,双摄可以达到什么样的效果。首先双摄可以分为两类,一类是利用双摄获得图像中物体到镜头或者焦距的距离,得到景深信息就可以进行后续的3D重建、图像分割、背景虚化等;…

“脑补”的科学依据:眼前的黑不是黑,靠得是你的大脑

一个在眨眼的婴儿 | 图片来源:Leungcho Pan/Shutterstock撰文:Mindy Weisberger来源:科研圈编译:向菲菲人们常说:“别眨眼,精彩稍纵即逝。”但其实在我们眨眼的时候,精彩仍在我们眼前上演。我们…

基于Sql Server 2008的分布式数据库的实践(三)

配置PHP 1.打开PHP配置文件,找到extensionphp_mssql.dll,将前面的注释符号去掉 2.找到mssql.secure_connection,将Off改为On 3.找到com.allow_dcom true,将前面的注释符号去掉 4.下载正确版本的 ntwdblib.dll (2000.80.194.0)&am…

ORB论文研读与代码实现

首先,ORB算法来自于OpenCV Labs,相比于SIFT和SURF,ORB在使用中不必担心专利的问题。但同时ORB在保证了一定性能的条件下做到了高效。在论文《ORB: An efficient alternative to SIFT or SURF》2011中,ORB在特征点检测和描述子生成…

腾讯发布人工智能辅助翻译,致敬人工翻译

来源:腾讯AI实验室11月13日,深圳 - 腾讯AI Lab今日发布了一款AI辅助翻译产品 - “腾讯辅助翻译”(Transmart),可满足用户快速翻译的需求,用AI辅助人工翻译提高效率和质量。该产品采用业内领先的人机交互式机…

吴恩达作业2 利用两层神经网络实现不同颜色点的分类,可更改隐藏层数量

任务:将400个两种颜色的点用背景色分为两类。 前面的还是建议重点学神经网络知识,至于数据集怎么做的后面在深究,首先先看看数据集,代码如下: def load_planar_dataset():np.random.seed(1)m 400 # number of exampl…

利用tensorflow构建AlexNet模型,实现小数量级的猫狗分类(只有train)

首先看路径: data文件夹分为,model文件夹,train文件夹和文件夹,model文件夹存放模型文件,train存放cat和dog的两个文件夹图片, validation和train一样。config.py存放配置的一些参数,util.py定…

脑网络的可塑性——随时都在发生

来源:神经科技前沿神经元的突起是神经元胞体的延伸部分,由于形态结构和功能的不同,可分为树突(dendrite)和轴突(axon);树突是从胞体发出的一至多个突起,呈放射状。轴突每个神经元只有一根胞体发出轴突的细胞 质部位多呈…

KAZE论文研读

KAZE是发表在ECCV2012的一种特征点检测算法,相比于SIFT和SURF,KAZE建立的高斯金字塔是非线性的尺度空间,采用加性算子分裂算法(Additive Operator Splitting, AOS)来进行非线性扩散滤波。一个很显著的特点是在模糊图像的同时还能保留边缘细节…

简单的线性模型实现tensorflow权重的生成和调用,并且用类的方式实现参数共享

首先看文件路径,line_regression是总文件夹,model文件夹存放权重文件, global_variable.py写了一句话. save_path./model/weight 权重要存放的路径,以weight命名. lineRegulation_model.py代码 import tensorflow as tf "…

comparing ORB and AKAZE

文章全称是《Comparing ORB and AKAZE for visual odometry of unmanned aerial vehicles》。这是一篇来自巴西的文章,没有在百度文库中找到,是在其他博客中给出的链接得到的。从链接的URL可以看出这是一篇来自会议CCIS云计算与智能系统国际会议的文章。…

利用 CRISPR 基因编辑技术,人类正在做七件“疯狂”的事

来源:36Kr编译:喜汤很少有哪种现代科学创新能像CRISPR基因编辑技术一样影响深远。有了它,科学家们可以精确地改变任何细胞的DNA。CRISPR技术成为新宠,部分原因是它比早期基因编辑技术更容易使用。尽管CRISPR还没有彻底大展身手&am…

吴恩达作业3:利用深层神经网络实现小猫的分类

利用4层神经网络实现小猫的分类,小猫训练样本是(209,64*64*312288),故输入节点是12288个,隐藏层节点依次为20,7,5,输出层为1。 首先看文件路径,dnn_utils_v2.py代码是激活…

A-KAZE论文研读

AKAZE是KAZE的加速版本。KAZE在构建非线性空间的过程中很耗时,在AKAZE中将Fast Explicit Diffusion(FED)加入到金字塔框架可以dramatically speed-up。在描述子方面,AKAZE使用了更高效的Modified Local Difference Binary(M-LDB),可以从非线性…

和你抢“饭碗”的40家服务机器人企业大盘点!

来源:物联网智库摘要:本文将对国内近40家服务机器人企业进行汇总介绍,所选企业在其相应版块活跃度较高。从三个大类进行了细分盘点。国家机器人联盟(IFR)根据应用环境将机器人分为了工业机器人和服务机器人。服务机器人…

YOLO9000

YOLO9000是YOLO的第三个版本。前两个版本是YOLO v1,YOLO v2,在CVPR2017的文章《Better,Faster,Stronger》中的前半部分都是对前两个版本的介绍,新的内容主要在Stronger部分。YOLO9000中的9000指的是YOLO可以对超过9000种图像进行分类。 Bett…

吴恩达作业4:权重初始化

权重初始化的 正确选择能够有效的避免多层神经网络传播过程中的梯度消失和梯度爆炸问题,下面通过三个初始化的方法来验证: sigmoid导数函数:最大值小于0.25,故经过多层反向传播以后,会导致最初的层,权重无…

先发制人!Waymo将首推商用载人自动驾驶服务,Uber们怕不怕?

编译:费棋来源:AI科技大本营“真的,真的很难。”11 月举办的一场会议上,Alphabet 旗下 Waymo CEO John Krafcik 对做自动驾驶汽车技术的艰难不无感慨。在他看来,未来几十年内,自动驾驶汽车将一直存在限制&a…