当前位置: 首页 >  技术分享 >  Natural Language Processing自然语言处理(NLP)

Natural Language Processing自然语言处理(NLP)

导读:机器学*/深度学*的相关笔记.前言:.欢迎来到此处,这里是我边学边整理 的有关机械学/深度学*的相关笔记。先前我对这方面的知识不是很了解,笔记整理必然有不妥之处,请见谅并斧正。.目录:.深度自然语言处理.1.Word Vectors(词向量).2.Neural Classifie

机器学*/深度学*的相关笔记

前言:

欢迎来到此处,这里是我边学整理 的有关机械学/深度学*的相关笔记。先前我对这方面的知识不是很了解,笔记整理必然有不妥之处,请见谅并斧正。


目录:

深度自然语言处理

1.Word Vectors(词向量)
2.Neural Classifiers(神经分类器)
3.神经网络和反向传播
4.Dependency Parsing
5.语言模型(LM)和循环神经网络(RNNs)
6.LSTM
7.机器翻译、Seq2Seq和注意力机制(attention)
8.NLP中的问答系统
9.NLP中的卷积神经网络
10.NLP子词模型
11.基于上下文的表征与NLP预训练模型

NLP与深度学*的未来


#

深度自然语言处理(NLP)

人类的语言有什么特别之处?人类语言是一个专门用来表达意义的系统,语言文字是上层抽象表征,NLP与计算机视觉或任何其他机器学*任务都有很大的不同
语言是混乱的,自然处理的目的是更好地理解语言中的意思及其影响。

    *年来在深度学*中比较有效的方式是基于上下文的词汇表征。它的核心想法是:一个单词的意思是由经常出现在它附*的单词给出的。

\(●当一个单词 \omega 出现在文本中时,它的上下文是出现在其附*的一组单词(在一个固定大小的窗口中)\)

\(●基于海量数据,使用 \omega 的许多上下文来构建 \omega 的表示\)

NLP模型算法就是研究如何让计算机读懂人类语言,即将人的自然语言转换为计算机可以阅读的指令。


##

1.Word Vectors(词向量)

Word Vectors是利用向量来表示单词, 并可以从中筛选相似度高的不同单词以及其他衍生的比较和选择方法。

使用词向量编码单词, N 维空间足够我们编码语言的所有语义,每一维度都会编码一些我们使用语言传递的信息。

处理词向量之前,必要的公式应该得到演示,如下:
$\(P( O | C )=\frac{exp(u_o^\tau v_c)}{\sum_{w\in Vocab}exp(u_w^\tau v_c)}\)$

注:上述为在word2vec中,条件概率分布公式,是通过取向量点积并应用来给出的softmax最大功能。
    Word2Vec是一个迭代模型,该模型能够根据文本进行迭代学*,并最终能够对给定上下文的单词的概率对词向量进行编码呈现,而不是计算和存储一些大型数据集(可能是数十亿个句子)的全局信息.

2.Neural Classifiers(神经分类器)

对于分类问题,我们有训练数据集 :它由一些样本 组成
$\({x_i,y_i}^N_{i=1}\)$
●\(x_i\)输入 ,例如单词(索引或是向量),句子,文档等等(维度为 \(d\))
●\(y_i\)是我们尝试预测的标签(\(C\) 个类别中的一个),例如:
⊙类别:感情,命名实体,购买/售出的决定。
⊙其他单词。
⊙多词序列。

训练数据 \(\{x_i,yi\}^N{i=1}\)

softmax分类器:

在softmax分类器中最常用到交叉熵损失,也是负对数概率形态。
对于每个训练样本(x,y),我们的目标是最大化正确类\(y\)的概率,或者我们可以最小化该类的负对数概率
$\( -logp(y|x)=-log(\frac{exp(f_y)}{\sum^C_{c=1}exp(f_c)}) \)$
使用对数概率将我们的目标函数转换为求和形态,这更容易在推导和应用中使用。

注:交叉熵的损失理解

●交叉熵的概念来源于信息论,衡量两个分布之间的差异
●令真实概率分布为\(p\),我们计算的模型概率分布为\(q\)
●交叉熵为
$\( H(p,q)=-\sum_{c=1}^Cp(c)logq(c) \)$
●假设标准答案的概率分布是,在正确类上为1,在其他类别上为0:
$\( p=[0,\cdots,0,1,0,\cdots,0] \)$
●因为 \(p\) 是独热向量,所以唯一剩下的项是真实的负对数概率

