KBQA学习笔记

2024-06-04 23:38
文章标签 学习 笔记 kbqa

本文主要是介绍KBQA学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

评价标准:召回率,准确率,F1-Score

方法:自然语言查询–>意图识别(Intention Recognition)–>实体链指(Entity Linking)+关系识别(Relation Detection) -->查询语句拼装(Query Construction)–>返回结果选择(Answering Selection)

KBQA除了 基于模板的方法 之外,还有 基于语义解析基于深度学习 等方法

  • 三元组表示
    “奥巴马出生在火奴鲁鲁。” 可以用三元组表示为 (BarackObama, PlaceOfBirth, Honolulu)
    (实体entity,实体关系relation,实体entity)

技术基础

一、词语的向量化表示
  • 离散表示 One-Hot模型(维度高造成很大开销,词与词关系隔离)

  • 分布式表示 思想:词的语义可以通过上下文信息确认,通过无监督学习,将文本信息映射到定长的向量表示

  • Word2Vec两种模型
    CBOW模型(Continous Bags-of-Words Model) 利用上下文预测目标词语
    Skip-Gram模型(Contin-uous Skip-Gram Model) 利用当前词语预测上下文
    CBOW复杂度公式 N ∗ D + D ∗ log ⁡ v N*D+D*{\log{v}} ND+Dlogv其中N是上下文窗口大小,D是词向量维度,V是词典大小
    模型最大化目标函数
    L c b o w = 1 T ∑ t = 1 T log ⁡ p ( ω t ∣ C o n t e x t ( ω t ) ) L_{cbow}=\frac{1}{T} {\sum_{t=1}^T}{\log{p}({ω_t|Context(ω_t))}} Lcbow=T1t=1Tlogp(ωtContext(ωt))

    Skip-Gram模型 利用当前词语预测上下文
    Skip-Gram复杂度公式 C ∗ ( D + D ∗ l o g ( V ) ) C*(D+D*log(V)) C(D+Dlog(V))
    模型的最大化目标函数
    L S k i p − G r a m = 1 T ∑ t = 1 T ∑ − c ≤ j ≤ c , j ≠ 0 log ⁡ p ( ω t + j ∣ ω t ) L_{Skip-Gram}=\frac{1}{T}{\sum_{t=1}^T}{\sum_{-c≤j≤c,j≠0}}{\log{p}({ω_{t+j}|ω_t})} LSkipGram=T1t=1Tcjc,j=0logp(ωt+jωt)

二、神经网络

如图所示,这是一个三层神经网络模型,包括输入层(input layer)、隐藏层(hidden layer)、输出层(output layer)
简单神经网络模型

2.1 卷积神经网络(CNN)

如图所示,卷积神经网络本质上是由卷积层、池化层、全连接层构成的深层神经网络。通过卷积层、池化层的结合,构成多个卷积组,然后逐层提取特征信息,最后通过全连接层得到最终的特征信息。
卷积神经网络
卷积神经网络主要特点是降采样局部连接、以及权值共享

  • 局部连接:通过感知小部分的区域来降低参数数量,提供特征拟合的能力
  • 池化层:更进一步降低输出参数数量,提高CNN的泛化能力
  • 权值共享:使一些基本特征能够被重复使用,共享网络参数并提高神经网络的训练效果

2.1.1 卷积层

是指“滑动窗口”与矩阵重叠局部区域间的线性运算,如图所示。
卷积计算过程
图中的“滑动窗口”(也叫卷积核)大小3*3,运算过程:滑动窗口从左上方开始,由左往右,由上至下,单次移动方向不变,距离(步长)固定。根据卷积核大小以及参数的不同,设置不同的卷积核可以提取到不同的特征。
以上图所示,卷积运算的公式是
Z = ∑ i = 1 d ∑ j = 1 d X m + i , n + j W i , j + b Z=\sum_{i=1}^{d}{\sum_{j=1}^{d}{X_{m+i,n+j}W_{i,j}}+b} Z=i=1dj=1dXm+i,n+jWi,j+b
其中W是卷积核,X代表输入的矩阵向量(图像,文本),b是偏移参数,D是窗口的高度和宽度,m、n代表“滑动窗口”局部区域的索引图右边展现的是卷积运算结果矩阵Z。卷积层的最终输出公式: C i , j = g ( Z i , j ) C_{i,j}=g(Z_{i,j}) Ci,j=g(Zi,j)
其中g(·)表示signmoid、tanh、relu等激活函数。

2.1.2 池化层

