La finalización del gráfico de conocimiento (KGC) es una tarea crucial en el campo de la inteligencia artificial y la representación del conocimiento, cuyo objetivo es inferir la información faltante en un gráfico de conocimiento. Transformer, una poderosa arquitectura de red neuronal, ha demostrado un gran potencial en diversas tareas de procesamiento del lenguaje natural y también se puede aplicar de manera efectiva a KGC. Como proveedor de Transformer, compartiré cómo utilizar Transformer para completar gráficos de conocimiento en este blog.


Comprender la finalización del gráfico de conocimiento
Un gráfico de conocimiento es una representación estructurada del conocimiento en forma de entidades y relaciones entre ellas, típicamente modelada como un conjunto de tripletes (sujeto, predicado, objeto). Por ejemplo, (Albert Einstein, desarrollado, Relatividad General) es un triple en un gráfico de conocimiento. La finalización del gráfico de conocimiento implica predecir entidades o relaciones faltantes en estos triples. Esta tarea es importante para muchas aplicaciones, como sistemas de respuesta a preguntas, sistemas de recomendación y búsqueda semántica.
¿Por qué utilizar Transformer para KGC?
La arquitectura Transformer, presentada en el artículo "La atención es todo lo que necesita", tiene varias ventajas que la hacen adecuada para completar gráficos de conocimiento:
- Mecanismo de autoatención: El mecanismo de autoatención en Transformer le permite capturar dependencias de largo alcance en la secuencia de entrada. En el contexto de la finalización del gráfico de conocimiento, puede modelar eficazmente las relaciones entre diferentes entidades y predicados en un triplete.
- Procesamiento paralelo: A diferencia de las redes neuronales recurrentes (RNN), Transformer puede procesar toda la secuencia de entrada en paralelo, lo que acelera significativamente el proceso de entrenamiento e inferencia.
- Transferir aprendizaje: Los modelos Transformer previamente entrenados, como BERT, han demostrado un rendimiento excelente en diversas tareas de procesamiento del lenguaje natural. Estos modelos previamente entrenados se pueden ajustar para completar gráficos de conocimiento, aprovechando el conocimiento aprendido de corpus de texto a gran escala.
Pasos para utilizar Transformer para KGC
1. Preparación de datos
El primer paso es preparar los datos para completar el gráfico de conocimiento. Los datos normalmente constan de un conjunto de tripletes, que se pueden dividir en conjuntos de entrenamiento, validación y prueba. Los triples deben codificarse en un formato que el Transformer pueda procesar. Un enfoque común es convertir las entidades y predicados en incrustaciones. Por ejemplo, podemos utilizar incrustaciones de palabras previamente entrenadas o aprender incrustaciones de entidades y predicados desde el propio gráfico de conocimiento.
2. Diseño del modelo
Podemos diseñar un modelo basado en Transformer para completar el gráfico de conocimiento. Una forma es utilizar un codificador Transformer para procesar los triples de entrada. La entrada al codificador Transformer puede ser una secuencia de incrustaciones de entidades y predicados. La salida del codificador se puede utilizar para predecir la entidad o predicado que falta en un triplete.
Aquí hay un ejemplo simple de un modelo basado en Transformer para KGC en PyTorch:
importar antorcha importar antorcha.nn como nn desde antorcha.nn importar TransformerEncoder, TransformerEncoderLayer clase 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): salida = self.transformer_encoder(src) salida = self.fc(salida[:, 0, :]) devolver salida
En este ejemplo,d_modeloes la dimensión de las incrustaciones,ncabezaes el número de cabezas de atención,num_capases el número de capas del codificador Transformer, ydim_feedforwardes la dimensión de la red de alimentación directa en la capa del codificador del transformador.
3. Entrenando el modelo
Una vez diseñado el modelo, podemos entrenarlo con los datos de entrenamiento. El objetivo del entrenamiento suele ser minimizar la función de pérdida, como la pérdida de entropía cruzada. Durante el entrenamiento, podemos utilizar técnicas como la normalización por lotes, el abandono y la programación de la tasa de aprendizaje para mejorar el rendimiento del modelo.
importar torch.optim como modelo óptimo = TransformerKGC(d_model=128, nhead=4, num_layers=2, dim_feedforward=512) criterio = nn.CrossEntropyLoss() optimizador = optim.Adam(model.parameters(), lr=0.001) para la época en el rango(num_epochs): running_loss = 0.0 para i, datos en enumerar(train_loader, 0): entradas, etiquetas = optimizador de datos.zero_grad() salidas = modelo(entradas) pérdida = criterio(salidas, etiquetas) pérdida.backward() optimizador.step() running_loss += loss.item() print(f'Epoch {epoch + 1}, Loss: {running_loss / len(train_loader)}')
4. Evaluación
Después del entrenamiento, debemos evaluar el modelo en los conjuntos de validación y prueba. Las métricas de evaluación comunes para completar gráficos de conocimiento incluyen rango medio (MR), rango recíproco medio (MRR) y Hits@k. Estas métricas miden qué tan bien el modelo puede clasificar las entidades o predicados correctos entre todos los candidatos posibles.
de sklearn.metrics importe mean_rank_score, mean_reciprocal_rank_score model.eval() con torch.no_grad(): all_labels = [] all_preds = [] para datos en test_loader: entradas, etiquetas = datos salidas = modelo(entradas) 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'Rango medio: {mr}, Rango recíproco medio: {mrr}')
Nuestros productos de transformadores para KGC
Como proveedor de Transformer, ofrecemos una amplia gama de productos Transformer de alta calidad que se pueden utilizar para completar gráficos de conocimiento. Por ejemplo, nuestroTransformador tipo seco clase SC(ZB)9 de 10 kVproporciona un suministro de energía estable para la infraestructura informática necesaria para entrenar y ejecutar modelos Transformer. ElSZ 11 - Transformador de distribución inmerso en aceite trifásico serie MTambién es una opción confiable para centros de datos a gran escala involucrados en tareas de finalización de gráficos de conocimiento. Además, nuestroTransformador de potencia sumergido en aceite con regulación de carga de bobinado doble de 35 kVpuede garantizar el funcionamiento eficiente del sistema de energía durante el proceso informático de alta intensidad.
Conclusión
El uso de Transformer para completar gráficos de conocimiento es un enfoque prometedor que puede aprovechar el poder de la arquitectura Transformer para mejorar el rendimiento de KGC. Siguiendo los pasos de preparación de datos, diseño de modelos, capacitación y evaluación, podemos construir un modelo eficaz basado en Transformer para completar gráficos de conocimiento. Como proveedor de Transformer, estamos comprometidos a brindar productos de alta calidad y soporte técnico para ayudarlo a lograr mejores resultados en la finalización de gráficos de conocimiento. Si está interesado en nuestros productos o tiene alguna pregunta sobre el uso del Transformador para KGC, no dude en contactarnos para adquisiciones y más discusiones.
Referencias
- Vaswani, A., Shazer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, An, ... y Polosukhin, I. (2017). Atención es todo lo que necesitas. Avances en los sistemas de procesamiento de información neuronal.
- Devlin, J., Chang, MW, Lee, K. y Toutanova, K. (2018). BERT: Pre - entrenamiento de transformadores bidireccionales profundos para la comprensión del lenguaje. Preimpresión de arXiv arXiv:1810.04805.
