O preenchimento do gráfico de conhecimento (KGC) é uma tarefa crucial no campo da inteligência artificial e representação do conhecimento, com o objetivo de inferir informações faltantes em um gráfico de conhecimento. O Transformer, uma poderosa arquitetura de rede neural, tem demonstrado grande potencial em diversas tarefas de processamento de linguagem natural e também pode ser aplicado de forma eficaz ao KGC. Como fornecedor do Transformer, compartilharei como usar o Transformer para completar o gráfico de conhecimento neste blog.


Compreendendo a conclusão do Knowledge Graph
Um gráfico de conhecimento é uma representação estruturada do conhecimento na forma de entidades e relacionamentos entre elas, normalmente modelado como um conjunto de triplos (sujeito, predicado, objeto). Por exemplo, (Albert Einstein, desenvolvido, Relatividade Geral) é um triplo em um gráfico de conhecimento. A conclusão do gráfico de conhecimento envolve a previsão de entidades ou relacionamentos ausentes nesses triplos. Essa tarefa é importante para muitas aplicações, como sistemas de resposta a perguntas, sistemas de recomendação e pesquisa semântica.
Por que usar o Transformer para KGC
A arquitetura do Transformer, apresentada no artigo "Attention Is All You Need", possui diversas vantagens que a tornam adequada para o preenchimento do gráfico de conhecimento:
- Mecanismo de autoatenção: o mecanismo de autoatenção no Transformer permite capturar dependências de longo alcance na sequência de entrada. No contexto da conclusão do gráfico de conhecimento, ele pode modelar efetivamente os relacionamentos entre diferentes entidades e predicados em um triplo.
- Processamento paralelo: Ao contrário das redes neurais recorrentes (RNNs), o Transformer pode processar toda a sequência de entrada em paralelo, o que acelera significativamente o processo de treinamento e inferência.
- Transferir aprendizagem: Modelos de Transformer pré-treinados, como o BERT, têm apresentado excelente desempenho em diversas tarefas de processamento de linguagem natural. Esses modelos pré - treinados podem ser ajustados para a conclusão do gráfico de conhecimento, aproveitando o conhecimento aprendido em corpora de texto em grande escala.
Etapas para usar o Transformer para KGC
1. Preparação de dados
A primeira etapa é preparar os dados para a conclusão do gráfico de conhecimento. Os dados normalmente consistem em um conjunto de triplos, que podem ser divididos em conjuntos de treinamento, validação e teste. Os triplos precisam ser codificados em um formato que o Transformer possa processar. Uma abordagem comum é converter as entidades e predicados em incorporações. Por exemplo, podemos usar embeddings de palavras pré-treinados ou aprender entidades e predicados embeddings do próprio gráfico de conhecimento.
2. Projeto do modelo
Podemos projetar um modelo baseado em Transformer para conclusão do gráfico de conhecimento. Uma maneira é usar um codificador Transformer para processar os triplos de entrada. A entrada para o codificador do Transformer pode ser uma sequência de incorporações de entidades e predicados. A saída do codificador pode ser usada para prever a entidade ou predicado ausente em um triplo.
Aqui está um exemplo simples de um modelo baseado em Transformer para KGC em PyTorch:
importar tocha importar torch.nn como nn de torch.nn importar TransformerEncoder, classe TransformerEncoderLayer TransformerKGC(nn.Module): def __init__(self, d_model, nhead, num_layers, dim_feedforward): super(TransformerKGC, self).__init__() encoder_layer = TransformerEncoderLayer(d_model=d_model, nhead=nhead, dim_feedforward = dim_feedforward) self.transformer_encoder = TransformerEncoder (encoder_layer, num_layers = num_layers) self.fc = nn.Linear (d_model, num_entities) def forward (self, src): saída = self.transformer_encoder (src) saída = self.fc (saída [:, 0, :]) retornar saída
Neste exemplo,d_modeloé a dimensão dos embeddings,cabeçaé o número de cabeças de atenção,num_camadasé o número de camadas do codificador do transformador, edim_feedforwardé a dimensão da rede feed-forward na camada do codificador do Transformer.
3. Treinando o modelo
Depois que o modelo for projetado, podemos treiná-lo nos dados de treinamento. O objetivo do treinamento é normalmente minimizar a função de perda, como a perda de entropia cruzada. Durante o treinamento, podemos usar técnicas como normalização de lote, abandono e agendamento de taxa de aprendizagem para melhorar o desempenho do modelo.
importar torch.optim como modelo otimizado = TransformerKGC (d_model = 128, nhead = 4, num_layers = 2, dim_feedforward = 512) critério = nn.CrossEntropyLoss () otimizador = optim.Adam (model.parameters (), lr = 0,001) para época no intervalo (num_epochs): running_loss = 0,0 para i, dados em enumerar (train_loader, 0): entradas, rótulos = otimizador de dados.zero_grad() saídas = modelo (entradas) perda = critério (saídas, rótulos) perda.backward() otimizador.step() running_loss += loss.item() print(f'Epoch {época + 1}, Perda: {running_loss / len(train_loader)}')
4. Avaliação
Após o treinamento, precisamos avaliar o modelo nos conjuntos de validação e teste. As métricas de avaliação comuns para a conclusão do gráfico de conhecimento incluem classificação média (MR), classificação recíproca média (MRR) e Hits@k. Essas métricas medem quão bem o modelo pode classificar as entidades ou predicados corretos entre todos os candidatos possíveis.
de sklearn.metrics importe mean_rank_score, mean_reciprocal_rank_score model.eval() com torch.no_grad(): all_labels = [] all_preds = [] para dados em test_loader: entradas, rótulos = dados saídas = model(inputs) all_labels.extend(labels.tolist()) all_preds.extend(outputs.tolist()) mr = mean_rank_score(all_labels, all_preds) mrr = mean_reciprocal_rank_score(all_labels, all_preds) print(f'Classificação média: {mr}, Classificação recíproca média: {mrr}')
Nossos produtos de transformadores para KGC
Como fornecedor de Transformers, oferecemos uma ampla gama de produtos Transformer de alta qualidade que podem ser usados para completar gráficos de conhecimento. Por exemplo, nossoSC(ZB)9 Série 10kV Classe Transformador tipo secofornece fonte de alimentação estável para a infraestrutura de computação necessária para treinar e executar modelos Transformer. OSZ 11 - Transformador de distribuição imerso em óleo trifásico série Mtambém é uma escolha confiável para data centers de grande escala envolvidos em tarefas de conclusão de gráficos de conhecimento. Além disso, nossoTransformador de potência imerso em óleo regulador de carga de enrolamento duplo de 35kVpode garantir a operação eficiente do sistema de energia durante o processo de computação de alta intensidade.
Conclusão
Usar o Transformer para completar o gráfico de conhecimento é uma abordagem promissora que pode aproveitar o poder da arquitetura do Transformer para melhorar o desempenho do KGC. Seguindo as etapas de preparação de dados, design de modelo, treinamento e avaliação, podemos construir um modelo eficaz baseado em Transformer para conclusão do gráfico de conhecimento. Como fornecedor de Transformer, temos o compromisso de fornecer produtos de alta qualidade e suporte técnico para ajudá-lo a obter melhores resultados no preenchimento do gráfico de conhecimento. Se você estiver interessado em nossos produtos ou tiver alguma dúvida sobre o uso do Transformer para KGC, não hesite em nos contatar para compras e discussões adicionais.
Referências
- Vaswani, A., Shazer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, An, ... & Polosukhin, I. (2017). Atenção é tudo que você precisa. Avanços em sistemas de processamento de informações neurais.
- Devlin, J., Chang, MW, Lee, K. e Toutanova, K. (2018). BERT: Pré - treinamento de transformadores bidirecionais profundos para compreensão da linguagem. Pré-impressão do arXiv arXiv:1810.04805.
