深层网络结构嵌入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深层网络结构嵌入相关的知识,希望对你有一定的参考价值。

参考技术A

由于平台限制,公式无法显示,更好阅读体验,请访问( http://tianle.me/2017/06/30/SDNE/ )

论文阅读 Structural Deep Network Embedding
本文的PDF版 深层网络结构嵌入
这学期选了非线性电路与系统,最近又在做网络表示的相关研究,特将平时看过比较好的论文写一写,和大家分享一下。

信息网络在现实世界中普遍存在,例如航空公司网络,出版物网络,通信网络和万维网。这些信息网络的规模从几百个节点到数百万和数十亿个节点不等。大规模信息网络的分析在学术界和工业界引起越来越多的关注。本文研究的是将信息网络嵌入到低维空间的问题,其中每个顶点都表示为一个低维向量。这种低维嵌入在各种应用中非常有用,如可视化,节点分类,链路预测和选择推荐。

网络嵌入目前依旧面临许多挑战。(1) 高维且非线性 ,深层的网络结构特征通常是非线性且高维的。因此,如何去描述学习这种高维非线性的特征是非常具有挑战性的。(2) 结构保持 ,为了能够将结果应用到一些具体的网络分析任务中,网络嵌入方法需要能够将网络结构较好的保存下来,但是隐藏的网络结构是非常复杂并且难以发现的。节点的特性往往依赖于其局部和全局的网络结构。(3) 稀疏性 ,真实世界中的大部分网络都是稀疏的,只能够利用极少数已发现的关系连接,因此还远远不能依此得到满意的效果。
近些年来,许多网络嵌入的方法相继被提出,它们采用了一些浅显的模型,比如说:IsoMAP,Laplacian Eigenmap(LE),Line。由于这些模型的局限性,它们很难获得网络高维的非线性特征。为了解决这个难题,本文提出了深层模型来学习网络中的节点表示。我们受深度学习的启发,因为其展现出了强大的表示学习能力,能够从复杂的网络中学习特征。它已经在图像、文本、语音等方面取得了卓越的成绩。特别的,我们提出的模型设计了多层的网络结构,这些结构是由许多非线性函数构成,能够将网络数据映射到隐藏的非线性空间中,从而挖掘出网络的非线性结构。
为了处理网络结构保存以及稀疏性问题,我们把一阶相似度和二阶相似度相结合,并融于学习过程中。一阶相似度是两个顶点之间的局部点对的邻近度,但由于网络的稀疏性,许多真实存在的边可能缺失,因此,一阶相似度不足以表示网络结构。因此我们更进一步地提出了二阶相似度,一对顶点之间的接近程度表示在网络中其邻域网络结构之间的相似性。通过一阶相似度和二阶相似度,我们可以很好的捕获网络的局部特性与全局特性。为了保证网络的局部和全局特性在我们的模型中有较好的表示,我们提出了一种半监督的结构,其中,无监督部分重构了二阶相似度,以保持全局网络结构。而有监督的部分利用一阶相似度作为监督信息来保存网络的全局结构。因此,所学的表示能够很好的保存网络的局部和全局结构。此外,从图1可以看出,在许多网络中二阶相似度邻近点对的数目比一阶相似度多很多。由此可以得到,二阶相似度的引入能够在描述网络结构方面提供更多的信息。因此,我们的方法对稀疏网络是鲁棒的。
[图片上传失败...(image-a552b0-1510922608055)]
图1

算法主要步骤:

算法主要步骤:
在图上随机游走产生长度为$2w + 1$的路径,对每个点随机$\\gamma $个随机游走序列。每一条随机游走路径便是相当于一个序列(相当于一句话),这样序列中的点就有上下文,定义一个时间窗口$w$,并进行马尔可夫假设,最后使用word2vec中的Skip-Gram训练每一个节点的向量。
Gram训练每一个节点的向量。
假设一个路径序列为% raw %$S = \\left v_1,...,v_|S| \\right $% endraw %,对于$v_i \\in S$,其上下文为% raw %$C = \\left v_i - w,v_i - w + 1,...,v_i + w - 1,v_i + w \\right$% endraw %, 那么DeepWalk的优化目标为:
% raw %$$f = \\frac1\\left| S \\right|\\sum\\limits_i = 1^\\left| S \\right| \\sum\\limits_ - w \\le j \\le w,j \\ne 0 \\log p(v_i + j|v_i) $$% endraw %
其中:
% raw %$$p\\left( v_j|v_i \\right) = \\fracexp\\left( c_v_j^Tr_v_i \\right)\\sum\\nolimits_v \\in C exp\\left( c_v_j^Tr_v_i \\right) $$% endraw %
% raw %$r_v_i$% endraw %是点$v_i$的向量表征, % raw %$c_v_i$% endraw %是点% raw %$v_i$% endraw %上下文中点$v_j$的向量表征。
DeepWalk使目标$f$最大化,使用Skip-Gram与Hierarchical Softmax进行训练得到每个点的vector,DeepWalk等价于MF(matrix factorization,矩阵分解)。

定义1(网络) :给定一个网络% raw %$G = \\left( V,E \\right)$% endraw %,其中% raw %$V = v_1, \\cdots ,v_n $% endraw %表示为n个节点,% raw %$E = e_i,j i,j = 1^n$% endraw %表示网络中所有边的集合。每一条边% raw %$e i,j$% endraw %与其网络中边的权重% raw %$s_i,j \\ge 0$% endraw %相关联。如果% raw %$v_i$% endraw %和% raw %$v_j$% endraw %之间没有连接,那么% raw %$s_i,j = 0$% endraw %,否则,对于无权图% raw %$s_i,j = 1$% endraw %,有权图% raw %$s_i,j > 0$% endraw %
网络嵌入的目的是将原始的高维网络数据映射到低维的表示空间中,网络中的每一个节点即可表示为一个低维向量,同时网络计算将会变得非常方便。正如我们之前提到的,网络的局部结构和全局结构都非常有必要在降维后保存下来,下面将详细定义一阶相似度和二阶相似度。
定义2(一阶相似度) :网络中的一阶相似度是两个顶点之间的局部点对的邻近度。对于由边(u,v)链接的每对顶点,该边的权重$s_u,v$表示u和v之间的一阶相似性,如果在u和v之间没有边,它们的一阶相似度为0。
一阶相似度通常意味着现实世界网络中两个节点的相似性。例如,在社交网络中成为朋友的人往往具有类似的兴趣;在万维网上互相链接的页面往往谈论类似的主题。由于一阶相似度的重要性,许多现有的图嵌入算法,如IsoMap,LLE,Laplacian Eigenmaps目的都是保持一阶相似度。
然而,在现实世界的信息网络中,能够观察到的链接只是小部分,许多隐藏的其他关系都没有被观察到。缺失链路上的一对节点,即使它们在本质上非常相似,然而他们的一阶相似度为0。 因此,只有一阶相似度对维持网络结构来说不是很有效。我们自然而然的想到,具有类似邻居的顶点往往是相似的。 例如,在社交网络中,分享相同内容的人往往具有相似的兴趣,从而成为朋友,在文本网络中,总是与同一组词汇共同出现的词往往具有相似的含义。 因此,我们定义二阶相似度,其补充了一阶相似性并能够保留网络结构。
定义3(二阶相似度) :二阶相似度对应于网络中的点对(u,v)是其邻域网络结构之间的相似性。数学上,让% raw %$\\rm\\mathcalN u = s u,1, \\cdots ,s_u,\\left| V \\right| $% endraw %表示一阶附近 u 与所有其他的顶点,那么 u 和v之间的二阶相似性由% raw %$\\rm\\mathcalN_u$和$\\rm\\mathcalN_v$% endraw %之间的相似性来决定。如果没有一个顶点同时和 u 与 v 链接,那么 u 和 v的二阶相似性是0。
定义4(网络嵌入) :给定网络% raw %$G = \\left( V,E \\right)$% endraw %,网络嵌入的问题是将每个顶点$v \\in V$表示为低维空间% raw %$\\mathbbR^d$% endraw %中的向量,学习函数$f:\\left| V \\right| \\mapsto \\mathbbR^d$,其中$d \\ll \\left| V \\right|$。在空间% raw %$\\mathbbR^d$% endraw %中,顶点之间的一阶相似度和二阶相似度都被保留。

在本篇文章中,我们提出了一个半监督的网络嵌入深度框架,整体框架如图2所示。具体来说,为了捕捉高维非线性的网络结构,我们提出了一个深层的体系结构,它由多个非线性映射函数组成,将输入数据映射到一个高维非线性的隐藏空间,以捕获网络结构。为了解决网络结构保持和稀疏性问题,我们提出了一个半监督模型来利用一阶和二阶相似度。对于每个顶点,我们都可以得到它的邻域。因此,我们设计了无监督的组件来保持二阶相似度,并重建每个顶点的邻域结构。同时,对节点的一部分,我们可以获得他们的一阶相似度。因此,我们设计了有监督的组件,利用一阶相似度作为监督信息来改进隐藏空间中的表示。通过联合优化所提出的半监督深度模型,SDNE可以保持高维的非线性网络结构,保证稀疏网络的健壮性。在接下来的部分中,我们将详细介绍如何实现半监督的深度模型。
[图片上传失败...(image-4ccde2-1510922608055)]
图2.网络整体结构

我们首先描述无监督组件如何利用二阶近似保持全局网络结构。
二阶相似性值指的是节点的邻居相似,因此模型的二阶相似性,需要每个节点邻居的性质。给定一个网络% raw %$G = \\left( V,E \\right)$% endraw %,我们可以获得到它的邻接矩阵S,它包含了n个元素$s_1, \\cdots s_n$,对于每一个元素% raw %$s_i = s_i,j j = 1^n$% endraw %,如果$v_i$与$v_j$间有相连的边,那么% raw %$s i,j > 0$% endraw %。因此,$s_i$描述了节点$v_i$的邻居结构,$S$提供了每一个节点的邻居结构信息。对于$S$来说,我们将传统的深度自编码器的进行延伸,用来保存网络的二阶相似性。
下面简单回顾一下深度自编码器的主要思想。它属于一种非监督模型,包含编码器与解码器。编码器由许多非线性函数构成,将输入数据映射到表示空间。对应的,解码器也由许多非线性函数构成,它将表示空间映射到输入数据的重构空间。给定输入数据$x_i$,其中对于各个层的隐藏表示如下公式进行计算:
% raw %$$y_i^(1) = \\sigma (W^(1)x_i + b^(1))$$% endraw %
% raw %$$y_i^(k) = \\sigma (W (k)y_i (k - 1) + b^(k)),k = 2, \\cdots ,K$$% endraw %
通过一系列编码器的计算,我们可以获得输出$\\hat x_i$。自动编码器的目标是尽量减少输入和输出的重构误差。损失函数可以表示为:
% raw %$$\\rm\\mathcalL = \\sum\\limits_i = 1^n \\left| \\hat x i - x_i \\right| 2^2 $$% endraw %
通过最小化损失函数能够较好的还原输入数据的原始表达,其表示空间能够提取出原始输入数据的特征。基于上述特性,我们将网络的邻接矩阵S作为自动编码器的输入,如: $x_i = s_i$,那么每一个元素$s_i$表示节点$v_i$邻居节点的特征。因此,通过重构可以让具有相似邻居结构的节点在隐藏的表示空间也具有相似的表达。
但是,仅仅通过这种方式还不能直接解决问题。因为在网络中,我们可以观察到一些连接,但是也有一些合法的连接是缺失的。此外,由于网络的稀疏性,在邻接矩阵$S$中,零元素远远大于非零元素。如果我们直接将S输入到传统的自编码器中,可能会导致大量的零元素出现在重构空间,这并不是我们想要的结果。为了解决这个问题,我们让其对非零元素的重构误差比零元素的惩罚更大。改进的目标函数如下所示:
% raw %$$\\beginarrayl\\rm\\mathcalL 2nd = \\sum\\limitsi = 1^n \\left| (\\hat x i - x_i) \\odot b_i \\right| 2^2 \\\\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt = \\left| (\\hat X - X) \\odot B \\right| F^2\\endarray$$% endraw %
其中$ \\odot $表示Hadamard积,% raw %$b_i = b i,j j = 1^n$% endraw %,如果% raw %$s i,j = 0$% endraw %,那么% raw %$bi,j = 1$% endraw %,否则$bi,j = \\beta > 1$。通过这种改进的损失函数,可以更好的让具有相似邻居的点在获得的表示空间也相似。换句话说,这个非监督部分能够很好的保存网络的二阶相似度。
不仅要维持全局网络结构,而且要捕获局部结构。我们使用一阶相似度表示网络局部结构。一阶相似度可以作为监督信息来约束一对顶点在隐藏表示空间的相似性。因此,我们设计了监督部分来利用一阶相似度。损失函数如下所示:
% raw %$$\\beginarrayl\\rm\\mathcalL 1nd = \\sum\\limits i = 1^n s_i,j\\left| y_i^(K) - y_j^(K) \\right| 2^2 \\\\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt = \\sum\\limits i = 1^n s_i,j\\left| y_i - y_j \\right| 2^2 \\endarray$$% endraw %
其中% raw %$Y^(k) = y_i^(k) i = 1^n$% endraw %为编码器获得的隐藏表示空间。
该公式的灵感来源于拉普拉斯特征映射(Laplacian Eigenmaps),在表示空间中,如果相似的节点相距较远,那么会受到一个较大的惩罚。通过这一操作,我们的模型能够很好的保持网络的一阶相似度。
我们同时考虑网络的一阶相似度和二阶相似度,另外在加上L2正则项,共同构成了自动编码器的损失函数:
% raw %$$\\beginarrayl\\rm\\mathcalL mix = \\rm\\mathcalL2nd + \\alpha \\rm\\mathcalL 1nd + \\upsilon \\rm\\mathcalL reg\\\\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt = \\left| (\\hat X - X) \\odot B \\right| F^2 + \\alpha \\sum\\limits i = 1^n s_i,j\\left| y_i - y_j \\right| 2^2 + \\upsilon \\rm\\mathcalL reg\\endarray$$% endraw %
其中:
% raw %$$\\beginarrayl\\rm\\mathcalL mix = \\rm\\mathcalL 2nd + \\alpha \\rm\\mathcalL 1nd + \\upsilon \\rm\\mathcalL reg\\\\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt \\kern 1pt = \\left| (\\hat X - X) \\odot B \\right| F^2 + \\alpha \\sum\\limits i = 1^n s_i,j\\left| y_i - y_j \\right| 2^2 + \\upsilon \\rm\\mathcalL reg\\endarray$$% endraw %

为了能够全面地评价算法得到的低维表示,我们使用了5个真实的网络数据,包括3个社交网络,1个引文网络,1个语言网络;实验了2类网络应用任务,包括多标签分类和可视化。考虑到各个网络数据的本身属性,对于每一类应用,我们使用了至少一个数据集进行试验。数据集的参数如下表所示:

表1. 网络数据集参数

我们实验与以下几个基准算法进行比较:DeepWalk、LINE、GraRep、Laplacian Eigenmaps、Common Neighbor。

对于多标签分类问题,我们采用micro-F1和macro-F1指标进行评价。对于标签A,我们将TP(A),FP(A)和FN(A)分别表示为属于A的样本被正确分类到A的数目,不属于A的样本被错误分类到A的数目和不属于A的样本被正确分类到了类别A的其他类的数目。假设 是整个标签集。Micro-F1和Macro-F1定义如下:
Macro-F1是一个每个类的权重的度量。 定义如下:
% raw %$$Macro - F1 = \\frac\\sum\\nolimits_A \\in \\rm\\mathcalC F1(A) \\left| \\rm\\mathcalC \\right|$$% endraw %
其中F1(A)是标签A的F1度量。
Micro-F1是对每个实例权重的度量。定义如下:
% raw %$$\\Pr = \\frac\\sum\\nolimits_A \\in \\rm\\mathcalC TP(A) \\sum\\nolimits_A \\in \\rm\\mathcalC (TP(A) + FP(A)) $$% endraw %
% raw %$$R = \\frac\\sum\\nolimits_A \\in \\rm\\mathcalC TP(A) \\sum\\nolimits_A \\in \\rm\\mathcalC (TP(A) + FN(A)) $$% endraw %
% raw %$$Micro - F1 = \\frac2*\\Pr *R\\Pr + R$$% endraw %

我们在本文中提出了一种多层的神经网络结构,层数随不同的数据集而做相应调整。每层的神经元数目如表2所示。其中BLOGCATALOG,ARXIV GR-QC和20-EWSGROUP使用了三层神经网络,FLICKR和YOUTUBE使用了四层。如果我们使用更深的模型,性能几乎保持不变,甚至变得更糟。

表2. 神经网络结构
对于我们的方法,通过在验证集上使用网格搜索(grid search)来调整 , 和 三个超参数。对于LINE,随机梯度下降的mini-batch大小设置为1。学习速率的初始值为0.025。负采样数(number of negative samples)为5,总采样数(the total number of samples)设为100亿。对于DeepWalk,我们将窗口大小设置为10,步长为40,每次采样40个顶点。对于GraRep,我们将最大转移矩阵步长(maximum matrix transition step)设置为5。

我们通过本实验中的多标签分类任务来评估不同网络表示的有效性。顶点的表示是从网络嵌入方法生成的,并被用作将每个顶点分成一组标签的特征。具体来说,我们采用LIBLINEAR软件包来训练分类器。训练分类器时,我们随机抽取标签节点的一部分作为训练数据,其余作为测试。对于BLOGCATALOG,我们随机抽取10%至90%的顶点作为训练样本,并使用剩余顶点来测试性能。对于FLICKR和YOUTUBE,我们随机抽取1%至10%的顶点作为训练样本,并使用剩余顶点来测试性能。另外,我们删除没有在YOUTUBE中被任何类别标记的顶点。我们重复进行5次实验,取Micro-F1和Macro-F1指标的平均值进行度量。结果分别如图3到图5所示。
[图片上传失败...(image-8c4a6-1510922608055)]
图3 .Micro-F1和Macro-F1在BLOGCATALOG上的表现
[图片上传失败...(image-953fed-1510922608055)]
图4 .Micro-F1和Macro-F1在FLICKR上的表现
[图片上传失败...(image-bce93a-1510922608055)]
图5 .Micro-F1和Macro-F1在YOUTUBE上的表现
在图3到图5中,我们算法的曲线一直高于其他基准算法的曲线。它表明,在多标签分类任务中我们算法学习得到的网络表示比其他算法得到的效果更好。
在图3(BLOGCATALOG)中,当训练百分比从60%下降到10%时,我们的方法在基准线上的改善幅度更为明显。它表明当标签数据有限时,我们的方法可以比基准算法有更显着的改进。这样的优势对于现实世界的应用尤其重要,因为标记的数据通常很少。
在大多数情况下,DeepWalk的性能是网络嵌入方法中最差的。原因有两个方面。首先,DeepWalk没有明确的目标函数来捕获网络结构。其次,DeepWalk使用随机游走来获得顶点的邻居,由于随机性而引起了很多噪音,特别是对于度数高的顶点。

网络嵌入的另一个重要应用是在二维空间上生成网络的可视化。对此我们在20-NEWSGROUP网络进行可视化的实验。我们使用不同网络嵌入方法学习的低维网络表示作为可视化工具t-SNE的输入。因此,每个新闻组文档被映射为二维向量。然后我们可以将每个向量可视化为二维空间上的一个点。对于被标记为不同类别的文档,我们在对应的点上使用不同的颜色。因此,良好的可视化结果能让相同颜色的点彼此靠近。可视化结果如图6所示。
[图片上传失败...(image-b52fc7-1510922608055)]
图6. 20-NEWSGROUP的可视化
每个点表示一个文档。点的颜色表示文档的类别。蓝色表示rec.sport.baseball的主题,红色表示comp.graphics的主题,绿色表示talk.politics.guns的主题。
从图7可以看出,LE和DeepWalk的结果并不理想,属于不同类别的点相互混合。对于LINE,形成不同类别的群集。然而,在中心部分,不同类别的文件仍然相互混合。对于GraRep,结果看起来更好,因为相同颜色的点分割成分组,但是,每个群体的边界不是很清楚。显然,SDNE的可视化效果在群体分离和边界方面都表现最好。

在本文中,我们提出了一种深层网络结构嵌入,即SDNE来执行网络嵌入。具体来说,为了捕获高维非线性的网络结构,我们设计了一个具有多层非线性函数的半监督深度模型。为了进一步解决网络结构保持和稀疏问题,我们同时使用了一阶邻近度和二阶邻近度来表示网络的局部和全局特征。通过在半监督的深度模型中优化它们,所学习的表示能够体现出网络的局部和全局特征,并且对稀疏网络是鲁棒的。我们在真实的网络数据集上试验了多标签分类和可视化任务。结果表明,我们的算法与当前最好的算法(state-of-the-art)相比有本质性的提高。

超重量级深层神经网络与优化算法

学习目标

  • 目标
    • 了解深层网络的前向传播与反向传播的过程
    • 了解深度学习遇到的一些问题
    • 知道批梯度下降与MiniBatch梯度下降的区别
    • 知道指数加权平均的意义
    • 知道动量梯度、RMSProp、Adam算法的公式意义
    • 知道学习率衰减方式
    • 知道参数初始化策略的意义

0. 为什么使用深层网络?

对于人脸识别等应用,神经网络的第一层从原始图片中提取人脸的轮廓和边缘,每个神经元学习到不同边缘的信息;网络的第二层将第一层学得的边缘信息组合起来,形成人脸的一些局部的特征,例如眼睛、嘴巴等;后面的几层逐步将上一层的特征组合起来,形成人脸的模样。

随着神经网络层数的增加,特征也从原来的边缘逐步扩展为人脸的整体,由整体到局部,由简单到复杂。层数越多,那么模型学习的效果也就越精确。

通过例子可以看到,随着神经网络的深度加深,模型能学习到更加复杂的问题,功能也更加强大。

1. 深层神经网络表示

1.1 什么是深层网络?

使用浅层网络的时候很多分类等问题得不到很好的解决,所以需要深层的网络。

2. 四层网络的前向传播与反向传播

在这里首先对每层的符号进行一个确定,我们设置L为第几层,n为每一层的个数,L=[L1,L2,L3,L4],n=[5,5,3,1]

2.1 前向传播

首先还是以单个样本来进行表示,每层经过线性计算和激活函数两步计算

我们将上式简单的用通用公式表达出来, x = a [ 0 ] x = a^{[0]} x=a[0]

  • m个样本的向量表示

2.2 反向传播

因为涉及到的层数较多,所以我们通过一个图来表示反向的过程

  • 反向传播的结果(理解)

单个样本的反向传播:

d Z [ l ] = d J d a [ l ] d a [ l ] d Z [ l ] = d a [ l ] ∗ g [ l ] ′ ( Z [ l ] ) dZ^{[l]}=\\frac{dJ}{da^{[l]}}\\frac{da^{[l]}}{dZ^{[l]}}=da^{[l]}*g^{[l]}{'}(Z^{[l]}) dZ[l]=da[l]dJdZ[l]da[l]=da[l]g[l](Z[l])

d W [ l ] = d J d Z [ l ] d Z [ l ] d W [ l ] = d Z [ l ] ⋅ a [ l − 1 ] dW^{[l]}=\\frac{dJ}{dZ^{[l]}}\\frac{dZ^{[l]}}{dW^{[l]}}=dZ^{[l]}\\cdot a^{[l-1]} dW[l]=dZ[l]dJdW[l]dZ[l]=dZ[l]a[l1]

d b [ l ] = d J d Z [ l ] d Z [ l ] d b [ l ] = d Z [ l ] db^{[l]}=\\frac{dJ}{dZ^{[l]}}\\frac{dZ^{[l]}}{db^{[l]}}=dZ^{[l]} db[l]=dZ[l]dJdb[l]dZ[l]=dZ[l]

d a [ l − 1 ] = W [ l ] T ⋅ d Z [ l ] da^{[l-1]}=W^{[l]T}\\cdot dZ^{[l]} da[l1]=W[l]TdZ[l]

多个样本的反向传播

d Z [ l ] = d A [ l ] ∗ g [ l ] ′ ( Z [ l ] ) dZ^{[l]}=dA^{[l]}*g^{[l]}{'}(Z^{[l]}) dZ[l]=dA[l]g[l](Z[l])

d W [ l ] = 1 m d Z [ l ] ⋅ A [ l − 1 ] T dW^{[l]}=\\frac{1}{m}dZ^{[l]}\\cdot {A^{[l-1]}}^{T} dW[l]=m1dZ[l]A[l1]T

d b [ l ] = 1 m n p . s u m ( d Z [ l ] , a x i s = 1 ) db^{[l]}=\\frac{1}{m}np.sum(dZ^{[l]},axis=1) db[l]=m1np.sum(dZ[l],axis=1)

d A [ l ] = W [ l + 1 ] T ⋅ d Z [ l + 1 ] dA^{[l]}=W^{[l+1]T}\\cdot dZ^{[l+1]} dA[l]=W[l+1]TdZ[l+1]

3. 参数与超参数

3.1 参数

参数即是我们在过程中想要模型学习到的信息(模型自己能计算出来的),例如 W[l]W[l],b[l]b[l]。而**超参数(hyper parameters)**即为控制参数的输出值的一些网络信息(需要人经验判断)。超参数的改变会导致最终得到的参数 W[l],b[l] 的改变。

3.2 超参数

典型的超参数有:

  • 学习速率:α
  • 迭代次数:N
  • 隐藏层的层数:L
  • 每一层的神经元个数:n[1],n[2],…
  • 激活函数 g(z) 的选择

当开发新应用时,预先很难准确知道超参数的最优值应该是什么。因此,通常需要尝试很多不同的值。应用深度学习领域是一个很大程度基于经验的过程。

深度学习难以在大数据领域发挥最大效果的一个原因是,在巨大的数据集基础上进行训练速度很慢。而优化算法能够帮助我们快速训练模型,提高计算效率。接下来我么就去看有哪些方法能够解决我们刚才遇到的问题或者类似的问题

4. 优化遇到的问题

  • 梯度消失
  • 局部最优

4.1 梯度消失

梯度函数上出现的以指数级递增或者递减的情况分别称为梯度爆炸或者梯度消失

假设 g ( z ) = z , b [ l ] = 0 g(z) = z, b^{[l]} = 0 g(z)=z,b[l]=0,对于目标输出有: y ^ = W [ L ] W [ L − 1 ] . . . W [ 2 ] W [ 1 ] X \\hat{y} = W^{[L]}W^{[L-1]}...W^{[2]}W^{[1]}X y^=W[L]W[L1]...W[2]W[1]X

  • 对于 W [ l ] W^{[l]} W[l]的值大于 1 的情况,激活函数的值将以指数级递增;
  • 对于 W [ l ] W^{[l]} W[l]的值小于 1 的情况,激活函数的值将以指数级递减。

在计算梯度时,根据不同情况梯度函数也会以指数级递增或递减,导致训练导数难

以上是关于深层网络结构嵌入的主要内容,如果未能解决你的问题,请参考以下文章

第一门课:神经网络和深度学习(第四周)——深层神经网络

深层网络搜索核心技术研讨

第四周:深层神经网络(Deep Neural Networks)

超重量级深层神经网络与优化算法

神经网络深层网络实现

深层神经网络常用方法