池化层对的任务是从输出中提取局部特征,通过筛选减少参数量。一般采用的Pooling方法有MaxPooling(取局部最大值,也叫最大池化法)、Mean-Pooling(取局部平均值,也叫平均池化法)等。
Pooling操作的好处:
①可以使神经网络的最终输出可以固定长度
②输出可以很方便地加入到另外的神经网络

2.2 循环神经网络(RNN)

利用有向循环网络的结构来充分保留序列信息,记忆模型历史信息。在RNN中,当前神经元的输出跟序列中的其他神经元的输出相关。RNN中t时刻的节点与t-1时刻节点相连接,使隐藏层同层的节点不在相互独立。如图所示,上一时刻的输出与当前时刻输入一起送入当前节点进行计算。
RNN以及展开图
RNN的输入序列X={X0,X1…Xt…},Xt是t时刻的输入。U表示输入层和隐藏层之间的网络参数,V表示隐藏层和输出层间的网络参数,W表示当前时刻和上一层的隐藏层的网络参数。
RNN的计算方式:
S t = f ( U x t + W s t − 1 + b 1 ) S_t=f(Ux_t+Ws_{t-1}+b1) St=f(Uxt+Wst1+b1)
O t = g ( V S t + b 2 ) O_t=g(VS_{t}+b2) Ot=g(VSt+b2)
其中 S t S_t St代表t时刻隐藏层的输出状态, O t O_t Ot代表t时刻输出层的输出。当t=0时, S t − 1 S_{t-1} St1可以为空
f(·)、g(·)为非线性激活函数,根据模型可以选择signmoid、tanh、relu等。
RNN由于循环结构而具有一定的记忆能力,但是实际条件下输入过长的条件下,极易出现梯度消失和梯度爆炸问题。为改进这类问题,研究者提出来更为复杂的模型,如GRU模型,长短期记忆模型,双向循环神经网络,深层双向循环神经网络模型。

智能问答算法及技术

一、概述

目前主流研究思路
① 基于语义解析的方法(Semantic Parsing-Based,SP-based)
构建语义解析器,利用语义解析器将自然语言转化成逻辑表达,然后通过逻辑表达式在结构化的知识图谱查询知识三元组,提取答案
② 基于信息检索的方法(Information Retrieve,IR-based)
利用问句中的语义信息在知识图谱中检索相关知识

随着深度学习技术的进步,研究者着手基于深度学习的知识图谱问答(Neural Network-Based,NN-based)方法。
优点:突破了传统神经网络在层数上的限制,可自定义层数,利用其强大的表征学习能力学习隐藏的语义信息。
两方面改进:
① 在SP-based框架下使用深度学习方法代替传统方法实现实体识别、关系映射等流程
②端到端(End2End)的生成式学习框架,利用神经网络将实体、关系以及问句转化成向量形式,通过问句关系向量和知识向量之间语义相似度判断是否为正确答案

二、基于语义解析的问答

在自然语言处理方法的基础上的问答在解析后,将信息转化成机器语言
局限性:都需要标记语料的逻辑形式做监督训练,且只能在谓词较少的领域才有较好的效果
通常采用的思路:降低监督数量、提高逻辑谓词数量
Berant等提出了一种不需要标注的语义解析器
语义解析的关键过程:
①词汇映射
构建一个词典将词语映射到知识三元组中的实体或者关系中来实现
②构建语法树
将语法树的节点自下向上两两合并来实现,最终得到的根节点就是问句的逻辑表达式

映射层:

难点:如何向自然语言问句中的短语映射成需要的谓词
常用的语义解析方法:模式匹配;远程监督;人工规则组合

构建层:

过程:自底向上分析问句并构建一棵语法树,需要较多的人工规则

三、基于深度学习的问答

借助大规模语料的训练有效的解决文本语义构建的问题,缓解语义解析方法带来的难以推断和难以大规模训练的问题。
研究成果:
Bordes等将基于嵌入的语义模型来解决基于知识图谱的回答问题,将自然语言问句和知识三元组表示为低维向量,通过余弦相似度找到相似的答案
Berant等在上面的基础上提出了针对基于嵌入的语言模型的改进,利用嵌入子图在答案向量中融入尽可能多的语义信息
Weston在记忆框架更进一步提出了基于记忆神经网络的大规模QA实现,支持复杂度更高的推理功能
Yih等将基于知识图谱的问答分为实体识别及映射、关系映射两个步骤,分别利用两个卷积神经网络模型来完成整个映射过程
yang等将实体间的映射和关系映射成一个整体的过程,与上面的类似

