RAPL: A Relation-Aware Prototype Learning Approach for Few-Shot Document-Level Relation Extraction

Link [2310.15743] RAPL: A Relation-Aware Prototype Learning Approach for Few-Shot Document-Level Relation Extraction (arxiv.org) Accepted EMNLP 2023. EMNLP:CCF B Related Works 这一部分内容本来是在论文的最后面,但是考虑到这篇论文也算是打开了新世界的大门,所以把这个放在最前面。 关系抽取(Relation Extraction,RE)大致可以分为三种: 语句级 RE(Sentence-Level RE):早期的研究主要集中在预测单个句子内两个实体之间的关系。各种基于模式和神经网络的方法在句子级关系抽取上取得了令人满意的结果。然而,句子级关系抽取在抽取范围和规模上有显著的局限性。 可以说是早期的 RE 大多是这一类别。 文档级 RE (Document-Level RE,DocRE):现有的大多数文档级关系抽取研究都基于数据驱动的监督场景,通常分为基于图和基于序列的方法。基于图的方法通常通过图结构抽象文档,并使用图神经网络进行推理。基于序列的方法则使用仅包含变压器的架构来编码长距离的上下文依赖关系。这两类方法在文档级关系抽取中都取得了令人印象深刻的结果。然而,这些方法对大规模标注文档的依赖使得它们难以适应低资源场景。 小样本文档级 RE (Few-Shot Document-Level RE,FSDLRE):为了应对现实世界文档级关系抽取场景中普遍存在的数据稀缺问题,Popovic等将文档级关系抽取任务形式化为小样本学习任务。为了完成这一任务,他们提出了多种基于度量的模型,这些模型建立在最先进的监督文档级关系抽取方法和少样本句子级关系抽取方法的基础上,旨在解决不同任务设置的问题。有效的基于度量的少样本文档级关系抽取方法的每个类别的原型应该准确捕捉相应的关系语义。然而,由于现有方法的粗粒度关系原型学习策略和”一刀切”的 NOTA 原型学习策略,这对现有方法来说是一个挑战。 术语解释: 原型学习(Prototype-Based Learning)是一种通过存储一组代表性样本(原型)来进行分类、回归或聚类的学习方法。原型学习的主要步骤包括: 选择原型:从训练数据中选择一组代表性的样本作为原型。 计算距离:使用距离度量(如欧氏距离、曼哈顿距离等)来确定测试样本与原型之间的相似性。 分类或聚类:将测试样本分配给最接近的原型,从而确定其所属的类别或簇。 NOTA Prototype 在本文中指的是 “None-Of-The-Above” 原型,用于处理那些不属于任何目标关系类型的实体对。以下是其主要特点: 任务特定:每个任务生成特定的 NOTA 原型,以更好地捕捉该任务中的 NOTA 语义。 基础原型:引入一组可学习的基础 NOTA 原型,这些原型需要在每个任务中进一步修正。 支持实例选择:从支持文档中选择 NOTA 实例,并将其与基础NOTA原型融合,生成最终的任务特定NOTA 原型。 语义捕捉:通过这种方法,NOTA 原型不仅包含了元学习的通用知识,还能捕捉每个任务中的特定NOTA 语义。 Intro FSDLRE 任务的简单描述:...

September 17, 2024 · 248 words · Kurong

《计组KG》课题开发过程(二)

前言 自从上次记录已经过去了一个月,整个课题进展不大。原因一个是暑期有点摆,另一个是关系抽取确实比较繁琐。不管怎么说,来记录下吧。 NER 数据集下的模型训练 首先需要声明的是该阶段的模型不参与于最后 KG 的构建,目的仅仅是跑通模型训练、验证的过程,为后续阶段提供便利。 NER 数据集 该部分信息在完成 RE 部分后可能会发生些微变动,仅作参考,后续会做调整。 共标记5147条中文语句,实体共标注1472个。 下面是各个标签下的数量统计: Label Count TECH 388 COMP 382 STOR 170 DATA 133 INST 105 ARCH 71 IO 61 PERF 54 PROG 52 CORP 17 ALG 16 PROT 15 PER 4 GRP 4 模型选择 模型有两大类: 传统深度学习方法 CNN-CRF BiLSTM-CRF BERT 系预训练模型,输出层为 CRF 或 MLP+Softmax BERT:BERT 是一个双向 Transformer 模型,通过掩码语言模型(Masked Language Model, MLM)和下一句预测(Next Sentence Prediction, NSP)任务进行预训练 RoBERTa:RoBERTa 是对 BERT 的优化版本,移除了 NSP 任务,并采用了动态掩码策略 ALBERT:ALBERT 是 BERT 的轻量级版本,通过参数共享和嵌入参数因子化来减少模型大小 XLM-RoBERTa:XLM-RoBERTa 是针对多语言的预训练模型,基于 RoBERTa 和 XLM 的结合 这里选择的是 XLM-RoBERTa,预训练模型选择的是 FacebookAI/xlm-roberta-large-finetuned-conll03-english · Hugging Face...

September 14, 2024 · 423 words · Kurong

《计组KG》课题开发番外:关系抽取的思考过程

现状 目前课题进行到了关系抽取这一步。在看完之前的RE综述后,我决定整一个 Joint 的 NER+RE 模型。目前已经完成了 NER 的标注工作,下一步工作自然就是 RE 的标注。但是 RE 的标注要比 NER 要困难的多,一个是对于关系的定义依赖于实体类型、句子词性等多种复杂要素,二是手工标注势必工作量巨大。所以 RE 的标注有什么解决方法呢? 我决定把整个思考过程记录下来,方便复盘。 相关开源库 thunlp/OpenNRE:用于神经关系提取 (NRE) 的开源包 (github.com) SapienzaNLP/relik:检索、读取和 LinK:学术预算上的快速准确的实体链接和关系提取 (ACL 2024) (github.com) huggingface/setfit:使用句子转换器进行高效的少样本学习 (github.com) EleutherAI/lm-evaluation-harness:一种用于语言模型小样本评估的框架。 (github.com) 关系抽取的可能方案 首先能想到的两种常见方案: 使用 RE 预训练模型预标注:和 NER 的标注工作流程一致,但是中文 RE 预训练模型很难找 远程监督:使用已有的知识库或实体关系词典,对大规模文本进行远程监督标注。但是不适合当前课题的小规模数据集,而且没有现成的大量 RE 标注数据 以上两种方案中只有预训练模型的预标注还算可行,那有没有什么方法可以加速这一过程?可以看看下面的两种方法: 半监督学习:结合少量人工标注数据和大量未标注数据,通过半监督学习的方法训练模型 few-shot 小样本学习:使用少量人工标注的数据对few-shot模型进行训练,以提高模型在少样本情况下的泛化能力 这两种方案值得单独进行介绍。 半监督学习 半监督学习(Semi-Supervised Learning)是一种结合了监督学习和无监督学习的机器学习方法。它利用少量的标记数据和大量的未标记数据来训练模型,从而提高模型的泛化能力和性能。 半监督学习的样本标注依赖假设,以下是部分常见假设: 平滑性假设:如果两个数据点在高密度区域中且距离很近,那么它们的输出也应该相似 聚类假设:如果数据点形成簇,那么同一簇中的数据点应该属于同一类 流形假设:高维数据通常位于低维流形上,同一流形上的数据点具有相同的标签 常用的方法有: 一致性正则化:假设对未标记数据加入小扰动后,其分类结果不应改变 伪标签:使用已标记数据训练初始模型,然后用该模型对未标记数据进行预测,生成伪标签,再将这些伪标签数据加入训练集中进行再训练 生成式模型:利用生成模型(如GANs)从数据分布中生成样本,并将这些样本用于训练分类器 优势: 利用未标注数据,提高模型的泛化能力和性能 较低标注成本 适应性强,可以应用于多种任务 缺点: 依赖数据假设:半监督学习通常假设未标记数据和标记数据在特征空间中具有相似性,这在实际应用中并不总是成立。如果这些假设不成立,可能会导致模型性能下降 标签传播误差 数据不平衡问题 我曾经在 kaggle 比赛中使用过半监督学习中的伪标签方法,只从工程实现的角度看比较容易,但是模型性能不一定有提升。...

August 24, 2024 · 431 words · Kurong

BPE算法

