热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DeepLearnig(递归神经网络)

递归神经网络一递归神经网络原理1.工作过程2.正向传播3.损失函数4.反向传播二升级版RNN:LSTM1.RNN局限2.解决方案:设计Gate,保存重要记忆3.LSTM生成4.逐步


递归神经网络



  • 一 递归神经网络原理


    • 1.工作过程

    • 2.正向传播

    • 3.损失函数

    • 4.反向传播


  • 二 升级版RNN:LSTM


    • 1.RNN局限

    • 2.解决方案:设计Gate,保存重要记忆

    • 3.LSTM生成

    • 4.逐步理解LSTM


      • (1)对旧的信息进行去除:

      • (2)确定什么样的新信息被保存:

      • (3)更新旧状态信息:

      • (4)确定输出的信息:


    • 5.LSTM变种


      • (1)Peephole connection

      • (2)Gate忘记/更新不再独立

      • (3)Gated Recurrent Unit (GRU)



  • 三 自然语言处理特征提取:Word2Vect


    • 1.建立字典

    • 2.训练数据集构建

    • 3.简单神经网络

    • 4.最终生成vec


  • 四 LSTM用于语言处理



一 递归神经网络原理


1.工作过程

   (1)文本处理(训练)

   (2)一个神经元,不同时刻

   (3)每个时刻都有输出



2.正向传播

ot=g(Vst)st=f(Uxt+Wst−1)\begin{array}{l}

\mathrm{o}_{t}=g\left(V \mathrm{s}_{t}\right) \\

\mathrm{s}_{t}=f\left(U \mathrm{x}_{t}+W \mathrm{s}_{t-1}\right)

\end{array}


       其中:g=softmax,f=tanh。
ot=g(Vst)=Vf(Uxt+Wst−1)=Vf(Uxt+Wf(Uxt−1+Wst−2))=Vf(Uxt+Wf(Uxt−1+Wf(Uxt−2+Wst−3)))=Vf(Uxt+Wf(Uxt−1+Wf(Uxt−2+Wf(Uxt−3+…))))\begin{aligned}

\mathrm{o}_{t} &=g\left(V \mathrm{s}_{t}\right) \\

&=V f\left(U \mathrm{x}_{t}+W \mathrm{s}_{t-1}\right) \\

&=V f\left(U \mathrm{x}_{t}+W f\left(U \mathrm{x}_{t-1}+W \mathrm{s}_{t-2}\right)\right) \\

&=V f\left(U \mathrm{x}_{t}+W f\left(U \mathrm{x}_{t-1}+W f\left(U \mathrm{x}_{t-2}+W \mathrm{s}_{t-3}\right)\right)\right) \\

&=V f\left(U \mathrm{x}_{t}+W f\left(U \mathrm{x}_{t-1}+W f\left(U \mathrm{x}_{t-2}+W f\left(U \mathrm{x}_{t-3}+\ldots\right)\right)\right)\right)

\end{aligned}



3.损失函数

Et(yt,y^t)=−ytlog⁡y^tE(y,y^)=∑tEt(yt,y^t)=−∑tytlog⁡y^t\begin{aligned}

E_{t}\left(y_{t}, \hat{y}_{t}\right) &=-y_{t} \log \hat{y}_{t} \\

E(y, \hat{y}) &=\sum_{t} E_{t}\left(y_{t}, \hat{y}_{t}\right) \\

&=-\sum_{t} y_{t} \log \hat{y}_{t}

\end{aligned}



4.反向传播

   (1) 参数优化方法:同传统神经网络一样,梯度下降;

   (2)计算损失函数对参数的导数;

   (3)每个输出都对参数有影响。

    (4)计算对w的导数:
∂E∂W=∑t∂Et∂W\frac{\partial E}{\partial W}=\sum_{t} \frac{\partial E_{t}}{\partial W}

        E3由t0−t3时刻x,W共同确定,Δs3=∂E3∂s3\Delta s_{3}=\frac{\partial E_{3}}{\partial s_{3}}

            t3时刻:
∂E3∂w=∂s3∂wΔs3\frac{\partial E_{3}}{\partial w}=\frac{\partial s_{3}}{\partial w} \Delta s_{3}

            t2时刻:
∂E3∂w=∂s3∂s2∂s2∂wΔs3\frac{\partial E_{3}}{\partial w}=\frac{\partial s_{3}}{\partial s_{2}} \frac{\partial s_{2}}{\partial w} \Delta s_{3}

            t1时刻:
∂E3∂w=∂s3∂s2∂s2∂s1∂s1∂wΔs3\frac{\partial E_{3}}{\partial w}=\frac{\partial s_{3}}{\partial s_{2}} \frac{\partial s_{2}}{\partial s_{1}}\frac{\partial s_{1}}{\partial w} \Delta s_{3}

            t0时刻:
∂E3∂w=∂s3∂s2∂s2∂s1∂s1∂s0∂s0∂wΔs3\frac{\partial E_{3}}{\partial w}=\frac{\partial s_{3}}{\partial s_{2}} \frac{\partial s_{2}}{\partial s_{1}} \frac{\partial s_{1}}{\partial s_{0}} \frac{\partial s_{0}}{\partial w} \Delta s_{3}
∂E3∂w=∑k=03∂s3∂sk∂sk∂wΔs3\frac{\partial E_{3}}{\partial w}=\sum_{k=0}^{3} \frac{\partial s_{3}}{\partial s_{k}} \frac{\partial s_{k}}{\partial w} \Delta s_{3}

   (5)计算对u的导数:同理有
∂E3∂U=∑k=03∂s3∂sk∂sk∂UΔs3\frac{\partial E_{3}}{\partial U}=\sum_{k=0}^{3} \frac{\partial s_{3}}{\partial s_{k}} \frac{\partial s_{k}}{\partial U} \Delta s_{3}

    (5)多层网络

      类比传统神经网络单层到多层的结构变化,额外添加上层前一状态。

    (6)双层网络

      输入信息正向、反向来输入RNN。这是由于信息的依赖关系顺序不是一定的。

    (7)Vanishing Gradient 问题

      注意到因为我们是用向量函数对向量求导数,结果是一个矩阵(称为Jacobian

    Matrix),矩阵元素是每个点的导数。

       影响:较长的记忆无法产生作用。

        解决方式:非线性激励更换;LSTM长短记忆单元。



二 升级版RNN:LSTM


1.RNN局限




2.解决方案:设计Gate,保存重要记忆




3.LSTM生成

   Ct是信息流控制的关键,参数决定了ht传递过程中,哪些被保存或者舍弃。该参数被Gate影响。

   LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个 pointwise 乘法操作。



4.逐步理解LSTM



(1)对旧的信息进行去除:

   新输入xt\mathcal{x}_{t}的前一状态ht−1\mathcal{h}_{t-1}决定C的哪些信息可以舍弃;

   ft\mathcal{f}_{t}Ct−1\mathcal{C}_{t-1}运算,对部分信息进行去除。



(2)确定什么样的新信息被保存:




(3)更新旧状态信息:




(4)确定输出的信息:


      问题: Gate的作用在哪里?有用的信息如何保存?

      Gate 输出it,ft,ot,用来引导Ct 的生成;

      训练后,Ct 的相关参数为,这样便可以保存有用的信息。



5.LSTM变种



(1)Peephole connection




(2)Gate忘记/更新不再独立




(3)Gated Recurrent Unit (GRU)

   遗忘、更新Gate做结合(既不是独立,又不是互补)

   控制参数CtC_t与输出ht结合,直接产生带有长短记忆能力的输出。

      其中,ztz_t用于更新,rtr_t用于遗忘,h~t\tilde{h}_{t}为临时控制参数的变形。



三 自然语言处理特征提取:Word2Vect


1.建立字典

   每个词生成one-hot向量。

   如:Word个数为n,产生n维向量,第i个Word的向量为(0,0,…,1,0,0,0,…),1处于第i个位置。



2.训练数据集构建

   通过原文本,建立一些词与词之间的词对,这些词对作为后面要继续训练的样本。



3.简单神经网络

   简易三层神经网络,各层神经元个数:N-m-N;

   学习的是词语到临近词的映射。



4.最终生成vec

   训练model进行特征提取;

   每个one-hot对应一个300-d的向量;

   生成最终的look up word table。



四 LSTM用于语言处理

   word形式:Word2Vec;

   训练过程:words->word;

   LSTM网络只有最后输出有用。

   训练目标:生成单词间条件概率



推荐阅读
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 视觉图像的生成机制与英文术语解析
    近期,Google Brain、牛津大学和清华大学等多家研究机构相继发布了关于多层感知机(MLP)在视觉图像分类中的应用成果。这些研究深入探讨了MLP在视觉任务中的工作机制,并解析了相关技术术语,为理解视觉图像生成提供了新的视角和方法。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 第三届人工智能、网络与信息技术国际学术会议(AINIT 2022)
    20223rdInternationalSeminaronArtificialIntelligence,NetworkingandInformationTechnology第三届 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 深入解析C++ Atomic编程中的内存顺序
    在多线程环境中,为了防止多个线程同时修改同一数据导致的竞争条件,通常会使用内核级同步对象,如事件、互斥锁和信号量等。然而,这些方法往往伴随着高昂的上下文切换成本。本文将探讨如何利用C++11中的原子操作和内存顺序来优化多线程编程,减少不必要的开销。 ... [详细]
  • 本文介绍了一个实用的工具类 `ListExtensions`,提供了多种针对 `List` 的扩展方法,包括无序和有序列表中的对象检索及计数功能。 ... [详细]
  • Exploring issues and solutions when defining multiple Faust agents programmatically. ... [详细]
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • 本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ... [详细]
  • 2018年热门趋势:轻松几步构建高效智能聊天机器人
    2018年,构建高效智能聊天机器人的简易步骤成为行业焦点。作为AI领域的关键应用,聊天机器人不仅被视为企业市场智能化转型的重要工具,也是技术变现的主要途径之一。随着自然语言处理技术的不断进步,越来越多的企业开始重视并投资于这一领域,以期通过聊天机器人提升客户服务体验和运营效率。 ... [详细]
  • 本文通过复旦大学自然语言处理课程中的一个具体案例,详细解析了中文词汇分割技术的实现方法。该案例利用Java编程语言,结合词典和算法模型,展示了如何高效地进行中文文本的词汇分割,为相关研究和应用提供了宝贵的参考。 ... [详细]
author-avatar
我的想念穿不透那面墙-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有