神经网络模型

Batch normalization批标准化

心已入冬 提交于 2019-12-11 14:40:51
Batch normalization 深度学习尤其是在CV上都需要对数据做归一化,因为深度神经网络主要就是为了学习训练数据的分布,并在测试集上达到很好的泛化效果,但是,如果我们每一个batch输入的数据都具有不同的分布,显然会给网络的训练带来困难。另一方面,数据经过一层层网络计算后,其数据分布也在发生着变化,此现象称为Internal Covariate Shift。 机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。BatchNorm的作用就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的(标准正态分布)。 Internal covariate shift 的概念:训练深度网络的时候经常发生训练困难的问题,因为,每一次参数迭代更新后,上一层网络的输出数据经过这一层网络计算后,数据的分布会发生变化,为下一层网络的学习带来困难(神经网络本来就是要学习数据的分布,要是分布一直在变,学习就很难了),此现象称之为Internal Covariate Shift。 对于深度学习这种包含很多隐层的网络结构,在训练过程中,因为各层参数不停在变化,所以每个隐层都会面临covariate shift的问题,也就是在训练过程中,隐层的输入分布老是变来变去,这就是所谓的

TensorFlow(二)卷积神经网络

China☆狼群 提交于 2019-12-11 11:55:51
TensorFlow卷积神经网络 1、反向传播 几个人站成一排第一个人看一幅画(输入数据),描述给第二个人(隐层)……依此类推,到最后一个人(输出)的时候,画出来的画肯定不能看了(误差较大)。 反向传播就是,把画拿给最后一个人看(求取误差),然后最后一个人就会告诉前面的人下次描述时需要注意哪里(权值修正) 2、什么是卷积 1.已有运算:加减乘除,幂运算指数运算 卷积:卷积是一种运算 2.卷积运算 卷积操作是使用一个二维的卷积核在一个批处理的图片上进行不断扫描。具体操作是将一个卷积核在每张图片上按照一个合适的尺寸在每个通道上面进行扫描 3.卷积过程 如下图所示,用一个3 3的卷积核在5 5的图像上做卷积的过程 4.在三通道图像上的卷积过程 如下: 5.卷积函数 3、卷积函数 tf.nn.conv2d 参数一:input input就是需要做卷积的图像(这里要求用Tensor来表示输入图像,并且Tensor(一个4维的Tensor,要求类型为float32)的shape为[batch, in_height, in_width, in_channels]具体含义[训练时一个batch图像的数量,图像高度,图像宽度, 图像通道数]) 参数二:filter filter就是卷积核(这里要求用Tensor来表示卷积核,并且Tensor(一个4维的Tensor,要求类型与input相同

训练神经网络调超参的总结

随声附和 提交于 2019-12-10 05:37:55
train loss与test loss结果分析: train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过拟合; train loss 趋于不变,test loss不断下降,说明数据集100%有问题; train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目; train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。 train loss 趋于不变,train accuracy不断上升,说明网络学习能力不强,正确分类多数是大于0.5多一点,就会造成train loss趋于不变,而train accuracy不断上升 train loss很低,test loss却很高,说明网络的泛化能力低或者是过拟合 调整模型的一些心得: 很多人在刚开始训练自己的模型的时候都容易进入一个误区:一开始训练数据准备的很大,训练时间消耗太多,最后发现train loss不收敛,测试效果也理想。在进行大规模数据训练的时候,应该先用少量的数据进行测试,证明你设计的模型是有学习能力的,在这基础上把各个参数调到最佳,最后才是进行大规模的数据训练。很多人都省略了开始的一步,造成许多麻烦,而且还很费时间。

卷积神经网络

馋奶兔 提交于 2019-12-10 04:18:56
卷积神经网络的网络结构 卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。 图:卷积神经网络的概念示范:输入图像通过 和三个可训练的滤波器和可加偏置 进行卷积,滤波过程如上图,卷积后在C1层产生 三个特征映射图 ,然后特征映射 图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数 得到 三个S2层的特征映射图 。这些映射图再进行滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素被 光栅化 ,并连接成一个向量输入到传统的神经网络,得到输出。 一般地,C层为 特征提取层 ,每个神经元的输入与前一层的 局部感受野 相连,并提取该局部的特征,一旦该局部特征被提取之后,它与其他特征之间的位置关系也随之确定下来;S层是 特征映射层 , 网 络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有特征的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。 此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个用来求局部平均与二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。 3)关于参数减少和权值共享

第十讲--循环神经网络--课时22--语言模型

房东的猫 提交于 2019-12-06 18:40:25
language model即语言生成模型 character level language model 训练过程 训练过程的输入时给定的,结果是一个向量,进过softmax后就是为各个character的概率 测试过程 输入是前一个的输出,输出是由soft max 之后的概率分布 采样得到的 ---------------------------------------------------------------------------------------------------------------------------------- 如果想要用维基百科的英文语句训练RNN,那么将会无法收敛 ---------------------------------------------------------------------------------------------------------------------------------- 可以生成诗歌,戏剧,数学证明,c语言代码! --------------------------------------------------------------------------------------------------------------------------------- language

为什么神经网络参数不能全部初始化为全0?

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 17:43:57
假设我们现在需要初始化的神经网络如下所示: 我们初始化权值为 其中W1代表 输入层到隐藏层 的权值矩阵,W2代表 隐藏层到输出层 的权值矩阵。 假设网络的输入为[x1,x2,x3],然后通过网络的正向传播,可以得出: 由于 我们可以知道: 从上面可以知道,此时隐藏层的值是相同的,然后经过激活函数f后, 得到的a4,a5仍然是相同的 ,如下: 最终网络的输出为: 此时,假设我们的真实输出为y,则均方误差损失函数可以表示为 : 到了这里,此时又应该到我们伟大的BP反向传播算法出场了! 我们需要反向更新权值,它使得预测的输出值与真实值越来越靠近。 这里假设我们的读者已经知道了BP反向传播的过程,可以参看 通俗理解神经网络BP传播算法 - 知乎专栏 。 可以知道,通过反向传播后,结点4,5的梯度改变是一样的,假设都是 ,那么此时结点4与结点6之间的参数,与结点5与结点6之间的参数变为了,如下: 由上式可以看出,新的参数相同了!!!! 同理可以得出输入层与隐藏层之间的参数更新都是一样的,得出更新之后的参数 都是相同的!然后不管进行多少轮正向传播以及反向传播,每俩层之间的参数都是一样的。 换句话说,本来我们希望不同的结点学习到不同的参数,但是由于参数相同以及输出值都一样,不同的结点根本无法学到不同的特征!这样就失去了网络学习特征的意义了。 隐藏层与其它层多个结点,其实仅仅相当于一个结点!

使用AI算法进行手写数字识别

a 夏天 提交于 2019-12-06 16:31:14
人工智能   人工智能(Artificial Intelligence,简称AI)一词最初是在1956年Dartmouth学会上提出的,从那以后,研究者们发展了众多理论和原理,人工智能的概念也随之扩展。由于人工智能的研究是高度技术性和专业的,各分支领域都是深入且各不相通的,因而涉及范围极广 。 人工智能的核心问题包括建构能够跟人类似甚至超越人类的推理、知识、学习、交流、感知、使用工具和操控机械的能力等,当前人工智能已经有了初步成果,甚至在一些影像识别、语言分析、棋类游戏等等单方面的能力达到了超越人类的水平 。   人工智能的分支领域非常多,主要有演绎推理、知识表示、规划、学习、自然语言处理……等十多个分支领域,而以机器学习为代表的“学习”领域,是目前研究最广泛的分支之一。 机器学习    机器学习(Machine Learning)是人工智能的一个分支,它是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域交叉性的学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。    机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法,该算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。 深度学习   深度学习(Deep Learning)是机器学习的分支,是一种以人工神经网络为架构

神经网络学习

那年仲夏 提交于 2019-12-06 14:24:42
1、输出与输入的关 系(感知基):   这个模型由生活中而来, 是输入表示各种情况, 表示各种情况的影响权重, 得到整体的影响, 是门限(偏移)当影响y>0就做出1决策,否则就做出0决策。 2、为什么要使用( sigmoid neuron):    是一个不连续的函数,可能微小的改变 ,会导致y的翻转性的变化。使用 sigmoid neuron,使y与w和b是连续关系(微小的 ,y也是微小的变化) ,且输出的值在0~1之间,所以选择 3、误差函数 输出与输入的关系最好为如下,看起来很复杂的样子。 误差函数为: 很多时候会使用一个平均误差函数,为什么我还不懂。 梯度下降法就是从导数方向调整w和b,使误差函数(代价函数)的值最小。(统计值最小,所以要求一个平均误差),其中权重和偏移b的导数如下 看起来很复杂,反向传播的方式计算起来就没那么复杂了。 导数的反方向是降低误差函数c的最快的方向,给定一个学习率 ,每次学习调整 最终使c达到最小。 来源: https://www.cnblogs.com/yuandonghua/p/11589687.html

树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning

…衆ロ難τιáo~ 提交于 2019-12-06 09:46:39
树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning 2018-04-17 08:32:39 看_这是一群菜鸟 阅读数 1906 收藏 更多 分类专栏: 论文解读 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_24305433/article/details/79856672 一、简介: 学习深度学习的人都知道,深度学习有一个严重的问题——“灾难性遗忘”,即一旦使用新的数据集去训练已有的模型,该模型将会失去对原数据集识别的能力。为解决这一问题,本文作者提出了树卷积神经网络 Tree-CNN ,通过先将物体分为几个大类,然后再将将各个大类依次进行划分,就行树一样不断的开枝散叶,最终叶节点得到的类别就是我们最终所要识别的类别。 二、网络结构及学习策略 1、网络结构 Tree-CNN模型借鉴了层分类器,树卷积神经网络由节点构成,和数据结构中的树一样,每个节点都有自己的ID、父亲(Parent)及孩子(Children),网(Net,处理图像的卷积神经网络),LT("Labels Transform"小编理解的就是每个节点所对应的标签,对于根节点和枝节点来说

神经网络反向传播算法

喜你入骨 提交于 2019-12-06 05:22:46
反向传播算法是求代价函数小时参数θ的一种算法。 以监督学习为例,假设我们有训练样本集 ,那么神经网络算法能够提供一种复杂且非线性的假设模型 ,它具有参数 ,可以以此参数来拟合我们的数据。 为了描述神经网络,我们先从最简单的神经网络讲起,这个神经网络仅由一个“神经元”构成,以下即是这个“神经元”的图示: 这个“神经元”是一个以 及截距 为输入值的运算单元,其输出为 ,其中函数 被称为“激活函数”。在本教程中,我们选用sigmoid函数作为激活函数 可以看出,这个单一“神经元”的输入-输出映射关系其实就是一个逻辑回归(logistic regression)。 虽然本系列教程采用sigmoid函数,但你也可以选择双曲正切函数(tanh): 以下分别是sigmoid及tanh的函数图像 函数是sigmoid函数的一种变体,它的取值范围为 ,而不是sigmoid函数的 。 注意,与其它地方(包括OpenClassroom公开课以及斯坦福大学CS229课程)不同的是,这里我们不再令 。取而代之,我们用单独的参数 来表示截距。 最后要说明的是,有一个等式我们以后会经常用到:如果选择 ,也就是sigmoid函数,那么它的导数就是 (如果选择tanh函数,那它的导数就是 ,你可以根据sigmoid(或tanh)函数的定义自行推导这个等式。 神经网络模型 所谓神经网络就是将许多个单一“神经元