基本概念 Byte-Pair Encoding (BPE) 是一种常用于自然语言处理(NLP)的分词算法。BPE最初是一种数据压缩算法,由Philip Gage在1994年提出。在NLP中,BPE被用来将文本分割成子词(subword)单元,这样可以在处理未见过的单词时更有效。 工作原理 BPE的核心思想是通过多次迭代,将最常见的字符对(或子词对)合并成一个新的符号,直到词汇表达到预定的大小。具体步骤如下: 初始化词汇表:将所有单个字符作为初始词汇表。 统计频率:统计所有相邻字符对的出现频率。 合并字符对:找到出现频率最高的字符对,并将其合并成一个新的符号。 更新词汇表:将新的符号加入词汇表,并更新文本中的所有相应字符对。 重复步骤2-4:直到词汇表达到预定大小。 例子 假设我们有一个简单的文本:“banana banana”. 初始词汇表为:{b, a, n, }. 具体步骤如下: 初始化:词汇表为 {b, a, n, }。 统计频率:统计相邻字符对的频率,如 “ba” 出现2次,“an” 出现2次,“na” 出现2次。 合并字符对:选择频率最高的字符对 “an”,将其合并成一个新符号 “an”。更新后的文本为 “b an an a b an an a”。 更新词汇表:词汇表更新为 {b, a, n, an}。 重复步骤2-4:继续统计频率并合并,直到词汇表达到预定大小。 Byte-Level BPE 在处理多语言文本时,BPE的一个问题是字符集可能会非常大。为了解决这个问题,可以使用Byte-Level BPE。Byte-Level BPE将每个字节视为一个字符,这样基础字符集的大小固定为256(即所有可能的字节值)。 优缺点 优点: 处理未见过的单词:通过将单词分割成子词,可以更好地处理未见过的单词 词汇表大小可控:可以通过设置预定大小来控制词汇表的大小 缺点: 语义信息丢失:在某些情况下,分割后的子词可能会丢失部分语义信息 计算复杂度:多次迭代合并字符对的过程可能会增加计算复杂度

August 17, 2024 · 60 words · Kurong

Lecture 10: Pretrained Model

Word structure and subword models We assume a fixed vocab of tens of thousands of words, built from the training set. All novel words seen at test time are mapped to a single UNK. Finite vocabulary assumptions make even less sense in many languages. Many languages exhibit complex morphology, or word structure. The byte-pair encoding algorithm (BPE) Subword modeling in NLP encompasses a wide range of methods for reasoning about structure below the word level....

August 16, 2024 · 302 words · Kurong

《实体关系抽取方法研究综述》笔记

关系抽取 Relation Extraction 定义: 通常将实体间的关系形式化地描述为关系三元组 $\{E_1,R,E_2\}$ ,其中 $E$ 为实体类型,$R$ 为关系描述类型。 关系抽取与命名实体识别、关系触发词识别构成一个端到端任务的框架: 命名实体识别 Name Entity Recognition:是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等; 关系触发词识别 Relation trigger word identification:是指对触发实体关系的词进行分类,识别出是触发词还是非触发词,判定抽取出的关系是正类还是负类。 关系抽取是一个文本分类问题,相比于情感分类等任物,其具有以下特点: 领域众多,关系模型构建复杂。由于限定了关系类别,可采用基于规则、词典以及本体的方法,也可采用传统机器学习的有监督、半监督以及无监督方法,深度学习的有监督、远程监督方法。这类方法的模型构建难度相对于开放领域难度较低,但是移植性和扩展性较差。而针对开放领域的关系抽取,由于关系类型多样且不确定,可以采用无监督和远程监督等方法 数据来源广泛,主要有结构化、半结构化、无结构3类。针对表格文档、数据库数据等结构化数据,方法众多,现通常采用深度学习相关的方法等;针对纯文本的无结构数据,由于无法预料全部关系类型,一般采用以聚类为核心的无监督方法等;而针对维基百科、百度百科等半结构化数据,通常采用半监督和远程监督方法等 关系种类繁多复杂,噪音数据无法避免。实体之间的关系多样,有一种或多种关系,早期方法主要针对一种关系(忽略重叠关系)进行抽取,这类方法忽略了实体间的多种关系,对实体间的潜在关系难以处理。近年来,图结构逐渐应用于关系抽取领域,为关系重叠和实体重叠提供了新思路。而针对噪音数据,有人发现少量对抗样本会避免模型过拟合,提出使用对抗训练提高模型的性能 评价指标用 Precision、Recall、F1. 基于深度学习的关系抽取方法 监督学习:Pipeline 常见的模型有CNN、RNN、LSTM/BiLSTM、GCN(图神经网络)、混合抽取(模型融合)。 监督学习:Joint 基于共享参数的方法:命名实体识别和关系抽取通过共享编码层在训练过程中产生的共享参数相互依赖,最终训练得到最佳的全局参数。因此,基于共享参数方法有效地改善了流水线方法中存在的错误累积传播问题和忽视2个子任务间关系依赖的问题,提高模型的鲁棒性 基于序列标注的方法:由于基于共性参数的方法容易产生信息冗余,因此可以将命名实体识别和实体关系抽取融合成一个序列标注问题,可以同时识别出实体和关系。该方法利用一个端到端的神经网络模型抽取出实体之间的关系三元组,减少了无效实体对模型的影响,提高了关系抽取的召回率和准确率 基于图结构的方法:针对前2种方法无法解决的实体重叠、关系重叠问题,基于图结构的方法能有效得解决 远程监督学习 远程监督学习(Distant Supervision)是一种基于外部知识的监督学习方法,主要用于自动标注大规模文本数据,以训练关系抽取模型。其核心思想是利用已知的关系图谱(如知识图谱)来标注文本数据。例如,如果两个实体在知识图谱中存在关系,那么包含这两个实体的句子就可以被认为是该关系的正例。 远程监督的实体关系抽取方法极大地减少了对人工的依赖,可以自动地抽取大量的实体对,从而扩大了知识库的规模。 然而这类方法在数据标注过程会带来2个问题:噪音数据和抽取特征的误差传播。 基于远程监督的基本假设,海量数据的实体对的关系会被错误标记,从而产生了噪音数据 由于利用自然语言处理工具抽取的特征也存在一定的误差,会引起特征的传播误差和错误积累 BERT 基于开放领域的关系抽取方法 由于传统关系抽取基于特定领域、特定关系进行抽取,导致关系抽取这一任务耗时耗力,成本极高,同时不利于扩展语料类型。近年来,针对开放领域的实体关系抽取方法逐渐受到人们的广泛关注。由于互联网不断发展,开放语料的规模不断扩大,并且包含的关系类型愈加复杂,研究者直接面向大多未经人工标注的开放语料进行关系抽取,有利于促进实体关系抽取的发展,而且具有更大的实际意义。 开放领域关系抽取的方法是信息抽取领域的新的研究方向。该关系抽取方法主要分为半监督和无监督2种,并结合语形特征和语义特征自动地在大规模非限定类型的语料库中进行关系抽取。开放领域关系抽取的方法无需事先人为制定关系类型,减轻了人工标注的负担,而由此设计的系统可移植性较强,极大地促进关系抽取的发展。 开放领域的关系抽取方法主要有3个流程: 深层解析小规模的语料集,自动抽取实体间关系三元组,利用朴素贝叶斯分类器训练已标注可信和不可信的关系三元组构建关系表示模型; 利用关系抽取模型并输入词性、序列等特征等数据,在训练好的分类器上进行大量网络文献的关系抽取,获取候选关系三元组; 合并候选三元组,通过统计的方法计算各个关系三元组的可信度,并建立索引。 本文链接 实体关系抽取方法研究综述 (ict.ac.cn)

August 14, 2024 · 51 words · Kurong

😺 Is All You Need——Transformer补充

