《TensorFlow自然语言处理》—3.3.2 为学习词嵌入定义损失函数
【摘要】 本节书摘来自华章计算机《TensorFlow自然语言处理》一书中的第3章,第3.3.2节,[澳] 图珊·加内格达拉(Thushan Ganegedara) 著 马恩驰 陆 健 译。
3.3.2 为学习词嵌入定义损失函数
即使是简单的现实世界任务,其词汇量也很容易超过10000个单词。因此,我们不能手动为大型文本语料库开发词向量,而需要设计一种方法来使用一些机器学习算法(例如,神经网络)自动找到好的词嵌入,以便有效地执行这项繁重的任务。此外,要在任何类型的任务中使用任何类型的机器学习算法,需要定义损失,这样,完成任务就转化为让损失最小化。让我们为找到好的嵌入向量定义损失。
首先,让我们回想一下在本节开头讨论过的等式:
有了这个等式之后,我们为神经网络定义成本函数:
记住,J (θ)是损失(即成本),而不是奖励。另外,我们想要使P (wj | wi)最大化。因此,我们需要在表达式前面加一个减号将其转换为损失函数。
现在,让我们将其转换对数空间,而不是使用点积运算符。将等式转换为对数空间会带来一致性和数值稳定性:
这种形式的成本函数称为“负对数似然”。现在,因为有一个精心设计的成本函数,我们可以用神经网络来优化这个成本函数。这样做会迫使词向量或词嵌入根据单词含义很好地组织起来。现在,是时候介绍能用这个成本函数找到好的词嵌入的现有算法了。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)