●神经网络分类器

单独使用线性分类器\(softmax(≈logisti回归)\)并不强大

如上图所示,\(softmax\)得到的是线性决策边界 ⊙对于复杂问题来说,它的表达能力是有限的 ⊙有一些分错的点,需要更强的非线性表达能力来区分 我们需要非线性决策边界来支持更高级的分类需要


##

3.神经网络和反向传播

实体命名识别(NER)
跟踪文档中提到的特定实体
对于问题回答,答案通常是命名实体
许多需要的信息实际上是命名实体之间的关联
同样的技术可以扩展到其他 slot-filling 槽填充分类

通常后面是命名实体链接/规范化到知识库

句子中的命名实体识别
我们通过在上下文中对单词进行分类,然后将实体提取为单词子序列来预测实体。

NER难点

很难计算出实体的边界
很难知道某物是否是一个实体
很难知道未知/新奇实体的类别
实体类是模糊的,依赖于上下文
权重矩阵的梯度导数:

$\( s=u^Th \)$ $\( h=f(z) \)$ $\( z=Wx+b \)$

计算\(\frac{\delta s}{\delta W} \)

使用链式法则

**$$ \frac{\delta s}{\delta W}=\frac{\delta s}{\delta h} \frac{\delta

h}{\delta z} \frac{\delta z}{\delta W} $$**

反向传播的梯度求导:

Question:应该使用可用的“预训练”词向量吗?

answer:

几乎总是「应该用」
他们接受了大量的数据训练,所以他们会知道训练数据中没有的单词,也会知道更多关于训练数据中的单词
拥有上亿的数据语料吗?那可以随机初始化开始训练
计算图与反向传播:

我们把神经网络方程表示成一个图


##

4.Dependency Parsing

成分与依赖:

句子是使用逐步嵌套的单元构建的
短语结构将单词组织成嵌套的成分

起步单元: 单词被赋予一个类别
单词 组合成不同类型的词语
短语 可以递归地组合成更大地短语

单词的排列可以组成许多意义的句子
但是同时,单个句子所表达的含义也会有所不同
面对复杂结构的句子,我们需要考虑指数级的可能结构,这个序列被称为卡特兰数
$\( C_n=\frac{(2n)!}{(n+1)!n!} \)$

依赖语法与树库:

Dependency Structure有两种表现形式
⊙直接在句子上标出依存关系箭头及语法关系
⊙将其做成树状机构(Dependency Tree Graph)

箭头通常标记(type)为语法关系的名称(主题、介词对象、apposition等)
箭头连接头部(head)(调速器,上级,regent)和一个依赖(修饰词,下级,下属)
    A->的事情
通常,依赖关系形成一棵树(单头,无环,连接图)

##

5.语言模型(LM)和循环神经网络(RNNs)

语言模型:

语言建模 的任务是预测下一个单词是什么
更正式的说法是:给定一个单词序列\( x{(1)},x,\dots,x^{(t)} \\(,计算下一个单词\\) x^{(t+1)} \\(的概率分布: **\\)\) P(x{(t+1)}|x,\dots,x^{(1)}) $\(** 其中,**\\(x^{(t+1)}\\)** 可以是词表中的任意单词 **\) V={w1,\dots,w{|V|} } $**
这样做的系统被称为 Language Model 语言模型

RNNs:

核心想法: 重复使用相同的权重矩阵 \(W\)

RNN优点:
可以处理任意长度 的输入
模型大小不会 随着输入的增加而增加
在每个时间步上应用相同的权重,因此在处理输入时具有对称性
RNN缺点:
循环串行计算速度慢
在实践中,很难从许多步骤前返回信息

训练模型:

获取一个较大的文本语料库 ,该语料库是一个单词序列
输入RNN-LN;计算 每个步骤 \(t\) 的输出分布

即预测到目前为止给定的每个单词的概率分布

