从广义上说深度学习的网络结构也是多层神经网络的一种。传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适。
而深度学习中最著名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。
具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级。
输入层-卷积层-降维层-卷积层-降维层--....--隐藏层-输出层简单来说,原来多层神经网络做的步骤是:特征映射到值。特征是人工挑选。深度学习做的步骤是信号->特征->值。
特征是由网络自己选择。
谷歌人工智能写作项目:爱发猫
下面是就是神经网络中代价函数J(Θ)J(Θ)的表达式,看起来还是稍微有点复杂A8U神经网络。这个表达式到底在计算什么?下面我们先用一个简单的例子来分开一步步计算一下。
J(Θ)=−1m∑i=1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θ(l)j,i)2J(Θ)=−1m∑i=1m∑k=1K[yk(i)log((hΘ(x(i)))k)+(1−yk(i))log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θj,i(l))2有如下神经网络:其中:LslK=神经网络总共包含的层数=第l层的神经元数目=输出层的神经元数,亦即分类的数目L=神经网络总共包含的层数sl=第l层的神经元数目K=输出层的神经元数,亦即分类的数目假设s1=3,s2=2,s3=3s1=3,s2=2,s3=3,则Θ1Θ1的维度为2×42×4,Θ2Θ2的维度为3×33×3。
则有:XT=⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥,Θ1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4,Θ2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3XT=[1x1x2x3],Θ1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4,Θ2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3先回忆一下正向传播的计算公式: z(j)=Θ(j−1)a(j−1)……(1)a(j)=g(z(j)),setting a(j)0=1……(2)hΘ(x)=a(j)=g(z(j))……(3)z(j)=Θ(j−1)a(j−1)……(1)a(j)=g(z(j)),setting a0(j)=1……(2)hΘ(x)=a(j)=g(z(j))……(3)详解戳此处 此时我们先忽略regularizedterm ①当m=1时; J(Θ)=−1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]J(Θ)=−1m∑k=1K[yk(i)log((hΘ(x(i)))k)+(1−yk(i))log(1−(hΘ(x(i)))k)]1.令a1=XT;⟹z2=Θ1∗a1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4×⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥=[θ110+θ111⋅x1+θ112⋅x2+θ113⋅x3θ120+θ121⋅x1+θ122⋅x2+θ123⋅x3]2×11.令a1=XT;⟹z2=Θ1∗a1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4×[1x1x2x3]=[θ101+θ111⋅x1+θ121⋅x2+θ131⋅x3θ201+θ211⋅x1+θ221⋅x2+θ231⋅x3]2×1=[z21z22],⟹a2=g(z2);=[z12z22],⟹a2=g(z2);2.给a2添加偏置项,并计算a3即hθ(x) 2.给a2添加偏置项,并计算a3即hθ(x); a2=⎡⎣⎢1a21a22⎤⎦⎥;⟹z3=Θ2∗a2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3×⎡⎣⎢1a21a22⎤⎦⎥=⎡⎣⎢⎢z31z32z33⎤⎦⎥⎥;a2=[1a12a22];⟹z3=Θ2∗a2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3×[1a12a22]=[z13z23z33];⟹hθ(x)=a3=g(z3)=⎡⎣⎢⎢g(z31)g(z32)g(z33)⎤⎦⎥⎥=⎡⎣⎢h(x)1h(x)2h(x)3)⎤⎦⎥⟹hθ(x)=a3=g(z3)=[g(z13)g(z23)g(z33)]=[h(x)1h(x)2h(x)3)]此时我们知道,对于每一个example,最终都会输出3个结果,那么这时代价函数所做的就是将这3个输出取对数然后乘以对应的预期期望值y之后,再累加起来。
具体如下:假设 input:XT=⎡⎣⎢⎢⎢1x1x2x3⎤⎦⎥⎥⎥;output:y=⎡⎣⎢100⎤⎦⎥=⎡⎣⎢y1y2y3⎤⎦⎥input:XT=[1x1x2x3];output:y=[100]=[y1y2y3]则有: J(Θ)∗m=[−y1×log(h(x)1)−(1−y1)×log(1−h(x)1)]+[−y2×log(h(x)2)−(1−y2)×log(1−h(x)2)]+[−y3×log(h(x)3)−(1−y3)×log(1−h(x)3)]=[−1×log(h(x)1)−(1−1)×log(1−h(x)1)]+[−0×log(h(x)2)−(1−0)×log(1−h(x)2)]+[−0×log(h(x)3)−(1−0)×log(1−h(x)3)]=−log(h(x)1)−log(1−h(x)2)−log(1−h(x)3)J(Θ)∗m=[−y1×log(h(x)1)−(1−y1)×log(1−h(x)1)]+[−y2×log(h(x)2)−(1−y2)×log(1−h(x)2)]+[−y3×log(h(x)3)−(1−y3)×log(1−h(x)3)]=[−1×log(h(x)1)−(1−1)×log(1−h(x)1)]+[−0×log(h(x)2)−(1−0)×log(1−h(x)2)]+[−0×log(h(x)3)−(1−0)×log(1−h(x)3)]=−log(h(x)1)−log(1−h(x)2)−log(1−h(x)3)在matlab中,矢量化之后的代价函数为: J(Θ)=(1/m)∗(sum(−labelY.∗log(Hθ)−(1−labelY).∗log(1−Hθ)));J(Θ)=(1/m)∗(sum(−labelY.∗log(Hθ)−(1−labelY).∗log(1−Hθ)));②当m>1时;J(Θ)=−1m∑i=1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]J(Θ)=−1m∑i=1m∑k=1K[yk(i)log((hΘ(x(i)))k)+(1−yk(i))log(1−(hΘ(x(i)))k)]此时,对于每一个example都会产生一个上面的代价,所以只需要把所有的对于每一个example产生的代价累加起来即可。
再来分解一下:假设,X=⎡⎣⎢⎢111x11x21x31x12x22x32x13x23x33⎤⎦⎥⎥,假设,X=[1x11x21x311x12x22x321x13x23x33],1.令a1=XT;⟹z2=Θ1∗a1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4×⎡⎣⎢⎢⎢⎢1x11x12x131x21x22x231x31x32x33⎤⎦⎥⎥⎥⎥4×3=1.令a1=XT;⟹z2=Θ1∗a1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4×[111x11x12x13x21x22x23x31x32x33]4×3=[θ110+θ111⋅x11+θ112⋅x12+θ113⋅x13θ120+θ121⋅x11+θ122⋅x12+θ123⋅x13θ110+θ111⋅x21+θ112⋅x22+θ113⋅x23θ120+θ121⋅x21+θ122⋅x22+θ123⋅x23θ110+θ111⋅x31+θ112⋅x32+θ113⋅x33θ120+θ121⋅x31+θ122⋅x32+θ123⋅x33]2×3[θ101+θ111⋅x11+θ121⋅x21+θ131⋅x31θ101+θ111⋅x12+θ121⋅x22+θ131⋅x32θ101+θ111⋅x13+θ121⋅x23+θ131⋅x33θ201+θ211⋅x11+θ221⋅x21+θ231⋅x31θ201+θ211⋅x12+θ221⋅x22+θ231⋅x32θ201+θ211⋅x13+θ221⋅x23+θ231⋅x33]2×3=[z211z221z212z222z213z223]2×3,⟹a2=g(z2);=[z112z122z132z212z222z232]2×3,⟹a2=g(z2);2.给a2添加偏置项,并计算a3即hθ(x) 2.给a2添加偏置项,并计算a3即hθ(x);a2=⎡⎣⎢1a211a2211a212a2221a213a223⎤⎦⎥3×3;⟹z3=Θ2∗a2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3×⎡⎣⎢1a211a2211a212a2221a213a223⎤⎦⎥3×3a2=[111a112a122a132a212a222a232]3×3;⟹z3=Θ2∗a2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3×[111a112a122a132a212a222a232]3×3⟹hθ(x)=a3=g(z3)=⎡⎣⎢⎢g(z311)g(z321)g(z331)g(z312g(z322g(z332)g(z313))g(z323))g(z333)⎤⎦⎥⎥⟹hθ(x)=a3=g(z3)=[g(z113)g(z123g(z133))g(z213)g(z223g(z233))g(z313)g(z323)g(z333)]=⎡⎣⎢⎢⎢⎢m=1时每个example对应的所有输出;h(x1)1h(x1)2h(x1)3m=2时h(x2)1h(x2)2h(x2)3m=3时;h(x3)1h(x3)2h(x3)3⎤⎦⎥⎥⎥⎥=[m=1时每个example对应的所有输出;m=2时m=3时;h(x1)1h(x2)1h(x3)1h(x1)2h(x2)2h(x3)2h(x1)3h(x2)3h(x3)3]假设 input:X=⎡⎣⎢⎢111x11x21x31x12x22x32x13x23x33⎤⎦⎥⎥;output:y=⎡⎣⎢122⎤⎦⎥=⎡⎣⎢y1y2y3⎤⎦⎥input:X=[1x11x21x311x12x22x321x13x23x33];output:y=[122]=[y1y2y3]该例子的背景为用神经网络识别手写体,即y1=1表示期望输出为1,y2=y3=2,表示其期望输出为2。
在计算代价函数的时候要将其每一个对应的输出转换为只含有0,1的向量y1=1表示期望输出为1,y2=y3=2,表示其期望输出为2。
在计算代价函数的时候要将其每一个对应的输出转换为只含有0,1的向量则有: y1=⎡⎣⎢100⎤⎦⎥;y2=⎡⎣⎢010⎤⎦⎥;y3=⎡⎣⎢010⎤⎦⎥⟹labelY=⎡⎣⎢⎢⎢m=1100m=2010m=3010⎤⎦⎥⎥⎥y1=[100];y2=[010];y3=[010]⟹labelY=[m=1m=2m=3100011000]对于如何将普通的输出值转换成只含有0,1的向量,戳此处则有(Malab中的矢量化形式): J(Θ)=(1/m)∗(sum(sum[−labelY.∗log(Hθ)−(1−labelY).∗log(1−Hθ)]));J(Θ)=(1/m)∗(sum(sum[−labelY.∗log(Hθ)−(1−labelY).∗log(1−Hθ)]));加上regularizedterm regular=λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θ(l)j,i)2;regular=λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θj,i(l))2;其实regularizedterm就是所有每一层的参数(Θlj,i,j≠0,即除了每一层的第一列偏置项所对应的参数)(Θj,il,j≠0,即除了每一层的第一列偏置项所对应的参数)的平方和相加即可。
具体到本文的例子就是:Θ1=[θ110θ120θ111θ121θ112θ122θ113θ123]2×4,Θ2=⎡⎣⎢⎢θ210θ220θ230θ211θ221θ231θ212θ222θ232⎤⎦⎥⎥3×3Θ1=[θ101θ111θ121θ131θ201θ211θ221θ231]2×4,Θ2=[θ102θ112θ122θ202θ212θ222θ302θ312θ322]3×3regular=(θ111)2+(θ112)2+(θ113)2+(θ121)2+(θ122)2+(θ123)2+(θ211)2+(θ212)2+(θ221)2+(θ222)2+(θ231)2+(θ232)2regular=(θ111)2+(θ121)2+(θ131)2+(θ211)2+(θ221)2+(θ231)2+(θ112)2+(θ122)2+(θ212)2+(θ222)2+(θ312)2+(θ322)2Matlab中矢量化为:s_Theta1=sum(Theta1.^2);%先求所有元素的平方,然后再每一列相加r_Theta1=sum(s_Theta1)-s_Theta1(1,1);%减去第一列的和s_Theta2=sum(Theta2.^2);r_Theta2=sum(s_Theta2)-s_Theta2(1,1);regular=(lambda/(2*m))*(r_Theta1+r_Theta2);。
在数字图像处理的时候我们用卷积来滤波是因为我们用的卷积模版在频域上确实是高通低通带通等等物理意义上的滤波器。
然而在神经网络中,模版的参数是训练出来的,我认为是纯数学意义的东西,很难理解为在频域上还有什么意义,所以我不认为神经网络里的卷积有滤波的作用。接着谈一下个人的理解。
首先不管是不是卷积神经网络,只要是神经网络,本质上就是在用一层层简单的函数(不管是sigmoid还是Relu)来拟合一个极其复杂的函数,而拟合的过程就是通过一次次backpropagation来调参从而使代价函数最小。
深度学习与神经网络关系2017-01-10最近开始学习深度学习,基本上都是zouxy09博主的文章,写的蛮好,很全面,也会根据自己的思路,做下删减,细化。
五、DeepLearning的基本思想假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为:I=>S1=>S2=>…..=>Sn=>O,如果输出O等于输入I,即输入I经过这个系统变化之后没有任何的信息损失(呵呵,大牛说,这是不可能的。
信息论中有个“信息逐层丢失”的说法(信息处理不等式),设处理a信息得到b,再对b处理得到c,那么可以证明:a和c的互信息不会超过a和b的互信息。这表明信息处理不会增加信息,大部分处理会丢失信息。
当然了,如果丢掉的是没用的信息那多好啊),保持了不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。
现在回到我们的主题DeepLearning,我们需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设我们设计了一个系统S(有n层),我们通过调整系统中参数,使得它的输出仍然是输入I,那么我们就可以自动地获取得到输入I的一系列层次特征,即S1,…,Sn。
对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息进行分级表达了。
另外,前面是假设输出严格地等于输入,这个限制太严格,我们可以略微地放松这个限制,例如我们只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的DeepLearning方法。
上述就是DeepLearning的基本思想。六、浅层学习(ShallowLearning)和深度学习(DeepLearning)浅层学习是机器学习的第一次浪潮。
20世纪80年代末期,用于人工神经网络的反向传播算法(也叫BackPropagation算法或者BP算法)的发明,给机器学习带来了希望,掀起了基于统计模型的机器学习热潮。这个热潮一直持续到今天。
人们发现,利用BP算法可以让一个人工神经网络模型从大量训练样本中学习统计规律,从而对未知事件做预测。这种基于统计的机器学习方法比起过去基于人工规则的系统,在很多方面显出优越性。
这个时候的人工神经网络,虽也被称作多层感知机(Multi-layerPerceptron),但实际是种只含有一层隐层节点的浅层模型。
20世纪90年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机(SVM,SupportVectorMachines)、Boosting、最大熵方法(如LR,LogisticRegression)等。
这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting),或没有隐层节点(如LR)。这些模型无论是在理论分析还是应用中都获得了巨大的成功。
相比之下,由于理论分析的难度大,训练方法又需要很多经验和技巧,这个时期浅层人工神经网络反而相对沉寂。深度学习是机器学习的第二次浪潮。
2006年,加拿大多伦多大学教授、机器学习领域的泰斗GeoffreyHinton和他的学生RuslanSalakhutdinov在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。
这篇文章有两个主要观点:1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wisepre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。
当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。
深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。
(多层的好处是可以用较少的参数表示复杂的函数)深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。
因此,“深度模型”是手段,“特征学习”是目的。
区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。
与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。
七、Deeplearning与NeuralNetwork深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
深度学习是无监督学习的一种。深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
Deeplearning本身算是machinelearning的一个分支,简单可以理解为neuralnetwork的发展。
大约二三十年前,neuralnetwork曾经是ML领域特别火热的一个方向,但是后来确慢慢淡出了,原因包括以下几个方面:1)比较容易过拟合,参数比较难tune,而且需要不少trick;2)训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优;所以中间有大约20多年的时间,神经网络被关注很少,这段时间基本上是SVM和boosting算法的天下。
但是,一个痴心的老先生Hinton,他坚持了下来,并最终(和其它人一起Bengio、Yann.lecun等)提成了一个实际可行的deeplearning框架。
Deeplearning与传统的神经网络之间有相同的地方也有很多不同。
二者的相同在于deeplearning采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看作是一个logisticregression模型;这种分层结构,是比较接近人类大脑的结构的。
而为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。
传统神经网络(这里作者主要指前向神经网络)中,采用的是backpropagation的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。
而deeplearning整体上是一个layer-wise的训练机制。
这样做的原因是因为,如果采用backpropagation的机制,对于一个deepnetwork(7层以上),残差传播到最前面的层已经变得太小,出现所谓的gradientdiffusion(梯度扩散)。
这个问题我们接下来讨论。
八、Deeplearning训练过程8.1、传统神经网络的训练方法为什么不能用在深度神经网络BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想。
深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源。
BP算法存在的问题:(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;(2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);(3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习;8.2、deeplearning训练过程如果对所有层同时训练,时间复杂度会太高;如果每次训练一层,偏差就会逐层传递。
这会面临跟上面监督学习中相反的问题,会严重欠拟合(因为深度网络的神经元和参数太多了)。
2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。
方法是:1)首先逐层构建单层神经元,这样每次都是训练一个单层网络。2)当所有层训练完后,Hinton使用wake-sleep算法进行调优。
将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。然后使用Wake-Sleep算法调整所有的权重。
让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的结点。
比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。
1)wake阶段:认知过程,通过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。
也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的”。2)sleep阶段:生成过程,通过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。
也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”。
deeplearning训练过程具体如下:1)使用自下上升非监督学习(就是从底层开始,一层一层的往顶层训练):采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是featurelearning过程):具体的,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数;2)自顶向下的监督学习(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调):基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deeplearning效果好很大程度上归功于第一步的featurelearning过程。
卷积公式是指两个函数f和g生成第三个函数的一种数学算子。表征函数f与经过翻转和平移的g的重叠部分的累积,如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是滑动平均的推广。
卷积公式特点在卷积神经网络中会用卷积函数表示重叠部分,这个重叠部分的面积就是特征,卷积公式是用来求随机变量和的密度函数pdf的计算公式,卷积公式是一种积分变换的数学方法,在许多方面得到了广泛应用。
用卷积公式解决试井解释中的问题,早就取得了很好成果,而反褶积直到最近Schroeter,Hollaender和Gringarten等人解决了其计算方法上的稳定性问题,使反褶积方法很快引起了试井界的广泛注意。
目前经常使用的深度神经网络模型主要有卷积神经网络(CNN)、递归神经网络(RNN)、深信度网络(DBN)、深度自动编码器(AutoEncoder)和生成对抗网络(GAN)等。
递归神经网络实际.上包含了两种神经网络。
一种是循环神经网络(RecurrentNeuralNetwork);另一种是结构递归神经网络(RecursiveNeuralNetwork),它使用相似的网络结构递归形成更加复杂的深度网络。
RNN它们都可以处理有序列的问题,比如时间序列等且RNN有“记忆”能力,可以“模拟”数据间的依赖关系。卷积网络的精髓就是适合处理结构化数据。
关于深度神经网络模型的相关学习,推荐CDA数据师的相关课程,课程以项目调动学员数据挖掘实用能力的场景式教学为主,在讲师设计的业务场景下由讲师不断提出业务问题,再由学员循序渐进思考并操作解决问题的过程中,帮助学员掌握真正过硬的解决业务问题的数据挖掘能力。
这种教学方式能够引发学员的独立思考及主观能动性,学员掌握的技能知识可以快速转化为自身能够灵活应用的技能,在面对不同场景时能够自由发挥。点击预约免费试听课。