05.序列模型 W2.自然语言处理与词嵌入

文章目录

    • 1. 词汇表征
    • 2. 使用词嵌入
    • 3. 词嵌入的特性
    • 4. 嵌入矩阵
    • 5. 学习词嵌入
    • 6. Word2Vec
    • 7. 负采样
    • 8. GloVe 词向量
    • 9. 情感分类
    • 10. 词嵌入除偏
    • 作业

参考:
吴恩达视频课
深度学习笔记

自然语言处理与词嵌入
Natural Language Processing and Word Embeddings

1. 词汇表征

词嵌入(word embeddings),这是语言表示的一种方式,可以让算法自动的理解一些类似的词,比如 男人对女人,比如 国王对王后

one-hot 向量来表示词,缺点:它把每个词孤立起来,算法对相关词的泛化能力不强(每两个词之间的向量内积都是0)


2. 使用词嵌入


词嵌入迁移学习的步骤:

  1. 从大量的文本集中学习词嵌入。或者下载网上预训练好的词嵌入模型

  2. 用词嵌入模型把它迁移到你的新的只有少量标注训练集的任务中
    例如,用这个300维的词嵌入来表示你的单词,代替原来的10000维的one-hot向量

  3. 新的任务训练模型时,你可以选择要不要继续微调,用新的数据调整词嵌入。实际中,只有第二步中有很大的数据集你才会这样做,如果数据集不是很大,通常不会在微调词嵌入上费力气(你的数据很小,微调词嵌入,效果也不明显)

词嵌入 在语言模型机器翻译领域用的少一些,因为这些任务你有大量的数据(可用于训练,不必使用迁移)

人脸识别中的人脸Encoding算法,未来可能涉及到海量的人脸照片
而自然语言处理 有一个固定的词汇表 embedding,而像一些没有出现过的单词我们就记为 未知单词UNK

总结:
用词嵌入来实现迁移学习,抛弃原来的one-hot表示,而是用之前的嵌入的向量,你的算法会泛化的更好,你也可以从较少的标记数据中进行学习

3. 词嵌入的特性


找到一个单词 w:argmax⁡Similarity⁡(ew,eking −eman⁡+ewoman )w : \operatorname{argmax} \operatorname{Similarity}\left(e_{w}, e_{\text {king }}-e_{\operatorname{man}}+e_{\text {woman }}\right)w:argmaxSimilarity(ew,eking eman+ewoman )

通过这种方法来做类比推理准确率大概只有30%~75%

还有余弦相似度(夹角):

sim⁡(u,v)=cos(θ)=uTv∣u∣∣2∣∣v∣∣2\operatorname{sim}(u, v)= cos(\theta) = \frac{u^{T} v}{\left.|u|\right|_{2}|| v||_{2}}sim(u,v)=cos(θ)=u2v2uTv

4. 嵌入矩阵


我们的目标是学习一个嵌入矩阵。

我们将随机地初始化矩阵,然后使用梯度下降法来学习这个300×10000的矩阵中的各个参数,然后取出你需要的列

5. 学习词嵌入


如果想建立一个语言模型,用目标词的前几个单词作为上下文是常见做法

如果你的目标是学习词嵌入,那么你就可以用这些其他类型的上下文(下图所示),也能得到很好的词嵌入

6. Word2Vec


p(t∣c)=eθtTec∑j=110,000eθjTecp(t \mid c)=\frac{e^{\theta_{t}^{T} e_{c}}}{\sum_{j=1}^{10,000} e^{\theta_{j}^{T} e_{c}}}p(tc)=j=110,000eθjTeceθtTec

L(y^,y)=−∑i=110,000yilog⁡y^iL(\hat{y}, y)=-\sum_{i=1}^{10,000} y_{i} \log \hat{y}_{i}L(y^,y)=i=110,000yilogy^i

为了解决 softmax 对分母求和很慢的问题:

  • 采用 分级(hierarchical)的softmax分类器、负采样(Negative Sampling)


如果对上下文进行随机均匀采样,像 the、of、a、and、to 之类出现得相当频繁,于是你会发现你的上下文到目标词的映射会相当频繁地得到这些种类的词。

实际上,词 p(c)p(c)p(c) 的分布并不是单纯的在训练集语料库上均匀且随机的采样得到的,而是采用了不同的分级平衡更常见的词和不那么常见的词

