深度学习之NLP(一)

一.NLP含义
1.自然语言处理
 A. 语言和语义的关系
 B.自然语言和自然语义的关系
 C.计算机如何处理语言
2.NLP的作用
  A.让计算机具有语言能力
  B.充当计算机的语言大脑,有思维判断能力
3.NLP和CV的区别
  A.二者处理的方向不同:
      CV处理视觉问题
      NLP处理语言问题
  B.二者处理的方式不同:
      CV是将图像转成像素矩阵,输入模型
      NLP需要将文本转成向量(此向量是经过学习训练过的才有效果)
二.NLP的研究方向
1.处理文本信息
  A.连续文本信息
  B.离散文本信息
2.处理语音信息
语音一般都是基于一段时间的连续性信息,属于一维信号
3.处理其他信息
信号,波形,符号,代号等
三.NLP的知识分布
1.循环神经网络

在这里插入图片描述

	按照序列进行输入输出的神经网络模型
	A. RNN模型(双向)
	
	B. LSTM模型(双向)
	
	C. SEQ2SEQ(双向)
		
	
		SEQ2SEQ是一种ENcoder-Decoder(编解码框架)的模型:
		可以把它看作处理由一个句子(段落或篇章)生成另外一个句子(段落或篇章)的通用处理模型。
		输入和输出可以是同一种语言,也可以是两种不同的语言,若是不同语言,就可以处理翻译问题了。若是相同语言,输入序列为篇章,而目标序列为
		小段落则可以处理文本摘要问题
2.注意力机制
	注意力就是让模型获得学习焦点的能力
	A. 普通注意力
		Attention for Image Captioning(图像识别/看图说话)
		Attention for Machine Translation(机器翻译)
		
		注意力模型可以看作是一种通用的思想,本身并不依赖于特定框架,但是目前大多数注意力模型都伴随在ENcoder-Decoder框架下。
		在Seq2Seq结构中,encoder把所有的输入序列都编码成一个统一的语义向量context(就是我们所说的向量C),然后再由decoder解码
		只用最后一个隐藏层输出的向量C表示整个句子的信息,不是很合理。
		
		
		
		
	
	B. 自注意力
	C. 多头注意力
3.词向量
	经过学习后,让代表每个词的向量之间产生一定关系
	A. 词的来源:从包含被学习的词的语料库(文章)中获得
	
	B. 步骤:分词,去重,定义向量维度,建模型,训练
	
	C. 词和向量之间的转换:
	  对词进行转换成定义好的长度的向量 
	  
	D. 向量维度的大小
	   理论上是维度越多可能越好,但是实际上是有问题的:
	   向量维度越高,学习越慢
	   维度越高,占用内存空间越大
	   产生类似过拟合的效果,关注细节越多,结果产生偏差
	   一般情况下,维度在500-800之间就可以
	   
	E. 向量的编码形式
	   1.稠密向量:
	     优点:维度不需要太长,表示的信息更丰富
	     缺点:反向传播计算量太大,不利于网络学习
	   2.稀疏向量
	     ONE-HOT:
	     利于网络学习,但是词的个数太多的时候,需要更长的向量来表示,增加了存储空间
	     
	     树结构:普通树(二叉树),最优树(霍夫曼树)
	     
		 一般在向量个数小于5000的时候使用Onet-hot,大于5000的时候使用树结构
	  
	F.衡量向量差异的方法
	   1. 距离(欧式距离)
	   2. 余弦相似度
4.NLP的模型
    A. word2vec
        CBOW
        Skip-gram
    B. ELMo
    C. transformer
    D. Bert
    E. GPT2
    F. XLnet

一.NLP的定义和歧义性

NLP = NLU +NLG
NLU: 语音/文本 —>意思meaning
NLP : 意思meaning ----> 语音/文本

Why NLP is harder than CV ?

①理解语义(meaning)
② Ambiguity (一词多义):

  • 今天参观了苹果公司
  • 现在正好是苹果季节

上下文(Context)
一个词语的意思有多种,可以需要根据上下文来重新更新该词语的意思

分词
中文分词 ‘今晚的课程有意思’ :今晚/的/课程/有意思

中文分词工具 jieba 安装方式 :pip install jieba

二.词向量

词向量:可以理解为从词转换到向量

真实世界抽象存在的文字转换成可以进行数学公式操作的向量,而对这些向量的操作,才是NLP真正要做的任务

我们这里说的词向量必须要有相关性,是经过学习过后的

最简单的将词变成向量的方法:
V代表词库,词库中有6个词,每个词用one-hot向量编码如图所示:
在这里插入图片描述
上述方法存在的问题:

  1. 这是一种稀疏的编码方式,即存在大量的0元素,只有极少部分的非0元素
  2. 无法表示出单词之间的语义相关性(相似度,距离)

来看下面这种分布式的表示方法稠密Dense的编码方式,也可以表示出单词之间的相关性):

在这里插入图片描述

三.word2vec

1.模型

word2vec模型其实就是简单化的神经网络。

在这里插入图片描述
输入是One-Hot Vector,Hidden Layer没有激活函数,也就是线性的单元。Output Layer维度跟Input Layer的维度一样,用的是Softmax回归。
我们要获取的dense vector其实就是隐藏层Hidden Layer的输出单元。有的地方定为Input Layer和Hidden Layer之间的权重,其实说的是一回事。

下图所示,假设隐藏层有三个神经单元,即表示用【1,3】的向量表示一个词的词向量:
在这里插入图片描述

2.CBOW与Skip-Gram模式

word2vec主要分为CBOW(Continuous Bag of Words)和Skip-Gram两种模式。
CBOW是从原始语句推测目标字词;而Skip-Gram正好相反,是从目标字词推测出原始语句。
CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。
对同样一个句子:Hangzhou is a nice city。我们要构造一个语境与目标词汇的映射关系,其实就是input与label的关系。

这里假设滑窗尺寸为1
CBOW可以制造的映射关系为:[Hangzhou,a]—>is,[is,nice]—>a,[a,city]—>nice
Skip-Gram可以制造的映射关系为(is,Hangzhou),(is,a),(a,is), (a,nice),(nice,a),(nice,city)

四.注意力机制attention transformer bert

SEQ2SEQ添加attention机制
在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值