Előrelépések az LLM érvelés terén: Technikai mélyrepülés | B4N1

Előrelépések az LLM érvelés terén: Technikai mélyrepülés

9 months ago · b4n1 Tiempo de lectura: 3 min

Bevezetés

A nagy nyelvi modellek (LLM) az elmúlt években forradalmasították a természetes nyelvi feldolgozás (NLP) területét. Ezek a modellek a legkorszerűbb eredményeket értek el különböző NLP-feladatokban, beleértve a nyelvi fordítást, a szövegösszegzést és a kérdések megválaszolását. Az LLM-ek valódi potenciálja azonban abban rejlik, hogy képesek érvelni és megérteni a fogalmak közötti összetett kapcsolatokat. Ebben a cikkben elmélyülünk az LLM-gondolkodás fejlődésében, feltárva a mögöttes technikákat, architektúrákat és kihívásokat.

Háttér

Az LLM-ek olyan neurális hálózatok, amelyek hatalmas mennyiségű szöveges adatra vannak kiképezve, hogy megtanulják a szavak és fogalmak közötti mintákat és kapcsolatokat. Ezek a modellek jellemzően egy kódolóból és egy dekódolóból állnak, ahol a kódoló feldolgozza a bemeneti szöveget, és a dekódoló generálja a kimeneti szöveget. A kódoló általában egy transzformátor alapú architektúra, amely különösen alkalmas szekvenciális adatokhoz, például szöveghez.

Transformer architektúra

A transzformátor architektúra, amelyet Vaswani et al. (2017) az LLM-ek de facto szabványává vált. A transzformátor egy kódolóból és egy dekódolóból áll, amelyek mindegyike több rétegből áll. Mindegyik réteg két alrétegből áll: egy önfigyelő mechanizmusból és egy teljesen összekapcsolt feed-forward hálózatból (FFNN).

import fáklya
import fáklya.nn mint nn

osztály TransformerLayer(nn.Module):
    def __init__(self, d_model, n_heads, d_ff):
        szuper(TransformerLayer, saját).__init__()
        self.self_attn = nn.MultiHeadAttention(d_modell, n_heads)
        self.ffnn = nn.Lineáris(d_modell, d_ff)
        self.dropout = nn.Dropout(0,1)
        self.layer_norm = nn.LayerNorm(d_model)

    def forward(ön, x):
        # Önfigyelő mechanizmus
        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)

        vissza x_ffnn

Előrelépések az LLM érvelésében

Az LLM-ek jelentős előrehaladást értek el a fogalmak közötti összetett kapcsolatok érvelésében és megértésében. Néhány kulcsfontosságú előrelépés:

1. Grafikon alapú érvelés

A gráf alapú gondolkodás magában foglalja a tudás gráfként való megjelenítését, ahol a csomópontok a fogalmakat, az élek pedig a köztük lévő kapcsolatokat. Az LLM-eket meg lehet tanítani arra, hogy gondolkodjanak ezekről a grafikonokról, és előrejelzéseket készítsenek a csomópontok közötti kapcsolatokról.

grafikon használata::Graph;
neural_network::NeuralNetwork használata;

fn graph_reasoning(grafikon: &grafikon, lekérdezés: &str) -> String {
    let embedding = neural_network.query(gráf, lekérdezés);
    legyen eredmény = neural_network.reason(graph, beágyazás);
    result.to_string()
}

2. Többfeladatos tanulás

A többfeladatos tanulás egyetlen modell képzését jelenti több feladatra egyidejűleg. Bebizonyosodott, hogy ez a megközelítés javítja az LLM-ek teljesítményét különböző feladatokban, beleértve az érvelést és az összetett kapcsolatok megértését.

csomag fő

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

type Model struct {
	*nn.Lineáris
	*nn.Lineáris
}

func (m *Modell) Előre(x *mat.Dense) *mat.Dense {
	// Előrelépés
	z := m.Lineáris(x)
	z = m.Lineáris(z)
	vissza z
}

3. Figyelemfelkeltő mechanizmusok

A figyelemfelkeltő mechanizmusok lehetővé teszik az LLM-ek számára, hogy a kimenet létrehozásakor a bemeneti szöveg meghatározott részeire összpontosítsanak. Bebizonyosodott, hogy ez a megközelítés javítja az LLM-ek teljesítményét különböző feladatokban, beleértve az érvelést és az összetett kapcsolatok megértését.

import fáklya
import fáklya.nn mint nn

osztály Figyelemmechanizmus (nn. Module):
    def __init__(self, d_model, n_heads):
        szuper(Figyelemmechanizmus, saját).__init__()
        self.query = nn.Lineáris(d_modell, d_modell)
        self.key = nn.Lineáris(d_modell, d_modell)
        self.value = nn.Lineáris(d_modell, d_modell)
        self.dropout = nn.Dropout(0,1)
        self.layer_norm = nn.LayerNorm(d_model)

    def forward(ön, x):
        # Lekérdezés, kulcs és érték
        q = self.query(x)
        k = self.key(x)
        v = self.value(x)

        # Figyelem súlyok
        súlyok = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
        súlyok = self.dropout(súlyok)
        súlyok = fáklya.softmax(súlyok, dim=-1)

        # Kontextus vektor
        kontextus = torch.matmul(súlyok, v)

        kontextus visszaadása

Vizualizáció

Az LLM-ek különféle feladatokon nyújtott teljesítményének megjelenítéséhez diagram segítségével összehasonlíthatjuk a különböző modellek pontosságát egy adott feladaton. Íme egy példa a Chart.js-t használó diagramra:

{
  "type": "sáv",
  "adat": {
    "címkék": ["Task 1", "Task 2", "Task 3"],
    "adatkészletek": [
      {
        "label": "1. modell",
        "data": [0,8, 0,7, 0,9],
        "backgroundColor": "rgba(255, 99, 132, 0,2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "borderWidth": 1
      },
      {
        "label": "Model 2",
        "data": [0,9, 0,8, 0,7],
        "backgroundColor": "rgba(54, 162, 235, 0,2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "borderWidth": 1
      }
    ]
  },
  "opciók": {
    "cím": {
      "megjelenítés": igaz,
      "text": "Különböző modellek pontossága különféle feladatoknál"
    },
    "mérleg": {
      "yAxes": [
        {
          "kullancsok": {
            "beginAtZero": igaz
          }
        }
      ]
    }
  }
}

Következtetés

Ebben a cikkben feltártuk az LLM érvelésben elért előrelépéseket, beleértve a gráf alapú érvelést, a többfeladatos tanulást és a figyelemmechanizmusokat. Ezen fogalmak illusztrálására a Python, a Rust és a Go nyelvekben is bemutattunk kódpéldákat. Végül egy diagramot használtunk az LLM-ek teljesítményének megjelenítésére a különböző feladatok során. Ezek a fejlesztések forradalmasíthatják az NLP területét, lehetővé téve az LLM-ek számára a fogalmak közötti összetett összefüggések érvelését és megértését.

Referenciák

  • Vaswani et al. (2017). Csak a figyelem kell. arXiv preprint arXiv:1706.03762.
  • Devlin et al. (2018). BERT: Mély kétirányú transzformátorok előképzése a nyelv megértéséhez. arXiv preprint arXiv:1810.04805.
  • Radford et al. (2019). A nyelvi modellek felügyelet nélküli többfeladatos tanulók. arXiv preprint arXiv:1906.08237.

¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn