• 【69】循环神经网络


    1.1 为什么选择序列模型
    序列模型的应用
    语音识别:将输入的语音信号直接输出相应的语音文本信息。无论是语音信号还是文本信息均是序列数据。
    音乐生成:生成音乐乐谱。只有输出的音乐乐谱是序列数据,输入可以是空或者一个整数。
    情感分类:将输入的评论句子转换为相应的等级或评分。输入是一个序列,输出则是一个单独的类别。
    DNA序列分析:找到输入的DNA序列的蛋白质表达的子序列。
    机器翻译:两种不同语言之间的想换转换。输入和输出均为序列数据。
    视频行为识别:识别输入的视频帧序列中的人物行为。
    命名实体识别:从输入的句子中识别实体的名字。

    这些序列模型基本都属于监督式学习,输入x和输出y不一定都是序列模型。如果都是序列模型的话,模型长度不一定完全一致。

    1.2 数学符号
    符号含义

    字典编码
    利用一个字(词)典向量,通常有3-5万个字(词)。
    可以利用one-hot编码,指出输入的序列中每个单词的向量
    与字典向量大小一致
    是单词的索引位置1,其他位置0

     从上图可以看出字典里一共有10000个单词,从a开始,到zulu为止,这10000个单词排列成为一个1*10000的列向量。对于Harry这个单词,其对应的向量X(1)如上图,因为Harry这个词位于词典中的第4075个位置,所以X(1)就是第4075个元素为1,其余全为零的1*10000的列向量。

    1.3 循环神经网络模型

    网络内部结构(激活函数是tanh):

     

     简单说一下反向传播的过程,假设上图是一个完整的RNN,h(···)就是a0。L=L(t-1)+L(t)+L(t+1)。上图有三个W,从左到右命名为W123,最终的dw=1/3*(dw1+dw2+dw3)。上图中的h就是之前的a。下面是参数w的反向传播计算过程:

    dw3=L(t+1)对w3的偏导=L(t+1)对h(t+1)的偏导*  h(t+1) 对w3的偏导=dh(t+1)*  h(t+1) 对w3的偏导

    dw2=L(t)对w2的偏导+L(t+1)对w2的偏导=L(t)对h(t)的偏导*h(t) 对w2的偏导+L(t+1)对h(t)的偏导*h(t) 对w2的偏导=(L(t)对h(t)的偏导 +L(t+1)对h(t)的偏导)*h(t) 对w2的偏导=dh(t)*h(t) 对w2的偏导=(L(t)对h(t)的偏导 +L(t+1)对h(t+1)的偏导*h(t+1)对h(t)的偏导)*h(t) 对w2的偏导=(L(t)对h(t)的偏导 +dh(t+1)*h(t+1)对h(t)的偏导)*h(t) 对w2的偏导

     同理可求 dw1=dh(t-1)*h(t-1) 对w1的偏导=(L(t-1)对h(t-1)的偏导 +dh(t)*h(t)对h(t-1)的偏导)*h(t-1) 对w1的偏导

    反向传播的核心就是多元函数求导法则:

     

     

     

     

    以  Cat eat fish. 这句为例,演示一下计算这句话的概率过程:

    这句话的概率P=第一个单词是cat的概率*第一个单词是cat时第二个词是eat的概率*第一个单词是cat第二个词是eat时第三个词是fish的概率*第一个单词是cat第二个词是eat第三个词是fish时第四个词是.(EOS)的概率    最后这个概率可有可无,因为有时不把EOS放在词典里。

    1.先从y1帽里找到第一个词是cat的概率P1

    2.令x2=y1即令x2=cat对应的列向量。  这个列向量就是之前说的one-hot,然后从y2帽里找到第二个词是eat的概率P2

    3.令x3=y2即令x3=eat对应的列向量。 然后从y3帽里找到第三个词是fish的概率P3

    4.令x4=y3即令x4=fish对应的列向量。 然后从y3帽里找到第四个词是.(EOS)的概率P4

     最后的概率P=P1*P2*P3*P4

    上述是求概率的问题,那么如果生成一个有三个单词的句子,过程是怎样的?

     流程图与上图类似,只不过y1和y2不是提前知道的了。首先从y1帽里找出来最高概率的词A,y1就是该词对应的O向量,即对应位置为1,其它全为零。然后再从y2帽里找出来最高概率的词B,y2就是该词对应的O向量,即对应位置为1,其它全为零。然后得到y3帽,从y3帽里找出最高概率的词C。A B C就是生成的含三个单词的句子。

     

     

     左图中的第三次式子的第一个伽马漏了下标u

     

     

     

     上图是三个单元连接在一起的LSTM的简图。下边这条线是a,上边这条是c。只要合理设置遗忘门和更新门,LSTM就能把C0的值一直向右传递,传递给C3。

     双向RNN的工作过程:首先进行正向计算:依次算出a1→、a2→、a3→,然后进行反向计算:依次算出a3←、a2←、a1←。然后再由a1→和a1←算出y1,由a2→和a2←算出y2,以此类推。

     

  • 相关阅读:
    小清新数论题泛做
    近日模考理数压轴题简记
    带边数的无向连通图计数
    ZJOI2019 简记
    SDOI2019 R2D2 题解
    [补档题解]后缀树节点数
    [BJ United Round 3] 押韵
    高维 DFT 算法(FWT 快速沃尔什变换)
    SDOI2019 R2D1 题解
    LOJ#6713. 「EC Final 2019」狄利克雷 k 次根 加强版
  • 原文地址:https://www.cnblogs.com/lau1997/p/12392861.html
Copyright © 2020-2023  润新知