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

本文探讨了如何使用递归神经网络和词嵌入技术来构建句子的语法结构,并将其表示为实数向量,以此为基础训练分类器识别句子的情感倾向。具体包括构建语法树、利用自动编码器优化节点表示、贪心算法构建树结构以及使用意义预测标签等步骤。此外,还介绍了反向传播和数值微分在训练过程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总的来说,作者讨论了如何利用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是一种验证某个参数的导数是否正确的方法

完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值