步骤\(t\)上的损失函数 为预测概率分布 $ \hat{y}^{(t)} \( 与真实下一个单词 \) y{(t)}(x的独热向量) \( 之间的交叉熵 \)\( J{(t)}(\theta)=CE(y,\hat{y}^{(t)})=-\sum_{w\in V}y^{(t)}_w log \hat{y}^{(t)}_w = -log \hat{y}^{(t)}_{x_{t+1}} \)$
将其平均,得到整个训练集的总体损失
$\( J(\theta)=\frac{1}{T} \sum_{t=1}^{T} J^{(t)}(\theta) = \frac{1}{T} \sum_{t=1}^{T} -log \hat{y}^{(t)}_{x_{t+1}} \)$


##

6.LSTM

长短时记忆(LSTM):

Hochreiter和Schmidhuber在1997年提出了一种RNN,用于解决梯度消失问题。
在第 \(t\) 步,有一个隐藏状态 \(h^{(t)}\) 和一个单元状态 \(c^{(t)}\)
都是长度为n的向量
单元储存长期信息
LSTM可以从单元中擦除、写入读取信息
信息被 擦除/写入/读取 的选择由三个对应的门控制
门也是长度为 \(n\) 的向量
在每个时间步长上,门的每个元素可以打开(1)、关闭(0)或介于两者之间
门是动态的: 它们的值是基于当前上下文计算的


##

7.机器翻译、Seq2Seq和注意力机制(attention)

这里我们重点关注神经网路机器翻译

神经机器翻译(NMT)是利用单个神经网络进行机器翻译的一种方法
神经网络架构称为 sequence-to-sequence (又名seq2seq),它包含两个RNNs

sequence-to-sequence 模型是条件语言模型的一个例子

注意力机制:

Sequence-to-sequence:瓶颈问题

注意力 为瓶颈问题提供了一个解决方案

核心理念: 在解码器的每一步,使用与编码器的直接连接 来专注于源序列的特点部分

首先我们将通过图表展示,然后我们将用方程

注意力最后的性能:
注意力显著提高了NMT性能

    这是非常有用的,让解码器专注于某些部分的源语句

注意力解决瓶颈问题

    注意力允许解码器直接查看源语句;绕过瓶颈

注意力帮助消失梯度问题

    提供了通往遥远状态的捷径

注意力提供了一些可解释性

    通过检查注意力的分布,我们可以看到解码器在关注什么
    我们可以免费得到(软)对齐
    网络只是自主学*了对齐

注意力是一种普遍的深度学*技巧


##

8.NLP中的问答系统

我们今天要讨论的不是基于结构化储存的问答。

而是在一段或一份文件中找到答案

这个问题通常被称为阅读理解
这就是我们今天要关注的

复杂的系统,但他们在事实问题上做得相当好

非常复杂的多模块多组件的系统:

首先对问题进行解析,使用手写的语义规范化规则,将其转化为更好的语义形式
在通过问题类型分类器,找出问题在寻找的语义类型
信息检索系统找到可能包含答案的段落,排序后进行选择
NER识别候选实体再进行判断

这样的QA系统在特定领域很有效:Factoid Question Answering 针对实体的问答

BiDAF:

多年来,BiDAF architecture有许多变体和改进,但其核心思想是 the Attention Flow layer
思路: attention 应该双向流动——从上下文到问题,从问题到上下文


##

9.NLP中的卷积神经网络

从RNN到CNN:

循环神经网络不能捕获没有前缀上下文的短语
经常在最终向量中捕获的信息太多来自于最后的一些词汇内容
例如: \(softmax\) 通常只在最后一步计算

那么,什么是卷积?
●一维离散卷积一般为: \( (f*g)[n]= \sum\limits_{m=-M}^{M} f[n-m]g[m] \)
●卷积通常地用于从图像中提取特征

    模型位置不变的识别

●二维示例:

    黄色和红色数字显示过滤器 (=内核) 权重
    绿色显示输入
    粉色显示输出

对比RNN与CNN:


##

10.NLP子词模型


##

11.基于上下文的表征与NLP预训练模型

预训练的词向量:

POS和NER两种表征体系
11个词窗,100个隐层神经元,在12w词上训练7周

简单且常见的解决方案:

训练时: 词汇表\( { word occurring,say, ≥5\ times } \ \cup { } \\(   将所有罕见的词 (数据集中出现次数小于5) 都映射为\\)\\(,为其训练一个词向量  **运行时:** 使用\\)\)代替词汇表之外的词OOV

问题:
没有办法区分不同 UNK words,无论是身份还是意义

