斯坦福CS224n NLP课程【二】
我们怎样表示一个词的含义?
含义的定义:代表了词、句子的想法 signifier <-> signified 指称物和被指称物两个部分,也就是形式与内容。
我们如何在计算机中使用含义:
通常使用WordNet这类的分类词典 表示上下位关系和同义词
但是出现一个问题,对于这样的不同的同义词的区分度不够 一词多义
大量的nlp处理基本都是使用原子单词也就是使用one-hot vector 表示词的含义,包含的词越多,维度就越大。但是无法表示词与词之间的联系
我们希望我搜索dell notebook匹配出dell laptop 但是one-hot 不能表示这两者之间的关系。所以我们需要建立词与词之间的关系
使用分布相似性 distributional similarity 来表示词与词之间的相似性 是一种关于词汇语义的理论
分布相似性是指:你可以获取大量表示某个词汇含义的值,只需通过观察其出现的上下文并对这些上下文做一些处理就可以得到 假设想知道banking的含义,找包含banking大量的句子,通过前后词语就可以推断出banking的含义。
构建一个密集型vector 让它可以预测目标单词所在文本的其他词汇例如使用点积 对其做些修改 使得它可以预测
distributional representations 用密集型vector 表示词汇含义 分布式表示是通过分布式相似进行构建
word2vec
神经网络的词嵌入基本概念 以及embedding的含义
低纬度向量表示
word2vec的主要思想:包含两个算法和两个训练模型
word2vec其中一个算法 Skip-grams 思想:在每一个估算步都取一个词作为中心词汇,尝试预测它一定范围内的上下文的词汇,所以这个模型将定义一个概率分布即给定一个中心词汇,某个单词在它上下文出现的概率。选取词汇的向量表示,以让概率分布值最大化
word2vec的细节
目标函数将遍历文本,在中心词汇的-m到m之间即2m大小的窗口,就可以获取一个概率分布,可以通过中心词汇给出其上下文的词汇的概率。设置一个参数Θ让上下文中所有词汇出现的概率最高,Θ就是词汇向量的表示,也是每个词汇的向量表示的唯一参数
o代表了单词或者输出的下标,c代表中心词汇的下标。Uo是索引为o的单词所对应的向量,Vc是中心词汇对应的向量
计算过程
训练word2vec的参数Θ
让每一个词都有两个vector 这样会更简单一些
首先对对数化,简化之后进行求偏导 对于复合函数 使用链式法则
梯度下降算法
随机梯度下降 因为参数很多,所以随机选取一点 进行梯度下降算法 这样做是很粗糙的 事实上很有效