Sasniegumi LLM spriešanas jomā: tehniska dziļa niršana | B4N1

Sasniegumi LLM spriešanas jomā: tehniska dziļa niršana

9 months ago · b4n1 Read time: 3 min

Ievads

Lielie valodu modeļi (LLM) pēdējos gados ir mainījuši dabiskās valodas apstrādes (NLP) jomu. Šie modeļi ir sasnieguši vismodernākos rezultātus dažādos NLP uzdevumos, tostarp valodas tulkošanā, teksta apkopošanā un atbildē uz jautājumiem. Tomēr LLM patiesais potenciāls slēpjas viņu spējā pamatot un izprast sarežģītas attiecības starp jēdzieniem. Šajā rakstā mēs iedziļināsimies LLM argumentācijas sasniegumos, izpētot pamatā esošās metodes, arhitektūru un izaicinājumus.

Fons

LLM ir neironu tīkla veids, kas tiek apmācīts, izmantojot lielu teksta datu apjomu, lai uzzinātu modeļus un attiecības starp vārdiem un jēdzieniem. Šie modeļi parasti sastāv no kodētāja un dekodētāja, kur kodētājs apstrādā ievades tekstu un dekodētājs ģenerē izvades tekstu. Kodētājs parasti ir uz transformatoru balstīta arhitektūra, kas ir īpaši piemērota secīgiem datiem, piemēram, tekstam.

Transformatoru arhitektūra

Transformatora arhitektūra, ko iepazīstināja Vaswani et al. (2017), ir kļuvis par LLM de facto standartu. Transformators sastāv no kodētāja un dekodētāja, katrs sastāv no vairākiem slāņiem. Katrs slānis sastāv no diviem apakšslāņiem: pašapziņas mehānisma un pilnībā savienota padeves tīkla (FFNN).

importa lāpa
importēt lāpu.nn kā nn

klase 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.Lineārs(d_modelis, d_ff)
        self.dropout = nn.Dropout(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def uz priekšu (sevis, x):
        # Pašuzmanības mehānisms
        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)

        atgriezt x_ffnn

Sasniegumi LLM argumentācijā

LLM ir guvuši ievērojamu progresu, spriežot un izprotot sarežģītas attiecības starp jēdzieniem. Daži no galvenajiem sasniegumiem ietver:

1. Grafikos balstīta argumentācija

Grafikā balstīta spriešana ietver zināšanu attēlošanu kā grafu, kur mezgli attēlo jēdzienus un malas attēlo attiecības starp tiem. LLM var apmācīt pamatot šos grafikus, prognozējot attiecības starp mezgliem.

izmantot grafiku::Grafiks;
izmantot neural_network::NeuralNetwork;

fn graph_reasoning(graph: &Graph, vaicājums: &str) -> String {
    let embedding = neironu_tīkls.query(grafiks, vaicājums);
    let rezultāts = neironu_tīkls.reason(grafiks, iegulšana);
    result.to_string()
}

2. Vairāku uzdevumu mācīšanās

Vairāku uzdevumu mācīšanās ietver viena modeļa apmācību vairākiem uzdevumiem vienlaikus. Ir pierādīts, ka šī pieeja uzlabo LLM veiktspēju dažādos uzdevumos, tostarp argumentācijā un sarežģītu attiecību izpratnē.

galvenā pakete

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

type Model struct {
	*nn.Lineārs
	*nn.Lineārs
}

func (m *Modelis) Uz priekšu (x *mat.Blīvs) *mat.Blīvs {
	// Piespēle uz priekšu
	z := m.Lineārs(x)
	z = m. Lineārs(z)
	atgriezt z
}

3. Uzmanības mehānismi

Uzmanības mehānismi ļauj LLM koncentrēties uz noteiktām ievades teksta daļām, ģenerējot izvadi. Ir pierādīts, ka šī pieeja uzlabo LLM veiktspēju dažādos uzdevumos, tostarp argumentācijā un sarežģītu attiecību izpratnē.

importa lāpa
importēt lāpu.nn kā nn

klases Uzmanības mehānisms (nn. modulis):
    def __init__(self, d_model, n_heads):
        super(uzmanības mehānisms, self).__init__()
        self.query = nn.Lineārs(d_modelis, d_modelis)
        self.key = nn.Lineārs(d_modelis, d_modelis)
        self.value = nn.Lineārs(d_modelis, d_modelis)
        self.dropout = nn.Dropout(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def uz priekšu (sevis, x):
        # Vaicājums, atslēga un vērtība
        q = self.query(x)
        k = self.key(x)
        v = pašvērtība(x)

        # Uzmanības svari
        svari = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
        svari = self.dropout(svari)
        svari = deglis.softmax(svari, dim=-1)

        # Konteksta vektors
        konteksts = torch.matmul(svari, v)

        atgriezt kontekstu

Vizualizācija

Lai vizualizētu LLM veiktspēju dažādos uzdevumos, mēs varam izmantot diagrammu, lai salīdzinātu dažādu modeļu precizitāti noteiktā uzdevumā. Tālāk ir sniegts diagrammas piemērs, izmantojot Chart.js:

{
  "tips": "josla",
  "dati": {
    "etiķetes": ["1. uzdevums", "2. uzdevums", "3. uzdevums"],
    "datu kopas": [
      {
        "etiķete": "1. modelis",
        "dati": [0,8, 0,7, 0,9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "borderWidth": 1
      },
      {
        "etiķete": "2. modelis",
        "dati": [0,9, 0,8, 0,7],
        "backgroundColor": "rgba(54, 162, 235, 0.2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "borderWidth": 1
      }
    ]
  },
  "opcijas": {
    "title": {
      "displejs": patiess,
      "text": "Dažādu modeļu precizitāte dažādos uzdevumos"
    },
    "svari": {
      "yAxes": [
        {
          "ērces": {
            "beginAtZero": taisnība
          }
        }
      ]
    }
  }
}

Secinājums

Šajā rakstā mēs esam izpētījuši LLM spriešanas sasniegumus, tostarp uz grafiku balstītu spriešanu, vairāku uzdevumu mācīšanos un uzmanības mehānismus. Mēs esam snieguši arī kodu piemērus Python, Rust un Go, lai ilustrētu šos jēdzienus. Visbeidzot, mēs esam izmantojuši diagrammu, lai vizualizētu LLM veiktspēju dažādos uzdevumos. Šie sasniegumi var mainīt NLP jomu, ļaujot LLM pamatot un izprast sarežģītas attiecības starp jēdzieniem.

Atsauces

  • Vaswani et al. (2017). Uzmanība ir viss, kas jums nepieciešams. arXiv preprint arXiv:1706.03762.
  • Devlins et al. (2018). BERT: dziļo divvirzienu transformatoru iepriekšēja apmācība valodas izpratnei. arXiv preprint arXiv:1810.04805.
  • Radfords u.c. (2019). Valodu modeļi ir bez uzraudzības daudzuzdevumu apguvēji. arXiv preprint arXiv:1906.08237.

Have Questions?

Let's Talk

Contact me on LinkedIn