本文章是2023ACL CCF-A顶会文章,Program-FC非常值得一读。文章利用大语言模型分步骤做事实验证。
一、🧐基本信息
⚪标题: Fact-Checking Complex Claims with Program-Guided Reasoning
⚪时间: 2023-05-22
⚪作者:
- Liangming Pan
🔵期刊: https://2023.aclweb.org/
🔵影响因子: 26.90
🙌引用数: 13
📙阅读记录:
🔹1、2024-02-05
🔹2、2024-02-16
🔹3、2024-02-17
二、📖这篇文章用什么方法解决了什么问题,实验结果如何:
在NLP领域Checking简单的
c
l
a
i
m
claim
claim 取得了较好的效果,但是面对较为复杂的
c
l
a
i
m
claim
claim ,想要找到直接的证据去support/refute它是很困难的。
对于多步推理,需要考虑两个方面:
- 可解释性
- 数据利用的效率
面对上述问题,作者提出参照人类判断事实的方法将问题进行decompose,通过收集多条evidence并逐步执行推理的方法,并提出了 P r o g r a m − G u i d e d F a c t C h e c k i n g ( P R O G R A M F C ) Program-Guided FactChecking (PROGRAMFC) Program−GuidedFactChecking(PROGRAMFC) 。
三、📚文章细节剖析:(如果文章很重要的话)
3.1 Problem Statement
框架图
执行流程如下:
1、Input complex claims
2、Decompose them into simpler sub-task(为输出生成程序,这是一个子任务的序列)
3、Verify each sub-task
4、Aggregating every result.
生成程序的Prompt
使用FLAN-T5做QA问答
3.2 文章方法
本文重点在于实验部分,所以这里详细介绍一下实验部分是如何处理的。
1、数据集(使用验证集评估,因为测试集未公开)
-
H
O
V
E
R
HOVER
HOVER (包含需要结合多篇维基百科文章才能判断真假的阐述)
- 比较迷惑的地方是文章提到的 h o p hop hop ,后面查到这是知识图谱里面的一个领域 m a n y − h o p s many-hops many−hops ,指需要多少个信息点( h o p hop hop)才能推断 c l a i m claim claim 的真假。在这里作者将 H O V E R HOVER HOVER 划分成 H O V E R − 2 h o p HOVER-2hop HOVER−2hop (1126条)、 H O V E R − 3 h o p HOVER-3hop HOVER−3hop (1835条)、 H O V E R − 4 h o p HOVER-4hop HOVER−4hop (1039条)(一般需要信息点越多的 c l a i m claim claim 越难推断真假)
-
F
E
V
E
R
O
U
S
FEVEROUS
FEVEROUS
- 因为原本的数据集包含了文本、表格格式的数据,而这篇文章专注于文本数据,因此作者从中挑选了仅需要文本证据的 c l a i m claim claim (2962条),后文称其为 F E V E R O U S − S FEVEROUS-S FEVEROUS−S
2、Baselines
作者根据模型的类别将模型划分为三组:
- Pre-trained models(预训练模型): B E R T − F C BERT-FC BERT−FC、 L i s T 5 LisT5 LisT5
- FC/NLI fine-tuned models(微调模型): R o B E R T a − N L I RoBERTa-NLI RoBERTa−NLI 、 D e B E R T a V 3 − N L I DeBERTaV3-NLI DeBERTaV3−NLI 、 M U L T I V E R S MULTIVERS MULTIVERS (后两者都用了 F E V E R FEVER FEVER 的数据去微调)
- In-context learning models(上下文学习模型):
F
L
A
N
−
T
5
FLAN-T5
FLAN−T5 、
C
o
d
e
x
Codex
Codex
作者给出的Baseline,这里的分数是Macro-F1 scores,使用了Gold evidence setting 和 open book setting.
作者提到,在实验中由于同时采用了Gold evidence setting(文中提到的ground-truth)和 open book setting,而模型更倾向于检索出open book setting中的evidence,因此作者采用了 B M 25 BM25 BM25 和 P y s e r i n i t o o l k i t Pyserini toolkit Pyserinitoolkit 去对检索到的文章进行打分,最后选择分数排名前10的文档作为evidence。
3.3 实验结果:
作者指出三点观察:
一、ProgramFC在复杂的
c
l
a
i
m
s
claims
claims 里更有效率
二、将
c
l
a
i
m
s
claims
claims 分解为多个子任务比一步到位预测更有效率
三、融合多个推断程序是有效果的(作者设定了N=1和N=5个推断程序)
和FLAN-T5对比
同时作者发现,使用Codex生成的python代码几乎没有标点符号错误,但随着
c
l
a
i
m
s
claims
claims 的复杂化,语义错误的占比也会增加:
错误执行产生原因的占比
同时还对比了在
C
l
o
s
e
d
−
B
o
o
k
Closed-Book
Closed−Book 设定下的效果对比(效果相比175B的InstructGPT已经很强大了):
效果图
四、🌟文章的亮点:
1、有较强的可解释性
2、少量的上下文演示并且没有额外训练
五、🙄文章的缺陷:
1、作者指出文章所用的数据集存在一定缺陷,虽然
H
O
V
E
R
HOVER
HOVER 和
F
E
V
E
R
O
U
S
FEVEROUS
FEVEROUS 数据集看起来比较复杂,但是他们在语义结构上都比较容易分解成简单的sub-tasks,这在一定程度上降低了推理的难度。作者在复杂、隐晦的
c
l
a
i
m
s
claims
claims 上做了实验,发现用
C
o
d
e
x
Codex
Codex 很难生成正确的推理程序,这或许是未来该领域需要突破的地方。
2、因为要用大预言模型(Codex)生成程序并进一步调用多个子任务模型,因此PROGRAM-FC的计算时间比
F
L
A
N
−
T
5
FLAN-T5
FLAN−T5 等端到端的模型高4到5倍。
六、💡一点想法:
作者在结尾说可以用在虚假新闻检测领域,想起来这篇文章好像跟MUSER: A MUlti-Step Evidence Retrieval Enhancement Framework for Fake News Detection很相似,不同在于MUSER还需要对新闻的核心信息进行摘要提取(摘要可以理解为 c l a i m s claims claims )。MUSER的multi-retrieval 用了 R o B E R T a − l a r g e RoBERTa-large RoBERTa−large 去做,这篇文章用了FLAN-T5去做。(感觉有点东西可以进化一下,还在考虑之中)
七、🌐知识补充:
7.1 Macro-F1 scores
在上一篇文章介绍了F1 score
F
1
=
2
∗
P
∗
R
P
+
R
F_{1}=\frac {2*P*R} {P+R}
F1=P+R2∗P∗R
Macro-F1是对每类F1 score计算算术平均值,该方法平等对待所有类,而不考虑不同类别的重要性
7.2 Gold evidence setting 和 open book setting.
Gold evidence setting: 经过精心挑选的能够证明或反驳
c
l
a
i
m
claim
claim 的证据
Open book setting: 从Wikipedia等外部语料库检索证据
7.3 BM25
BM25(Best Matching 25)是一种经典的信息检索算法,是基于Okapi TF-IDF 算法的改进版本,旨在解决Okapi TF-IDF算法的一些不足之处(文档长度、参数、饱和度问题)。其被广泛应用于信息检索领域的排名函数,用于评估文档 D D D 与用户查询 Q Q Q 之间的相关性。
它是一种基于概率检索框架的改进,特别是在处理长文档和短查询时表现出色。
BM25的核心思想是基于 词频(TF) 和 逆文档频率(IDF),同时还引入了文档的长度信息来计算文档
D
D
D 和查询
Q
Q
Q 之间的相关性。
BM25算法的基本公式如下:
S
c
o
r
e
(
D
,
Q
)
=
∑
i
=
1
n
I
D
F
(
Q
i
)
⋅
f
(
q
i
,
D
)
⋅
(
k
1
+
1
)
f
(
q
i
,
D
)
+
k
1
⋅
(
1
−
b
+
b
⋅
∣
D
∣
a
v
g
d
l
)
Score(D,Q) = \sum_{i=1}^{n}IDF(Q_{i}) ·\frac {f(q_{i},D)·(k_{1}+1)} {f(q_{i},D)+k_{1}·(1-b+b·\frac {|D|} {avgdl})}
Score(D,Q)=i=1∑nIDF(Qi)⋅f(qi,D)+k1⋅(1−b+b⋅avgdl∣D∣)f(qi,D)⋅(k1+1)
其中:
S
c
o
r
e
(
D
,
Q
)
Score(D,Q)
Score(D,Q) 是文档
D
D
D 和查询
Q
Q
Q 的相关性得分;
q
i
q_{i}
qi 是查询第
i
i
i 个词
f
(
q
i
,
D
)
f(q_{i},D)
f(qi,D) 是词
q
i
q_{i}
qi 在文档
D
D
D 中的频率。
I
D
F
(
q
i
)
IDF(q_{i})
IDF(qi) 是
q
i
q_{i}
qi 的逆文档频率
∣
D
∣
|D|
∣D∣ 是文档
D
D
D 的长度
a
v
g
d
l
avgdl
avgdl 是所有文档的平均长度
k
1
k_{1}
k1 和
b
b
b 是超参数,通常
k
1
k_{1}
k1 在1.2和2之间,用于控制词频对评分的影响(正相关),
b
b
b 通常设为0.75,用于控制文档长度对评分的影响,取值在0到1之间(0表示没有影响,1表示影响最大)
I
D
F
IDF
IDF 计算方法如下:
I
D
F
(
q
i
)
=
log
(
N
−
n
(
q
i
)
+
0.5
n
(
q
i
)
+
0.5
+
1
)
IDF(q_{i}) = \log(\frac {N-n(q_{i})+0.5} {n(q_{i}) +0.5} +1)
IDF(qi)=log(n(qi)+0.5N−n(qi)+0.5+1)
其中:
N
N
N 是文档集合中的文档总数
n
(
q
i
)
n(q_{i})
n(qi) 是包含词
q
i
q_{i}
qi 的文档数量