没有合适的资源?快使用搜索试试~ 我知道了~
可在www.sciencedirect.com在线获取理论计算机科学电子笔记347(2019)161-177www.elsevier.com/locate/entcs神经网络通过前向状态变换和后向损失变换巴特·雅各布斯1大卫·斯普朗格2计算与信息科学研究所(iCIS)荷兰国立信息科学日本东京摘要本文研究(多层感知器)神经网络,重点是所涉及的转换(向前和向后),以便开发符合的语义/逻辑视角。标准的程序语义。常见的双通道神经网络训练算法使这种观点特别适合。在前向方向上,神经网络充当状态转换器,对多集单子使用Kleisli合成-用于网络层的线性部分。然而,在相反的方向上,神经网络将输出的损失改变为输入的损失,从而像(实值)谓词Transformer一样起作用。在这种方式下,反向传播是函的建设,如最近在其他作品。我们通过训练一个简单的神经网络实例来说明这一观点关键词:神经网络,反向传播,多层感知器,状态-效果三角形,损失变换1介绍虽然人们对人工智能和机器学习的兴趣一直很高,但近年来公众对成功应用的接触明显增加。从推荐引擎、语音人脸识别和文本预测等面向消费者的应用程序到超人表现的突出例子(DeepMind虽然可以理解的兴奋围绕着不断扩大的目录,丰富的应用程序借给一种神秘感,神经网络和算法,1电子邮件:bart@cs.ru.nl2电子邮件:sprunger@nii.ac.jphttps://doi.org/10.1016/j.entcs.2019.09.0091571-0661/© 2019作者。出版社:Elsevier B.V.这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。162B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161Σ训练它们的核心是一种特殊的计算机程序。在这个领域中有关程序的一个观点是所谓的状态和结果三角形,它强调程序作为状态和谓词转换器的双重性质。该框架起源于量子计算,但具有广泛的应用,包括确定性和概率计算[6]。神经网络中常见的两遍训练方案使得它们的双重作用特别明显。在“向前方向”上运行的神经网络就像一个函数:给定一个输入信号,它们就像大脑(的数学模型)一样这是一种状态转换。然而,在这是一种谓词转换,采用关于输出处的损失的实值谓词,并产生关于输入处的损失源的实值谓词。本文提出的主要新颖观点将这种状态和效果“三角形”用于神经网络。这种状态与效果框架也被用来理解人类推理的其他人工表示,包括贝叶斯网络[7]。近年来,很明显,神经网络的架构对于其在特定问题领域的准确性和可训练性非常重要[3]。这导致了专业架构的发展,每个架构都适合其应用。我们在这里的目标不是在一个框架中表达各种各样的特殊神经网络,而是将神经网络一般地描述为状态和谓词转换器之间的这种二元性的一个实例。因此,我们将使用一种简单的、适当通用的神经网络类型,称为多层感知器(MLP)。我们将这篇论文视为将现代语义和逻辑技术应用于神经网络的最新步骤之一,例如[1,2]。本文的主要贡献是它将自己的网络层表示作为Kleisli映射-作为[1]中给出的表示的替代。 好了,- 神经网络层n→m,其中函数Rn→Rm作为预期含义,表示为映射P×n→m,其中P是参数的未指定的抽象对象。这些参数通常是Rn×m中的矩阵,表示网络层的线性部分在[1]中,参数的更新是通过一个“更新”函数P × n × m→ P和一个“请求”函数P × n × m → n来处理的,这些层的顺序(和并行)组成可以用非平凡的字符串图来表示这里,我们遵循一种简单得多的方法,该方法不相反,网络层的线性部分通过多集单子M的Kleisli映射表示。 状态x ∈ Rn沿着层的前向传播则通过Kleisli复合非常自然地表示,涉及熟悉的线性表达式i wij·xi,其权重wij用作输入xi的标量。本文从一元计算的角度阐述了这种方法,它是“明显的”,比抽象参数对象P的方法更具体。它允许我们描述反向传播B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161163具体地说,就是矩阵和导数。这部分的故事可以与程序语义学中的谓词转换进行比较,后者也是反向工作的。由于神经计算的分类建模仍处于起步阶段,因此说哪一种是'最好的'还为时过早,我们还没有技术成果往那个方向走事实上,为不同的代表留下空间是有意义的。 我们期望这些神经网络的形式化方法能够派上用场 随着社区开发可解释的人工智能,其目标是用人类可理解的解释来扩展自动化决策/分类。在这种情况下,我们相信拥有一个多样化的技术库将是一个宝贵的资源;我们对过早地试图根据具有不可比拟方面的有用性对正式方法进行排名持谨慎态度。纲要在本文中,我们首先描述MLP,它们组成的层,以及它们作为状态转换的前向语义(第2节)。在第3节中,我们给出了损失函数的相应向后变换,并在第4节中使用它来制定反向传播。最后,在第5节中,我们通过将其转换为函子来讨论反向传播的合成性质,并特别将我们的工作与[1]进行比较。2前向状态变换就像普通程序一样,神经网络通常被细分为功能单元,然后可以顺序和并行地组合。这些子网通常被称为层,并且几个层的顺序组成被定义为“深度”网络3。有许多常见的层类型,通常可以通过命名层类型和这些层的组成方式来描述神经网络。前馈网络是一类重要的神经网络,其各层的组成结构形成一个有向无环图,各层之间可以任意放置以使得没有层被用作到较早层的输入的顺序。多层感知器是一种特殊类型的前馈网络,其中所有层都具有相同的通用架构,称为全连接层,并且严格按顺序组成。正如在引言中提到的,MLP可能是原型神经网络架构,因此我们将这种网络类型视为代表性示例。在后续,我们将使用短语更具体地说,一个层由两个节点列表组成,它们之间有向边3相反,层的164B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161、⎪⎪⎩从节点i到节点的j,权重为T(i)(j)。他们 例如,具有两层的神经网络可以被描绘如下。你好,·你好,·z你好··z··zz·zz·我们将用特殊的箭头3 2来表示这样的网络,其中数字3、4和2对应于每个阶段的节点数。这些箭头涉及权重、偏置、掩码和激活,参见下面的定义2.1。这些箭头的(前向)语义由函数R3→R4→R2给出。我们将在定义2.3中对它们进行更详细的描述。 我们首先关注单个层次。在下面的定义中,我们将写M(n)= Rn和P(n)={k∈N|kn}。在幂集P的这种描述中,我们将自然数n ∈ N与n个b{0,1, .. . , n-1}belown. 我们将在下面的备注2.2中进一步说明M和P。定义2.1自然数n,k∈N之间的单层nk由三个函数给出:n+1个TM(k)转换函数nMP(k)掩码函数Rα<$R是一个函数。转换函数T可以被分解成一对[Tw,Tb],其中Tw:n→ M(k)捕获权重,Tb∈ M(k)捕获偏置。掩码函数M:n→ P(k)捕获了连接和可变性;它的工作方式如下,对于i∈n和j∈k。j∈M(i)表示存在可变连接从节点i到节点j,加权T(i)(j)当T(i)(j)=0时,节点i到节点j⎪j/∈M(i)和T(i)(j)/= 0意味着有 是 一 不可变的要求激活函数α:R→R是可微分的。可变性仅用于确定在反向传播之后应该更新哪些权重。特别是,M不用于前向传播,我们经常在它不起作用的情况下省略M,包括前向传播。⎧B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161165.⟩Σ注2.2运算M和P称为多重集和幂集。 它们都在集合和函数的范畴Set上形成单子。一般来说,它们在集合I上被定义为:P(I)={S|SI}M(I)={λ:I→R| supp(supp)是有限的,其中supp(i)={i∈I|{i(i)/=0}是f的支持。一个函数f也可以写成形式和:第1章 |i1⟩ + ··· +rm|im其中supp(i)={i1,.,im}<$I rk=<$(ik)∈R.这就解释了为什么这样的一个元素<$k ∈M(I)有时被称为I上的多重集:它计数重数为rk=<$k(ik)∈R的元素ik∈I。在本文中,我们将把这些单子P和M专门用于自然数,作为有限集合;在这种情况下,M(n)=Rn,如上所述我们不会真的使用P和M是单子,除了下面的构造:每个函数T:I→ M(J)有一个'Kleisli'或'线性'扩张T=M(I)→ M(J),由下式给出T(i)(j)= T(i)(j)·(i)。(一)i∈In层上的转移映射T是伴随函数Rn→Rk的线性部分,激活函数α是非线性部分. 这种线性作用 通过使用这个线性扩展T来强调T。请注意,如果T(i)(j)= 0,则来自节点i的输入对 结果。因此,这对应于在层中没有连接i→j。当涉及到更新时,我们必须区分权重为0,因为没有连接-因此它仍然是0 -和权重在某个时间点碰巧为零,但在更新后可能变为非零。 这通过掩码函数M来完成。定义2.3令n =T,M,α= n = k层,如定义2.1所示。 它以如下方式产生(可微分)函数[T,α]]:Rn→Rk[[T,α]](x):=α.T(x,1)(二)注意,我们使用符号x∈Rn来表示实数xi∈R的向量。类似地,符号α用于将α:R→R坐标方式应用于T(x,1)∈Rk,其中T在(1)中定义。T(x,1)中的附加输入1用于处理偏置,如下面的示例中所示函数[T,α]]:Rn→Rk表示(正向)状态变换.一些-166B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161.1+e我们用另一种符号对于状态转换,定义为:(T,α)x:= [[T,α]](x).这种表示法与损失转换相结合,向后工作,特别有启发性。解释函数[T,α]执行通常称为前向传播的操作。我们将向量x∈Rn称为状态;它们描述了神经网络中特定阶段与n个我们也可以说前向传播涉及到状态转换--一个层nk将Rn中的状态转换为Rk中的状态。下面的例子4说明了解释函数是如何工作的。例2.4考虑下面的两层神经网络。·0。15英里,0英里。4岁,·0。2•0。30。25z0。450。550。5你好,(三)0。35◦0。350。6◦0。6我们将这个网络描述为两层:2T,M,σ z2S,M,σ z2whereM(i)=2={0,1}σ(z)=1−z在这个网络中,所有的连接都是可变的,如函数M所示,它将每个i∈2发送到整个子集M(i)= 2< $2。激活函数是所谓的sigmoid函数σ,对于两层,由σ(z)= 1/(1+e-z)给出。两个转移函数T、S具有类型3→ M(2)。它们的定义由网络中箭头上的标签给出(3):T(0)= 0。15 |0分+ 0分。25|1S(0)= 0。4 |0分+ 0分。5|1 ⟩T(1)= 0。2|0分+0分。3|1S(1)= 0。45|0分+0分。55|1 ⟩T(2)= 0。35|0分+0分。35|1S(2)= 0。6|0分+0分。6|1美元。或者,可以将T、S看作矩阵:T=.0。15020岁35S=.0。40. 450. 6Σ4The例如是采取从马特 马祖尔博 客,在https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/.0。250 30分。350。50.5506B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161167..···Σ ⟩因此,根据(2),我们得到:[[T,σ]](x0,x1)=<$σ. T∈(x0,x1,1)(0)∈,σ.T(x0,x1,1)(1)=σ=σT(0)(0)·x0+T(1)(0)·x1+T(2)(0)·1,σ T(0)(1)x0+T(1)(1)x1+T(2)(1)10。15·x0+0。2·x1+0。35度,σ。0。25·x0+0。3·x1+0。35Σ⟩[[S,σ]](y0,y1)=<$σ.0。4·y0+0。45·y1+0。6μ m,σ。0。5·y0+0。55·y1+0。六个月。我们可以看到偏置是如何通过(3)中的“开放”节点的箭头来描述的网络将初始状态转换为0。05,0。1∈R2首先变成5:[[T,σ]](0. 05,0。1)= σ(0. 3775),σ(0. 3925)= 0。59326999,0。59688438⟩随后,它产生最终状态:[[S,σ]](0. 59327,0。59688)= σ(1. 10591),σ(1. 22492)= 0。75136507,0。77292847我们将NN写为神经网络的范畴,如[1]所示。它的对象是自然数n∈N,对应于n个节点。NN中的态射n→k是一系列层n···k,形成一个神经网络。NN中的组合由序列的连接给出;(标记的)空序列被用作每个对象n的恒等映射。接下来,我们为实多元可微分函数范畴写RF:对象是自然数,态射n→k是可微分函数 Rn→Rk。命题2.5前向状态变换(传播)产生函子NN→RF,这是对象上的恒等式。 NN中 的 态 射 n→k , 由 下 式 给 出将 层 序 列 <$l1 , ··· , lm<$ 发 送 到 复 合[[lm]]<$···<$[[l1]]:Rn →Rk,理解为NN中的空序列<$n:n→n被发送到恒等函数Rn → Rn。这通过构造产生一个函子Q根据这个描述,我们将解释态射N=第一,...,lm:n→k在范畴NN中作为函数[N]=[lm]]···[[l1]]:Rn→Rk。我们也写Nxfor[N]](x).3后向损失变换在神经网络理论中,人们使用一个常见的选择是5这里的计算和例4.5中的计算都是用简单的Python代码完成的,使用了numpy图书馆168B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161Σ.Σ|.n=NL(x)2我以下. 给定结果y∈Rk和目标t∈Rk,我们将其视为损失:1(yi−ti)2在这里,我们从这种计算的精确形式中抽象出来,并使用函数L来表示损失。事实上,我们将目标t纳入损失函数,因此对于上面的例子,我们可以给L类型L:Rk→R,定义为:y| = L:= L(y)有效性符号|=从向量y∈Rk是状态(k型),损失函数L:Rk→R是谓词(k型)的观点中出现。 符号y|= L则表示状态y下的损失L的值。现在我们来讨论沿层的损失的反向变换。我们忽略可变性,因为它不起作用。定义3.1设(T,α):nk为单层。该层的余域k上的每个损失函数L:Rk→R可以通过以下方式转换为域n上的损失函数(T,α)L:Rn→R(T,α)L:= L<$[[T,α]]:Rn→Rk→ R.对于一个态射N=11,...,lm:n→k在我们定义的神经网络的范畴NN中:NL:= l1···(lnL)= L [[lm]]···[[l1]]= L [[N]]。我们现在可以用公式表示一个熟悉的有效性和转换属性,请参见例如[4、6]。引理3.2对于NN中的任意神经网络N:n→k,任意损失函数L:Rk→R和任何状态x∈Rn,有:NX|= L=x| = NL.(四)证明通过这些符号的定义:Nx=L=L Nx=. L[[N]](x)= x| = NL.Q许多形式的状态和谓词转换可以用“状态和结果三角形”的形式来描述在这里,它采用以下形式。B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161169、X定理3.3在三角形中有状态函子Stat和谓词函子PredHom(−,R)开始行动,Pred不Hom(−,R)NNzSetStat由下式给出Pred(n)=RRnStat(n)=RnPred(N)= N(−)=(−)[[N]Stat(N)= N(−)= [[N]](−)。Q上面的三角形在一个方向上交换:Hom(−,R)Stat = Pred.为了在另一个方向上获得交换,我们通常将范畴Set限制为代数结构的一个适当的子范畴。例如,在概率计算中,状态形成凸集,谓词形成有效模块,参见例如[4,5]。在目前的情况下,神经网络仍然需要研究哪些代数结构是相关的。这在当前的一般设置中不是那么清楚,例如,因为我们对我们使用的损失函数没有限制。4反向传播在神经网络的设置中,反向传播是执行层(的线性部分)更新的关键步骤。在这里,我们将根据上一节中使用的损失函数L对这种更新进行抽象描述。事实上,我们假设通常所说的学习率η也包含在L中。设αT,M,αT:n→k为一层。给定一个输入状态a∈Rn和一个(可区分的)损失谓词L:Rk→R,我们将定义一个梯度(a,L)(T)并用它把T变成T-M其中,可变映射M:n→ P(k)被用作k×n布尔矩阵(只有0它确保只更新可变连接定义4.1在刚才描述的情况下,梯度可以给出为:(a,L)(T):=. -是的(X,α)a|=L(T).(五)我们引入了一个新的约束变量X,以清楚地表明我们感兴趣的导数。X的类型与T相同,即k×(n+1)矩阵。170B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161⎛,X记作LJ:Rk→Rk。 第一部分,LJ(T,α)(6)的a)在Rk中。为了计算这个梯度,我们回想一下(可微分)函数f:Rn→Rm的导数是偏导数的m×nF11号线 ···1美元fJ=0 .fm.fm1号线 ···引理4.2在定义4.1的情况下,(i) 梯度ε(a,L)(T)可以计算为:其中sj= LJ((T,α)a)j·αJ(T<$(a,1)j)。((−)T中的上标T表示“矩阵转置”,与转换映射T无关。)(ii) 在α是S形函数σ的特殊情况下,点(i)中的向量s是Hadamard乘积:s=LJ(b)<$b<$(1−b)其中b=(T,σ)a.证明多元函数的链式法则给出了矩阵的乘积:n(a,L)(T)=LJ.(T,α)a)·αJ.T(a,1)·。<$X<$(a,1)<$(T).(6)对这三个部分逐一进行了阐述。• 损失函数L:Rk→R的导数为。通过其部分派生,• α:R→R的坐标应用α:Rk→Rk应用于序列T<$(a,1)∈Rk的导数由k×k对角矩阵组成,其中元素αJ(T<$(a,1)j)位于位置j,j。我们把这条对角线写为一个矢量<$αJ(T<$(a,1)j)<$∈Rk.因此,(6)中前两个因子的乘积可以写成阿达玛(坐标)乘积:LJ.(T,α)a)αJ(T.• 对于(6)中的第三部分,我们注意到X<$→X<$(a,1)是一个函数Rk×(n+1)→Rk。它的雅可比矩阵的第j行由k×(n+1)矩阵组成,其中a在第j行为1,其他地方为零实际上,第j个坐标X(a,1)j由下式给出:⎟⎠B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161171X_n(a,1)j= X_j_1a_1+···+X_jna_n+ X_j(n +1).对变量Xji求导,得到k×(n+1)172B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161⎜⎜⎝⎟⎠⎛⎞XX=LJ.[[T,α]](y)·[[T,α]]J(y)⎜⎝..好吧∗ΣΣ·∗..=⎟·X(S)=X矩阵:0···0 0a1···an10··· 0 0←rowj因此,<$X<$(a,1)<$(T)由k个这样的矩阵堆叠在每个矩阵的顶部组成。其他.(i) 记为sj=LJ((T,α))a)j·αJ(T<$(a,1)j)我们可以把前面的三个项目符号放在一起,把梯度<$(a,L)(T)写为外积:我是一个...1美元。Σ一···an1=s·(a,1)T.1a1sk···ansksk俄罗斯联邦(ii) 直接从(i)开始,因为σJ=σ(1−σ)。Q接下来,我们感兴趣的是多层的梯度。(S,β)(T,α)命题4.3考虑两个连续的层m=n=k,初始状态为a∈ Rm和损失函数L:Rk → R. 用于更新S的 梯 度 为:. -是的(T,α)(X,β)a|=L(4). -是的(X,β)a|=(T,α)L(S)=(a,(T,α)L)(S)。转换损失的导数(T,α)L是链式法则:. (T,α)LJ(y)=.LJ.[[T,α]](y)αJ.T(y,1)·[T],(7)其中[T]是从k×(n + 1)矩阵T通过省略最后一列而获得的k × n矩阵。更一般地,对于适当类型的神经网络N,M,. -是的N(X,α)Ma|=L(S)=(Ma,NL)(S).上述命题中的第一个等式显然成立。我们专注于第二个方程(7):.(T,α)LJ(y)=. L<$[[T,α]]<$J(y)=LJ[[T,α]](y) αJ T(y,1)TJ(y,1)=.LJ.[[T,α]](y)αJ.T(y,1)·[T].B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161173..ΣΣ我们仍然需要证明TJ(y,1)=[T],其中[T]是通过删除最后一列从T函数T(−,1)的类型为Rn→Rk,因此导数TJ(y,1)是一个k×n矩阵,元素在i,j处,由下式给出T阿吉吉(Ti1y1+···+Tinyn+Ti(n+1))阿吉吉=Tij.对于1≤i≤k和1≤j≤n,这些Tij一起形成k×n矩阵[T]。 Q注4.4方程(7)揭示了一个重要的点:对于反向传播的实际计算,我们对损失变换不太感兴趣,而是对侵蚀变换感兴趣,在侵蚀变换中,我们引入单词“侵蚀”作为损失函数L的导数L j的对于这种侵蚀变换,我们引入了新的符号。设(T,α):nk为单层,E:Rk→Rk为我们将其转换为另一个侵蚀函数(T,α)<$E:Rn→Rn,如下(7):.(T,α)E(x):=.E.[[T,α]](x)αJ.T(x,1)·[T].(八)通过构建,我们有:. (T,α)L<$J=(T,α)<$LJ.(九)从概念上讲,我们认为损失转换比侵蚀转换更基本,因为损失转换会导致定理3.3中的“三角形”情况。此外,侵蚀变换可以通过导数和损失变换来表示,如上面的等式(9)所示。很明显,我们可以将Rumin(8)从单层扩展到多层(神经网络)。如果α是sigmoid函数σ,则(8)的右侧简化为:(T,σ)<$E(x)=E(y)<$y<$(1 − y)·[T]其中y =(T,σ)X.(十)我们在前面的例子中说明了反向传播。例4.5我们继续例2.4,计算相关梯度,以更新具有两层的神经网络(3)中的转换映射/矩阵T,S(T,σ)(S,σ) 2z2z2我们将输入、中间和最终状态分别写为:a= 100。05,0。1⟩b=(T,σ)a= 100。59326999,0。59688438⟩c=(S,σ)b= 100。75136507,0。77292847=174B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)1612.Σ.Σ−·.Σ·ⓈⓈ−.Σ=.Σ−·E(c)c(1 −c)·[T]本例中的目标是100。01,0。99<$∈R2,使得损失函数L:R2→R和它的L(x)=1η。(x1−0. 01)2+(x2−0. 99)2E(x)=ηx1−0。01x2-0 99度。学习率η被设置为0。5.转换矩阵T、S的更新在反向方向上工作。通过引理4.2,我们得到梯度:((T,σ)a,L)(S)= s·(b,1)T其中s = E(c)<$c <$(1 − c)=0。082167040. 08266763 0. 13849856。-0。02260254 − 0。02274024− 0。03809824因此,更新后的最后一个转换函数/矩阵S为:Ss (b,1)T =0。35891648 0. 408666190. 530750720。51130127 0. 561370120. 61904912我们的下一个目标是更新前面的第一个转换函数/矩阵T。(a,(S,σ)L)(T)= t·(a,1)T其中t=((T,σ)<$E)(b)<$b<$(1−b)(十)、.ΣΣ=s[T]b(1b)=0。000438570. 000877140.008771350。00049771 0. 000995430. 00995425然后,神经网络的更新后的第一个矩阵是Tt (c,1)T =0. 14978072 0. 199561430. 345614320。249751140. 299502290. 34502287这对应于脚注4中提到的Mazur博客中给出的数字这个例子说明了反向传播可以以递归的方式完成,因为第一步中的值s在第二步中的t中被重用5反向传播的功能性在最近的一篇论文[1]中,给出了神经网络的分类分析。它的主要结果是反向传播的组合性,通过描述反向传播作为一个函子。在本节中,我们首先描述当前框架中反向传播的功能性,然后与[1]进行比较。bB. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161175.≤Ja=我.≤JF=我我JJNPJ我们将SL写为“状态和损失”类别• SL的对象是三元组(n,a,L),其中a∈Rn是n型状态,L:Rn→R是同类型n的(可微分)损失函数。• 态射N:(n,a,L)→(k,b,K)是范畴NN中的神经网络N:n→k,使得b=Na且K=NL。存在一个明显的遗忘函子U:SL→NN,由U(n,a,L)=n给出,U(N)=N。定义5.1用以下方式定义反向传播B:SL→NN在对象上,我们简单地取G(n,a,L)=n。接下来,令N = N11,...,lm∈ SL中的态射(n,a,L)→(k,b,K),其中li=(Ti,αi,Mi).我们写道:• a0:=a和ai+1:=liai;这给出了状态列表a0,a1,.,一分钟后,am=b,根据假设;• Km:=K和Ki−1:=liKi;这给出了损失函数的列表Km其中K0=L。然后B(N):n→k被定义为一个层的列表,长度m与N相同,其分量为:B(N)i:=<$Ti− Mi<$$>(ai−1,Ki)(Ti),αi,Mi<$.(回想一下,Mi是一个布尔定理5.2反向传播B:SL→NN是函子。证明这是“即时的”,但写下细节涉及到一点簿记。设(n,a,L)-→(k,b,K)-→(l,c,F)是SL中的(可复合)态射,其中N =nl1,.,lu=1,...,pv. 我们记为li=<$TN,αN,MN<$,类似地,pj= αTP,αP,MPα. 定义5.1中的两个项目符号中的程序产生:图N和图K分别为:•0, . ,u=0, . 其中a0=a,ai+1=liai且b0=b,bj+1=PJbi;我们有b0 = b = Na = Na0=au;• K0,.,KuF0,.,Fv,其中Ku= K,Ki−1=liKi和Fv=F,Fj−1=pjFj,则Ku= D = PF = PFv=F0。从复合层序的角度看,lu,p1,.,我们可以通过相同的过程并获得序列{a,J,.. . ,aJu+v和<$F0J, . ,FuJ+v,其中:ai如果i p我bi−p否则如果jpJFj-p否则。现在我们可以描述更新后的网络B(PN)的组成部分。为176B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)1611≤i≤u且1≤j≤v,无无无无无无无B(PN)i=Ti−MiⓈ∇(a′i−1,Fi′)(Ti),αi,Mi⟩=<$TN−MN<$$>(a,K)(TN),αN,MN<$我我=B(N)ii−1我我我=. B(P)B(N)PPPPPB(P<$N)u+j=<$Tj−Mj<$$>(a′u+j−1,Fu′+j)(Tj),αj,Mj<$=<$TP−MP <$$>(b,F)(TP),αP,MP<$J J=B(P)jj−1jj j j=. B(K)<$B(N)<$p+j。Q我们通过与[ 1 ]的比较来结束本节,在[1]中首次证明了反向传播是函子的。[1]中的方法比我们的方法更抽象,也更具体。(i) 这里,神经网络的层(T,α):nk由线性部分组成T:n+ 1 → M(k)和非线性部分α:R→R。我们暂时忽略可变矩阵M。如定义2.3所示,层(T,α)产生一个解释函数[T,α]]:Rn → Rk,它执行向前状态变换(T,α)(−)。在[1]中,没有层的这种具体描述。相反,本文使用“参数化”函数P ×Rn → Rk。我们的方法适合于这个框架,取线性部分的集合P = M(k)n+1 =(Rk)n+1作为参数集。这些参数化函数被组织在一个范畴帕拉,这是对称monoidal。(ii) 这里通过损失函数L:Rk→R抽象地描述了网络nk和目标t∈Rk的状态转换结果的比较。这个更一般的观点允许我们定义沿着网络N的损失变换NL。因此,我们已经开发了一个神经网络计算的观点,向前和向后的转换,这是符合标准的方法(分类)程序语义。这就产生了定理3.3中的状态-效应三角形。此外,我们还证明了存在一个相关的在[1]的形式主义中,向后计算也起作用,通过请求函数它对应于我们的侵蚀变换(8),大致为:r(l,a,b)=(l<$LJb)(a),其中LJb是与“目标”b相关的损失函数Lb(iii) 在这里,我们集中讨论了序列结构。在文献[1]中,平行组合也是以对称幺半群结构的形式考虑的。对我们来说,这种额外的结构是留给未来的工作。B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)1611776结论在本文中,我们将神经网络作为状态和效果框架中的程序进行了研究。特别地,我们将神经网络对输入的应用描述为一种通过Kleisli合成的状态变换,并将损失沿网络的反向传播描述我们还观察到,反向传播的组合性对应于状态和结果类别到神经网络类别之间的映射的功能性。为了说明神经网络的这一观点,我们特意选择了已知网络架构的一个简单子类,并构建了一类多层感知器(MLP)。然而,我们相信有可能开发出一种更丰富的分类结构,能够捕获更广泛的网络架构。这可能是今后工作的重点我们还考虑了一个单一的训练方案:反向传播与随机梯度下降配对(具有固定的学习率)。我们有兴趣对其他类型的神经网络训练进行分类建模。正如在定理3.3之后的讨论中所提到的,在状态-效应三角形的右上顶点中通常有一个代数结构的类别,我们还没有确定。确认第一作者(BJ)感谢欧洲研究理事会根据欧盟第七框架计划(FP 7/2007-2013)/ERC赠款协议No 320571提供的支持 第二作者(DS)由 JST ERATO HASUO系统设计项目的元数学(编号JPM-JER 1603)。引用[1] Fong , B. , D.Spi vak 和 R.Tuy'eras , Backp ropasfunctor : Acompositionpers pativeonsupervisedlearning(2019),lICS 2019,to appear; see arxiv.org/abs/1711.10455.[2] Ghica , D. , K. Muroya , S. Chung , V. Darvariu 和 R. Rowe , A functional perspective on machinelearning via programmable induction and abduction,J. Gallagher和M. Sulzmann,编辑,函数和逻辑编程,在Lect中编号10818注释对比Sci. (2018),pp.84比98[3] 古 德 费 洛 岛, Y. Bengio 和A. Courville, “Deep Learning , ”MIT Press , 2016, http: //www.deeplearningbook.org。[4] Jacobs,B.,分类逻辑的新方向,经典,概率和量子逻辑,比较逻辑方法。Sci. 1 1 (3)(2015),参见https://lmcs.episciences.org/1600.[5] Jacobs,B.,从概率单子到交换集合,编程中的逻辑和代数方法94(2017),pp。200-237[6] Jacobs,B., 状态三角形和输出三角形的配方,比较科学中的逻辑方法。 13(2)(2017),见https://lmcs.episciences.org/3660网站。[7] 雅各布斯湾和F. Zanasi,贝叶斯推理的逻辑要点,在:概率编程(book章 节 ,将于2019年出 现 ),见arxiv.org/abs/1804.01193。178B. Jacobs,D.Sprunger/Electronic Notes in Theoretical Computer Science 347(2019)161[8] Rumelhart,D. E、G. E. Hinton和R. J. Williams,Learning representations by back-propagatingerrors,Nature323(1986),pp. 533-536
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功