关于本文动机 Transformer主要内容请见 Lecture 9: Transformer | KurongBlog (kurongtohsaka.github.io),对 Transformer 已经进行比较详细的介绍和讲解了,但还是有一些细节问题不好在该篇文章提及,所以单开一篇讨论。 Q,K,V 的理解 假设我们想让所有的词都与第一个词 $v_1$ 相似,我们可以让 $v_1$ 作为查询。 然后,将该查询与句子中所有词进行点积,这里的词就是键。 所以查询和键的组合给了我们权重,接着再将这些权重与作为值的所有单词相乘。 通过下面的公式可以理解这个过程,并理解查询、键、值分别代表什么意思: $$ softmax(QK)=W \\ WV=Y $$ 一种比较感性的理解:想要得到某个 $V$ 对应的某个可能的相似信息需要先 $Q$ 这个 $V$ 的 $K$ ,$QK$ 得到注意力分数,之后经过 softmax 平滑后得到概率 $W $,然后 $WV$ 后得到最终的相似信息 $Y$ 。 Attention 机制 在数据库中,如果我们想通过查询 $q$ 和键 $k_i$ 检索某个值 $v_i$ 。注意力与这种数据库取值技术类似,但是以概率的方式进行的。 $$ attention(q,k,v)=\sum_isimilarity(q,k_i)v_i $$ 注意力机制测量查询 $q$ 和每个键值 $k_i$ 之间的相似性。 返回每个键值的权重代表这种相似性。 最后,返回所有值的加权组合作为输出。 Mask 掩码 在机器翻译或文本生成任务中,我们经常需要预测下一个单词出现的概率,这类任务我们一次只能看到一个单词。此时注意力只能放在下一个词上,不能放在第二个词或后面的词上。简而言之,注意力不能有非平凡的超对角线分量。 我们可以通过添加掩码矩阵来修正注意力,以消除神经网络对未来的了解。 Multi-head Attention 多头注意力机制 “小美长得很漂亮而且人还很好” 。这里“人”这个词,在语法上与“小美”和“好”这些词存在某种意义或关联。这句话中“人”这个词需要理解为“人品”,说的是小美的人品很好。仅仅使用一个注意力机制可能无法正确识别这三个词之间的关联,这种情况下,使用多个注意力可以更好地表示与“人”相关的词。这减少了注意力寻找所有重要词的负担,增加找到更多相关词的机会。...

August 14, 2024 · 840 words · Kurong

Lecture 9: Transformer

Issues with recurrent models Linear interaction distance RNNs are unrolled “left-to-right” Problem: RNNs take O(sequence length) steps for distant word pairs to interact What does the O Problem means ? Hard to learn long-distance dependencies (because gradient problems! ) Linear order of words is “baked in”; we already know linear order isn’t the right way to think about sentences… Lack of parallelizability Forward and backward passes have O(sequence length) unparallelizable operations GPUs can perform a bunch of independent computations at once, but future RNN hidden states can’t be computed in full before past RNN hidden states have been computed Self-Attention Recall: Attention operates on queries, keys, and values....

August 13, 2024 · 553 words · Kurong

8.06-8.11:一周总结

本周工作 本周工作是从8月10号vpn重置之后才开始进行的,所以内容有点少 完成了第一版训练、验证代码 调试第一个模型,修复各种bug 学习 Transformer 相关内容 课题下周改进 先快速训练出几个模型出来,选出一个最好的模型 进行第二次及多次迭代训练,更新词典 关系抽取看相关文献 本周反思 本周算是玩爽了,课题下周尽快开展关系抽取的调研工作。

August 11, 2024 · 13 words · Kurong

Encoder-Decoder 架构

原理 Encoder-Decoder架构通常由两个主要部分组成:编码器(Encoder)和解码器(Decoder)。 编码器(Encoder):编码器的任务是将输入序列(如一句话)转换为一个固定长度的上下文向量(context vector)。这个过程通常通过递归神经网络(RNN)、长短期记忆网络(LSTM)或门控循环单元(GRU)来实现。编码器逐步读取输入序列的每个元素,并将其信息压缩到上下文向量中。 解码器(Decoder):解码器接收编码器生成的上下文向量,并将其转换为输出序列。解码器同样可以使用RNN、LSTM或GRU。解码器在生成每个输出元素时,会考虑上下文向量以及之前生成的输出元素。 作用 Encoder-Decoder架构主要用于处理需要将一个序列转换为另一个序列的任务,例如: 机器翻译:将一种语言的句子翻译成另一种语言。 文本摘要:将长文本压缩成简短摘要。 对话系统:生成对用户输入的响应。 近年来,基于Transformer的Encoder-Decoder架构(如BERT、GPT、T5等)因其更好的性能和并行计算能力,逐渐取代了传统的RNN架构。 优缺点 优点: 灵活性:可以处理不同长度的输入和输出序列。 强大的表示能力:能够捕捉输入序列中的复杂模式和关系。 缺点: 长距离依赖问题:传统RNN在处理长序列时可能会遗忘早期的信息。 计算复杂度高:训练和推理过程需要大量计算资源。

August 11, 2024 · 18 words · Kurong

残差连接

原理 残差连接(Residual Connection)最早由何凯明等人在2015年提出的 ResNet 中引入。ResNet 通过引入残差块,使得网络可以扩展到更深的层数,并在 ImageNet 比赛中取得了显著的成功。 残差连接的核心思想是引入跳跃连接,将输入信号直接传递到网络的后续层,从而构建了一条捷径路径。这种结构允许网络学习输入和输出之间的残差,而不是直接学习输出。 残差连接可以表示为: $$ y=F(x)+x $$ 其中,$x$ 表示输入,$F(x)$ 表示经过非线性变换后的输出。 作用 解决梯度消失和梯度爆炸问题 提高训练效率 增强模型的泛化性能 例子 下图是 Transformer 论文中的模型结构图。 可以看到在每一个 Attention Layer 中都有一个 Add ,原输入和 Multi-head 变换后的输出做了一个简单的相加操作,而这就是所谓的残差连接。

August 11, 2024 · 32 words · Kurong

《基于MRC的设备故障命名实体识别方法》笔记

