自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)

1.长序列问题

1.1 长文本序列问题(Long Text Sequences)

    长文本序列:

        定义:需要处理很长的输入序列,通常为文章级长度的文本序列

        应用:自动写书、自动写故事、聊天机器人

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第1张图片

1.2 聊天机器人(Chatbots)

    定义:能模拟人类进行聊天和问答的自然语言处理系统

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第2张图片

1.3 Transformer与长序列问题

    Transformer应用在长文本序列中存在的问题:

        (1)需要大量内存空间,空间复杂度O(N^2)

        (2)需要大量训练时间,时间复杂度O(N^2)

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第3张图片

        因此,Transformer模型无法直接应用在长序列问题中


2. Transformer的复杂度(Transformer Complexity)

2.1 注意力机制复杂度

    注意力的复杂度:

        Q、K、V矩阵维度:[L,d_model]

        Q*K维度:[L,L]

        存储这些矩阵及中间结果需要大量内存

        例如:当L=64K时,QK就是64K*64K的矩阵,如果是32位浮点计算就需要 16GB 的内存

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第4张图片

    不同注意力机制的复杂度:

        

2.2 隐藏层复杂度

    隐藏层的复杂度:

        原因:正向传播计算出的各层的权值需要存储,以用于反向传播

        问题:对于深度模型,存储这些权值需要耗费大量内存,甚至是不可接受的

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第5张图片

2.3 解决方法

    思路:

        (1)对于长序列,不考虑全部位置,而只专注于特定位置

        (2)重新计算激活函数,而不存储所有中间结果

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第6张图片


3.Reformer

3.1 基本概念

    定义:为了解决Transformer复杂度问题而提出的新模型,能够很好适用于长序列问题中

    特点:

        能处理长序列问题,最高能输入由一百万个单词构成的长序列

        使用局部敏感哈希技术,降低计算注意力时的复杂度

        使用可逆层结构,无需存储各层权值,节约大量内存

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第7张图片

    结构:

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第8张图片

    表现:

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第9张图片

3.2 局部敏感哈希注意力(LSH Attention)

    定义:

        使用局部敏感哈希(locality-sensitive hashing)的点乘注意力,只计算最相关的几个词之间的注意力而不再遍历所有可能,使复杂度从O(N^2)变为 O(NlogN)

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第10张图片

    最近邻算法:

        常见最近邻算法:KNN、哈希表与哈希函数、LSH、多平面

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第11张图片

    原理:

        对于给定的查询Q,查找与其最近(最相关)的几个K计算注意力,而不是对所有K都计算

        通过局部敏感哈希法来快速找到最近的K

        具有相同哈希值的向量,在高维空间中相邻

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第12张图片

    流程:

        (1)将查询Q和键K进行哈希化

        (2)将哈希值相似的向量放入同一个"桶"中(即在向量空间中划分区域)

        (3)对同一个"桶"中的Q和K计算注意力

        (4)重复上述过程,提高划分的准确性

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第13张图片

    例子:

        给出询问Q和键值K,将其进行哈希化,得到"LSH桶"

        对得到的各"LSH桶"进行排序,让哈希值相同的在一起

        按固定大小,将排序好的"LSH桶"进行分块(可并行计算)

        在各块中的相同"LSH桶"计算注意力(各块可并行计算)

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第14张图片

3.3 可逆残差层(Reversible Residual Layers)

3.3.1 动机

    目的:通过设计一种网络结构,使其无需存储各层权值以进行反向传播,从而减少内存消耗

    例子:

        如下图,由12个注意力层和12个前馈层构成的网络,当输入数据长度为1million时,其会占用50GB内存

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第15张图片

    解决方法:构建一种可反向计算的网络,这样就无需存储各层的权值

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第16张图片

3.3.2 可逆层(Reversible Layers)

    定义:

        可逆层通过构建两条相似的分支,使其能够从后向前反向重构正向传播过程,因此无需存储权值

        

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第17张图片

    计算方法:

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第18张图片

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第19张图片

    计算流程:

        正向传播:

            自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第20张图片

        反向传播:

            自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第21张图片

    表现:

        自然语言处理(NLP)-4.4 Reformer与对话机器人(Reformer and Chatbot)_第22张图片


作业代码:https://github.com/Ogmx/Natural-Language-Processing-Specialization

可将代码与数据下载至本地,使用jupyter notebook打开

你可能感兴趣的:(自然语言处理(NLP),人工智能)