斯坦福CS224n课程笔记1-introduction and Word vectors 2019

2023-12-05 04:38

本文主要是介绍斯坦福CS224n课程笔记1-introduction and Word vectors 2019,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Human language and word meaning

语言是一个低带宽的信息传输方式,相比于5G,这决定了语言的熵会很高。

How do we have usable meaning in a computer?

one-hot的字词表示:

  1. 词语维度是很高的,而且有很多衍生的词语,接近于无限的维度。
  2. 词语之间没有相似度,即one-hot向量是正交的,相似词语和不相似词语之间都是正交关系。

WordNet

一个工具,来获取词语的同义词、hypernyms ( is a relation, eg. panda is a procyonid, ), 缺点:

  1. 缺少细微差别
    1. 例如,某些情况下,proficient才是good的同义词,即特定的上下文。
  2. 缺少新词,难以实时更新:
  3. 主观、需要人力创建和修改,不能计算词语相似度。

分布式表达

使用词语周围的词语来表示其的意义。

Distributional semantics: A word’s meaning is given by the words that frequently appear close-by 、

使用此种方式训练神经网络得到词向量表达,并将其降维到2D,可视化的效果:

可以看到,are, is, were距离很近,向量相似度较高,而实际也是如此。

在这里插入图片描述

那么,问题来,怎么训练词向量呢?

Word2vec introduction

在这里插入图片描述

skip-gram:使用中心词语,来预测周围的词语。

最大化似然,目标是对于正确的上下文的词语,给出概率最大, θ \theta θ是参数:
L i k e l i h o o d = L ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m j ≠ 0 P ( w t + j ∣ w t ; θ ) Likelihood = L(\theta) = \prod_{t=1}^{T} \prod_{-m \leq j \leq m \atop j \neq 0} P\left(w_{t+j} | w_{t} ; \theta\right) Likelihood=L(θ)=t=1Tj̸=0mjmP(wt+jwt;θ)
目标函数,注意加了负号,所以是最小化目标函数 :
J ( θ ) = − 1 T log ⁡ L ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m j ≠ 0 log ⁡ P ( w t + j ∣ w t ; θ ) J(\theta)=-\frac{1}{T} \log L(\theta)=-\frac{1}{T} \sum_{t=1}^{T} \sum_{-m \leq j \leq m \atop j \neq 0} \log P\left(w_{t+j} | w_{t} ; \theta\right) J(θ)=T1logL(θ)=T1t=1Tj̸=0mjmlogP(wt+jwt;θ)
那么如何计算概率 P ( w i + j ∣ w t ; θ ) P(w_{i+j}|w_t;\theta) P(wi+jwt;θ)?

  1. 对于每个词语都有两个向量:
    • w作为中心词的向量 v w v_w vw
    • w作为上下文的向量 u w u_w uw
  2. 对于中心词语c,上下文词语o:

P ( o ∣ c ) = exp ⁡ ( u o T v c ) ∑ w ∈ V exp ⁡ ( u w T v c ) P(o | c)=\frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} P(oc)=wVexp(uwTvc)exp(uoTvc)

那么,参数空间为 θ ∈ R 2 d ∗ v \theta \in R^{2d*v} θR2dv,其实就是词向量。v是单词个数,v是词向量维度。 含义是中心词的词向量和上下文的词向量越相似,其概率就越大。那么想同上下文的词语,他们的词向量也就越相似(因为他们的中心词向量都和上下文词向量相似,他们之间也就相似)。