MRC 本论文关于设备故障领域的NER任务,将 NER 的序列标注问题重构为 MRC 问题。 MRC(Machine Reading Comprehension)机器阅读理解,与文生成和机器翻译任务类似。本论文使用该方法,根堆每个实体类型,设计了相应地自然语言形式的查询,通过上下文的查询来定位并提取实体。例如,针对故障代码 the machine suffers from error[#10482] 的命名实体识别,被形式化为 “文本中提到了哪种故障代码 ” 。 人话:先通过某个文生成/机器翻译模型将错误代码转化为中文,然后通过预定的错误代码进行映射 本文的主要工作如下: 将 NER 任务转化为 MRC 问题,采用自然语言查询来实现命名实体的识别。 通过在查询中集成预设的命名实体类别信息,克服传统方法中实体类别语义信息缺少的限制,提升命名实体识别的准确性。 结合设备故障数据集的构建,开展相关的实 验对比,并进行定量分析,证明了本文方法的有效性。 模型结构 编码层为 ALBERT 特征提取为 BiLSTM 分类器为两个sigmoid,分别预测实体的起始索引、结束索引 数据集 对比试验 模型为以下几类: 结果: 消融实验

August 6, 2024 · 39 words · Kurong

7.29-8.04:一周总结

本周任务 改进了数据集的标注格式,并更新了词典 完成 BERT 系、BiLSTM-CRF、CNN-CRF 等模型代码 第一版训练、验证代码进度50%,但是 vpn 流量过期,需要等到10号以后才能继续训练😅 课题下周改进 完成第一版训练、验证代码 改进现有模型结构,尽可能地从微调 BERT 的过时手段中走出 记录实验数据 继续 cs224n、Transformer 论文学习 本周反思 本周实在是有太多事,课题进展有限,预计下周会有一定进展。

August 6, 2024 · 20 words · Kurong

《计组KG》课题开发过程(一)

前言 开发该课题也有一个月了,整个过程并不是很顺利,很多细节部分如果没有得到及时梳理,对以后的研究和论文写作也有坏处。基于以上和其他原因,遂决定分阶段进行记录。 数据集 深度学习项目的良好开端就是有一个优良标注的数据集。而由于本课题起源于一个极小领域下,导致数据集必须完全自建。所有工作由我一人进行,工作量不可避免的大。所以必须尽可能的减少工作量,尽量实现在课题的中后期的所有标注工作都由程序自动化解决。 计组数据集的构建分为了以下几个过程: 计组数据集来源 数据预处理 数据集的预标注 基于词典的多次迭代标注 数据集格式的转换 接下来对每一个部分进行详述。 计组数据集来源 目前数据的来源如下: 计算机组成原理第6版 (白中英),pdf 转 txt 计算机组成原理第6版 (白中英) 课件,ppt 转 txt 数据预处理 以下是大概的预处理过程: 将所有的文本合并到一个文件,方便后续操作; 手工去掉一些与课题无关的文本和小部分错误内容; 去掉所有的空白字符(空格、换行符、制表符等); 去掉所有的特殊字符(数字、半角符号、特殊字符); 以中文句号进行分割,分别以整句、分词的形式输出到 json 文件中。 处理结果: 1 2 3 4 // 整句 { "0": "\u8ba1\u7b97\u673a\u7cfb\u7edf\u4e0d\u540c\u4e8e\u4e00\u822c\u7684\u7535\u5b50\u8bbe\u5907\uff0c\u5b83\u662f\u4e00\u4e2a\u7531\u786c\u4ef6\u3001\u8f6f\u4ef6\u7ec4\u6210\u7684\u590d\u6742\u7684\u81ea\u52a8\u5316\u8bbe\u5907" } 1 2 3 4 // 分词 { "0": ["\u8ba1", "\u7b97", "\u673a", "\u7cfb", "\u7edf", "\u4e0d", "\u540c", "\u4e8e", "\u4e00", "\u822c", "\u7684", "\u7535", "\u5b50", "\u8bbe", "\u5907", "\uff0c", "\u5b83", "\u662f", "\u4e00", "\u4e2a", "\u7531", "\u786c", "\u4ef6", "\u3001", "\u8f6f", "\u4ef6", "\u7ec4", "\u6210", "\u7684", "\u590d", "\u6742", "\u7684", "\u81ea", "\u52a8", "\u5316", "\u8bbe", "\u5907"] } 数据集的预标注 以上所有数据处理完后,共得到5632条文本。如果要自己一条条的标注,真就是整一个月啥也别干,所以还是要用比较省力的方式进行标注。我选择用一个在中文语料集上训练过的预训练模型进行第一轮标注,也就是预标注。...

August 1, 2024 · 283 words · Kurong

《基于预训练模型的医药说明书实体抽取方法研究》笔记

基于预训练模型的部分标签命名实体识别模型 对于输入的药品说明书文本先利用少量样本微调的预训练模型进行实体抽取,如上图所示,“云南白药成分:三七、麝香、草乌等”通过预训练模型识别出 “麝香”和“草乌”两个“成分”类型的实体。由于受标注样本数量限制,预训练模型经少量样本微调后,其召回率不高,如例子中“云南白药”“三七”两个实体未能识别,但把预训练模型识别出的部分实体及该实体的类型标签作为一种提示信息输入到后面的部分标签模型,这将有助于部分标签模型进行实体抽取任务。 部分标签模型采用平面格结构对输入文本及预训练语言模型识别的部分实体进行整合,整合信息包括字符或实体词 token、标签 tag、头部位置标记 head 和尾部位置标记 tail。部分标签模型使用 Transformer 建模平面格结构的编码输入,通过 Transformer 的自注意力机制使字符可以与潜在实体词直接交互。最后将 Transformer 提取特征表示,输入到 CRF层预测实体标签。 训练策略 对整体模型训练分两阶段: 利用少量完全标注的语料对预训练模型进行微调,再对这些完全标注语料采用标注样本实体掩盖(mask)策略进行样本数据增广,使用增广后的样本数据集对部分标签模型进行训练; 预训练模型和部分标签模型进行联合训练。 对比实验 尽管 BERT- BILSTMCRF 模型在医疗、政务等领域的命名实体识别得到广泛应用 ,但由于采用 LSTM 神经网络提取字符特征,其效果明显低于 FLAT 和本文模型,而 FLAT、 MECT4CNER 以及本文模型都采用 Transformer 网络提取特征。 MECT4CNER 是在 FLAT 的基础上结合汉字结构信息与词典信息设计的模型,但本次实验表明 MECT4CNER 应用于药品说明书命名实体识别时, 汉字结构信息未能对提高模型性能带来更多增益, 反而降低了召回率,使得 F1 值比 FLAT 模型更低。 本文模型对 FLAT 模型所提出的平面格结构进行了扩展,增加的标签信息能对提升模型性能带来增益, 从而 F1值取得了较优的效果。 FLAT模型是为中文命名实体识别设计的,它将复杂的字词格结构转换为平坦的结构。每个跨度对应于原始格中的一个字符或潜在词及其位置。FLAT利用Transformer的强大功能和精心设计的位置编码,能够充分利用格信息,并具有出色的并行能力。实验表明,FLAT在性能和效率上都优于其他基于词典的模型。 MECT4CNER模型结合了字词格和部首流,不仅具有FLAT的词边界和语义学习能力,还增加了汉字部首的结构信息。通过融合汉字的结构特征,MECT能够更好地捕捉汉字的语义信息,从而提高中文NER的性能。

July 28, 2024 · 54 words · Kurong

7.22-7.28:一周总结

本周任务 本周主要还是做计组知识图谱课题。以下为本周具体进度: 把数据集分割为了训练集、验证集、测试集,对训练集以随机抽样进行进一步分割,以减小工作量 第一次标注采用预标注,之后用词典不断迭代标注 完成了第一份训练集1000条和验证集、测试集的标注,总共2000余条语料,用新标签PCC 标注 用 Adaseq 训练模型,但是遇到了诸多问题,尚未解决 课题下周改进 PCC 标签过于笼统,下周对标签进一步细化,并去除少部分无用标签 弃用 Adaseq ,国产的玩意是真不如 Transformers 好用 找一个新的预训练模型进行训练(其实已经找到了) 多模型对比训练 以上修改标签预计最少3天,用 Transformers 训练最少2天,多模型能做多少算多少 本周反思 每一步的数据尽可能的量化并记录,方便日后发论文 对课题各个工作部分理解浅显,应当在阅读部分文献后再进行

July 28, 2024 · 25 words · Kurong

《中文命名实体识别研究综述》笔记

中文NER的难点 词边界模糊。中文没有像英文等语言一样使用空格或其他分隔符来表示词边界,这种特点导致中文命名实体识别面临着边界歧义和识别困难的问题。例如,“计算机科学与技术系”中“计算机科学与技术”是一个 复合词,边界不明确。 语义多样化。中文存在大量多义词,一个词汇可能会被用于不同的上下文中表示不同的含义。 形态特征模糊。在英语中,一些指定类型的实体的第一个字母通常是大写的,例如指定人员或地点的名称。这种信息是识别一些命名实体的位置和边界的明确特征。在中文命名实体识别中缺乏汉语形态的显式特征,增加了识别的难度。 中文语料库内容较少。命名实体识别需要大量 的标注数据来训练模型,但中文标注数据数量及质量有限,导致命名实体识别模型的训练更为困难。 CNER数据集 CNER标注方式、性能指标 BIO标注、 BMES标注以及BIOSE标注方案。 性能指标和NER一样,Precision、Recall、Accuracy、F1-score 是常用指标。 近几年的CNER模型构成 嵌入层 基于字符的模型 基于字符的模型将单词表示为字符序列的方法,它通过输入文本的字符级别表示,不需要明确的词边界信息,可以更好地处理CNER中的边界模糊问题。为解决相邻字符之间强联系的问题,Zhang 等人[40] 提出一种新的动态嵌入方法,该方法使用注意力机制来 组合嵌入层中的字符和单词向量特征。基于字符的模型存在不能携带语义信息、难以处理歧义词的缺点[42] 。 基于词的模型 基于词的模型是将中文数据集的文本以词语的形 式作为输入,借助分词系统[43] 对数据集进行分词。基于词的模型可以捕捉到词与词之间的语义关系,在处理一些长词汇的实体时具有良好的效果。基于词的模型存在分词错误和在处理不规则的词以及新词时比较困难的缺点。Ma等人[45] 使用双向 LSTM、CNN 和 CRF 的组合,提出一种 中性网络结构,自动从单词和字符级别的表示中获益, 实现了端到端的 NER。 混合模型 混合模型是将基于字符的模型和基于词的模型结合起来,由于基于字符的模型存在字与字之间语义提取缺失问题,基于词的模型存在分词错误的问题,同时将字符和词作为嵌入表示可以使模型具有较好的鲁棒性和识别精度。 基于 Transformer 的双向编码(bidirectional encoder representations from Transformer,BERT) 模型[51] 是中文命名实体识别中最常用的预训练模型, BERT模型可以考虑整个输入句子的上下文信息,有助于提高模型对命名实体的理解和识别准确性。对于给定的字符,BERT将其字符位置嵌入、句子位置嵌入和字符嵌入作为输入连接起来,然后使用掩码语言模型[52] 对输入句子进行深度双向表示预训练,以获得强大的上下文字符嵌入。 编码层 编码层主要是将嵌入层输入的文本转换成一个高 维的特征向量,方便后续的分类器对文本进行分类。 卷积神经网络 CNN最初是为计算 机视觉研究开发的,但它已被证明可以有效地捕获具有卷积运算的 n-gram 的信息语义特征[61] 。 循环神经网络 Quyang 等人[67] 提出一种用于 CNER 的深度学习模型,该模型采用双向 RNN-CRF 架构,使用连接的 n -gram 字符表示来捕获丰富的上下文信息。Dong 等人[37] 将双向 LSTM-CRF 神经网络用于 CNER,该网络同时利用字符级和部首级表示,是第一个研究 BiLSTM-CRF 架构中的中文部首级表示,并且在没有精心设计的功能的情况下获得更好的性能。...

July 27, 2024 · 87 words · Kurong

Lecture 8: Attention

Sequence-to-sequence with attention Attention: in equations We have encoder hidden states $h_1,...,h_N \in \R^h$ On timestep $t$​ , we have decoder hidden state $s_t \in \R^h$ We get the attention scores $e^t$ for this step: $$ e^t=[s^T_th_1,...,s^T_th_N] \in \R^N $$ We take softmax to get the attention distribution $\alpha^t$​ for this step (this is a probability distribution and sums to 1) $$ \alpha^t=softmax(e^t) \in \R^N $$ We use $\alpha^t$ to take a weighted sum of the encoder hidden states to get the attention output $a_i$ $$ a_i=\sum^N_{i=1}\alpha_i^th_i \in \R^h $$ Finally we concatenate the attention output $a_t$ with the decoder hidden state $s_t$​ and proceed as in the non-attention seq2seq model $$ [a_t;s_t] \in \R^{2h} $$ Attention is great Attention significantly improves NMT performance Attention provides more “human-like” model of the MT process Attention solves the bottleneck problem Attention helps with the vanishing gradient problem Provides shortcut to faraway states Attention provides some interpretability By inspecting attention distribution, we can see what the decoder was focusing on There are several attention variants Attention variants Attention is a general Deep Learning technique More general definition of attention:...

July 27, 2024 · 259 words · Kurong

Lecture 7: Machine Translation and Sequence to Sequence

Machine Translation Machine Translation is the task of translating a sentence $x$ from one language to a sentence $y$​ in another language. Simple History: 1990s-2010s: Statistical Machine Translation After 2014: Neural Machine Translation Sequence to Sequence Model The sequence-to-sequence model is an example of a Conditional Language Model Language Model because the decoder is predicting the next word of the target sentence $y$ Conditional because its predictions are also conditioned on the source sentence $x$ Multi-layer RNNs in practice High-performing RNNs are usually multi-layer....

July 13, 2024 · 315 words · Kurong

RNN速成(二)

LSTM 长短期记忆(Long short-term memory, LSTM)是一种特殊的 RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的 RNN,LSTM 能够在更长的序列中有更好的表现。 门结构中的激活函数 门结构中包含着 sigmoid 激活函数。sigmoid 激活函数与 tanh 函数类似,不同之处在于 sigmoid 是把值压缩到 0~1 之间而不是 -1~1 之间。这样的设置有助于更新或忘记信息,因为任何数乘以 0 都得 0,这部分信息就会剔除掉。同样的,任何数乘以 1 都得到它本身,这部分信息就会完美地保存下来。这样网络就能了解哪些数据是需要遗忘,哪些数据是需要保存。这也代表着门结构最后计算得到的是一个概率。 遗忘门 遗忘门的功能是决定应丢弃或保留哪些信息。来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。 输入门 输入门用于更新细胞状态。首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。 细胞状态 下一步,就是计算细胞状态。首先前一层的细胞状态与遗忘向量逐点相乘。如果它乘以接近 0 的值,意味着在新的细胞状态中,这些信息是需要丢弃掉的。然后再将该值与输入门的输出值逐点相加,将神经网络发现的新信息更新到细胞状态中去。至此,就得到了更新后的细胞状态。 输出门 输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息。首先,我们将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数。 最后将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。 数学计算方式 其中,$W$ 为当前层权重矩阵,$t$ 表示 timestep,$i,f,o$ 分别为输入门、遗忘门、输出门,第一个 $Z$ 为输出向量,$\sigma$ 为 sigmoid 。...

July 12, 2024 · 139 words · Kurong

Lecture 6: Long Short-Term Memory RNNs

Training an RNN Language Model Get a big corpus of text which is a sequence of words $x^{(1)},...,x^{(T)}$ Feed into RNN-LM; compute output distribution $\hat y ^{(t)}$ for every timestep $t$​ Backpropagation for RNNs Problems with Vanishing and Exploding Gradients Vanishing gradient intuition Why is vanishing gradient a problem? 来自远处的梯度信号会丢失,因为它比来自近处的梯度信号小得多 因此,模型权重只会根据近期效应而不是长期效应进行更新 If gradient is small, the model can’t learn this dependency. So, the model is unable to predict similar long distance dependencies at test time....

July 11, 2024 · 306 words · Kurong

RNN速成(一)

基本概念 循环神经网络 (RNN) 是一种使用序列数据或时序数据的人工神经网络。其最大特点是网络中存在着环,使得信息能在网络中进行循环,实现对序列信息的存储和处理。 循环神经网络 (RNN) 的另一个显著特征是它们在每个网络层中共享参数。 虽然前馈网络的每个节点都有不同的权重,但循环神经网络在每个网络层都共享相同的权重参数。 网络结构 RNN 不是刚性地记忆所有固定长度的序列,而是通过隐藏状态来存储之前时间步的信息。 同时,RNN 还能按时间序列展开循环为如下形式: 以上架构不仅揭示了 RNN 的实质:上一个时刻的网络状态将会作用于(影响)到下一个时刻的网络状态,还表明 RNN 和序列数据密切相关。同时,RNN 要求每一个时刻都有一个输入,但是不一定每个时刻都需要有输出。 如上图所示,隐含层的计算公式如下: $$ s_t=f \ (U_{x_t}+W_{s_{t-1}}) $$ 其中, $f$ 为激活函数。 训练方法 RNN 利用随时间推移的反向传播 (BPTT) 算法来确定梯度,这与传统的反向传播略有不同,因为它特定于序列数据。 BPTT 的原理与传统的反向传播相同,模型通过计算输出层与输入层之间的误差来训练自身。 这些计算帮助我们适当地调整和拟合模型的参数。 BPTT 与传统方法的不同之处在于,BPTT 会在每个时间步长对误差求和。 通过这个过程,RNN 往往会产生两个问题,即梯度爆炸和梯度消失。 这些问题由梯度的大小定义,也就是损失函数沿着错误曲线的斜率。 如果梯度过小,它会更新权重参数,让梯度继续变小,直到变得可以忽略,即为 0。 发生这种情况时,算法就不再学习。 如果梯度过大,就会发生梯度爆炸,这会导致模型不稳定。 在这种情况下,模型权重会变得太大,并最终被表示为 NaN。 RNN的变体 这里只是一个简介,详情见 《RNN速成(二)》 LSTM 这是一种比较流行的 RNN 架构,由 Sepp Hochreiter 和 Juergen Schmidhuber 提出,用于解决梯度消失问题。LSTM 在神经网络的隐藏层中包含一些“元胞”(cell),共有三个门:一个输入门、一个输出门和一个遗忘门。 这些门控制着预测网络中的输出所需信息的流动。 GRU 这种 RNN 变体类似于 LSTM,因为它也旨在解决 RNN 模型的短期记忆问题。 但它不使用“元胞状态”来调节信息,而是使用隐藏状态;它不使用三个门,而是两个:一个重置门和一个更新门。 类似于 LSTM 中的门,重置门和更新门控制要保留哪些信息以及保留多少信息。

July 6, 2024 · 74 words · Kurong

Lecture 5: Language Models and Recurrent Neural Network

Basic Tricks on NN L2 Regularization A full loss function includes regularization over all parameters $\theta$ , e.g., L2 regularization: $$ J(\theta)=f(x)+\lambda \sum_k \theta^2_k $$ Regularization produces models that generalize well when we have a “big” model. Dropout Training time: at each instance of evaluation (in online SGD-training), randomly set 50% of the inputs to each neuron to 0 Test time: halve the model weights (now twice as many) This prevents feature co-adaptation Can be thought of as a form of model bagging (i....

July 5, 2024 · 488 words · Kurong

Named Entity Recognition 相关概念与技术

基本概念 实体:通常指文本中具有特定意义或指代性强的词或短语,如人名、地名、机构名等。 边界识别:确定实体在文本中的起始和结束位置。 分类:将识别出的实体归类到预定义的类别,如人名、地名、组织名、时间表达式、数量、货币值、百分比等。 序列标注:NER任务中常用的一种方法,将文本中的每个词标注为实体的一部分或非实体。 特征提取:从文本中提取有助于实体识别的特征,如词性、上下文信息等。 评估指标:用于衡量NER系统性能的指标,常见的有精确率(Precision)、召回率(Recall)和F1分数。 分类命名方法 BIO:这是最基本的标注方法,其中"B"代表实体的开始(Begin),“I"代表实体的内部(Inside),而"O"代表非实体(Outside)。 BIOES:这种方法在BIO的基础上增加了"E"表示实体的结束(End),和"S"表示单独的实体(Single)。 BMES:这种方法使用"B"表示实体的开始,“M"表示实体的中间(Middle),“E"表示实体的结束,“S"表示单个字符实体。 NER 的一般过程 数据准备:收集并标注一个包含目标实体的数据集。这个数据集应该包含足够的示例,以便模型能够学习如何识别和分类实体。 选择模型架构:选择一个适合任务的模型架构,如基于LSTM的序列模型或者是基于Transformers的预训练模型。 特征工程:根据需要,进行特征工程,提取有助于实体识别的特征,例如词性标注、上下文嵌入等。 模型训练:使用标注好的数据集来训练模型。这通常包括定义损失函数、选择优化器、设置学习率和训练周期等。 评估与优化:在独立的验证集上评估模型性能,使用诸如精确率、召回率和F1分数等指标,并根据结果进行模型调优。 一个小例子 以当前计组KG为例。 数据集 数据格式见 transformers/examples/pytorch/token-classification at main · huggingface/transformers (github.com) 数据来源: 通过百度百科爬虫 BaiduSpider/BaiduSpider: BaiduSpider,一个爬取百度搜索结果的爬虫,目前支持百度网页搜索,百度图片搜索,百度知道搜索,百度视频搜索,百度资讯搜索,百度文库搜索,百度经验搜索和百度百科搜索。 (github.com) 爬取计算机组合原理的相关术语 从计组教材中提取出文本 数据处理: 去掉无用字符、HTML标签等无关信息 使用Tokenizer将文本数据分解成Token 根据Token创建词汇表,每个唯一的Token对应一个唯一的索引 将文本中的Token转换为对应的索引值,以便模型能够处理 添加位置编码,以便模型能够理解Token在序列中的位置 数据集划分: 将数据集划分为训练集、验证集和测试集 格式化数据集: 使数据集符合transformer库NER任务模型的输入格式 模型 选用中文NER预训练模型:ckiplab/albert-base-chinese-ner · Hugging Face 选用peft框架微调:peft/examples/token_classification at main · huggingface/peft (github.com) 训练和测试 一般过程,略。 应用 可以应用在语料中识别实体了。 关系抽取 NER的下一步就是关系抽取了

July 5, 2024 · 62 words · Kurong

Lecture 4: Dependency parsing

Two views of linguistic structure Context-free grammars (CFGs) Phrase structure organizes words into nested constituents. Dependency structure Dependency structure shows which words depend on (modify, attach to, or are arguments of) which other words. modify:修饰词,attach to:连接词 Why do we need sentence structure? Humans communicate complex ideas by composing words together into bigger units to convey complex meanings. Listeners need to work out what modifies [attaches to] what A model needs to understand sentence structure in order to be able to interpret language correctly Linguistic Ambiguities Prepositional phrase attachment ambiguity 介词短语附着歧义 Coordination scope ambiguity 对等范围歧义 Adjectival/Adverbial Modifier Ambiguity 形容词修饰语歧义 Verb Phrase (VP) attachment ambiguity 动词短语依存歧义 Dependency paths identify semantic relations 依赖路径识别语义关系 help extract semantic interpretation....

July 4, 2024 · 229 words · Kurong

Continuous Bag of Words

CBOW CBOW是 continuous bag of words 的缩写,中文译为“连续词袋模型”。它和 skip-gram 的区别在于其通过上下文去预测中心词。 模型结构如下。 在 Projection Layer 中,会将上下文的所有词向量进行累加: $$ X_w=\sum^{2c}_{i=1}v(Context(w)_i) \in \R^m $$ 在 Output Layer 中,使用到的函数是 Hierarchical softmax 层级softmax 。 Hierarchical softmax 是利用哈夫曼树结构来减少计算量的方式。它将 word 按词频作为结点权值来构建哈夫曼树。 哈夫曼树是一种二叉树,实际上就是在不断的做二分类。 具体公式推导见Hierarchical Softmax(层次Softmax) - 知乎 (zhihu.com)。

June 29, 2024 · 38 words · Kurong

Skip-gram Model

skip-gram 具体过程与介绍见 cs224n 系列 从 one-hot 到 lookup-table 每一个单词经过 one-hot 编码后都会得到一个 $(V,1)$ 维的词向量, $V$ 个词就是 $(V,V)$ 维方阵。这样的话,矩阵的计算量会极大,所以要降维以减小计算量。 单词在 one-hot 编码表的位置是由关系的,如果单词出现的位置column = 3,那么对应的就会选中权重矩阵的Index = 3。由此可以通过这个映射关系进行以下操作:将one-hot编码后的词向量,通过一个神经网络的隐藏层,映射到一个低纬度的空间,并且没有任何激活函数。最后得到的东西就叫做 lookup-table,或叫 word embedding 词嵌入,维度 $(V,d)$。 数学原理 一个单词的极大似然估计概率计算公式在取负号后变为: $$ J(\theta)=-\frac{1}{T}\sum^T_{t=1}\sum_{\substack{-m \le j \le m \\ j\neq0}}logP(w_{t+j} \ | \ w_t; \ \theta) $$ 代入softmax计算公式后得到目标函数或叫损失函数: $$ logP(w_o \ | \ w_c)=u_o^Tv_c-log \Bigg( \sum_{i \in V}exp(u_i^Tv_c) \Bigg) $$ 用梯度下降更新参数: $$ \frac{\partial logP(w_o \ | \ w_c)}{\partial v_c} = u_o-\sum_{j \in V}P(w_j \ | \ w_c)u_j $$ 训练结束后,对于词典中的任一索引为 $i$ 的词,我们均得到该词作为中心词和背景词的两组词向量 $vi$ , $u_i$ ....

June 28, 2024 · 172 words · Kurong

Lecture 1: Introduction and Word Vectors

Meaning Definition: meaning 语义 the idea that is represented by a word, phrase, etc. the idea that a person wants to express by using words, signs, etc. the idea that is expressed in a work of writing, art, etc. WordNet Common NLP solution: Use, e.g., WordNet, a thesaurus containing lists of synonym (同义词) sets and hypernyms (上位词) (“is a” relationships). Problems with resources like WordNet Great as a resource but missing nuance...

June 27, 2024 · 382 words · Kurong

GoogleNet V1

GoogleNet V1 Abstract 本文作者在ImageNet大规模视觉识别挑战赛2014(ILSVRC14)上提出了一种代号为Inception的深度卷积神经网络结构,并在分类和检测上取得了新的最好结果。这个架构的主要特点是提高了网络内部计算资源的利用率。通过精心的手工设计,在增加了网络深度和广度的同时保持了计算预算不变。为了优化质量,架构的设计以赫布理论和多尺度处理直觉为基础。作者在ILSVRC14提交中应用的一个特例被称为GoogLeNet,一个22层的深度网络,其质量在分类和检测的背景下进行了评估。 1. Introduction 过去三年中,由于深度学习和卷积网络的发展[10],目标分类和检测能力得到了显著提高。一个令人鼓舞的消息是,大部分的进步不仅仅是更强大硬件、更大数据集、更大模型的结果,而主要是新的想法、算法和网络结构改进的结果。例如,ILSVRC 2014竞赛中最靠前的输入除了用于检测目的的分类数据集之外,没有使用新的数据资源。本文在ILSVRC 2014中的GoogLeNet提交实际使用的参数只有两年前Krizhevsky等人[9]获胜结构参数的1/12,而结果明显更准确。在目标检测前沿,最大的收获不是来自于越来越大的深度网络的简单应用,而是来自于深度架构和经典计算机视觉的协同,像Girshick等人[6]的R-CNN算法那样。 另一个显著因素是随着移动和嵌入式设备的推动,算法的效率很重要——尤其是它们的电力和内存使用。值得注意的是,正是包含了这个因素的考虑才得出了本文中呈现的深度架构设计,而不是单纯的为了提高准确率。对于大多数实验来说,模型被设计为在一次推断中保持15亿乘加的计算预算,所以最终它们不是单纯的学术好奇心,而是能在现实世界中应用,甚至是以合理的代价在大型数据集上使用。 本文作者考虑到在终端设备上的应用所以才提出了Inception,这也影响了后续的Xception和MobileNet。(猜测) 在本文中将关注一个高效的计算机视觉深度神经网络架构,代号为Inception,它的名字来自于Lin等人[12]网络论文中的Network与著名的“we need to go deeper”网络梗图[1]的结合。在本文的案例中,单词“deep”用在两个不同的含义中:首先,在某种意义上,以“Inception module”的形式引入了一种新层次的组织方式,在更直接的意义上增加了网络的深度。一般来说,可以把Inception模型看作论文[12]的逻辑顶点同时从Arora等人[2]的理论工作中受到了鼓舞和引导。这种架构的好处在ILSVRC 2014分类和检测挑战赛中通过实验得到了验证,它明显优于目前的最好水平。 2. Related Work 从LeNet-5 [10]开始,卷积神经网络(CNN)通常有一个标准结构——堆叠的卷积层(后面可以选择有对比归一化和最大池化)后面是一个或更多的全连接层。这个基本设计的变种在图像分类论文中流行,并且目前为止在MNIST,CIFAR和更著名的ImageNet分类挑战赛中[9, 21]的已经取得了最佳结果。对于更大的数据集例如ImageNet来说,最近的趋势是增加层的数目[12]和层的大小[21, 14],同时使用dropout[7]来解决过拟合问题。 尽管担心最大池化层会引起准确空间信息的损失,但与[9]相同的卷积网络结构也已经成功的应用于定位[9, 14],目标检测[6, 14, 18, 5]和行人姿态估计[19]。 受灵长类视觉皮层神经科学模型的启发,Serre等人[15]使用了一系列固定的不同大小的Gabor滤波器来处理多尺度。本文使用一个了类似的策略。然而,与[15]的固定的2层深度模型相反,Inception结构中所有的滤波器是学习到的。此外,Inception层重复了很多次,在GoogLeNet模型中得到了一个22层的深度模型。 Network-in-Network是Lin等人[12]为了增加神经网络表现能力而提出的一种方法。在他们的模型中,网络中添加了额外的1 × 1卷积层,增加了网络的深度。本文的架构中大量的使用了这个方法。但是,在本文的设置中,1 × 1卷积有两个目的:最关键的是,它们主要是用来作为降维模块来移除卷积瓶颈,否则将会限制网络的大小。这不仅允许了深度的增加,而且允许网络的宽度增加但没有明显的性能损失。 1×1 的卷积层的作用: 在相同尺寸的感受野中叠加更多的卷积,能提取到更丰富的特征。 使用1x1卷积进行降维,降低了计算复杂度。 1×1 卷积没有识别高和宽维度上相邻元素构成的模式的功能。实际上,1×1 卷积的作用主要发生在 Channel 维上。值得注意的是,输入和输出具有相同的高和宽。输出中的每个元素来自输入中在高和宽上相同位置的元素在不同通道之间的按权重累加。假设我们将 Channel 维当作特征维,将高和宽维度上的元素当成数据样本,那么 1×1 卷积层的作用与全连接层等价。 最后,目前最好的目标检测是Girshick等人[6]的基于区域的卷积神经网络(R-CNN)方法。R-CNN将整个检测问题分解为两个子问题:利用低层次的信号例如颜色,纹理以跨类别的方式来产生目标位置候选区域,然后用CNN分类器来识别那些位置上的对象类别。这样Two-Stage的方法利用了低层特征分割边界框的准确性,也利用了目前的CNN非常强大的分类能力。我们在我们的检测提交中采用了类似的方式,但探索增强这两个阶段,例如对于更高的目标边界框召回使用多盒[5]预测,并融合了更好的边界框候选区域分类方法。 3. Motivation and High Level Considerations 提高深度神经网络性能最直接的方式是增加它们的尺寸。这不仅包括增加深度——网络层次的数目——也包括它的宽度:每一层的单元数目。这是一种训练更高质量模型容易且安全的方法,尤其是在可获得大量标注的训练数据的情况下。但是这个简单方案有两个主要的缺点。 更大的尺寸通常意味着更多的参数,这会使增大的网络更容易过拟合,尤其是在训练集的标注样本有限的情况下。这是一个主要的瓶颈,因为要获得强标注数据集费时费力且代价昂贵,经常需要专家评委在各种细粒度的视觉类别进行区分,例如图1中显示的ImageNet中的类别(甚至是1000类ILSVRC的子集)。 图1: ILSVRC 2014分类挑战赛的1000类中两个不同的类别。区分这些类别需要领域知识。 均匀增加网络尺寸的另一个缺点是计算资源使用的显著增加。例如,在一个深度视觉网络中,如果两个卷积层相连,它们的滤波器数目的任何均匀增加都会引起计算量以平方增加。如果增加的能力使用时效率低下(例如,如果大多数权重结束时接近于0),那么会浪费大量的计算能力。由于计算预算总是有限的,计算资源的有效分布更偏向于尺寸无差别的增加,即使主要目标是增加性能的质量。 解决这两个问题的一个基本的方式就是引入稀疏性并将全连接层替换为稀疏的全连接层,甚至是卷积层。除了模仿生物系统之外,由于Arora等人[2]的开创性工作,这也具有更坚固的理论基础优势。他们的主要成果说明如果数据集的概率分布可以通过一个大型稀疏的深度神经网络表示,则最优的网络拓扑结构可以通过分析前一层激活的相关性统计和聚类高度相关的神经元来一层层的构建。虽然严格的数学证明需要在很强的条件下,但事实上这个声明与著名的赫布理论产生共鸣:神经元一起激发,一起连接。实践表明,基础概念甚至适用于不严格的条件下。 遗憾的是,当碰到在非均匀的稀疏数据结构上进行数值计算时,以现在的计算架构效率会非常低下。即使算法运算的数量减少100倍,查询和缓存丢失上的开销仍占主导地位:切换到稀疏矩阵可能是不可行的。随着稳定提升和高度调整的数值库的应用,差距仍在进一步扩大,数值库要求极度快速密集的矩阵乘法,利用底层的CPU或GPU硬件[16, 9]的微小细节。非均匀的稀疏模型也要求更多的复杂工程和计算基础结构。目前大多数面向视觉的机器学习系统通过采用卷积的优点来利用空域的稀疏性。然而,卷积被实现为对上一层块的密集连接的集合。为了打破对称性,提高学习水平,从论文[11]开始,ConvNets习惯上在特征维度使用随机的稀疏连接表,然而为了进一步优化并行计算,论文[9]中趋向于变回全连接。目前最新的计算机视觉架构有统一的结构。更多的滤波器和更大的批大小要求密集计算的有效使用。 这提出了下一个中间步骤是否有希望的问题:一个架构能利用滤波器水平的稀疏性,正如理论所认为的那样,但能通过利用密集矩阵计算来利用目前的硬件。稀疏矩阵乘法的大量文献(例如[3])认为对于稀疏矩阵乘法,将稀疏矩阵聚类为相对密集的子矩阵会有更佳的性能。在不久的将来会利用类似的方法来进行非均匀深度学习架构的自动构建,这样的想法似乎并不牵强。 Inception架构开始作为案例研究,用于评估一个复杂网络拓扑构建算法的假设输出,该算法试图近似[2]中所示的视觉网络的稀疏结构,并通过密集的、容易获得的组件来覆盖假设结果。尽管是一个非常投机的事情,但与基于[12]的参考网络相比,早期可以观测到适度的收益。随着一点点调整加宽差距,作为[6]和[5]的基础网络,Inception被证明在定位上下文和目标检测中尤其有用。有趣的是,虽然大多数最初的架构选择已被质疑并分离开进行全面测试,但结果证明它们是局部最优的。然而必须谨慎:尽管Inception架构在计算机上领域取得成功,但这是否可以归因于构建其架构的指导原则仍是有疑问的。确保这一点将需要更彻底的分析和验证。 如上图,将稀疏矩阵转换为密集矩阵乘法能有效降低计算量。 这个原理应用到inception上就是要在特征维度上进行分解。传统的卷积层的输入数据只和一种尺度(比如3x3)的卷积核进行卷积,输出固定维度(比如256个特征)的数据,所有256个输出特征基本上是均匀分布在3x3尺度范围上,这可以理解成输出了一个稀疏分布的特征集;而inception模块在多个尺度上提取特征(比如1x1,3x3,5x5),输出的256个特征就不再是均匀分布,而是相关性强的特征聚集在一起(比如1x1的的96个特征聚集在一起,3x3的96个特征聚集在一起,5x5的64个特征聚集在一起),这可以理解成多个密集分布的子特征集。这样的特征集中因为相关性较强的特征聚集在了一起,不相关的非关键特征就被弱化,同样是输出256个特征,inception方法输出的特征“冗余”的信息较少。用这样的“纯”的特征集层层传递最后作为反向计算的输入,自然收敛的速度更快。 Hebbin赫布原理。Hebbin原理是神经科学上的一个理论,解释了在学习的过程中脑中的神经元所发生的变化,用一句话概括就是fire togethter, wire together。赫布认为“两个神经元或者神经元系统,如果总是同时兴奋,就会形成一种‘组合’,其中一个神经元的兴奋会促进另一个的兴奋”。比如狗看到肉会流口水,反复刺激后,脑中识别肉的神经元会和掌管唾液分泌的神经元会相互促进,“缠绕”在一起,以后再看到肉就会更快流出口水。用在inception结构中就是要把相关性强的特征汇聚到一起。这有点类似上面的解释2,把1x1,3x3,5x5的特征分开。因为训练收敛的最终目的就是要提取出独立的特征,所以预先把相关性强的特征汇聚,就能起到加速收敛的作用。...

June 26, 2024 · 149 words · Kurong

GoogleNet V2

GoogLeNet V2 Abstract 训练深度神经网络的复杂性在于,每层输入的分布在训练过程中会发生变化,因为前面的层的参数会发生变化。通过要求较低的学习率和仔细的参数初始化减慢了训练,并且使具有饱和非线性的模型训练起来非常困难。本文将这种现象称为内部协变量转移,并通过标准化层输入来解决这个问题。本文力图使标准化成为模型架构的一部分,并为每个训练小批量数据执行标准化。批标准化使我们能够使用更高的学习率,并且不用太注意初始化。它也作为一个正则化项,在某些情况下不需要Dropout。将批量标准化应用到最先进的图像分类模型上,批标准化在取得相同的精度的情况下,减少了14倍的训练步骤,并以显著的差距击败了原始模型。使用批标准化网络的组合,我们改进了在ImageNet分类上公布的最佳结果:达到了4.9% top-5的验证误差(和4.8%测试误差),超过了人类评估者的准确性。 1. Introduction 随机梯度下降(SGD)已经被证明是训练深度网络的有效方式,并且已经使用诸如动量(Sutskever等,2013)和Adagrad(Duchi等人,2011)等SGD变种取得了最先进的性能。SGD优化网络参数$\Theta$,以最小化损失 $$ \Theta = arg \ min_{\Theta}\frac{1}{N} \sum_{i=1}^{N}ℓ(x_i,\Theta) $$ $x_1...N$是训练数据集。使用SGD,训练将逐步进行,在每一步中,我们考虑一个大小为$m$的小批量数据$x_1...m$。通过计算$\frac{1}{m}\sum^m_{i=1}\frac{∂ℓ(xi,Θ)}{∂Θ}$,使用小批量数据来近似损失函数关于参数的梯度。使用小批量样本,而不是一次一个样本,在一些方面是有帮助的。首先,小批量数据的梯度损失是训练集上的梯度估计,其质量随着批量增加而改善。第二,由于现代计算平台提供的并行性,对一个批次的计算比单个样本计算$m$次效率更高。 虽然随机梯度是简单有效的,但它需要仔细调整模型的超参数,特别是优化中使用的学习速率以及模型参数的初始值。训练的复杂性在于每层的输入受到前面所有层的参数的影响——因此当网络变得更深时,网络参数的微小变化就会被放大。 层输入的分布变化是一个问题,因为这些层需要不断适应新的分布。当学习系统的输入分布发生变化时,据说会经历协变量转移(Shimodaira,2000)。这通常是通过域适应(Jiang,2008)来处理的。然而,协变量转移的概念可以扩展到整个学习系统之外,应用到学习系统的一部分,例如子网络或一层。考虑网络计算 $$ ℓ=F_2(F_1(u,Θ_1),Θ_2) $$ $F_1$和$F_2$是任意变换,学习参数$Θ_1$,$Θ_2$以便最小化损失$ℓ$。学习$Θ_2$可以看作输入$x=F_1(u,Θ_1)$送入到子网络 $$ ℓ=F_2(x,Θ_2) $$ 例如,梯度下降步骤 $$ Θ_2←Θ_2−\frac{α}{m}\sum_{i=1}^{m}\frac{∂F_2(x_i,Θ_2)}{∂Θ_2} $$ (对于批大小$m$和学习率$α$)与输入为$x$的单独网络$F_2$完全等价。因此,输入分布特性使训练更有效——例如训练数据和测试数据之间有相同的分布——也适用于训练子网络。因此$x$的分布在时间上保持固定是有利的。然后,$Θ_2$不必重新调整来补偿x分布的变化。 子网络输入的固定分布对于子网络外的层也有积极的影响。考虑一个激活函数为$g(x)=\frac{1}{1+exp(−x)}$的层,$u$是层输入,权重矩阵$W$和偏置向量$b$是要学习的层参数,$g(x)=\frac{1}{1+exp(−x)}$。随着$|x|$的增加,$g′(x)$趋向于0。这意味着对于$x=Wu+b$的所有维度,除了那些具有小的绝对值之外,流向$u$的梯度将会消失,模型将缓慢的进行训练。然而,由于$x$受$W,b$和下面所有层的参数的影响,训练期间那些参数的改变可能会将$x$的许多维度移动到非线性的饱和状态并减慢收敛。这个影响随着网络深度的增加而放大。在实践中,饱和问题和由此产生的梯度消失通常通过使用修正线性单元(Nair & Hinton, 2010)$ ReLU(x)=max(x,0)$,仔细的初始化(Bengio & Glorot, 2010; Saxe et al., 2013)和小的学习率来解决。然而,如果我们能保证非线性输入的分布在网络训练时保持更稳定,那么优化器将不太可能陷入饱和状态,训练将加速。 本文把训练过程中深度网络内部结点的分布变化称为内部协变量转移,消除它可以保证更快的训练。我们提出了一种新的机制,我们称为为批标准化,它是减少内部协变量转移的一个步骤,这样做可以显著加速深度神经网络的训练。它通过标准化步骤来实现,标准化步骤修正了层输入的均值和方差。批标准化减少了梯度对参数或它们的初始值尺度上的依赖,对通过网络的梯度流动有益。这允许我们使用更高的学习率而没有发散的风险。此外,批标准化使模型正则化并减少了对Dropout(Srivastava et al., 2014)的需求。最后,批标准化通过阻止网络陷入饱和模式让使用饱和非线性成为可能。 在4.2小节,本文将批标准化应用到性能最好的ImageNet分类网络上,并且表明可以使用仅7%的训练步骤来匹配其性能,并且可以进一步超过其准确性一大截。通过使用批标准化训练的网络的集合,最终取得了top-5错误率,其改进了ImageNet分类上已知的最佳结果。 2. Towards Reducing Internal Covariate Shift 由于训练过程中网络参数的变化,本文将内部协变量转移定义为网络激活分布的变化。为了改善训练,以寻求减少内部协变量转移。随着训练的进行,通过固定层输入$x$的分布,期望提高训练速度。众所周知(LeCun et al., 1998b; Wiesler & Ney, 2011)如果对网络的输入进行白化,网络训练将会收敛的更快——即输入线性变换为具有零均值和单位方差,并去相关。当每一层观察下面的层产生的输入时,实现每一层输入进行相同的白化将是有利的。通过白化每一层的输入,将采取措施实现输入的固定分布,消除内部协变量转移的不良影响。 白化,whitening。 白化的目的是去除输入数据的冗余信息。假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。而白化的目的就是降低输入的冗余性。 输入数据集$X$,经过白化处理后,新的数据$X'$满足两个性质: 特征之间相关性较低; 所有特征具有相同的方差。 本文考虑在每个训练步骤或在某些间隔来白化激活值,通过直接修改网络或根据网络激活值来更改优化方法的参数(Wiesler et al., 2014; Raiko et al....

June 26, 2024 · 292 words · Kurong