Global Vectors for Word Representation (GloVe)

GloVe 模型包含一个训练在单词-单词的共同出现次数上的加权的最小二乘模型。

什么是Co-occurrence Matrix

假设单词与单词的 co-occurrence matrix 矩阵用 X 表示,\(X_{i j}\)表示单词 \(j\) 出现在单词 i 的上下文中的次数, \(X_{i}=\sum_{k} X_{i k}\)表示任何一个单词 k 出现在单词 i 的上下文中的次数,
\[
P_{i j}=P\left(w_{j} | w_{i}\right)=\frac{X_{i j}}{X_{i}}
\]
就表示单词 j 出现在单词 i 上下文中的概率。所以填充这个矩阵需要遍历一次语料库。

Least Squares Objective

在 skip-gram算法中,我们在输出层使用的是 \(softmax\) 函数计算单词 j 出现在单词 i 上下文的概率:
\[
Q_{i j}=\frac{\exp \left(\vec{u}_{j}^{T} \vec{v}_{i}\right)}{\sum_{w=1}^{W} \exp \left(\vec{u}_{w}^{T} \vec{v}_{i}\right)}
\]
因此,如果我们将这个用于全局的数据的话,那么交叉熵损失函数就可以这么算:
\[
I=-\sum_{i \in \text {corpus}}\sum_{j \in \text { context }(i)} \log Q_{i j}
\]
这个公式的本质就是在上一节讲的一句话的skip-gram上上升到对整个文本的处理。如果我们考虑单词上下文大小以及文本大小为 \(W\).那么交叉熵损失函数可以写成:
\[
J=-\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i j} \log Q_{i j}
\]

上面公式面临的一个问题是,在计算整个文本的时候,计算 \(Q\) 的 \(softmax\) 函数,这个计算量太大了。所以下面想办法优化一下:所以我们根本就不使用交叉熵损失函数,而是使用最小二乘法,那么损失函数就是下面这样:
\[
\hat{\jmath}=\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i}\left(\hat{P}_{i j}-\hat{Q}_{i j}\right)^{2}
\]
其中 \(\hat{P}_{i j}=X_{i j}\) and \(\hat{Q}_{i j}=\exp \left(\vec{u}_{j}^{T} \vec{v}_{i}\right)\) 是非正态分布的. 这里的 \(X_{i j}\) 等价于 j 出现在 i 的上下文的次数, 而 \(\hat{Q}_{i j}\) 是我们通过 skip-gram 预测的次数,所以是最小二乘法。这样的计算量还是很大,习惯上取个对数,公式就变成下面这样了:
\[
\begin{aligned} \hat{J} &=\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i}\left(\log (\hat{P})_{i j}-\log \left(\hat{Q}_{i j}\right)\right)^{2} \\ &=\sum_{i=1}^{W} \sum_{j=1}^{W} X_{i}\left(\vec{u}_{j}^{T} \vec{v}_{i}-\log X_{i j}\right)^{2} \end{aligned}
\]
上面的公式中直接使用 \(X_{i}\) 不一定能够达到最优,因此我们选择 \(f\left(X_{i j}\right)\),使用上下文来表示以提高准确率:
\[
\hat{\jmath}=\sum_{i=1}^{W} \sum_{j=1}^{W} f\left(X_{i j}\right)\left(\vec{u}_{j}^{T} \vec{v}_{i}-\log X_{i j}\right)^{2}
\]

Evaluation of Word Vectors

Intrinsic Evaluation

内部评估的思想,在一个较大的系统中,不能直接校准结果,而是对中间的一些结果进行评估:

  • 内部评估应用于特殊的一个中间任务
  • 可以很快地计算出效果
  • 有助于了解内部系统
  • 在输出端需要于实际的任务相连用来判断准确率

Intrinsic Evaluation 的例子:

我们使用计算单词语义上的类比性来表示模型的准确率:那么我们可以用下面的式子来求出我们最佳的预测:
\[
d=\underset{i}{\operatorname{argmax}} \frac{\left(x_{b}-x_{a}+x_{c}\right)^{T} x_{i}}{\left\|x_{b}-x_{a}+x_{c}\right\|}
\]
可以这样考虑上面的式子,从语义上分析单词的相似性的话,那么我们希望有 \(x_{b}-x_{a}=\) \(x_{d}-x_{c}\) 。所以对于单词 \(x_{c}\) 我们希望得到最优的 \(x_{i}\)。但是这里还要注意一些问题,从训练数据的角度考虑的话就是训练数据的语义之间的相似性决定了预测数据的相似性,另一方面,我们往往会对原始的训练数据进行 PCA降维,降维在这里可以提取出原训练数据最相关的特征,但是也会损失一些训练数据的信息。

从 Intrinsic Evaluation 看影响模型的因素

主要是三个方面:

  • 使用的模型的种类
  • 数据集越大表现越好
  • 单词向量的维度,维度太小,结果不好,太好会引入噪声