那么如何通过梯度下降优化呢,
∂ ∂ v c J ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m j ≠ 0 ∂ ∂ v c log ⁡ P ( w t + j ∣ w t ; θ ) \frac{\partial}{\partial v_{c}} J(\theta)=-\frac{1}{T} \sum_{t=1}^{T} \sum_{-m \leq j \leq m \atop j \neq 0} \frac{\partial}{\partial v_{c}} \log P\left(w_{t+j} | w_{t} ; \theta\right) vcJ(θ)=T1t=1Tj̸=0mjmvclogP(wt+jwt;θ)
其中:
∂ ∂ v c log ⁡ P ( o ∣ c ) = ∂ ∂ v c log ⁡ exp ⁡ ( u o T v c ) ∑ w ∈ V exp ⁡ ( u w T v c ) = ∂ ∂ v c logexp ⁡ ( u o T v c ) − ∂ ∂ v c log ⁡ ∑ w ∈ V exp ⁡ ( u w T v c ) \begin{array}{c}{\frac{\partial}{\partial v_{c}} \log P(o | c)=\frac{\partial}{\partial v_{c}} \log \frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)}} \\ {=\frac{\partial}{\partial v_{c}} \operatorname{logexp}\left(u_{o}^{T} v_{c}\right)-\frac{\partial}{\partial v_{c}} \log \sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)}\end{array} vclogP(oc)=vclogwVexp(uwTvc)exp(uoTvc)=vclogexp(uoTvc)vclogwVexp(uwTvc)
对两项分别求偏导:

第一项: ∂ ∂ v c logexp ⁡ ( u o T v c ) = u o \frac{\partial}{\partial v_{c}} \operatorname{logexp}\left(u_{o}^{T} v_{c}\right)=u_{o} vclogexp(uoTvc)=uo

第二项复杂一些,需要用到链式法则,将log(x)看做一个整体展开:
∂ ∂ v c log ⁡ ∑ w ∈ V exp ⁡ ( u w T v c ) = 1 ∑ w ∈ V exp ⁡ ( u w T v c ) ∗ ∂ ∂ v c ( ∑ x ∈ V exp ⁡ ( u x T v c ) ) = 1 ∑ w ∈ V exp ⁡ ( u w T v c ) ∗ ∑ x ∈ V ∂ ∂ v c ( exp ⁡ ( u x T v c ) ) = 1 ∑ w ∈ V exp ⁡ ( u w T v c ) ∗ ∑ x ∈ V exp ⁡ ( u x T v c ) ∂ ∂ v c ( u x T v c ) = ∑ x ∈ V exp ⁡ ( u x T v c ) u x ∑ w ∈ V exp ⁡ ( u w T v c ) = ∑ x ∈ V P ( x ∣ c ) u x \frac{\partial}{\partial v_{c}} \log \sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right) = \frac{1}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} * \frac{\partial}{\partial v_{c}} ( \sum_{x \in V} \exp \left(u_{x}^{T} v_{c}\right)) \\ = \frac{1}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} * \sum_{x \in V} \frac{\partial}{\partial v_{c}} ( \exp \left(u_{x}^{T} v_{c}\right) ) \\ = \frac{1}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} * \sum_{x \in V} \exp \left(u_{x}^{T} v_{c}\right) \frac{\partial}{\partial v_{c}} ( u_{x}^{T} v_{c} ) \\ = \frac{\sum_{x \in V} \exp \left(u_{x}^{T} v_{c}\right) u_{x}}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} \\ = \sum_{x \in V} P(x | c) u_{x} vclogwVexp(uwTvc)=wVexp(uwTvc)1vc(xVexp(uxTvc))=wVexp(uwTvc)1xVvc(exp(uxTvc))=wVexp(uwTvc)1xVexp(uxTvc)vc(uxTvc)=wVexp(uwTvc)xVexp(uxTvc)ux=xVP(xc)ux
最终:
∂ ∂ v c log ⁡ P ( o ∣ c ) = u o − ∑ x ∈ V P ( x ∣ c ) u x \frac{\partial}{\partial v_{c}} \log P(o | c) = u_o - \sum_{x \in V} P(x | c) u_{x} vclogP(oc)=uoxVP(xc)ux
理解为在中心词c的情况下,预测的上下文单词和实际上下文单词向量( u o u_o uo)的差异,

reference

  1. http://web.stanford.edu/class/cs224n/
  2. https://www.bilibili.com/video/av46216519?t=4557

这篇关于斯坦福CS224n课程笔记1-introduction and Word vectors 2019的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/456180

相关文章

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方