新闻中心

EEPW首页 > 智能计算 > 设计应用 > 拿企业知识图(KG)来训练模型

拿企业知识图(KG)来训练模型

作者:高焕堂 时间:2024-05-13 来源:EEPW 收藏


本文引用地址:http://www.eepw.com.cn/article/202405/458682.htm

1 前言

在上一期里,亲自动手训练了注意力(Attention) 机制。由于Attention机制是当今大语言模型(LLM)的核心。于是,可以拿各种知识或数据来训练Attention机制。例如,在人人享用LLM的生成( 创作) 能力之余,如何化解其过多幻觉(Hallucination)的问题也很受关注。于是,本期就拿(Knowledge Graph,KG)的知识来让Attention 机制学习。也作为LLM 与KG 完美结合的基础。

2 LLM与KG的結合

在LLM带动的大模型风潮下,各企业的致胜策略有那些呢? 大模型可比喻为野兽( 如野猫),于是致胜之道即是:蓄牧。也就是:驯服野兽。企业人士可以发咒语(Prompt)来力求能驯服、驾驭野兽。可是,仅仅透过语言(文句)沟通,经常力道有限、效率不佳。例如,在AI绘图大模型(如Stable Diffusion ),尽管您用了LoRA、ControlNet等,且努力发咒语,其生成作品,其不满意的也常十之八九。于是有些人士,就建立企业自用的绘图Decoder 模型( 如GAN 模型) 来帮忙。简而言之,世界级大模型擅长于“画龙”,但贫于“点睛”,因而常画出龙身凤眼或龙身蛇眼等创作。于是,企业人士就可以训练企业自己的Decoder 模型去做好关键性的“点睛”任务。

为什么需要自用的Decoder模型去点睛,而不是由人去点睛呢?理由是:人与大模型之前主要依赖语句( 咒语) 沟通,效果不佳。而Decoder与大模型可直接传递作品, 高效互动、协作。于是, 在绘图、影音领域,GAN很适合做为Decoder, 来帮Diffusion大模型做<点睛>的协作任务。而在语言文辞( 如QA)领域,基于知识图(Knowledge Graph,简称KG) 的模型很适合当做Decoder,来帮忙LLM 大模型做<点睛> 的协作任务,如图1 所示。

1715592841365952.png

图1

引自:https://arxiv.org/pdf/2306.08302

LLM与KG的结合,有助于降低LLM的幻觉风险。LLM的幻觉现象源于:缺乏准确性(accuracy)、缺乏可解释性(explainability)和缺乏可控性(governance)。

此时,是实体(Entity)相互关联的集合,其将企业专家的经验直觉、相关数据与其涵意(Semantics)和上下文(Context)连结起来,就更易于理解和共享,非常有助于弥补上述的LLM三项缺点。LLM与KG由很多种结合方式,如图2所示。

image.png

image.png

image.png

图2

引自:https://medium.com/@sradhakrishnan_37036/navigating-aisreality-the-role-of-kgs-and-llms-in-fact-checking-c93f1abfb214

LLM天生非常善解文句和人意,它使用语意搜寻从KG中检索相关信息,让人人能直接提问(Prompt) 来获得符合企业实况的回复。因而让LLM 产生更精确、准确且与上下文相符合的输出,也防止了偏见和幻觉。

3 复习知识图(KG)

一个图(Graph)是一组节点(Nodes),它们表示系统中的实体(Entities)的集合。然后,透过边(Edge)的连接来表示这些节点之间的关系( 即实体之间的关系。节点可以代表任何形式的个体,例如人、企业、城市、机场等等,如图3所示。

image.png

图3

引自:https://www.nvidia.com/en-us/glossary/networkx/

这是有关于飞机场的KG,其中的两个节点分别表示洛杉矶机场(LAX),以及圣荷西机场(SJC)。而其边代表航班( 如Flight 123)。

4 “KG + Attention”训练范例

兹以KG 来建立海峡两岸的机场及航班数据,其中有两种节点:机场和城市,如图4所示。

1715593201397193.png

图4

于是,就可以拿这KG 里真实知识,来训练一个Attention机制( 模型),来掌握这项关系。就能与LLM协作,来掌握之真实的知识,例如:虹桥机场位于上海。也能获知上海有两个主要机场:虹桥机场和浦东机场。

兹撰写下述程序码:

# att_airport.py

import torch

import torch.nn as nn

nodes=[‘松山机场’,’虹桥机场’,’浦东机场’,’

小港机场’,’台北’,’上海’,’高雄’]

nx={w : i for i, w in enumerate(nodes)}

xn={nx[w]: w for w in nx}

#定义模型

class SelfAttention(nn.Module):

def __init__(self, d):

super().__init__()

self.W_q = nn.Linear(d, 16)

self.W_k = nn.Linear(d, 16)

self.W_v = nn.Linear(d, d)

def forward(self, q, k, v):

Q, K, V = self.W_q(q), self.W_k(k), self.W_

v(v)

scores = torch.matmul(Q, K.transpose(-2, -1))

A = torch.softmax(scores, dim=-1)

return torch.matmul(A, V)

# 初始化模型、损失函数和优化器

model = SelfAttention(len(nodes))

opt = torch.optim.Adam(model.parameters(),

lr=0.001)

loss_fn = nn.MSELoss()

dx = torch.tensor([nx[‘ 台北’], nx[‘ 上海’],

nx[‘高雄’], nx[‘上海’]])

dt = torch.tensor([nx[‘松山机场’], nx[‘虹桥机场’],

nx[‘小港机场’], nx[‘浦东机场’]])

X = nn.functional.one_hot(dx, len(nodes)).float()

T = nn.functional.one_hot(dt, len(nodes)).float()

# 训练模型

print(‘n 开始训练...’)

for ep in range(3001):

opt.zero_grad()

loss = loss_fn(model(X,X,X), T)

loss.backward()

opt.step()

if(ep%1000==0): print(f’ep={ep}, Loss: {loss.

item():.4f}’)

# 预测

tx = torch.tensor([nx[‘台北’], nx[‘上海’]])

h = nn.functional.one_hot(tx, len(nodes)).float()

probs = model(h, h, h)

print(‘n----- 预测 -----’)

for i in range(2):

for j in range(7):

if(probs[i][j] > 0.25):

print(xn[tx.detach().numpy()[i]]+ ‘ 有:’,

nodes[j])

#END

这建立一个SelfAttention 模型,让它学习“城市”与“机场”实体之间的对应关系。现在就来执行这个程序,展开训练3000 回合。训练完毕,就可以输入“城市”名称,由这模型回答其所有的< 机场> 名称,如下:

1715593316773725.png

以上基于简单KG 来举例说明 KG 与Attention 机制的结合。可以从机场找城市,也可以从城市找机场。

5 结束语

LLM因基于归纳法及统计自回归算法,其天生具有创意和幻觉特质。而KG 含有专家的智慧,也表达企业的真实(Facts ),很适合拿来训练Attention或Transformer模型,以便过滤LLM所生成的作品,降低幻觉。于是,LLM画龙、企业KG来点睛,两者天作之合。

(本文来源于《EEPW》2024.5)



评论


技术专区

关闭