transformer:

BERT

BERT 使用 mask 的方式进行整个上下文的预测,使用了双向的上下文信息


尚未完结——–

##

NLP与深度学*的未来

为何*年来深度学*的如此成功?

扩展能力(模型和数据大小) 是深度学**些年来成功的很大一部分原因

同时,过去受到计算资源和数据资源的规模限制,深度学*一直处于尚未成熟发展的地位

无标签和无监督学*的不断发展和进步

注:神经网络在NLP深度学*中的广泛发展已经成为了这以领域不可或缺的一部分

计算机视觉可视化的推动与多任务处理方式的改进

低资源支撑的场景:

不需要很多计算能力的模型(这对移动设备尤为重要)
低资源语言
低数据环境(ML中的元学*越来受欢迎)

NLP正逐渐对社会产生巨大影响力


Used by Han

**

2023

**

内容
  • unity 实现自定义class深度拷贝 deep copy 深度复制 引用类型复制
    unity 实现自定义class
    2023-12-09
    气死我了,搜半天没有,全让序列化再反序列化,又不方便又不美观。结果自己试着一写就通,两行完事。.首先先安装Newtons
  • Unity3D高级编程主程手记 学习笔记二:C#技术要点
    Unity3D高级编程主程手记
    2023-12-06
    1.Untiy3D中C#的底层原理.Unity底层在运行C#程序时有两种机制:一种是Mono,另一种是IL2CPP。Mo
  • 能将三次握手讲到这个程度,不给你offer给谁!
    能将三次握手讲到这个程度,不给你
    2023-12-01
    摘要: 在后端相关岗位的入职面试中,三次握手的出场频率非常的高,甚至说它是必考题也不为过。.本文分享自华为云社区《能将三
  • 绿化苗木**与种植
    绿化苗木**与种植
    2024-01-20
    绿化苗木**与种植.近年来,人们对于环保和绿化的重视逐渐增加,使得绿化苗木**与种植行业迎来了新的发展机遇。绿化苗木不仅
  • 水景景观设计与施工
    水景景观设计与施工
    2023-12-11
    水景景观设计与施工.水景景观设计与施工是园林设计领域中的重要部分,它不仅可以美化环境,提升景观品质,还可以为人们带来愉悦
  • 中式园林设计与施工
    中式园林设计与施工
    2023-12-21
    中式园林设计与施工.中式园林设计与施工是一门古老而又精美的艺术。它不仅仅是一种园林景观,更是一种文化的体现。中式园林设计
  • 校园景观规划与建设
    校园景观规划与建设
    2024-01-20
    校园景观规划与建设.校园景观规划与建设是学校发展的重要组成部分,它不仅是学校的门面,更是学校教育环境的重要组成部分。校园
  • 风景名胜区景观保护与**
    风景名胜区景观保护与**
    2023-12-31
    风景名胜区景观保护与**.简介.风景名胜区是指自然景观或人文景观具有较高观赏价值和保护价值的地区,是国家重点保护的地质和
  • 城市道路绿化与景观提升
    城市道路绿化与景观提升
    2023-12-06
    城市道路绿化与景观提升.随着城市化进程的加快,城市道路绿化和景观提升已经成为城市发展的重要方向。在城市规划和建设中,通过
  • 灯光景观设计与施工
    灯光景观设计与施工
    2024-01-10
    灯光景观设计与施工.灯光景观设计与施工是现代城市建设中不可或缺的一部分。灯光景观不仅可以美化城市夜景,增加城市的魅力,还
  • 商业综合体景观规划与绿化设计
    商业综合体景观规划与绿化设计
    2024-01-05
    商业综合体景观规划与绿化设计.商业综合体是城市中的重要组成部分,它不仅仅是商业活动的聚集地,更是城市的新地标和休闲娱乐中
  • 植物种植及养护服务
    植物种植及养护服务
    2024-01-10
    植物种植及养护服务.植物种植及养护服务在现代社会越来越受到人们的重视。随着城市化的不断发展,城市绿化成为人们关注的焦点之
  • 户外景观照明设备及安装
    户外景观照明设备及安装
    2023-12-31
    户外景观照明设备及安装.户外景观照明设备及安装在现代城市规划和建设中扮演着重要角色。通过合理的照明设计和设备选用,能够营