Напредокот во LLM Reasoning: A Technical Deep Dive | B4N1

Напредокот во LLM Reasoning: A Technical Deep Dive

9 months ago · b4n1 Tiempo de lectura: 4 min

Вовед

Големите јазични модели (LLMs) го револуционизираа полето на обработка на природни јазици (NLP) во последниве години. Овие модели постигнаа најсовремени резултати во различни NLP задачи, вклучувајќи превод на јазик, сумирање на текст и одговарање на прашања. Сепак, вистинскиот потенцијал на LLM лежи во нивната способност да расудуваат и да разберат сложени односи помеѓу концептите. Во оваа статија, ќе истражуваме во напредокот во расудувањето за LLM, истражувајќи ги основните техники, архитектури и предизвици.

Позадина

LLM се еден вид невронска мрежа која е обучена на огромни количини текстуални податоци за да научи обрасци и односи помеѓу зборовите и концептите. Овие модели обично се состојат од енкодер и декодер, каде што енкодерот го обработува влезниот текст, а декодерот го генерира излезниот текст. Кодерот е обично архитектура базирана на трансформатор, која е особено добро прилагодена за секвенцијални податоци како текст.

Трансформаторска архитектура

Трансформаторската архитектура, воведена во трудот „Внимание е сè што ви треба“ од Васвани и сор. (2017), стана де факто стандард за LLM. Трансформаторот се состои од енкодер и декодер, секој составен од повеќе слоеви. Секој слој се состои од два подслоеви: механизам за само-внимание и целосно поврзана мрежа за пренасочување (FFNN).

увозен факел
увоз факел.нн како бн

класа TransformerLayer(nn.Модул):
    def __init__(self, d_model, n_heads, d_ff):
        супер(TransformerLayer, self).__init__()
        self.self_attn = nn.MultiHeadAttention(d_model, n_heads)
        self.ffnn = nn.Linear(d_model, d_ff)
        self.dropout = nn.Dropout(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    деф напред (себе, x):
        # Механизам за самовнимание
        x_attn = себе.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)

        врати x_ffnn

Напредува во расудувањето за LLM

LLMs постигнаа значителен напредок во расудувањето и разбирањето на сложените односи помеѓу концептите. Некои од клучните достигнувања вклучуваат:

1. Расудување засновано на графикони

Расудувањето базирано на графикон вклучува претставување на знаењето како график, каде јазлите ги претставуваат концептите, а рабовите ги претставуваат односите меѓу нив. LLM може да се обучат да расудуваат за овие графикони, правејќи предвидувања за односите помеѓу јазлите.

користи график::График;
користи невронска_мрежа::Неврална мрежа;

fn graph_reasoning(графикон: &график, барање: &str) -> Стринг {
    нека embedding = neural_network.query(графикон, барање);
    нека резултат = нервна_мрежа.причина (график, вградување);
    result.to_string()
}

2. Учење со повеќе задачи

Учењето со повеќе задачи вклучува обука на еден модел на повеќе задачи истовремено. Се покажа дека овој пристап ги подобрува перформансите на LLM на различни задачи, вклучувајќи расудување и разбирање сложени односи.

главен пакет

увоз (
	"fmt"
	"gonum.org/v1/gonum/mat"
)

тип Model struct {
	*nn.Линеарно
	*nn.Линеарно
}

func (m *Model) Forward(x *mat.Dense) *mat.Dense {
	// Напред пас
	z := m.Линеарно(x)
	z = m.Линеарно(z)
	врати з
}

3. Механизми за внимание

Механизмите за внимание им овозможуваат на LLM да се фокусираат на одредени делови од влезниот текст при генерирање на излезот. Се покажа дека овој пристап ги подобрува перформансите на LLM на различни задачи, вклучувајќи расудување и разбирање сложени односи.

увозен факел
увоз факел.нн како бн

класа Механизам за внимание (nn.Модул):
    def __init__(себе, d_model, n_heads):
        супер(Механизам на внимание, себе).__почеток__()
        self.query = nn.Linear(d_model, d_model)
        self.key = nn.Linear(d_model, d_model)
        self.value = nn.Linear(d_model, d_model)
        self.dropout = nn.Dropout(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    деф напред (себе, x):
        # Барање, клуч и вредност
        q = self.query(x)
        k = себе.клуч(x)
        v = себе.вредност(x)

        # Внимание тегови
        тегови = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
        тегови = себе.напуштање(тежини)
        тегови = torch.softmax(тежини, затемнети=-1)

        # Контекстен вектор
        контекст = torch.matmul(тежини, v)

        врати контекст

Визуелизација

За да ги визуелизираме перформансите на LLM на различни задачи, можеме да користиме графикон за да ја споредиме точноста на различни модели на дадена задача. Еве пример на графикон кој користи Chart.js:

{
  "тип": "бар",
  "податоци": {
    "етикети": ["Задача 1", "Задача 2", "Задача 3"],
    "збирки на податоци": [
      {
        "етикета": "Модел 1",
        „податоци“: [0,8, 0,7, 0,9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        „Ширина на границата“: 1
      },
      {
        "етикета": "Модел 2",
        „податоци“: [0,9, 0,8, 0,7],
        "backgroundColor": "rgba(54, 162, 235, 0.2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        „Ширина на границата“: 1
      }
    ]
  },
  "опции": {
    "наслов": {
      „екран“: точно,
      "text": "Точност на различни модели на различни задачи"
    },
    "вага": {
      „yOxes“: [
        {
          "крлежи": {
            "beginAtZero": точно
          }
        }
      ]
    }
  }
}

Заклучок

Во оваа статија, ги истраживме напредокот во расудувањето за LLM, вклучувајќи расудување базирано на графикони, учење со повеќе задачи и механизми за внимание. Дадовме и примери на код во Python, Rust и Go за да ги илустрираме овие концепти. Конечно, користевме графикон за да ги визуелизираме перформансите на LLM на различни задачи. Овие достигнувања имаат потенцијал да го револуционизираат полето на НЛП, овозможувајќи им на LLM да расудуваат и да ги разберат сложените односи помеѓу концептите.

Референци

  • Васвани и сор. (2017). Вниманието е се што ви треба. arXiv предпечатење arXiv:1706.03762.
  • Девлин и сор. (2018). БЕРТ: Пред-обука на длабоки двонасочни трансформатори за разбирање јазици. arXiv предпечатење arXiv:1810.04805.
  • Радфорд и сор. (2019). Јазичните модели се ненадгледувани ученици со повеќе задачи. arXiv предпечатење arXiv:1906.08237.

¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn