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

递归神经网络cs224n

语言模型:

词袋模型(BoW)-简单:
一篇文本(文章)被表示成"装着词的袋子",也就是说忽略文章的词序和语法,句法;将文章看做词的组合,文中出现的每个词都是独立的,不依赖于其他词.虽然这个事实上并不成立,但是在实际工作中,效果很好.
如下,在词袋模型BoW中,每个词的数量表示有多种方法:可以表示为0-1(在这篇文章中,这个词出现了没有–词集模型),词频(在这篇文章中,这个词出现了多少次),也可以用tf-idf.
递归神经网络 cs224n
词袋模型在较小数据集上有一定优势,深度学习模型在较大数据库上取得更好的效果。
发现两者其实是极为相似的.在词袋模型中,对底层特征进行特征编码的过程,实际上近似等价于卷积神经网络中的卷积层,而汇聚层所进行的操作也与词袋模型中的汇聚操作一样。不同之处在于,词袋模型实际上相当于只包含了一个卷积层和一个汇聚层,且模型采用无监督方式进行特征表达学习,而卷积神经网络则包含了更多层的简单、复杂细胞,可以进行更为复杂的特征变换,并且其学习过程有监督过程。
短语结构树-复杂:
额外再标注一些诸如指代、语义等标签。

语义合成性

snowboarder 《==》people on the snowboard
就算一个人没见过snowboarder这个单词,他也能明白这与下面这个短语是同一个意思。人们可以用更大颗粒度的文本来表达自己的意思,而不仅仅是词袋中的某个单词。有什么模型可以做到这一点呢?

它希望通过同时学习句法树和复合性向量表示,能够达到将短语映射到词向量空间(这不可能说用vocabulary dict去学习,因为短语的组合是无穷的)
递归神经网络 cs224n

递归神经网络(recursive neural network)

得到一个向量表示,以及得到一个结构得分
最简单的Recursive Neural Network
利用单层的神经网络作为组合函数,向量内积作为打分函数,马上就可以得到一个最简单的RNN:
递归神经网络 cs224n

用RNN分析句子
计算任意两个单词合并的得分(虽然下图是相邻两个,但我觉得那只是绘图方便;就算是我第一次写的玩具级别的依存句法分析器,也是任意两个单词之间计算):

递归神经网络 cs224n

然后贪心地选择得分最大的一对合并:

递归神经网络 cs224n

重复这一过程

递归神经网络 cs224n

直到得到根节点:

递归神经网络 cs224n

Recursive vs. recurrent neural networks

递归神经网络 cs224n
两者都是递归神经网络,只不过前者在空间上递归,后者在时间上递归。中文有时会把后者翻译为“循环神经网络”,但这明显混淆了等级,令人误解。

它们各有各的优缺点,Recursive neural net需要分析器来得到句法树,而Recurrent neural net只能捕捉“前缀”“上文”无法捕捉更小的单位。

但人们还是更倾向于用后者,LSTM之类。因为训练Recursive neural net之前,你需要句法树;句法树是一个离散的决策结果,无法连续地影响损失函数,也就无法简单地利用反向传播训练Recursive neural net。另外,复杂的结构也导致Recursive neural net不易在GPU上优化。

Recursive vs. convolution neural networks

RNN只会为满足语法的短语计算向量,而CNN为每个可能的短语计算向量。从语言学和认知科学的角度来讲,CNN并不合理。甚至recurrent neural network也比tree model和CNN更合理。

两者的关系可以这样想象,RNN将CNN捕捉的不是短语的部分删除了:

递归神经网络 cs224n

得到:

递归神经网络 cs224n
更强的递归神经网络:

  • 改进不同短语结构学习不同的组合函数的神经网络
  • 改进向量为矩阵的神经网络
    详情还是看
    http://www.hankcs.com/nlp/cs224n-tree-recursive-neural-networks-and-constituency-parsing.html
    https://blog.csdn.net/sscc_learning/article/details/78856375

递归神经网络的缺点:

  • 树状的结构,是离散的,每一个节点分离的地方都有可能造成误差传播
  • 尽管递归神经网络具有更为强大的表示能力,但是在实际应用中并不太流行。其中一个主要原因是,递归神经网络的输入是树/图结构,而这种结构需要花费很多人工去标注。想象一下,如果我们用循环神经网络处理句子,那么我们可以直接把句子作为输入。然而,如果我们用递归神经网络处理句子,我们就必须把每个句子标注为语法解析树的形式,这无疑要花费非常大的精力。很多时候,相对于递归神经网络能够带来的性能提升,这个投入是不太划算的。

推荐阅读
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 深入解析Django CBV模型的源码运行机制
    本文详细探讨了Django CBV(Class-Based Views)模型的源码运行流程,通过具体的示例代码和详细的解释,帮助读者更好地理解和应用这一强大的功能。 ... [详细]
  • 本文旨在探讨信息安全专业的职业规划路径,结合个人经历和专家建议,为即将毕业的学生提供实用的指导。 ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 题目《BZOJ2654: Tree》的时间限制为30秒,内存限制为512MB。该问题通过结合二分查找和Kruskal算法,提供了一种高效的优化解决方案。具体而言,利用二分查找缩小解的范围,再通过Kruskal算法构建最小生成树,从而在复杂度上实现了显著的优化。此方法不仅提高了算法的效率,还确保了在大规模数据集上的稳定性能。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树
    深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树 ... [详细]
  • 超分辨率技术的全球研究进展与应用现状综述
    本文综述了图像超分辨率(Super-Resolution, SR)技术在全球范围内的最新研究进展及其应用现状。超分辨率技术旨在从单幅或多幅低分辨率(Low-Resolution, LR)图像中恢复出高质量的高分辨率(High-Resolution, HR)图像。该技术在遥感、医疗成像、视频处理等多个领域展现出广泛的应用前景。文章详细分析了当前主流的超分辨率算法,包括基于传统方法和深度学习的方法,并探讨了其在实际应用中的优缺点及未来发展方向。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
author-avatar
手机用户2602904231
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有