阅读笔记--NLP面试基础知识总结
如果我可以把今世的记忆带到以后,我会告诉我下一世的继任者去学数学。但是他可能又是一个不愿意学习的小傻瓜,或许三年级的时候还是会考各种0分。是呀,0分也是回忆,那时怎么会晓得走到现在,今后又晓得会去往何处。但是…,谁又会到全局最优解呢?我在这里,我不知道人生接下来会给我怎样的惊吓和惊喜,我现在处在的地方可能就是局部最优解吧!
一、深度学习和机器学习的区别
- 数据相关性: 深度学习与传统机器学习最重要的区别是,随着数据量的增加,其性能也随之提高。当数据很小的时候,深度学习算法并不能很好地执行,这是因为深度学习算法需要大量的数据才能完全理解它。
- 硬件支持:深度学习需要强有力的GPU或者TPU支持
- 特征工程:在机器学习中,大多数应用的特征需要由专家识别,然后根据域和数据类型手工编码。但是深度学习一般是自动抽取特征
- 执行时间:深度学习模型的执行时间很长,但是机器学习一般较短
- 可解释性:深度学习的可解释性比较差。
二、基本概念
什么是分词(Tokenization)?
- 分词
什么是序列标注?
- NLP之序列标注问题
所谓的序列标注就是对输入的文本序列中的每个元素打上标签集合中的标签。例如输入的一个序列如下:
X=x1,x2,...,xnX = {x_{1}, x_{2}, ..., x_{n}} X=x1,x2,...,xn
那么经过序列标注后每个元素对应的标签如下:
Y=y1,y2,...,ynY = {y_{1}, y_{2}, ..., y_{n}} Y=y1,y2,...,yn
所以,其本质上是对线性序列中每个元素根据上下文内容进行分类的问题。一般情况下,对于NLP任务来说,线性序列就是输入的文本,往往可以把一个汉字看做线性序列的一个元素,而不同任务其标签集合代表的含义可能不太相同,但是相同的问题都是:如何根据汉字的上下文给汉字打上一个合适的标签(无论是分词,还是词性标注,或者是命名实体识别,道理都是想通的)
什么是end-to-end
三、表示学习
1.nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
词向量是自然语言处理任务中非常重要的一个部分,词向量的表征能力很大程度上影响了自然语言处理模型的效果。如论文中所述,词向量需要解决两个问题:
(1). 词使用的复杂特性,如句法和语法。
(2). 如何在具体的语境下使用词,比如多义词的问题。
传统的词向量比如word2vec能够解决第一类问题,但是无法解决第二类问题。比如:“12号地铁线马上就要开通了,以后我们出行就更加方便了。”和“你什么时候方便,我们一起吃个饭。”这两个句子中的“方便”用word2vec学习到的词向量就无法区分,因为word2vec学习的是一个固定的词向量,它只能用同一个词向量来表示一个词不同的语义,而elmo就能处理这种多义词的问题。
one hot 模型
词袋模型
缺点:稀疏;无序;纬度爆炸;每个向量都正交,相当于每个词都是没有关系的。
1.word2vec
- word2vec解读
- 秒懂词向量Word2vec的本质
- Word2Vec详解(这个更详细)
- 小白都能理解的通俗易懂word2vec详解 (两个模型的推导过程通俗易懂)
在 NLP 中,把 x 看做一个句子里的一个词语,y 是这个词语的上下文词语,那么这里的 f,便是 NLP 中经常出现的语言模型(language model),这个模型的目的,就是判断 (x,y) 这个样本,是否符合自然语言的法则,更通俗点说就是:词语x和词语y放在一起,是不是人话。
Word2vec 正是来源于这个思想,但它的最终目的,不是要把 f 训练得多么完美,而是只关心模型训练完后的副产物——模型参数(这里特指神经网络的权重),并将这些参数,作为输入 x 的某种向量化的表示,这个向量便叫做——词向量。
1.1 CBoW模型
CBoW模型等价于一个词袋模型的向量乘以一个Embedding矩阵,从而得到一个连续的embedding向量。
CBoW前向计算过程
词向量最简单的方式是one-hot方式。one-hot就是从很大的词库corpus里选V个频率最高的词(忽略其他的) ,V一般比较大,比如V=10W,固定这些词的顺序,然后每个词就可以用一个V维的稀疏向量表示了,这个向量只有一个位置的元素是1,其他位置的元素都是0。在上图中,
- Input layer (输入层):是上下文单词的one hot。假设单词向量空间的维度为V,即整个词库corpus大小为V,上下文单词窗口的大小为C。
- 假设最终词向量的维度大小为N,则图中的权值共享矩阵为W。W的大小为 V∗NV * NV∗N,并且初始化。
- 假设语料中有一句话"我爱你"。如果我们现在关注"爱"这个词,令C=2,则其上下文为"我",“你”。模型把"我" "你"的onehot形式作为输入。易知其大小为1∗V1*V1∗V。C 个1∗V1*V1∗V大小的向量分别跟同一个 V∗NV * NV∗N 大小的权值共享矩阵W相乘,得到的是C个 1∗N1*N1∗N 大小的隐层hidden layer。
- C 个 1∗N1*N1∗N 大小的hidden layer取平均,得到一个1∗N1*N1∗N 大小的向量,即图中的Hidden layer。
- 输出权重矩阵 W′W^{'}W′ 为N∗VN*VN∗V,并进行相应的初始化工作。
- 将得到的Hidden layer向量 1∗N1*N1∗N 与W’相乘,并且用softmax处理,得到 $ 1*V $ 的向量,此向量的每一维代表corpus中的一个单词。概率中最大的index所代表的单词为预测出的中间词。
- 与groud truth中的one hot比较,求loss function的的极小值。
具体计算过程
- 从input -> hidden: WT∗xW^{T} ∗xWT∗x, WWW为V∗NV*NV∗N矩阵,xxx为V∗1V * 1V∗1向量,最终隐层的结果为 N∗1N * 1N∗1
- 从hidden -> output: xT∗W′x^T∗W^′xT∗W′,其中xxx为N∗1N * 1N∗1向量,W′W^{'}W′ 为V∗NV * NV∗N,最终结果为1∗V1 * V1∗V
1.2 Skip-gram模型
1.3 Tricks(层次softmax和负采样)
因为权值矩阵是一个非常大的矩阵,比如词典是10000,期望的词向量维度是300,那么这个矩阵就有300万参数,而这对于最后一层的softmax和反向传播都会带来极低的效率。因此以下两个技巧都是为了提升模型的速度。
1. 层softmax技巧(hierarchical softmax)
解释一: 最后预测输出向量时候,大小是1*V的向量,本质上是个多分类的问题。通过hierarchical softmax的技巧,把V分类的问题变成了log(V)次二分类。
解释二: 层次softmax的技巧是来对需要训练的参数的数目进行降低。所谓层次softmax实际上是在构建一个哈夫曼树,这里的哈夫曼树具体来说就是对于词频较高的词汇,它的树的深度就较浅,对于词频较低的单词的它的树深度就较大。
总结: 层次softmax就是利用一颗哈夫曼树来简化原来的softmax的计算量。具体来说就是对词频较高的单词,他在哈夫曼树上的位置就比较浅,而词频较低的位置就在树上的位置比较深。
2. 负采样(negative sampling)
解释一: 本质上是对训练集进行了采样,从而减小了训练集的大小。每个词
阅读笔记--NLP面试基础知识总结相关推荐
- 《Java并发编程实践》学习笔记之一:基础知识
<Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念: (2)进程:是一种活动,它是由一个动作序列组成 ...
- post获取重定向的链接 python_【转载】python面试基础知识(四) 网络部分
最近,小编在整理python面试基础知识,看了很多博客.文章和咨询了一些大厂公司大牛.了解到,在python面试的时候,不仅要求你有项目经验,还要考试代码呢!今天,小编和大家分享一下python面试基 ...
- Java面试基础知识III
Java面试基础知识: 1.C++或Java中的异常处理机制的简单原理和应用. 当JAVA 程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常.违反语义规则包括2种情况.一种 ...
- 前端学习笔记(js基础知识)
前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...
- LTE-V2X笔记:一些基础知识
原文转载地址:LTE-V2X笔记:一些基础知识 (1)LTE-V2X技术 频段:5905~5925MHZ(试验频段) 调制方式:QPSK 正交相移键控 功率:23dBm (2)LTE-V2X通信模式 ...
- 【学习笔记】网络安全基础知识总结
网络安全基础知识总结 前言 一.网络安全概述 1.1 引言 1.2 密码学的发展 1.3 密码学基础 1.4 对称密码 1.4.1 数据加密标准DES 二.数论知识 2.1 数论基础 2.2 有限域 ...
- Java视频全套,Java面试基础知识
引入 Netty的源码分析中, 采用自底向上的方式进行分析, 底指的是一个个的组件, 上指的是整体的架构及一系列操作的执行流程举个简单的例子. Netty服务端的启动流程中, 必然会调用bind方法, ...
- Java面试基础知识II
2.ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的, ...
- Python基础笔记_Day01_计算机基础知识和Python开发环境搭建
Day01_计算机基础知识和Python开发环境搭建 目录 01.01_计算机基础知识(计算机概述)(了解) 01.02_计算机基础知识(软件开发和计算机语言概述)(了解) 01.03_计算机基础知识 ...
最新文章
- 免费开源!新学期必收藏的AI学习资源,从课件、工具到源码都齐了
- java每隔一段时间执行_8.Android中,每隔一段时间执行某一个任务(Timer)
- C数据类型之基本类型
- RC4加密解密java算法
- 科普 | 动态本体简介
- 使用Numpy和Opencv完成图像的基本数据分析(Part III)
- leetcode 移动零
- 微信小程序 - 文本框显示限制最大长度
- USSD设置呼叫转移功能
- 消息轰炸(python)
- 关闭windows defender教程
- List集合进行分组
- android自定义相机打开闪光灯,Android 照相机(闪光灯,切换摄像头)
- 人大金仓KingbaseES适配Activiti工作流时踩下的坑
- ExtJs之数据和ComboBox控件
- 3.	工作分配问题(回溯法)设有n件工作分配给n个人。。。
- ipmitool获取服务器信息
- i511260h和i79750h哪个好
- Motoman机器人离线编程——Motocom32库函数的使用与封装
- 高精度GPS北斗卫星授时仪器(校时器)技术参数详解
热门文章
- 【人机交互技术】人脸表情识别技术综述(感觉写的比较简单)
- cocos2d 使用SimpleAudioEngine加载音乐音效
- 一个“一笔画”问题的求解器
- 华为od统一考试B卷【阿里巴巴找黄金宝箱(III)】C语言 实现
- windows远程桌面 远程服务器繁忙,win10系统提示“由于远程桌面服务当前正忙,无法完成...”的解决方法...
- 三点弯曲的有限元仿真
- iperf软件编译以及使用
- java线上医药用品分销系统设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
- 五步打造持续变现知识IP
- IBMMQ linux版安装(五)