CS224N学习笔记(一)课程介绍与词向量

前言

cs0224n之前之前刷过一部分,但既没有做笔记,也没有将核心内容看完。导致现在基础内容忘得差不多了,趁现在暑假有时间计划重刷并做笔记记录。

Lecture 1: Introduction and Word Vectors

The course

课程目标如下:
在这里插入图片描述

Human language and word meaning

语言是人类变得强大的主要原因,相较于如今的互联网的传播速度而言,人类语言是一种缓慢的语言。然而,只需人类语言形式的几百Byte的信息,就可以让一个人想象出丰富的视觉场景,足以体现人类语言的强大。

在这里插入图片描述

那么如何表示一个词语的含义呢?(How do we represent the meaning of a word?)
定义:含义

  • 用一个词、短语等所代表的想法;
  • 一个人想用词语、符号等来表达的想法;
  • 作品、艺术作品所表达的想法。

理解含义的最普遍的语言方式(linguistic way) : 语言符号与语言符号的含义的转化,即一个符号(比如一个单词)它代表了什么想法或者事物。

那我们如何在计算机中直接使用这些含义呢?
在这里插入图片描述

WordNet是一个包含同义词集和上位词(即隶属关系,如“is a”关系)列表的辞典。幻灯片中举了两个例子,分别是good的同义词和panda的上位词。

然而,Wordnet也有一些问题。
在这里插入图片描述

  • 作为一个资源很好,但忽略了细微差别
    • 例如“proficient”被列为“good”的同义词。这只在某些上下文中是正确的。
  • 缺少单词的新含义
    • 例如 wicked, badass, nifty, wizard, genius, ninja, bombest
    • 难以持续更新
  • 主观的
  • 需要人类劳动来创造和调整
  • 无法计算单词相似度

传统自然语言处理中,我们把词语看作离散的符号: hotel, conference, motel - a localist representation。单词通过One-hot向量编码。但这样编码有几个问题:

  • 维度太大:每个单词的维度都是整个词表大小,一般词表会特别大;
  • 互相正交:无法体现单词之间的相关性。

在这里插入图片描述
在这里插入图片描述

解决方案:可以尝试依赖WordNet的同义词列表来获得相似性吗?答案是否定的,因为Wordnet本身就严重不完整等。相反,我们可以学习在向量本身的过程中编码相似性。

在这里插入图片描述

我们可以通过一个词周围的词来表示这个词(You shall know a word by the company it keeps),这正是我么接下来所做工作的基础。我们把一个词周围的词成为上下文(context),通过使用一个单词w的许多上下文,我们就可以表示出单词w的含义。

Word2vec: Overview

Word2vec (Mikolov et al. 2013)是一个学习单词向量的框架。
在这里插入图片描述

其核心思想如下:

  • 我们有大量的文本 (又称语料,corpus)
  • 固定词汇表中的每个单词都由一个向量表示
  • 对于文本中的每个位置t,都有一个中心词c(就是在位置t上的这个单词)和上下文(就是位置t前后的)单词o
  • 使用c和o的词向量的相似性来计算给定中心词c条件下上下文中出现单词o的 概率 (反之亦然)
  • 不断调整词向量 来最大化这个概率

以下为两个例子,窗口大小(即位置t向左/右多少个词称为上下文)假设为2:
在这里插入图片描述
上图的中心词为into,上下文词为problems,turning,banking,crises。
在这里插入图片描述
上图的中心词为banking,上下文词为turning,into,crises,as。

具体来说,我们要做的,就是在给定一个中心词banking之后,预测的上下文为为turning,into,crises,as的概率P(turning|banking),P(into|banking),P(crises|banking),P(as|banking)值越大越好。
在这里插入图片描述

也就是说,我们要最大后如下的似然函数:
在这里插入图片描述

这里的参数 θ \theta θ其实就是我们要优化调整的各个单词的词向量。那么为了最大化似然函数,我们就可以定义如下代价/目标函数来最小化:

在这里插入图片描述
这里我们除T是为了消除语料中单词数目T对结果的影响。取log则是为了将连乘变为累加方便计算。

在这里插入图片描述

那么我们接下来任务的关键就是如何确定这个概率值。为了方便起见,我们使用两个向量来代表一个词,即一个单词w对应两个词向量,分别为:

  • v w v_w vw代表w作为一个中心词时的词向量
  • u w u_w uw代表w作为一个上下文词时的词向量

这样表示之后,我们就可以表示出对于一个中心词c,上下文词为o的概率为
在这里插入图片描述
至于为什么要采用两个词向量表示,Maning在视频中也有解释,b站的评论区有人总结了一下:

“训练两组词向量是为了计算梯度的时候求导更方便。如果只用一组词向量 ,那么Softmax计算的概率公式里分母会出现一项平方项 ,那么再对 求导就会比较麻烦。相反如果用两套词向量,求导结果就会很干净。但其实,因为在窗口移动的时候,先前窗口的中心词会变成当前窗口的上下文词,先前窗口的某一个上下文词会变成当前窗口的中心词。所以这两组词向量用来训练的词对其实很相近,训练结果也会很相近。一般做法是取两组向量的平均值作为最后的词向量。” link

公式中,我们对向量 u o u_o uo和向量 v c v_c vc进行点乘。如果两个向量之间越相似,那么点乘结果越大,从而归一化后得到的概率值也越大。模型的训练正是为了使得具有相似上下文的单词,具有相似的向量。

这里实际上就是使用了一步Softmax来将点积的结果来转变为概率值。

在这里插入图片描述

Word2vec derivations of gradient

我们要优化的目标函数如幻灯片中所示,
在这里插入图片描述
核心还是对 log ⁡ p ( o ∣ c ) \log p(o|c) logp(oc)进行求导。
对其求导步骤如下,用到了链式法则:
在这里插入图片描述
同理我们可以求出对 u o u_o uo的偏导数。

在这里插入图片描述
在每次更新中,我们都会对在该窗口用到的词向量进行更新。
在这里插入图片描述

参考

  1. CS224n: Natural Language Processing with Deep Learning, link
  2. Notes on CS224n, link
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值