Yih提出的Muli-Column CNN模型从上下文信息、答案路径、答案类型等多角度分析,利用多个CNN模型来抽取信息,并通过累计的打分方式来排列候选答案顺序。

yang等在MCCNN模型基础上引入了注意力机制,关注不同词对最后排序的影响,同时引入底层知识库作为问答过程的全局信息,集成更多的知识库信息到答案的向量表示中,有助于解决问句理解中的词汇不足、信息量过少的问题

zhang等通过不同方式融入注意力机制来获取不同的问句表达形式

中文领域:
xie等人分别在实体识别和属性链接过程中引入了神经网络模型
yang等人利用机器学习的GBDT方法完成实体识别,而属性链接则结合传统NBSVM模型和深度学习中卷积神经网络
lai等人利用分布式向量进行余弦相似度计算,结合人工构建特征,针对知识库层次单独构建细粒度的分词方法进行属性链接
王银丽等针对FAQ问句匹配设计并实现了限定领域的智能问答系统
杜泽宇等在CRF的实体识别算法和Word2Vec属性链接算法的基础上设计了一个基于中文知识图谱的电商领域问答系统算法框架(CEQA)

三、智能问答算法设计
3.1 框架

在这里插入图片描述

  • 自然语言问句:指的是用户的提问
  • 问句处理:分词,去停用词
  • 词向量:利用词嵌入技术代替传统方法提取词语的潜在语义,将问句输入转化为模型词向量,主要用word2vec训练维基语料库
  • 实体识别:获取问句中的实体名称
  • 属性链接:找到问句询问的实体相关属性
  • 候选三元组:描述问句可能的三元组,如<NER,PRO,VAL>(实体:NER,属性:pro,属性值:VAL)
  • 查询构建:根据问题类别及查询模板,上下文流程识别的实体和属性信息,构建查询从知识库中获取候选三元组,从而构建候选属性集
3.2 实体识别算法
3.2.1 LSTM模型

选择LSTM的实体识别模型,提出了门结构
在这里插入图片描述
在这里插入图片描述
遗忘门决定细胞丢弃的数量,用signmoid函数来实现,计算公式如下:
f t = σ ( W f ⋅ h t − 1 + U f ⋅ x t + b f ) f_t=σ(W_f·h_{t-1}+U_f·x_t+b_f) ft=σ(Wfht1+Ufxt+bf)
其中, x t x_t xt表示当前时刻输入, h t − 1 h_{t-1} ht1为上一时刻隐藏层的输出, U f U_f Uf代表输入信息的权重, W f W_f Wf代表遗忘门权重, b f b_f bf为偏置项
细胞更新时,首先通过输入确定更新的信息,然后根据得到的信息确定LSTM需要在新的细胞状态中的保存的信息
i t = σ ( W i ⋅ h t − 1 + U i ⋅ x t + b i ) i_t=σ(W_i·h_{t-1}+U_i·x_t+b_i) it=σ(Wiht1+Uixt+bi)
c t ′ = t a n h ( W c ⋅ h t − 1 + U i ⋅ x t + b c ) c_t'=tanh(W_c·h_{t-1}+U_i·x_t+b_c) ct=tanh(Wcht1+Uixt+bc)
c t = f t ⋅ c t − 1 + i t ⋅ c t ′ c_t=f_t·c_{t-1}+i_t·c_t' ct=ftct1+itct
其中, U i 、 W I 、 U c 、 W c U_i、W_I、U_c、W_c UiWIUcWc均为参数矩阵, b i 、 b c b_i、b_c bibc为偏置参数, c t c_t ct为当前时刻的Cell状态, C t − 1 C_{t-1} Ct1为上一时刻Cell状态
输出门最终决定了LSTM模型的输出向量,计算公式如下:
o t = σ ( W 0 ⋅ h t − 1 + U 0 ⋅ x t + b 0 ) o_t=σ(W_0·h_{t-1}+U_0·x_t+b_0) ot=σ(W0ht1+U0xt+b0)
h t = o t ∗ t a n h ( C t ) h_t=o_t*tanh(C_t) ht=ottanh(Ct)
其中, W 0 、 U 0 W_0、U_0 W0U0为参数矩阵, b 0 b_0 b0为偏置参数, h t h_t ht为当前LSTM的最终输出

3.2.2 Bi-LSTM模型

双向长短期记忆网络(Bi-LSTM):采用两个LSTM单元对输入序列进行处理,输出向量为两个LSTM输出向量的拼接。这个模型分别训练前后向序列兼顾了上下文信息,可以提取深层次的语义信息
在这里插入图片描述

这篇关于KBQA学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031451

相关文章

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识