当前位置: 首页 > news >正文

【Deep Learning学习笔记】Learning meanings for sentences

总的来说,作者讨论了如何利用recursive neural network用word embedding来构建句子的句法结构,进一步将 一个句子表示成实数向量的形式,在此基础上,训练分类器,识别句子的情感倾向(正向或者负向)

详细内容如下:

1.Recursive definition of meaning
用二叉树来表示句子的句法结构,输入(叶子)节点是词语,词语用实数向量表示。句子的中间节点也用实数向量表示。
因为是二叉树,所以各节点有两个儿子节点(叶子节点除外)。用神经网络来做这样的事情,则,输入是两个词语(两个词语的实数向量),输出是一个节点的实数向量,向量维度与词语的向量维度相同。
为了简化问题,所有节点之间的关系,用同一个神经网络来做。
最后,句子归结成为一个语法树,由根节点来表示,根节点也由实数向量来表示。当判断句子的情感倾向的时候,输入就是根节点的实数向量,输出是一个二分类结果,则可以实用现有的分类器来做。
神经网络可以用bp来训练,分类器有自己的训练方法。
这个思路的难点是属于有监督的学习方法,无法找到训练集,尤其是对于节点的实数向量来讲,更无法确定正确的向量。

2.Autoencoders
首先考虑语法树的子结构,即两个词语叶子节点作为输入,输出为中间节点。用autoencoder来训练神经网络。句子中所有的节点recontructed结果与原始节点的差别,作为最小化的目标,准则函数记为E1。
这个思路有两个需要细调整的地方:
(1)避免中间节点的值都是0——通过修改准则函数来实现的
(2)该方法对短句有效,句子越长,方法错误越大——句子越长,信息量越大,但是root节点的维度没有变化,最终效果肯定比较差——这个也通过将句长因素加入到准则函数中实现

3.Selecting a tree structure
用贪心算法来构建二叉树,表示句子的语法结构。过程就是哈弗曼编码的过程。
从这个角度来看,这棵二叉树并不等同于语法树。
而且文章中也承认,参数的微小变化,就可能会引起二叉树结构的巨大变化。
个人想法:对于树结构,做autoencoder要根据树的高度来做N层,本身开销就比较大;如果树的结构还不固定,在训练的时候,会引起更大的开销。

4.Using meanings to predict labels
在训练出二叉树的结构,以及得到二叉树根节点的实数向量之后,就可以在上面加分类器,进行情感预测等高级问题了。
方法上,可以是仅仅用root节点的实数向量作为输入,来进行预测;学习的时候,也反推过来学习。
也可以,把所有非叶子结点,都当成样本。非叶子结点的“类别”(例如:情感倾向)与root节点(代表整个句子)的一样。这样,所有非叶子结点都可以作为样本参与训练。
此时,除了autoencoder所定义的准则函数E1之外,又有了一个准则函数E2,表示分类器的分类精度。
系统整个准则函数表示为E1和E2的线性加权。
个人想法:别看准则函数越来越复杂,不过在训练的时候分得很开。训练需要得到两类东西:(1)网络权重;(2)词语的向量表示。(2)要先于(1)得到。对于词语向量表示,单独用E2准则来训练;对于网络权重,用E1来得到。

5.Backpropagation
求导,推导训练公式

6.Numerical differentiation
因为目标函数很复杂,从公式推导导数也很复杂,Numerical differentiation是一种验证某个参数的导数是否正确的方法

完。

相关文章:

  • linux dmesg命令学习
  • 职业规划随想
  • HDU 2485 Destroying the bus stations (IDA*+ BFS)
  • 黑马程序员_常用类(System.Math,Calendar,Date,Runtime)
  • 转载 eoe 大神整理好的 android 开源项目
  • (3)选择元素——(17)练习(Exercises)
  • [week4]每周总结与工作计划
  • 每天一道算法_1_放苹果
  • CSS3之渐变Gradient
  • Linux下几个常用的快捷键,真的很实用
  • Python 入门教程 13 ---- Loops
  • 软件开发中的资源控制问题学习
  • linux mount命令学习
  • TCP头分析+面试题
  • Maven--多模块依赖实例解析(五)
  • Django 博客开发教程 8 - 博客文章详情页
  • laravel 用artisan创建自己的模板
  • Linux后台研发超实用命令总结
  • Logstash 参考指南(目录)
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring Boot MyBatis配置多种数据库
  • SQLServer插入数据
  • win10下安装mysql5.7
  • 编写符合Python风格的对象
  • 从tcpdump抓包看TCP/IP协议
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 基于组件的设计工作流与界面抽象
  • 坑!为什么View.startAnimation不起作用?
  • 码农张的Bug人生 - 见面之礼
  • 前端_面试
  • 小试R空间处理新库sf
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 2017年360最后一道编程题
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​力扣解法汇总946-验证栈序列
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # Maven错误Error executing Maven
  • # 飞书APP集成平台-数字化落地
  • (1)(1.13) SiK无线电高级配置(五)
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (java)关于Thread的挂起和恢复
  • (SpringBoot)第二章:Spring创建和使用
  • (第一天)包装对象、作用域、创建对象
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)基于IDEA的JAVA基础1
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 材料检测系统崩溃分析
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET和.COM和.CN域名区别