Edusammud LLM-i arutluskäigus: tehniline sügav sukeldumine | B4N1

Edusammud LLM-i arutluskäigus: tehniline sügav sukeldumine

9 months ago · b4n1 Read time: 3 min

Sissejuhatus

Suured keelemudelid (LLM) on viimastel aastatel muutnud loomuliku keele töötlemise (NLP) valdkonna. Need mudelid on saavutanud tipptasemel tulemusi mitmesugustes NLP ülesannetes, sealhulgas keele tõlkimises, teksti kokkuvõtte tegemises ja küsimustele vastamises. LLM-ide tõeline potentsiaal seisneb aga nende võimes arutleda ja mõista mõistete vahelisi keerulisi seoseid. Selles artiklis süveneme LLM-i arutluskäigu edusammudesse, uurides selle aluseks olevaid tehnikaid, arhitektuure ja väljakutseid.

Taust

LLM-id on teatud tüüpi närvivõrk, mis on koolitatud suurel hulgal tekstiandmetel, et õppida sõnade ja mõistete vahelisi mustreid ja seoseid. Need mudelid koosnevad tavaliselt kodeerijast ja dekoodrist, kus kodeerija töötleb sisendteksti ja dekooder genereerib väljundteksti. Kodeerija on tavaliselt trafopõhine arhitektuur, mis sobib eriti hästi järjestikuste andmete (nt teksti) jaoks.

Transformeri arhitektuur

Trafo arhitektuur, mida tutvustasid Vaswani jt artiklis "Tähelepanu on kõik, mida vajate". (2017), on saanud LLM-ide de facto standardiks. Trafo koosneb kodeerijast ja dekoodrist, millest igaüks koosneb mitmest kihist. Iga kiht koosneb kahest alamkihist: enesetähelepanu mehhanismist ja täielikult ühendatud feed-forward võrgust (FFNN).

import tõrvik
import tõrvik.nn kui nn

klass TransformerLayer(nn.Module):
    def __init__(ise, d_mudel, n_heads, d_ff):
        super(TransformerLayer, ise).__init__()
        self.self_attn = nn.MultiHeadAttention(d_mudel, n_heads)
        ise.ffnn = nn.Lineaarne(d_mudel, d_ff)
        self.dropout = nn.Dropout(0,1)
        self.layer_norm = nn.LayerNorm(d_model)

    def forward(ise, x):
        # Enesetähelepanu mehhanism
        x_attn = ise.self_attn(x, x)
        x_attn = self.dropout(x_attn)
        x_attn = x + x_attn

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

        tagasta x_ffnn

Edusammud LLM-i arutluskäigus

LLM-id on saavutanud märkimisväärseid edusamme mõistetevaheliste keerukate suhete põhjendamisel ja mõistmisel. Mõned peamised edusammud hõlmavad järgmist:

1. Graafikupõhine arutluskäik

Graafikupõhine arutluskäik hõlmab teadmiste esitamist graafikuna, kus sõlmed esindavad mõisteid ja servad nendevahelisi suhteid. LLM-e saab koolitada nende graafikute üle arutlema, tehes ennustusi sõlmede vaheliste suhete kohta.

kasuta graafikut::Graafik;
kasuta neural_network::NeuralNetwork;

fn graph_reasoning(graafik: &graafik, päring: &str) -> String {
    let embedding = neural_network.query(graaf, päring);
    let result = neural_network.reason(graph, embedding);
    result.to_string()
}

2. Multi-Task õpe

Mitme ülesandega õppimine hõlmab ühe mudeli treenimist mitme ülesande jaoks samaaegselt. On näidatud, et see lähenemisviis parandab LLM-ide jõudlust erinevate ülesannete täitmisel, sealhulgas arutluskäiku ja keeruliste suhete mõistmist.

pakett peamine

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

tüüp Model struct {
	*nn.Lineaarne
	*nn.Lineaarne
}

func (m *mudel) Edasi (x *matt.Tihe) *matt.Tihe {
	// Edasipääs
	z := m.Lineaarne(x)
	z = m. Lineaarne(z)
	tagasi z
}

3. Tähelepanu mehhanismid

Tähelepanumehhanismid võimaldavad LLM-idel keskenduda väljundi loomisel sisendteksti teatud osadele. On näidatud, et see lähenemisviis parandab LLM-ide jõudlust erinevate ülesannete täitmisel, sealhulgas arutluskäiku ja keeruliste suhete mõistmist.

import tõrvik
import tõrvik.nn kui nn

klassi tähelepanumehhanism (nn. moodul):
    def __init__(self, d_model, n_heads):
        super(tähelepanumehhanism, ise).__init__()
        self.query = nn.Lineaarne(d_mudel, d_mudel)
        self.key = nn.Lineaarne(d_mudel, d_mudel)
        self.value = nn.Lineaarne(d_mudel, d_mudel)
        self.dropout = nn.Dropout(0,1)
        self.layer_norm = nn.LayerNorm(d_model)

    def forward(ise, x):
        # Päring, võti ja väärtus
        q = self.query(x)
        k = self.key(x)
        v = iseväärtus(x)

        # Tähelepanu kaalud
        kaalud = tõrvik.matmul(q, k.T) / math.sqrt(q.shape[1])
        kaalud = self.dropout(kaalud)
        kaalud = taskulamp.softmax(kaalud, dim = -1)

        # Konteksti vektor
        kontekst = torch.matmul(kaalud, v)

        tagastab konteksti

Visualiseerimine

LLM-ide toimivuse visualiseerimiseks erinevate ülesannete puhul saame kasutada diagrammi, et võrrelda erinevate mudelite täpsust antud ülesande puhul. Siin on Chart.js-i kasutava diagrammi näide:

{
  "type": "bar",
  "andmed": {
    "sildid": ["Task 1", "Task 2", "Task 3"],
    "andmestikud": [
      {
        "label": "Mudel 1",
        "andmed": [0,8, 0,7, 0,9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "borderWidth": 1
      },
      {
        "label": "Mudel 2",
        "andmed": [0,9, 0,8, 0,7],
        "backgroundColor": "rgba(54, 162, 235, 0,2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "borderWidth": 1
      }
    ]
  },
  "valikud": {
    "pealkiri": {
      "ekraan": tõsi,
      "text": "Erinevate mudelite täpsus erinevatel ülesannetel"
    },
    "kaalud": {
      "yAxes": [
        {
          "puugid": {
            "beginAtZero": tõsi
          }
        }
      ]
    }
  }
}

Järeldus

Selles artiklis oleme uurinud LLM-i arutluskäigu edusamme, sealhulgas graafikupõhist arutlust, mitme ülesandega õppimist ja tähelepanumehhanisme. Oleme nende mõistete illustreerimiseks pakkunud ka koodinäiteid Pythonis, Rustis ja Go. Lõpuks oleme kasutanud diagrammi, et visualiseerida LLM-ide toimivust erinevatel ülesannetel. Need edusammud võivad NLP valdkonda revolutsiooniliselt muuta, võimaldades LLM-idel arutleda ja mõista mõistete vahelisi keerulisi seoseid.

Viited

  • Vaswani jt. (2017). Tähelepanu on kõik, mida vajate. arXiv eeltrükk arXiv:1706.03762.
  • Devlin jt. (2018). BERT: kahesuunaliste sügavate transformaatorite eelkoolitus keele mõistmiseks. arXiv eeltrükk arXiv:1810.04805.
  • Radford et al. (2019). Keelemudelid on järelevalveta multitegumõppijad. arXiv eeltrükk arXiv:1906.08237.

Have Questions?

Let's Talk

Contact me on LinkedIn