和谐气氛
人与人之间的沟通,必须在一个前提条件之下,才能取得效果,那就是和谐气氛。
和谐气氛,就是让每一个人放松下来,感到安全,并对对方有一定的信任,在这种情况下,个人与自己内心的感觉联系着,同时,大脑里理性的部分充分运作,因而最能在NLP技巧过程中取得理想的效果。
打破状态
当一个人处于某个内心状态,意念,思想及情感,而导致事情不能顺利进行或对现场环境有负面影响时,另外一个人可通过一些语言或行为为即时改变这个人的内心状态,这便是打破状态。
未来测试
未来测试是NLP技巧中必经的步骤之一,目的是引导本色的或对方想象在未来运用所学到的东西,或者测试所应用的技巧是否有效,通常,一个NLP技巧完成后,会先来个打破状态,再做个未来测试,若效果满意,便可以结束整个过程。
呼气与吸气
身体各部分向大脑传递信息,在呼气与吸气时是不同的,因此身体的机能在呼气与吸气时也会不同,呼气时身体处于一个放松的状态,适合于松弛及放松身体各部分时使用,吸气时身体处于一个强化的状态,适合于加强,凝聚及提升身体能力时使用。
时间线
人脑对于记忆或思考某件事情是有其时间位置的,一般来说,用右手的人,其过去位于左边而未来位于右边,距离现在越远的过去或未来时间,则越远离自己的鼻子,现在则会在眼前,因此他们的时间线是从左至右,从远至近又再走远。
有些人的时间线会贯通自己,未来在前面现在在眼下,过去则在身后,也有一些人的时间线在未经整理之前,是乱七八糟的。
时间线可以很容易地进行整理,调整时间线可以使一个人减少焦虑或提高积极性。在NLP技巧中,时间线更是简单的一条在地上无形的直线。
经验擎
一些事物会使我们回想起往事,因而带回这些往事中本人当时的感受,这些事物便是经验擎。
经验擎可以分为4中
1视觉型经验擎,中国成语,睹物思人是较为恰当的描述。
2听觉经验擎,歌曲,名字都属于听觉经验擎。
3感觉经验擎,握手,拥抱,吻脸,摸头等身体接触。
4内感觉经验擎,一些静坐宗派所采用的 心号 。
其中1-3的经验擎,也可转为内视,内听,内感觉型的经验擎。
以上
什么是自然语言处理
自然语言处理 (英语:natural language processing,缩写作 NLP) 是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。
自然语言处理有四大类常见的任务
什么是命名实体识别
命名实体识别(NER)是信息提取(Information Extraction)的一个子任务,主要涉及如何从文本中提取命名实体并将其分类至事先划定好的类别,如在招聘信息中提取具体招聘公司、岗位和工作地点的信息,并将其分别归纳至公司、岗位和地点的类别下。命名实体识别往往先将整句拆解为词语并对每个词语进行此行标注,根据习得的规则对词语进行判别。这项任务的关键在于对未知实体的识别。基于此,命名实体识别的主要思想在于根据现有实例的特征总结识别和分类规则。这些方法可以被分为有监督(supervised)、半监督(semi-supervised)和无监督(unsupervised)三类。有监督学习包括隐形马科夫模型(HMM)、决策树、最大熵模型(ME)、支持向量机(SVM)和条件随机场(CRF)。这些方法主要是读取注释语料库,记忆实例并进行学习,根据这些例子的特征生成针对某一种实例的识别规则。
什么是词性标注
词性标注 (pos tagging) 是指为分词结果中的每个单词标注一个正确的词性的程序,也即确定每个词是名词、动词、形容词或其他词性的过程。
什么是文本分类
该技术可被用于理解、组织和分类结构化或非结构化文本文档。文本挖掘所使用的模型有词袋(BOW)模型、语言模型(ngram)和主题模型。隐马尔可夫模型通常用于词性标注(POS)。其涵盖的主要任务有句法分析、情绪分析和垃圾信息检测。
GLUE benchmark
General Language Understanding Evaluation benchmark,通用语言理解评估基准,用于测试模型在广泛自然语言理解任务中的鲁棒性。
LM:Language Model
语言模型,一串词序列的概率分布,通过概率模型来表示文本语义。
语言模型有什么作用?通过语言模型,可以量化地衡量一段文本存在的可能性。对于一段长度为n的文本,文本里每个单词都有上文预测该单词的过程,所有单词的概率乘积便可以用来评估文本。在实践中,如果文本很长,P(wi|context(wi))的估算会很困难,因此有了简化版:N元模型。在N元模型中,通过对当前词的前N个词进行计算来估算该词的条件概率。
重要文献与资料
https://segmentfaultcom/a/1190000015460828
https://segmentfaultcom/a/1190000015284996
https://segmentfaultcom/a/1190000015285996
我们介绍词的向量表征,也称为 word embedding 。词向量是自然语言处理中常见的一个操作,是搜索引擎、广告系统、推荐系统等互联网服务背后常见的基础技术。
在这些互联网服务里,我们经常要比较两个词或者两段文本之间的相关性。为了做这样的比较,我们往往先要把词表示成计算机适合处理的方式。最自然的方式恐怕莫过于向量空间模型(vector space model)。 在这种方式里,每个词被表示成一个实数向量(one-hot vector),其长度为字典大小,每个维度对应一个字典里的每个词,除了这个词对应维度上的值是1,其他元素都是0。
One-hot vector虽然自然,但是用处有限。比如,在互联网广告系统里,如果用户输入的query是“母亲节”,而有一个广告的关键词是“康乃馨”。虽然按照常理,我们知道这两个词之间是有联系的——母亲节通常应该送给母亲一束康乃馨;但是这两个词对应的one-hot vectors之间的距离度量,无论是欧氏距离还是余弦相似度(cosine similarity),由于其向量正交,都认为这两个词毫无相关性。 得出这种与我们相悖的结论的根本原因是:每个词本身的信息量都太小。所以,仅仅给定两个词,不足以让我们准确判别它们是否相关。要想精确计算相关性,我们还需要更多的信息——从大量数据里通过机器学习方法归纳出来的知识。
在机器学习领域里,各种“知识”被各种模型表示,词向量模型(word embedding model)就是其中的一类。通过词向量模型可将一个 one-hot vector映射到一个维度更低的实数向量(embedding vector),如embedding(母亲节)=[03,42,−15,],embedding(康乃馨)=[02,56,−23,]。在这个映射到的实数向量表示中,希望两个语义(或用法)上相似的词对应的词向量“更像”,这样如“母亲节”和“康乃馨”的对应词向量的余弦相似度就不再为零了。
词向量模型可以是概率模型、共生矩阵(co-occurrence matrix)模型或神经元网络模型。在用神经网络求词向量之前,传统做法是统计一个词语的共生矩阵X。
X是一个|V|×|V| 大小的矩阵,Xij表示在所有语料中,词汇表V(vocabulary)中第i个词和第j个词同时出现的词数,|V|为词汇表的大小。对X做矩阵分解(如奇异值分解),得到的U即视为所有词的词向量:
但这样的传统做法有很多问题:
基于神经网络的模型不需要计算和存储一个在全语料上统计产生的大表,而是通过学习语义信息得到词向量,因此能很好地解决以上问题。
神经网络
当词向量训练好后,我们可以用数据可视化算法t-SNE[ 4 ]画出词语特征在二维上的投影(如下图所示)。从图中可以看出,语义相关的词语(如a, the, these; big, huge)在投影上距离很近,语意无关的词(如say, business; decision, japan)在投影上的距离很远。
另一方面,我们知道两个向量的余弦值在[−1,1]的区间内:两个完全相同的向量余弦值为1, 两个相互垂直的向量之间余弦值为0,两个方向完全相反的向量余弦值为-1,即相关性和余弦值大小成正比。因此我们还可以计算两个词向量的余弦相似度。
模型概览
语言模型
在介绍词向量模型之前,我们先来引入一个概念:语言模型。 语言模型旨在为语句的联合概率函数P(w1,,wT)建模, 其中wi表示句子中的第i个词。语言模型的目标是,希望模型对有意义的句子赋予大概率,对没意义的句子赋予小概率。 这样的模型可以应用于很多领域,如机器翻译、语音识别、信息检索、词性标注、手写识别等,它们都希望能得到一个连续序列的概率。 以信息检索为例,当你在搜索“how long is a football bame”时(bame是一个医学名词),搜索引擎会提示你是否希望搜索"how long is a football game", 这是因为根据语言模型计算出“how long is a football bame”的概率很低,而与bame近似的,可能引起错误的词中,game会使该句生成的概率最大。
对语言模型的目标概率P(w1,,wT),如果假设文本中每个词都是相互独立的,则整句话的联合概率可以表示为其中所有词语条件概率的乘积,即:
然而我们知道语句中的每个词出现的概率都与其前面的词紧密相关, 所以实际上通常用条件概率表示语言模型:
N-gram neural model
在计算语言学中,n-gram是一种重要的文本表示方法,表示一个文本中连续的n个项。基于具体的应用场景,每一项可以是一个字母、单词或者音节。 n-gram模型也是统计语言模型中的一种重要方法,用n-gram训练语言模型时,一般用每个n-gram的历史n-1个词语组成的内容来预测第n个词。
Yoshua Bengio等科学家就于2003年在著名论文 Neural Probabilistic Language Models [ 1 ] 中介绍如何学习一个神经元网络表示的词向量模型。文中的神经概率语言模型(Neural Network Language Model,NNLM)通过一个线性映射和一个非线性隐层连接,同时学习了语言模型和词向量,即通过学习大量语料得到词语的向量表达,通过这些向量得到整个句子的概率。因所有的词语都用一个低维向量来表示,用这种方法学习语言模型可以克服维度灾难(curse of dimensionality)。注意:由于“神经概率语言模型”说法较为泛泛,我们在这里不用其NNLM的本名,考虑到其具体做法,本文中称该模型为N-gram neural model。
在上文中已经讲到用条件概率建模语言模型,即一句话中第t个词的概率和该句话的前t−1个词相关。可实际上越远的词语其实对该词的影响越小,那么如果考虑一个n-gram, 每个词都只受其前面n-1个词的影响,则有:
给定一些真实语料,这些语料中都是有意义的句子,N-gram模型的优化目标则是最大化目标函数:
其中f(wt,wt−1,,wt−n+1)表示根据历史n-1个词得到当前词wt的条件概率,R(θ)表示参数正则项。
Continuous Bag-of-Words model(CBOW)
CBOW模型通过一个词的上下文(各N个词)预测当前词。当N=2时,模型如下图所示:
具体来说,不考虑上下文的词语输入顺序,CBOW是用上下文词语的词向量的均值来预测当前词。
其中xt为第t个词的词向量,分类分数(score)向量 z=U∗context,最终的分类y采用softmax,损失函数采用多类分类交叉熵。
Skip-gram model
CBOW的好处是对上下文词语的分布在词向量上进行了平滑,去掉了噪声,因此在小数据集上很有效。而Skip-gram的方法中,用一个词预测其上下文,得到了当前词上下文的很多样本,因此可用于更大的数据集。
如上图所示,Skip-gram模型的具体做法是,将一个词的词向量映射到2n个词的词向量(2n表示当前输入词的前后各n个词),然后分别通过softmax得到这2n个词的分类损失值之和。
我们介绍了词向量、语言模型和词向量的关系、以及如何通过训练神经网络模型获得词向量。在信息检索中,我们可以根据向量间的余弦夹角,来判断query和文档关键词这二者间的相关性。在句法分析和语义分析中,训练好的词向量可以用来初始化模型,以得到更好的效果。在文档分类中,有了词向量之后,可以用聚类的方法将文档中同义词进行分组,也可以用 N-gram 来预测下一个词。希望大家在本章后能够自行运用词向量进行相关领域的研究。
参考: https://wwwpaddlepaddleorgcn/documentation/docs/zh/user_guides/simple_case/word2vec/READMEcnhtml
这是我在留学期间选修的课程 :natura language process。 这篇文章主要是为了大致的梳理这门课上的知识点,方便日后复习。因此,语言处理的主体对象是English。
简单来说,语言模型就是一个对于不同单词出现概率的统计。
然而,对于英语来说,每个单词可能有不同的时态和单复数等形态变化。因此,在做统计前,需要先对原始数据进行预处理和归一化。
分割句子后,每句话应该作为一个元素单独存储。
一般来说,常用的是 unigram, bigram 和trigram, 即以1-3 个词作为一个对象来统计。n 越大, 统计结果也越稀疏。一个七八个词的组合重复出现的概率,显然远低于2-3个词的组合。 另一方面,根据马尔科夫链, 一个单词的出现,可以认为仅跟前一个词有关系,所以也没有太大必要追求过大的n。
n-gram 是一个重要的基础概念, 它所提供的概率分析可以做到很多事情, 例如机器翻译“请给我打电话”:P(“please call me”) > P("please call I ")。 又比如拼写纠正:基于概率, “its 5pm now” → 纠正为 “it's 5pm now”
没有比较就没有伤害。 对于语言模型的评估, 也需要有一个比较的对象。因此,要用两种方法建立不同的语言模型(当然也可以对比前人的工作成果)。显然,任意给一个测试用的句子,如果在某一模型中的出现概率都比较大,那么这个模型显然更好。 具体来说, 评估方法有两种:
首个单词问题 :对于一个基于bigram或trigram的模型,在计算一个句子的perplexity时,前1或2个单词需要不能直接得到,依赖于句子开头的标识符。也即是说,在训练 n-gram 模型时, 对于每个句子,分别在开头和结尾填充n-1个<s>。从而保证在计算perplexity的时候能够正确地从第一个单词开始计算。这也是为什么前面 sentence segmentation 的时候要将句子区别存储的原因。
显然,无论用来生成LM的corpus多么庞大,总会有些单词没有被包含其中(称为out of vocabulary, OOV)。 解决方法有两种, 一是实现设定一个固定的字典,在训练LM过程中,所有不在字典中的单词统一转换成 token <UNK>, 另一种是将LM中出现频率小于n次的单词当作 <UNK>,剩下的作为字典。 根据字典对测试数据做相同操作,就可以避免OOV的问题。
在处理完OOV问题后,还有一个问题需要处理:所有单词都在字典中,但是单词的组合并没有在LM中出现这一情况。 此时就需要对基于bigram或trigram的LM进行smooth操作,规避这一问题。Smoothing过程有1点需要注意,就是smooth之后的模型,其所有概率加起来,必须仍然为1。常见的smoothing方法有:
特别的,工程上最适合的应该是 stupid backoff algorithm, 这一算法并不确保整体概率为1。仅仅是在回退时乘以系数04计算。即如果trigram没有找到,就使用04×P(bigram), 如果bigram还是没找到, 就是要 04×04×P(unigram)。由于OOV问题已解决,所以对于任意一个词,必然能计算出其概率。
相关阅读: Large Language Models in Machine Translation
在人工智能出现之前,机器智能处理结构化的数据(例如 Excel 里的数据)。但是网络中大部分的数据都是非结构化的,例如:文章、、音频、视频…
在非结构数据中,文本的数量是最多的,他虽然没有和视频占用的空间大,但是他的信息量是最大的。
为了能够分析和利用这些文本信息,我们就需要利用 NLP 技术,让机器理解这些文本信息,并加以利用。
每种动物都有自己的语言,机器也是!
自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。
人类通过语言来交流,狗通过汪汪叫来交流。机器也有自己的交流方式,那就是数字信息。
不同的语言之间是无法沟通的,比如说人类就无法听懂狗叫,甚至不同语言的人类之间都无法直接交流,需要翻译才能交流。
而计算机更是如此,为了让计算机之间互相交流,人们让所有计算机都遵守一些规则,计算机的这些规则就是计算机之间的语言。
既然不同人类语言之间可以有翻译,那么人类和机器之间是否可以通过“翻译”的方式来直接交流呢?
NLP 就是人类和机器之间沟通的桥梁!
为什么是“自然语言”处理?
自然语言就是大家平时在生活中常用的表达方式,大家平时说的「讲人话」就是这个意思。
NLP 有2个核心的任务:
自然语言理解就是希望机器像人一样,具备正常人的语言理解能力,由于自然语言在理解上有很多难点(下面详细说明),所以 NLU 是至今还远不如人类的表现。
自然语言理解的5个难点:
想要深入了解NLU,可以看看这篇文章《一文看懂自然语言理解-NLU(基本概念+实际应用+3种实现方式)》
NLG 是为了跨越人类和机器之间的沟通鸿沟,将非语言格式的数据转换成人类可以理解的语言格式,如文章、报告等。
NLG 的6个步骤:
想要深入了解NLG,可以看看这篇文章《一文看懂自然语言生成 – NLG(6个实现步骤+3个典型应用)》
情感 分析
互联网上有大量的文本信息,这些信息想要表达的内容是五花八门的,但是他们抒发的 情感 是一致的:正面/积极的 – 负面/消极的。
通过 情感 分析,可以快速了解用户的舆情情况。
聊天机器人
过去只有 Siri、小冰这些机器人,大家使用的动力并不强,只是当做一个 娱乐 的方式。但是最近几年智能音箱的快速发展让大家感受到了聊天机器人的价值。
而且未来随着智能家居,智能 汽车 的发展,聊天机器人会有更大的使用价值。
语音识别
语音识别已经成为了全民级的引用,微信里可以语音转文字, 汽车 中使用导航可以直接说目的地,老年人使用输入法也可以直接语音而不用学习拼音…
机器翻译
目前的机器翻译准确率已经很高了,大家使用 Google 翻译完全可以看懂文章的大意。传统的人肉翻译未来很可能会失业。
NLP 可以使用传统的机器学习方法来处理,也可以使用深度学习的方法来处理。2 种不同的途径也对应着不同的处理步骤。详情如下:
方式 1:传统机器学习的 NLP 流程
方式 2:深度学习的 NLP 流程
英文 NLP 语料预处理的 6 个步骤
中文 NLP 语料预处理的 4 个步骤
自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。
NLP的2个核心任务:
NLP 的5个难点:
NLP 的4个典型应用:
NLP 的6个实现步骤:
版本
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。
维基百科版本
自然语言处理(NLP)是计算机科学,信息工程和人工智能的子领域,涉及计算机与人类(自然)语言之间的交互,特别是如何对计算机进行编程以处理和分析大量自然语言数据。自然语言处理中的挑战通常涉及语音识别,自然语言理解和自然语言生成。
自然语言处理(NLP)在旅游领域具有广泛的应用,其中之一是情感分析。情感分析是指通过计算机程序来识别文本中的情感倾向,分析人们对旅游目的地、酒店、餐厅、交通工具等的评价。这种技术可以帮助旅游公司、酒店、餐厅等机构了解消费者的需求和喜好,改善服务质量和提高客户满意度。
一个典型的旅游情感分析应用是在线评论分析。在线评论是消费者对旅游目的地、酒店、餐厅等的反馈,通过使用 NLP 技术,旅游公司和酒店等机构可以分析这些评论,了解消费者对服务质量、位置、价格、餐饮等的看法。这些信息可以帮助他们改善服务质量、提高客户满意度。
另一个应用是社交媒体情感分析。社交媒体是消费者展示旅游经历的主要渠道,通过使用 NLP 技术,旅游公司和酒店等机构可以分析消费者在社交媒体上发布的文本、和视频,了解消费者对旅游目的地、酒店、餐厅等的感受。这些信息可以帮助他们改善服务质量、提高客户满意度、扩大品牌知名度。
此外,NLP还可以用于预测未来趋势,通过分析历史数据来预测旅游需求、价格趋势等,进而帮助旅游公司和酒店等机构调量、提高客户满意度。
NLP技术还可以用于语音识别和语音合成,在旅游领域中应用于语音导航、语音查询等场景。例如,旅游公司可以开发一款语音导航应用,让游客在旅游中使用语音命令来获取信息和导航。
总之,NLP在旅游领域有着广泛的应用,它可以帮助旅游公司、酒店、餐厅等机构了解消费者的需求和喜好,改善服务质量和提高客户满意度。通过使用NLP技术,旅游行业可以更好地了解客户,并提供更好的服务和体验。
Transformer是近两三年非常火的一种适用于NLP领域的一种模型,本质上是Encoder-Decoder结构,所以多应用在机器翻译(输入一个句子输出一个句子)、语音识别(输入语音输出文字)、问答系统等领域。本文基于Attention is all you need这篇论文,讲解Transformer的结构,涉及到的均为论文中或经典,参数值均来自论文,具体问题可以具体调整超参数。
Transformer的组成模块分为: Attention (包括multi-head self-Attention & context-Attention), Normalization (使用的是layer Norm,区别于Batch Norm), mask (padding mask & sequence mask), positional encoding , feed forword network (FFN)。
Transformer的总架构如下图所示:
这是典型的Transformer结构,简单来说,Transformer = 预训练(input) + EncoderN + 预训练(output) + DecoderN+output。
模型的运行步骤为:
① 对Input做Embedding,可以使用Word2Vec等工具,维度为512维,Embedding过后结合positional encoding,它记录了输入单词的位置信息。
② 预处理后的输入向量经过多头Attention层处理,加入残差、规则化,数据给到FFN(全连接层),再加入残差、规则化。如此反复,经过6个这样的Encoder(即Nx=6x),编码部分结束。
③ 编码部分的第一个Decoder的第一个Attention接受的是来自Outputs的信息,其余的均接受来自Encoder和上一层Decoder的信息。最终的output的串行生成的,每生成一个,就放到Decoder最下面的outputs座位Decoder的输入。
④ Decoder也是6个,最终的输出要经过线性层和Softmax得到最终输出。
要注意的是,Encoder和Decoder的结构是相同的,但不共享权重;在Encoder部分,每个单词在Attention层的路径具有依赖关系,串行执行,在FFN层不具有依赖关系,并行执行。
在这个结构中,存在这样几个Attention,有:self-attention & context attention & scaled dot-product attention & multi-headed attention。要说明的是scaled dot-product attention和multi-headed attention是两种attention的计算方法,后面会介绍,前两个Attention均使用的是这两种计算方法。
这种Attention的计算公式为:
以第一个Encoder为例对流程解释如下:
① 为Encoder的每个单词创建如下的三个向量:Query vector , Key vector , Value vector。这三个向量由输入的Embedding乘以三个向量矩阵得到。要注意的是,Embedding向量维度为512,Q K V向量维度是64。
② 计算Score:对于每个词,计算它自身的 与所有的 的乘积。
③ 计算Attention:按上面Attention的公式,将Score除以一个定值(这个操作称为“scaled”),进行Softmax变换,使所有Score之和为1。最后乘以对应位置的 ,得到该单词的Attention。
这就是scaled dot-product attention这种机制的计算方法,Transformer架构中的两种Attention都使用的是这种计算方法,不同的是二者的Q K V的来源有些差异。
注 : 为什么Softmax中要除以一个根号? 论文中给出的原因 是本来 和 都是均值为0、方差为1的变量,假设二者分布相互独立,他们乘积的分布就是均值为0、方差为 ,除以根号使得Softmax内的值保持均值为0、方差为1利于梯度计算。如果不加根号会使得计算收敛很慢,因为Softmax中的值处于梯度消失区。
进一步思考: 为什么很多Attention中没有Scaled这一步? Attention分为两种,前面那种是乘法,还有加法的一种: 。实验表明,加法虽然看起来简单但计算起来并没有快多少(tanh相当于一个完整的隐层),在维度较高时确实更好,但如果加上Scaled也差不多。Transformer中选择乘法是为了计算更快,维度大的话就加上Scaled。
多头注意力机制也是一种处理的技巧,主要提高了Attention层的性能。因为上面介绍的self-attention虽然包含了其余位置的编码,但主导的还是自身位置的单词,而有时我们更需要关注其他位置,比如机器翻译中的代词具体指代哪个主语。
多头注意力机制是把Q K V三个矩阵通过h个线性变换投影,然后进行h次self-attention的计算,最后再把h个计算结果拼接起来。
在Encoder的self-attention中,Q K V均是上一层Encoder的输出,对于第一个Encoder来说,他们就是输入的Embedding与positional encoding之和。
在Decoder的self-attention中,Q K V也是上一层Decoder的输出,对于第一个Decoder来说,他们是输入的Embedding与positional encoding之和。要注意的是,这部分我们不希望获取到后面时刻的数据,只想考虑已经预测出来的信息,所以要进行sequence masking(后面讲到)。
在Encoder-Decoder attention(即context attention)中,Q是Decoder上一层的输出,K V是Encoder的输出。
Transformer中使用的是LN,并非BN(Batch Normalization)。什么是Norm规范化,一般地,可以用下面公式来表达:
公式一为规范化处理前,公式二为处理后。规范化是对数据分布的调整,比如本身数据是正态分布,调整后的数据分布就是标准正态分布,相当于调整了均值和方差。这样做的意义一是让激活值落入激活函数敏感区间,梯度更新变大,训练加快,二是消除极端值,提升训练稳定性。
Transformer使用的是LN,而不是BN。首先看二者的区别如图:
LN是对每个样本自身进行规范化,BN是对一个批次的数据在同一维度上规范化,是跨样本的。在CNN任务中,BatchSize较大,并且训练时全局记录了样本均值和方差,适用于BN。而时序问题中,对每个神经元进行统计是不现实的。LN的限制相对来说就小很多,即时BatchSize=1也无妨。
mask分为两种,一是padding mask,二是sequence mask,这两种在Transformer中出现的位置不同:padding mask在所有scaled dot-product attention中均出现,sequence mask仅在decoder的self-attention中出现。
由于每个batch的输入序列的长度不同,padding mask被用来对齐序列长度,简单来说就是短序列向长序列对齐,对齐的方法就是补0。补充上的地方是没有意义的,那么Attention就不应该给以关注。实际上,我们并不是直接在相应位置上补充0,而是补充-inf(负无穷),这样在Softmax之后,这些位置的概率就接近0了。
在处理过程中,padding mask是一个bool张量,false的地方就是补0的地方。
前面提到,sequence mask的作用是不让decoder看到当前时刻以后的信息,所以要把后面那部分信息完全遮盖住。具体的做法是,产生一个上三角矩阵,上三角的值均为1,下三角和对角线均为0。
在decoder的self-attention部分,sequence mask 和 padding mask同时作用,二者相加作为mask。
RNN处理序列问题是天然有序的,而Transformer消除了这种时序上的依赖。以机器翻译为例,输出要是一个完整的合理的句子,就需要对输入数据处理时加入位置信息,否则可能输出结果的每个字是对的,但组成不了一句话。positional encoding是对输入信息的位置进行编码,再和输入的Embedding相加。
positional encoding使用的是正余弦编码:
在偶数位置,使用公式一正弦编码,奇数位置使用公式二余弦编码。由于正余弦函数的特性,这种编码既是绝对位置编码,也包含了相对位置编码的信息。
相对位置编码信息主要依赖于三角函数和角公式:
FFN 是一个全连接网络,顺序上先线性变换,再ReLU非线性变换,再线性变换,公式如下:
参考文献:
[整理] 聊聊 Transformer
碎碎念:Transformer的细枝末节
图解什么是 Transformer
文本分类实战(八)—— Transformer模型
深度学习:transformer模型
从外呼系统诞生的那一刻起,基于人工规则关键词匹配的语义理解方法,和以NLP算法驱动的语义理解方法,一直是对话系统工业界领域的争论焦点。基于关键词匹配的语义理解方法,对于快速搭建新对话场景有着其独特优势。在AI训练师的指导下,机器人通过已配置好的关键词进行匹配,能很快根据用户的表达做出机械的理解反应,所设置的关键词模板越复杂,机器人能应对的对话内容也越丰富。然而,简单粗暴的配置方式相应地也带来了一定的负面作用。随着对话内容的增多,关键词穷举所带来的难度呈指数级上升,形成的语义冲突更是不可忽视的难题。而以NLP算法驱动的语义理解方法则恰恰相反,算法的有效工作,往往是“娇生惯养”型的,需要前沿的算法和大量的垂直数据作为基础支持。然而,一旦满足前沿算法+大数据两大条件,以NLP驱动的方法在复杂对话场景的语义泛化性和精准识别上就能够大显神威。
只有当行业区分后,垂直行业下的语料积累和NLP算法模型准确度才有提升的可能。我们曾在已有的10NLP系统中做过测试,分场景的意图判断准确度相比泛行业可以提升5%-7%。利用算法能力进行最终意向输出,替代过往的规则匹配,可以让意向判断更贴近真实的转化效果。与此同时,通过垂直领域下语料库、意图库的积累和调用,以及话术智能推荐,可以大大提升AIT话术交付的响应速度,更好应对618、双十一等大促节点下的客户爆发性需求。
有了NLP20系统的加持,原先一些高难度的对话场景有了实现的可能。曾经,对于调查问卷、用户满意度调研之类的外呼需求,在关键信息提取、时间地址组织名等实体信息抽取上的要求非常高,靠简单关键词穷举是根本无法满足要求的。而有了NLP的实体识别功能和关键信息提取功能,复杂对话场景的数据分析变得可行;有了情绪识别和情景感知功能的加成,同样的用户回复⌄,机器人有了更多的语言表达选择,真正做到了千人千面;而有了知识图谱算法的支持,极大地减少了复杂重复问题的实施投入,也让机器人在客户各式各样问题面前变得更加从容。
此次发布的NLP20系统,最核心的亮点,一知智能在杭州人工智能计算中心与升腾生态软硬件进行调优,结合浙大·一知人工智能联合研究中心,共同提出了在泛消费领域的专用大规模预训练语言模型“EAZI”。在基于数百G级别涵盖消费领域信息的互联网网页、论坛、微博、新闻等形式的高质量语料训练,结合数亿条一知智能自身积累的消费场景对话数据进行专项任务训练,可以同时支持多种语义理解算法,包含意图识别、问答识别、实体识别、情感识别、知识图谱以及对话内容生成等多项NLP常见任务。“EAZI”模型在Transformer架构基础上,自研基于语言学知识、领域数据增强技术,从模型架构表征层和交互层,再到预训练策略进行了全方位改进。具体而言:
1、细粒度词法表征,并基于词义信息引入注意力机制,对句法进行约束,提升模型对于语言学知识的建模能力。
2、结合消费场景积累的大量实体信息和引入Discourse的Mask机制,强化模型对场景专项识别的表征能力。有了垂直领域数据的增强,识别算法对于领域内常见的表达方式语言成分和语篇关系表征更为敏感。
3、为满足工业界高并发、低时延、低资源消耗需求,EAZI使用了大模型蒸馏和初始化小模型策略,最终实现参数仅为十亿级别的轻量化预训练模型。相比于动辄千亿参数的大模型而言,在消费领域专有的识别场景中,实现效果与识别速度的双向提升,突破传统“巨无霸”大模型的效率限制。
4、在实际训练过程中,一知智能与华为杭州计算中心共同协作,在升腾生态下,算力达到40 PFLOPS FP16,相当于2万台高性能PC的计算能力,显著提升算力的快速响应。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)