Avances no razoamento LLM: un mergullo profundo técnico | B4N1

Avances no razoamento LLM: un mergullo profundo técnico

9 months ago · b4n1 Read time: 4 min

Introdución

Os grandes modelos de linguaxe (LLM) revolucionaron o campo do procesamento da linguaxe natural (PNL) nos últimos anos. Estes modelos lograron resultados de última xeración en varias tarefas de PNL, incluíndo tradución de idiomas, resumo de textos e resposta a preguntas. Non obstante, o verdadeiro potencial dos LLM reside na súa capacidade para razoar e comprender relacións complexas entre conceptos. Neste artigo, afondaremos nos avances no razoamento LLM, explorando as técnicas, arquitecturas e desafíos subxacentes.

Fondo

Os LLM son un tipo de rede neuronal que se adestra en grandes cantidades de datos de texto para aprender patróns e relacións entre palabras e conceptos. Estes modelos normalmente consisten nun codificador e un decodificador, onde o codificador procesa o texto de entrada e o descodificador xera o texto de saída. O codificador adoita ser unha arquitectura baseada en transformadores, que é especialmente adecuada para datos secuenciais como o texto.

Arquitectura de transformadores

A arquitectura do transformador, introducida no documento "Attention is All You Need" de Vaswani et al. (2017), converteuse no estándar de facto para os LLM. O transformador consta dun codificador e un decodificador, cada un composto por varias capas. Cada capa consta de dúas subcapas: un mecanismo de autoatención e unha rede de alimentación directa (FFNN) totalmente conectada.

facho de importación
importar facho.nn como nn

clase TransformerLayer(nn.Module):
    def __init__(self, d_model, n_heads, d_ff):
        super(TransformerLayer, self).__init__()
        self.self_attn = nn.MultiHeadAttention(d_model, n_heads)
        self.ffnn = nn.Linear (modelo_d, d_ff)
        self.dropout = nn.Dropout (0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def forward(self, x):
        # Mecanismo de autoatención
        x_attn = self.self_attn(x, x)
        x_attn = self.dropout(x_attn)
        x_attn = x + x_attn

        #FFNN
        x_ffnn = self.ffnn(x_attn)
        x_ffnn = self.dropout(x_ffnn)
        x_ffnn = self.layer_norm (x_ffnn + x_attn)

        devolver x_ffnn

Avances no razoamento LLM

Os LLM lograron avances significativos no razoamento e comprensión de relacións complexas entre conceptos. Algúns dos avances clave inclúen:

1. Razoamento baseado en gráficos

O razoamento baseado en gráficos implica representar o coñecemento como un gráfico, onde os nós representan conceptos e as arestas representan relacións entre eles. Os LLM pódense adestrar para razoar sobre estes gráficos, facendo predicións sobre as relacións entre nós.

use graph::Graph;
use neuronal_network::NeuralNetwork;

fn graph_reasoning(gráfico: &Gráfico, consulta: &str) -> Cadena {
    let embedding = rede_neural.query(gráfico, consulta);
    let result = neuronal_network.reason (gráfico, incrustación);
    result.to_string()
}

2. Aprendizaxe multitarefa

A aprendizaxe multitarefa implica adestrar un único modelo en varias tarefas simultáneamente. Este enfoque demostrou que mellora o rendemento dos LLM en varias tarefas, incluíndo o razoamento e a comprensión de relacións complexas.

paquete principal

importar (
	"fmt"
	"gonum.org/v1/gonum/mat"
)

tipo Model struct {
	*nn.Lineal
	*nn.Lineal
}

func (m *Modelo) Adiante (x *mat.Dense) *mat.Dense {
	// Pase adiante
	z := m. Lineal(x)
	z = m. Lineal (z)
	devolver z
}

3. Mecanismos de atención

Os mecanismos de atención permiten aos LLM centrarse en partes específicas do texto de entrada ao xerar a saída. Este enfoque demostrou que mellora o rendemento dos LLM en varias tarefas, incluíndo o razoamento e a comprensión de relacións complexas.

facho de importación
importar facho.nn como nn

clase AttentionMechanism(nn.Module):
    def __init__(self, d_model, n_heads):
        super(Mecanismo de atención, auto).__init__()
        self.query = nn.Linear (modelo_d, modelo_d)
        self.key = nn.Linear (modelo_d, modelo_d)
        self.value = nn.Linear (modelo_d, modelo_d)
        self.dropout = nn.Dropout (0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def forward(self, x):
        # Consulta, clave e valor
        q = self.query(x)
        k = self.key(x)
        v = valor propio (x)

        # Atención pesos
        pesos = facho.matmul(q, k.T) / math.sqrt(q.shape[1])
        pesos = self.dropout(pesos)
        pesos = facho.softmax(pesos, dim=-1)

        # Vector de contexto
        contexto = facho.matmul(pesos, v)

        contexto de retorno

Visualización

Para visualizar o rendemento dos LLM en varias tarefas, podemos utilizar un gráfico para comparar a precisión de diferentes modelos nunha determinada tarefa. Aquí tes un exemplo dun gráfico usando Chart.js:

{
  "type": "bar",
  "datos": {
    "labels": ["Tarefa 1", "Tarefa 2", "Tarefa 3"],
    "conxuntos de datos": [
      {
        "label": "Modelo 1",
        "datos": [0,8, 0,7, 0,9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "borderWidth": 1
      },
      {
        "label": "Modelo 2",
        "datos": [0,9, 0,8, 0,7],
        "backgroundColor": "rgba(54, 162, 235, 0.2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "borderWidth": 1
      }
    ]
  },
  "opcións": {
    "título": {
      "mostrar": verdadeiro,
      "text": "Precisión de diferentes modelos en varias tarefas"
    },
    "escalas": {
      "yAxes": [
        {
          "ticks": {
            "beginAtZero": verdadeiro
          }
        }
      ]
    }
  }
}

Conclusión

Neste artigo, exploramos os avances no razoamento LLM, incluíndo o razoamento baseado en gráficos, a aprendizaxe multitarefa e os mecanismos de atención. Tamén proporcionamos exemplos de código en Python, Rust e Go para ilustrar estes conceptos. Finalmente, utilizamos un gráfico para visualizar o desempeño dos LLM en varias tarefas. Estes avances teñen o potencial de revolucionar o campo da PNL, permitindo aos LLM razoar e comprender relacións complexas entre conceptos.

Referencias

  • Vaswani et al. (2017). A atención é todo o que necesitas. preimpresión de arXiv arXiv:1706.03762.
  • Devlin et al. (2018). BERT: formación previa de transformadores bidireccionais profundos para a comprensión da linguaxe. preimpresión de arXiv arXiv:1810.04805.
  • Radford et al. (2019). Os modelos lingüísticos son estudantes multitarefa sen supervisión. preimpresión de arXiv arXiv:1906.08237.

Have Questions?

Let's Talk

Contact me on LinkedIn