CS224n学习笔记(二)
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学习笔记(二)的更多相关文章
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
随机推荐
- 学习笔记之DBeaver
DBeaver Community | Free Universal Database Tool https://dbeaver.io/ Universal Database Tool Free mu ...
- MySQL Execution Plan--IN子查询对UPDATE语句影响
问题描述 在系统中发现一条执行时间为为44652.060734秒(12.5小时)的慢SQL,SQL语句为: UPDATE ob_internal_task SET OPERATE_STATUS WHE ...
- eclipse svn 提交、更新报错
问题描述: svn: Unable to connect to a repository at URL 'https://test.com/svn/clouds/trunk/fire_Alarm'sv ...
- Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the
参考链接 解决方法: 修改 php.ini : always_populate_raw_post_data = -1 PHP 5.6已经废弃了$HTTP_RAW_POST_DATA
- Apache 正向代理与反向代理配置
Apache提供了 mod_proxy 模块用于提供代理服务,能够支持的包括正向代理.反向代理.透明代理.缓存.负载均衡,HTTP代理.FTP代理.SSL代理等若干强大的功能. 配置代理方法很简单那, ...
- MySQL/MariaDB数据库的触发器
MySQL/MariaDB数据库的触发器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.触发器概述 1>.什么是触发器 触发器的执行不是由程序调用,也不是由手工启动,而是 ...
- NOI2019游记 —— 夏花般绚烂,繁星般璀璨
NOI 2019 游记 夏花般绚烂,繁星般璀璨 打算写成两个形式 Dairy Day -1 早早就到gzez集训了20几天,对整体的环境熟悉很多 在gzez看了场LNR Day 2 然后回到宾馆搞了个 ...
- HttpClient代码设置代理
由于对接faceBook接口,本地测试时候要设置代理才能调试. (http和https通用) public SSLContext createIgnoreVerifySSL() throws NoSu ...
- P5024 保卫王国[倍增+dp]
窝当然不会ddp啦,要写这题当然是考虑优化裸dp啦,但是这题非常麻烦,于是变成了黑题. 首先,这个是没有上司的舞会模型,求图的带权最大独立集. 不考虑国王的限制条件,有 \[ dp[x][0]+=dp ...
- robot framework 笔记(三),RF安装
背景: 本来robot framework的安装应该放在一开始写的,因写博客的时候已经装过了,恰巧重装系统又重装了一遍RF RF推荐使用python2, 使用3的话会遇到一些页面非友好的问题 需要的安 ...