以上就是 Word2Vec 的其中一种 Skip-Gram 模型,另一个叫做CBOW,即连续词袋模型(Continuous Bag-Of-Words Model),它获得中间词两边的上下文,然后用周围的词预测中间的词,这个模型也很有效

总结下:CBOW是从原始语句推测目标字词;而Skip-Gram正好相反,是从目标字词推测出原始语句。
CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好

7. 负采样

构造一个新的监督学习问题,就是给定一对单词,比如orange和juice,要去预测这是否是一对上下文词-目标词(context-target)


选取负样本采用经验分布:

P(wi)=f(wi)34∑j=110,000f(wj)34P\left(w_{i}\right)=\frac{f\left(w_{i}\right)^{\frac{3}{4}}}{\sum_{j=1}^{10,000} f\left(w_{j}\right)^{\frac{3}{4}}}P(wi)=j=110,000f(wj)43f(wi)43

因为在softmax分类器中计算成本很高。本节我们学到了如何通过将其转化为一系列二分类问题使你可以非常有效的学习词向量。

当然网上也有别人预训练过的词向量,你想要在NLP问题上取得快速进展,去下载他人的词向量是很好的方法,在此基础上改进

8. GloVe 词向量

GloVe代表用词表示的全局变量(global vectors for word representation)

对于GloVe算法,我们可以定义上下文和目标词为任意两个位置相近的单词,假设是左右各10词的距离,那么 XijX_{ij}Xij 就是一个能够获取单词 iii 和单词 jjj 出现位置相近时或是彼此接近的频率的计数器

GloVe模型做的就是进行优化,我们将他们之间的差距进行最小化处理:
minimize⁡∑i=110,000∑j=110,000f(Xij)(θiTej+bi+bj′−log⁡Xij)2\operatorname{minimize} \sum_{i=1}^{10,000} \sum_{j=1}^{10,000} f\left(X_{i j}\right)\left(\theta_{i}^{T} e_{j}+b_{i}+b_{j}^{\prime}-\log X_{i j}\right)^{2}minimizei=110,000j=110,000f(Xij)(θiTej+bi+bjlogXij)2

9. 情感分类

情感分类一个最大的挑战就是可能标记的训练集没有那么多

对于情感分类任务来说,训练集大小从10,000到100,000个单词都很常见,甚至有时会小于10,000个单词,采用了词嵌入能够带来更好的效果(泛化好),尤其是只有很小的训练集时。

10. 词嵌入除偏

根据训练模型所使用的文本,词嵌入能够反映出性别、种族、年龄、性取向等其他方面的偏见,修改学习算法来尽可能减少或是理想化消除这些非预期类型的偏见是十分重要的

  • 定位偏见
  • 中和,减少两个词在某个轴上的距离
  • 均衡,将两个词移至与中间轴线等距的一对点上

作业

作业:词向量+Emoji表情生成


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql获取总列数

Select count(*) from syscolumns where object_name(id)表名可以获取表的列数转载于:https://www.cnblogs.com/haoqi/p/3388171.html

6.MongoDB备份与恢复

备份 语法 mongodump -h dbhost -d dbname -o dbdirectory -h:服务器地址,也可以指定端口号 -d:需要备份的数据库名称 -o:备份的数据存放位置,此目录中存放着备份出来的数据 例1 sudo mkdir test1bak sudo mongodump…

Hadoop学习之HDFS

Hadoop学习之HDFS 1 HDFS相关概念 1.1 设计思路 分散存储,冗余备份。 分散存储:大文件被切割成小文件,使用分而治之的思想让多个服务器对同一个文件进行联合管理; 冗余备份:每个小文件做冗余备份,并且…

LeetCode 799. 香槟塔(DP动态规划)

文章目录1. 题目2. 解题1. 题目 我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟。 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了&…

C语言进行CGI程序设计

一、CGI概述CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单…

7.MongoDB与python交互

引入模块pymongo from pymongoimport * 主要提供如下对象用于进行交互 MongoClient对象:用于与MongoDB服务器建立连接 DataBase对象:对应着MongoDB中的数据库 Collection对象:对应着MongoDB中的集合 Cursor对象:查询方法find()返…

天池在线编程 2020国庆八天乐 - 7 进制

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270017 Given an integer, return its base 7 string representation. 输入范围为[-1e7, 1e7] 。 示例 样例 1: 输入: num 100 输出: 202样例 2: 输入: num -7 输出: -102.…

