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,一经查实,立即删除!

相关文章

Hadoop学习之HDFS

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

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

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

天池在线编程 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的…

Hadoop学习之yarn

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

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

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

Hive基础知识

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

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

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

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

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

python操作MySQL 模拟简单银行转账操作

一、基础知识 1、MySQL-python的安装 下载,然后 pip install 安装包 2、python编写通用数据库程序的API规范 (1)、数据库连接对象 connection,建立python客户端与数据库的网络连接,创建方法为 MySQLdb.Connect(参数) 参…

LeetCode 1007. 行相等的最少多米诺旋转

文章目录1. 题目2. 解题1. 题目 在一排多米诺骨牌中,A[i] 和 B[i] 分别代表第 i 个多米诺骨牌的上半部分和下半部分。(一个多米诺是两个从 1 到 6 的数字同列平铺形成的 —— 该平铺的每一半上都有一个数字。) 我们可以旋转第 i 张多米诺&a…

Hive内置函数大全

Hive内置函数大全 目录 Hive内置函数大全 1.复合类型构造函数 2 复合类型操作符 3 数值计算函数 4 日期函数 5 条件函数 6 字符串函数 7 汇总统计函数(UDAF) 8 表格生成函数(UDTF) 9 类型转换函数 10 数学函数 11 数学运算 12 逻辑运算 13…

python-mysql超简单银行转账

1首先先建数据库bank,数据结构表的名称为accoment: 2.python与mysql交互代码如下: # coding utf-8 # 1.导入模块 from pymysql import * import sys import pymysql# 2.接受命令行参数 if __name__ __main__:source_acctid 11target_acctid…

Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞

漏洞名称:Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞CNNVD编号:CNNVD-201311-054发布时间:2013-11-06更新时间:2013-11-06危害等级: 漏洞类型:信息泄露威胁类型:本地CVE编号&#x…

LeetCode 948. 令牌放置(贪心)

文章目录1. 题目2. 解题1. 题目 你的初始能量为 P,初始分数为 0,只有一包令牌。 令牌的值为 token[i],每个令牌最多只能使用一次,可能的两种使用方法如下: 如果你至少有 token[i] 点能量,可以将令牌置为…

Python 中操作 MySQL 步骤

1.引入模块 在py文件中引入pymysql模块 from pymysql import *2.Connection 对象 用于建立与数据库的连接 创建对象:调用connect()方法 connconnect(参数列表)参数host:连接的mysql主机,如果本机是localhost参数port:连接的m…

nacos配置中心配置已经常见错误总结

💻目录 前言1、基础架构2、依赖3、配置文件3.1、bolg-product配置文件3.1.1、application.yml配置文件3.1.2、bootstrap.yml配置文件3.1.3、nacos远程配置 3.2、bolg-system3.1.1、application.yml配置文件3.1.2、bootstrap.yml配置文件3.2.3、nacos远程配置 4、测试…

Hive解题思路

Hive解题思路 1 相关知识讲解 1.1 HQL语句的语法 sql语句的语法: select ..... from .... join ..... where .....group by ... having...order by|sort by|cluster by|distribute by .... (1)group by:按照某些字段的值进行…

tcl/tk demo

环境及版本说明: OSX10.9 tclsh -> tclsh8.5 wish -> wish8.5 查看本机运行环境: 1 which wish; 2 /usr/bin/wish 1 which tclsh; 2 /usr/bin/tclsh Demo功能说明: 用户登录窗口,输入用户名,密码.与文件中存储内容校验,如果相等,则提示"登录成功",否则提示&qu…

Hive高级操作

Hive高级操作 1 Hive的数据类型 1.1 原子数据类型 (1)Hive 是用 Java 开发的,Hive 里的基本数据类型和 java 的基本数据类型也是一一对应的, 除了 String 类型。 (2)有符号的整数类型:TINYIN…