Training for Extrinsic Tasks

Retraining Word Vectors

一般情况下,我们使用内部的小任务优化单词向量,然后将单词向量用于整个任务。这是预训练的好处,但是在我们训练好模型之后,如果再继续加入数据的话,数据量不大的情况下不可以重新训练,而是保持原来的训练模型。

Softmax Classification and Regularization

我们使用 \(softmax\) 分类的时候,往往希望的是预测出数据对应的一种类别,这是 \(softmax\) 函数于交叉熵损失函数可以写成
\[
p\left(y_{j}=1 | x\right)=\frac{\exp \left(W_{j} \cdot x\right)}{\sum_{c=1}^{C} \exp \left(W_{c} \cdot x\right)}
\]

\[
-\sum_{j=1}^{C} y_{j} \log \left(p\left(y_{j}=1 | x\right)\right)=-\sum_{j=1}^{C} y_{j} \log \left(\frac{\exp \left(W_{j} \cdot x\right)}{\sum_{c=1}^{C} \exp \left(W_{c} \cdot x\right)}\right)
\]

交叉熵损失函数就是目标函数取反得到的。上面情况的,假设我们预测的数据只能处于一种类别,那么如果可以处于多种类别该怎么计算呢?我们假设 K 种类别都是正确的,那么可以写成这样:
\[
-\sum_{i=1}^{N} \log \left(\frac{\exp \left(W_{k(i)} \cdot x^{(i)}\right)}{\sum_{c=1}^{C} \exp \left(W_{c} \cdot x^{(i)}\right)}\right)
\]
也就是 \(k(i)\) 是 \(x^{(i)}\) 对应的不同类别。

引入正则化

上面的方法是可以的,但是参数太多了,容易过拟合,参数主要是:
\[
\nabla_{\theta} J(\theta)=\left[ \begin{array}{c}{\nabla w_{.1}} \\ {\vdots} \\ {\nabla_{W_{\cdot d}}} \\ {\nabla_{x_{\text {aardvark}}}} \\ {\vdots} \\ {\nabla_{x_{z e b r a}}}\end{array}\right]
\]
正则化的思想就是,过拟合的原因就是参数太多了,那么我们在最小化损失函数的时候引入参数,同时最小化参数,就可以避免完全只考虑最小化损失函数,而不考虑参数,
\[
-\sum_{i=1}^{N} \log \left(\frac{\exp \left(W_{k(i)}, x^{(i)}\right)}{\sum_{c=1}^{C} \exp \left(W_{c} \cdot x^{(i)}\right)}\right)+\lambda \sum_{k=1}^{C \cdot d+|V| \cdot d} \theta_{k}^{2}
\]

CS224n学习笔记(二)的更多相关文章

  1. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  2. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  3. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  4. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  5. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  6. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  7. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  8. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

随机推荐

  1. 将html版API文档转换成chm格式的API文档

    文章完全转载自: https://blog.csdn.net/u012557538/article/details/42089277 将html版API文档转换成chm格式的API文档并不是一件难事, ...

  2. php 弹窗案例

    <?php // 弹出对话框并且返回原来的页面 echo "<script language=\"JavaScript\">\r\n"; ec ...

  3. 华为OSPF与ACL综合应用实例

    实验要求1.企业内网运行OSPF路由协议,区域规划如图所示:2.财务和研发所在的区域不受其他区域链路不稳定性影响:3.R1.R2.R3只允许被IT登录管理:4.YF和CW之间不能互通,但都可以与IT互 ...

  4. Python入门篇-类型注解

    Python入门篇-类型注解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数定义的弊端 1>.动态语言很灵活,但是这种特性也是弊端 Python是动态语言,变量随时可 ...

  5. ps aux|grep *** 解释

    对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就是最基本同时也是非常强大的进程查看命令. 使用该命令 可以确定有哪些进程正在运 ...

  6. Kotlin注解深入解析与实例剖析

    在上一次https://www.cnblogs.com/webor2006/p/11522798.html中学习了Kotlin注解相关的东东,这次继续对Kotlin的注解继续学习: 注解也可以拥有自己 ...

  7. Ranger安装部署 - solr安装

    1. 概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方法. ...

  8. Topcoder10566 IncreasingNumber

    IncreasingNumber 一个数是Increasing当且仅当它的十进制表示是不降的,\(1123579\). 求 \(n\) 位不降十进制数中被 \(d\) 整除的有多少个. \(n\leq ...

  9. 讨论SQL语句中主副表之间的关系

    在公司这么多些时间,自己在写SQL语句这方面的功夫实在是太差劲了,有时候自己写出来的SQL语句自己都不知道能不能使用,只是自己写出来的SQL语句是不报错的,但是,这对于真正意义上的SQL语句还差的真的 ...

  10. 决策树——C4.5

    -- coding: utf-8 -- """ Created on Thu Aug 2 17:09:34 2018 决策树ID3,C4.5的实现 @author: we ...