Hadoop学习之MapReduce

Hadoop学习之MapReduce 目录 Hadoop学习之MapReduce 1 MapReduce简介 1.1 什么是MapReduce 1.2 MapReduce的作用 1.3 MapReduce的运行方式 2 MapReduce的运行机制 2.1 相关进程 2.2 MapReduce的编程套路 2.3 MapTask的并行度 2.4 切片及其源码解读 2.5 ReduceTask的…

四款常见数据库比较同步软件汇总

前言: 目前,数据库技术在各行各业的应用正在逐步加深,在这些应用中普遍采用分布式系统结构。而数据库同步技术是分布式数据库系统中应用非常广泛的一种技术。分 布式数据库系统由多个通过网络连接的数据库组成,它们通常有主从服务…

8.账户管理(非数据库管理人员理解篇

超级管理员 为了更加安全的访问 mongodb,需要访问者提供用户名和密码,于是需要在mongodb 中创建用户 采用了角色-用户-数据库的安全管理方式 常用的的系统角色有: root: 只在 admin 数据中可使用,超级账户,超级权限 Read: 允许用户读取指定的数据库 readWrite: 允许用户读写指…

Hadoop学习之yarn

Hadoop学习之YARN 1 YARN简介 1.1 概述 YARN (Yet Another Resource Negotiator)是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作…

poj1308

#include<stdio.h>#include<string.h>//判断是否有环&#xff0c;判断是否是一个根节点。判断空树的情况#define N 1000000int pre[N10],dis[N10],degree[N10];int find(int n) {return pre[n]npre[n]?n:find(pre[n]);}int main() {int a,b,cnt,flag,f1,f2,i,min,…

天池在线编程 2020国庆八天乐 - 8. 分糖果

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270016 描述&#xff1a; 给定长度为偶数的整数数组&#xff0c;该数组中不同的数字代表不同种类的糖果&#xff0c; 每个数字表示一种糖果。 您需要将这些糖果平均分配给弟弟和…

1.Redis简介与基本命令

Redis是一个高性能的key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash&#xff08;哈希类型&#xff09;。 配置 绑定ip&#xff1a;如果需要远程访问&…

Hive基础知识

Hive基础知识 1 Hive相关概念 1.1 Hive是什么 Hive是基于 Hadoop 的一个数据仓库工具&#xff0c;可以将结构化的数据映射为一张数据库表&#xff0c;并提供 HQL(Hive SQL)查询功能&#xff0c;最终底层将HQL语句转换为MapReduce任务的&#xff0c;底层数据是存储在 HDFS 上…

【转】【C#.NET】ASP.NET状态管理之一:Cookie

【C#.NET】ASP.NET状态管理之一:Cookie 状态管理是你对同一页或不同页的多个请求维护状态和页信息的过程。与所有基于 HTTP 的技术一样&#xff0c;Web 窗体页是无状态的&#xff0c;这意味着它们不自动指示序列中的请求是否全部来自相同的客户端&#xff0c;或者单个浏览器实例…

2.Redis数据操作

redis是key-value的数据结构&#xff0c;每条数据都是一个键值对 键的类型是字符串 注意&#xff1a;键不能重复 值的类型分为五种&#xff1a; 字符串string 哈希hash 列表list 集合set 有序集合zset string&#xff08;主要 string是redis最基本的类型 最大能存储512MB数…

天池在线编程 2020国庆八天乐 - 6. 山谷序列(DP)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270018 描述&#xff1a; 给你一个长度为 n 的序列&#xff0c;在他的子序列中让你找一个山谷序列&#xff0c;山谷序列定义为&#xff1a; 序列的长度为偶数。假设子序列的长…

向量点积(Dot Product)

http://www.evernote.com/shard/s146/sh/e0d95bd1-68df-49d9-87c8-e21647d94e18/4d7af393bd986fd0c462ebd138f494b1转载于:https://www.cnblogs.com/dyfzwj/p/3408588.html

天池在线编程 2020国庆八天乐 - 4. 生成更大的陆地(BFS)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324262601668 LeetCode 上也有该题 827. 最大人工岛 描述 在一个0和1的2D网格中&#xff0c;我们最多将一个0改为1。 之后&#xff0c;最大岛屿的大小是多少&#xff1f; &#xff0…