斯坦福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

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Java利用poi实现word表格转excel

《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、每行对象类需要针对不同的表格进行对应的创建。package org.example.wordToEx

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

Python批量调整Word文档中的字体、段落间距及格式

《Python批量调整Word文档中的字体、段落间距及格式》这篇文章主要为大家详细介绍了如何使用Python的docx库来批量处理Word文档,包括设置首行缩进、字体、字号、行间距、段落对齐方式等,需... 目录关键代码一级标题设置  正文设置完整代码运行结果最近关于批处理格式的问题我查了很多资料,但是都没

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

基于Java实现模板填充Word

《基于Java实现模板填充Word》这篇文章主要为大家详细介绍了如何用Java实现按产品经理提供的Word模板填充数据,并以word或pdf形式导出,有需要的小伙伴可以参考一下... Java实现按模板填充wor编程d本文讲解的需求是:我们需要把数据库中的某些数据按照 产品经理提供的 word模板,把数据

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学