[{"data":1,"prerenderedAt":318},["ShallowReactive",2],{"content-query-DTVzSSMwdx":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"type":12,"category":13,"body":14,"_type":312,"_id":313,"_source":314,"_file":315,"_stem":316,"_extension":317},"/technology-blogs/zh/1887","zh",false,"","【MindSpore易点通】深度学习系列-循环神经网络下篇","给大家带来循环神经网络的反向传播以及不同的循环网络介绍","2022-09-28","https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2022/09/30/391060e835fc4b1ea624dd9ec92bb4b9.png","technology-blogs","基础知识",{"type":15,"children":16,"toc":306},"root",[17,25,31,49,58,63,71,109,162,170,175,180,188,200,205,213,225,230,238,243,248,253,258,270,278,283,291,296,301],{"type":18,"tag":19,"props":20,"children":22},"element","h1",{"id":21},"mindspore易点通深度学习系列-循环神经网络下篇",[23],{"type":24,"value":8},"text",{"type":18,"tag":26,"props":27,"children":28},"p",{},[29],{"type":24,"value":30},"上期我们已经对循环神经网络的基础结构进行了简单介绍，今天小编给大家带来循环神经网络的反向传播以及不同的循环网络介绍。",{"type":18,"tag":32,"props":33,"children":35},"h2",{"id":34},"_14-反向传播",[36,42,44],{"type":18,"tag":37,"props":38,"children":39},"strong",{},[40],{"type":24,"value":41},"1.4",{"type":24,"value":43}," ",{"type":18,"tag":37,"props":45,"children":46},{},[47],{"type":24,"value":48},"反向传播",{"type":18,"tag":26,"props":50,"children":51},{},[52],{"type":18,"tag":53,"props":54,"children":57},"img",{"alt":55,"src":56},"cke_9577.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113312.60130759256708796533494437536063:50530929073910:2400:235748F9743B40C1AFF50349ECC2F094121B26E677E7D33DEE912B178ED7CEAC.png",[],{"type":18,"tag":26,"props":59,"children":60},{},[61],{"type":24,"value":62},"通过上图可以看到，前向传播在网络中就是从左到右地计算这些激活项，直到输出所有地预测结果，而反向传播算法则需要在相反的方向上进行计算和传递信息，从而计算出所有合适的量，通过导数相关的参数，用梯度下降法来更新参数。",{"type":18,"tag":26,"props":64,"children":65},{},[66],{"type":18,"tag":53,"props":67,"children":70},{"alt":68,"src":69},"cke_29333.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113335.11037833382525230575603289515346:50530929073910:2400:6AB4F905F918E7DD897ED968A3A5A9BB798DD8C5B20561479A22E4662268FC66.png",[],{"type":18,"tag":26,"props":72,"children":73},{},[74,76,81,83,88,90,95,97,102,104],{"type":24,"value":75},"首先分析下前向传播的计算，输入序列：",{"type":18,"tag":53,"props":77,"children":80},{"alt":78,"src":79},"cke_200750.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113443.65964203075034648277144375724594:50530929073910:2400:C6AB8DDE2D3421E1817F69246339F23ACD240AC79D0FB4F9CC6BF038C0A29C6F.png",[],{"type":24,"value":82},"，通过",{"type":18,"tag":53,"props":84,"children":87},{"alt":85,"src":86},"cke_215814.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113504.21210187181862438961439216543501:50530929073910:2400:06F72C08E57797F803B3BD45005C1DA6C77E2B02C1C51401181E437CF22D7EE7.png",[],{"type":24,"value":89},"计算出时间步1的激活项，通过",{"type":18,"tag":53,"props":91,"children":94},{"alt":92,"src":93},"cke_227950.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113526.14743068836156836944821880920783:50530929073910:2400:046B1642FAFF81AD8861E654FC87F729E64F28A327EFB1ABA7352B8A37B27E2C.png",[],{"type":24,"value":96},"计算出",{"type":18,"tag":53,"props":98,"children":101},{"alt":99,"src":100},"cke_241054.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113543.69182751537840114380468701778979:50530929073910:2400:BC601FBE33C9945CACE4188090615952D66850B440189B175F0C2A49A8853181.png",[],{"type":24,"value":103},"，然后计算",{"type":18,"tag":53,"props":105,"children":108},{"alt":106,"src":107},"cke_253321.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113620.29102522090374569191328978248264:50530929073910:2400:19CD88D0CCD79AA15D474ACBCE7670FB76716978CBDCDA4C143C02DC7A3EB684.png",[],{"type":18,"tag":26,"props":110,"children":111},{},[112,113,118,120,125,127,132,134,139,141,146,148,153,155,160],{"type":24,"value":96},{"type":18,"tag":53,"props":114,"children":117},{"alt":115,"src":116},"cke_265652.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113659.17384492726537686907378031956964:50530929073910:2400:94BCCE028A75F243F010DD816C1BAFBE66A4A7DA87840D32B7E6E666D45FC848.png",[],{"type":24,"value":119},"，其实我们还需要",{"type":18,"tag":53,"props":121,"children":124},{"alt":122,"src":123},"cke_278825.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113715.24707255617426972650850389476272:50530929073910:2400:ABE8AC1E9F64A50F2ED6758DC3D03D6908CABAEB1DC107689C237884688D57CE.png",[],{"type":24,"value":126},"，所有的这些激活项都要取决于参数",{"type":18,"tag":53,"props":128,"children":131},{"alt":129,"src":130},"cke_292045.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113724.00593900876775876195816270997912:50530929073910:2400:339BE183B5B2C3AB781A2C4FF84486AB2A96EBF46E4FE588FAA7EFD3217C5E10.png",[],{"type":24,"value":133},";最终有了",{"type":18,"tag":53,"props":135,"children":138},{"alt":136,"src":137},"cke_305297.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113741.02559577483060792934520051628033:50530929073910:2400:68423368041CD655CAF92E3EB9B575FAE9340FA4465358AA2BD5CCD2A2B5E26E.png",[],{"type":24,"value":140},"，神经网络就可以计算第一个预测值",{"type":18,"tag":53,"props":142,"children":145},{"alt":143,"src":144},"cke_317648.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113803.30105334049907131516670561935226:50530929073910:2400:6AAD5AB06EB78088D4F2E982EC5FCB7CD72AE890C7493455C607E4987E1E14A3.png",[],{"type":24,"value":147},"，接着到下一个时间步，继续计算出",{"type":18,"tag":53,"props":149,"children":152},{"alt":150,"src":151},"cke_331114.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113825.39976356311688421768877994921068:50530929073910:2400:831AFE3E49C5DF1CDF3800B78638FFF700E455A9D3F93446C178B89B16A7CADE.png",[],{"type":24,"value":154},"，同理参数",{"type":18,"tag":53,"props":156,"children":159},{"alt":157,"src":158},"cke_343207.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113842.12866020078240011303523746738671:50530929073910:2400:0E5027030EE08A18D3999382FD9734C7E3A1A7C64635EFD71B5077919994C9EC.png",[],{"type":24,"value":161},"将被用于所有这些节点。",{"type":18,"tag":26,"props":163,"children":164},{},[165],{"type":18,"tag":53,"props":166,"children":169},{"alt":167,"src":168},"cke_355329.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113909.73204497884049678891684315442425:50530929073910:2400:6E5A02666B4BF14CF40327AB57B5D023A9932C05FB7AE65FADE2ADA6C3AE18F2.png",[],{"type":18,"tag":26,"props":171,"children":172},{},[173],{"type":24,"value":174},"反向传播有一点不太相同的是，我们还需要一个损失函数。",{"type":18,"tag":26,"props":176,"children":177},{},[178],{"type":24,"value":179},"首先定义一个元素的损失函数：",{"type":18,"tag":26,"props":181,"children":182},{},[183],{"type":18,"tag":53,"props":184,"children":187},{"alt":185,"src":186},"cke_370604.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927113947.20768812691455939058590982190935:50530929073910:2400:614ABBE70DB5A1F460FA7A7AF9EA68B7E2F35952AF81B4B05CFD5904F4C3DE4C.png",[],{"type":18,"tag":26,"props":189,"children":190},{},[191,193,198],{"type":24,"value":192},"它对应的是序列中一个具体的词，如果它是某个人的名字，那么",{"type":18,"tag":53,"props":194,"children":197},{"alt":195,"src":196},"cke_415277.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927114045.46566502763743371768428172033475:50530929073910:2400:56286A800C1F14DCC92B4422A2FDDC5910533023F683EBDFC43724C287A092FE.png",[],{"type":24,"value":199},"的值就是1，然后神经网络将输出这个词是名字的概率值，比如0.1，可以理解为某个时间步上某个单词的预测值的损失函数。",{"type":18,"tag":26,"props":201,"children":202},{},[203],{"type":24,"value":204},"然后定义整个序列的损失函数：",{"type":18,"tag":26,"props":206,"children":207},{},[208],{"type":18,"tag":53,"props":209,"children":212},{"alt":210,"src":211},"cke_429549.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927114332.21441656967875001419342908994141:50530929073910:2400:A899BE93FD361343DBF40796D2F4677E044AAFD17C57A4A4C981A2312A8E8ADF.png",[],{"type":18,"tag":26,"props":214,"children":215},{},[216,218,223],{"type":24,"value":217},"通过",{"type":18,"tag":53,"props":219,"children":222},{"alt":220,"src":221},"cke_443914.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927114459.41974165898134672456726863892902:50530929073910:2400:137CDD8D8054D93E708EA14D28A16E6FD0C38EA3AF451FBB0EF6F78E953F50BA.png",[],{"type":24,"value":224},"可以计算对应的损失函数，于是计算出第一个时间步的损失函数，第二个时间步的损失函数，...，一直到最后一个时间步，最后为了计算出总体损失函数，把每个单独时间步的损失函数都加起来。",{"type":18,"tag":26,"props":226,"children":227},{},[228],{"type":24,"value":229},"RNN反向传播示意图：",{"type":18,"tag":26,"props":231,"children":232},{},[233],{"type":18,"tag":53,"props":234,"children":237},{"alt":235,"src":236},"cke_459350.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927114712.36595774431092870558753588937946:50530929073910:2400:B83326E0F1A54FE41122AAE87D2C86E3588D7D54C6BECE104A2037736890FFAC.png",[],{"type":18,"tag":26,"props":239,"children":240},{},[241],{"type":24,"value":242},"典型的循环神经网络",{"type":18,"tag":26,"props":244,"children":245},{},[246],{"type":24,"value":247},"常规来说，在RNN结构中它的输入量Tx等于输出数量Ty，但实际上也可能不一定相等。",{"type":18,"tag":26,"props":249,"children":250},{},[251],{"type":24,"value":252},"比如我们上期提到的音乐生成这个例子，Tx可以是长度为1或空集。或者输入长度和输出长度不同，都是序列但长度不同，比如机器翻译，一个法语句子和一个英语句子不同数量的单词却能表达同一个意思。",{"type":18,"tag":26,"props":254,"children":255},{},[256],{"type":24,"value":257},"当Tx=Ty时，可以称之为“多对多”（many-to-many）的结构，因为输入序列有很多的输入，而输出序列也有很多输出。",{"type":18,"tag":26,"props":259,"children":260},{},[261,263,268],{"type":24,"value":262},"当Tx和Ty不相等时，比如“对于今天的用餐进行评价”，输出对应数字1-5分，所以x就是一个序列，而y可能是从1到5的一个数字。简化神经网络的结构，一次输入一个字，",{"type":18,"tag":53,"props":264,"children":267},{"alt":265,"src":266},"cke_493384.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927115210.84214138683619516383502088976082:50530929073910:2400:BF2F41F01A7C8038C33D1D7509053519BA0CE5F1BAFE0B0375D99EA984421E34.png",[],{"type":24,"value":269},"，但是并不会在每个时间上都有输出，而是让RNN网络读入整个句子，然后在最后一个时间上得到输出。这样的神经网络叫做“多对一”（many-to-one）结构，它有很多输入，然后输出一个数字。",{"type":18,"tag":26,"props":271,"children":272},{},[273],{"type":18,"tag":53,"props":274,"children":277},{"alt":275,"src":276},"cke_511903.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927115231.39348142556590839761706369988098:50530929073910:2400:458A0442430AF6FA9D1A4543FF3C95955AF80C03682522245EABCE16F9941634.png",[],{"type":18,"tag":26,"props":279,"children":280},{},[281],{"type":24,"value":282},"当然也有“一对一”（one-to-one）的结构，输入然后得到输出，这和我们之前讨论的神经网络没有太大区别。",{"type":18,"tag":26,"props":284,"children":285},{},[286],{"type":18,"tag":53,"props":287,"children":290},{"alt":288,"src":289},"cke_528456.png","https://fileserver.developer.huaweicloud.com/FileServer/getFile/cmtybbs/5e4/e02/8f7/550440a1fe5e4e028f77e5cf18005adc.20220927115253.41160748956082471894136169099195:50530929073910:2400:780BAC47C77C5AC1A8AF3CEF7B5E721E9011C53936AD5E2FC8984952BA391695.png",[],{"type":18,"tag":26,"props":292,"children":293},{},[294],{"type":24,"value":295},"另外也可以有“一对多”（one-to-many）的结构。比如以音乐生成为例，使用一个神经网络输出一些音符。输入可以是一个整数或者0向量。",{"type":18,"tag":26,"props":297,"children":298},{},[299],{"type":24,"value":300},"还有一点需要注意的是，如果输入和输出长度不同，比如一句话翻译成英语，中文字数和输出句子的单词数量不相同，这里就需要上图2中的一个网络结构。这个网络结构有两个不同的部分，一部分是编码器，获取输入，另一部分是解码器，它会读取整个句子，然后输出翻译成其他语言的结果。",{"type":18,"tag":26,"props":302,"children":303},{},[304],{"type":24,"value":305},"关于循环神经网络的介绍大体就结束啦，欢迎各位在小编的基础上进行补充呀！",{"title":7,"searchDepth":307,"depth":307,"links":308},4,[309],{"id":34,"depth":310,"text":311},2,"1.4 反向传播","markdown","content:technology-blogs:zh:1887.md","content","technology-blogs/zh/1887.md","technology-blogs/zh/1887","md",1776506116715]