Maendeleo katika Hoja ya LLM: Kupiga mbizi kwa Kina Kiufundi | B4N1

Maendeleo katika Hoja ya LLM: Kupiga mbizi kwa Kina Kiufundi

9 months ago · b4n1 Read time: 4 min

Utangulizi

Miundo Kubwa ya Lugha (LLMs) imeleta mapinduzi katika nyanja ya usindikaji wa lugha asilia (NLP) katika miaka ya hivi karibuni. Miundo hii imepata matokeo ya hali ya juu katika kazi mbalimbali za NLP, ikiwa ni pamoja na tafsiri ya lugha, muhtasari wa maandishi, na kujibu maswali. Hata hivyo, uwezo wa kweli wa LLMs upo katika uwezo wao wa kufikiri na kuelewa mahusiano changamano kati ya dhana. Katika makala haya, tutachunguza maendeleo katika hoja za LLM, tukichunguza mbinu za kimsingi, usanifu, na changamoto.

Mandharinyuma

LLMs ni aina ya mtandao wa neva ambao umefunzwa kwa kiasi kikubwa cha data ya maandishi ili kujifunza ruwaza na uhusiano kati ya maneno na dhana. Miundo hii kwa kawaida huwa na encoder na decoder, ambapo kisimbaji huchakata maandishi ya ingizo na avkodare hutengeneza maandishi ya kutoa. Kisimbaji kwa kawaida ni usanifu unaotegemea kibadilishaji, ambao unafaa haswa kwa data mfuatano kama maandishi.

Usanifu wa Transfoma

Usanifu wa transfoma, ulioletwa kwenye karatasi "Tahadhari ndio Unachohitaji" na Vaswani et al. (2017), imekuwa kiwango halisi cha LLMs. Transfoma ina encoder na avkodare, kila linajumuisha tabaka nyingi. Kila safu ina tabaka ndogo mbili: utaratibu wa kujiangalia na mtandao uliounganishwa kikamilifu wa usambazaji wa mbele (FFNN).

kuagiza tochi
agiza tochi.nn kama nn

darasa la 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(d_model, d_ff)
        self.dropout = nn.Dropout(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def mbele (binafsi, x):
        # Utaratibu wa kujiangalia
        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)

        kurudi x_ffnn

Maendeleo katika Kujadiliana kwa LLM

LLM zimepata maendeleo makubwa katika kufikiri na kuelewa mahusiano changamano kati ya dhana. Baadhi ya maendeleo muhimu ni pamoja na:

1. Hoja Kwa Kutegemea Grafu

Mawazo yanayotegemea grafu hujumuisha kuwakilisha maarifa kama grafu, ambapo nodi huwakilisha dhana na kingo huwakilisha uhusiano kati yao. LLM zinaweza kufunzwa kusababu kuhusu grafu hizi, kufanya utabiri kuhusu uhusiano kati ya nodi.

tumia grafu::Grafu;
tumia neural_network ::NeuralNetwork;

fn graph_reasoning(grafu: &Graph, swala: &str) -> Kamba {
    acha kupachika = neural_network.query(grafu, swala);
    acha matokeo = neural_network.reason(grafu, upachikaji);
    result.to_string()
}

2. Kujifunza kwa Kazi nyingi

Kujifunza kwa kazi nyingi kunahusisha kufunza muundo mmoja juu ya kazi nyingi kwa wakati mmoja. Mbinu hii imeonyeshwa kuboresha utendaji wa LLM kwenye kazi mbalimbali, ikiwa ni pamoja na hoja na kuelewa mahusiano changamano.

kifurushi kikuu

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

aina ya muundo wa muundo {
	*nn.Mstari
	*nn.Mstari
}

func (m *Model) Mbele(x *mat.Dense) *mat.Dense {
	// Pasi ya mbele
	z := m.Linear(x)
	z = m.Linear(z)
	kurudi z
}

3. Taratibu za Kuzingatia

Mbinu za kuzingatia huruhusu LLM kuzingatia sehemu mahususi za maandishi ya ingizo wakati wa kutoa matokeo. Mbinu hii imeonyeshwa kuboresha utendaji wa LLM kwenye kazi mbalimbali, ikiwa ni pamoja na hoja na kuelewa mahusiano changamano.

kuagiza tochi
import tochi.nn kama nn

Mfumo wa Umakini wa darasa(nn.Module):
    def __init__(binafsi, d_model, n_heads):
        super(AttentionMechanism, self).__init__()
        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)

    def mbele (binafsi, x):
        # Hoja, ufunguo, na thamani
        q = swali binafsi(x)
        k = ufunguo binafsi(x)
        v = thamani binafsi(x)

        # Vipimo vya umakini
        uzani = tochi.matmul(q, k.T) / math.sqrt(q.shape[1])
        uzani = self.dropout(uzito)
        uzani = tochi.softmax(uzito, dim=-1)

        # Vekta ya muktadha
        muktadha = tochi.matmul(uzito, v)

        muktadha wa kurudi

##Taswira

Ili kuibua utendaji wa LLM kwenye kazi mbalimbali, tunaweza kutumia chati kulinganisha usahihi wa miundo tofauti kwenye kazi fulani. Huu hapa ni mfano wa chati inayotumia Chart.js:

{
  "type": "bar",
  "data": {
    "labels": ["Kazi ya 1", "Jukumu la 2", "Jukumu la 3"],
    "seti za data": [
      {
        "label": "Mfano wa 1",
        "data": [0.8, 0.7, 0.9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "upana wa mpaka": 1
      },
      {
        "label": "Mfano wa 2",
        "data": [0.9, 0.8, 0.7],
        "backgroundColor": "rgba(54, 162, 235, 0.2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "upana wa mpaka": 1
      }
    ]
  },
  "chaguo": {
    "kichwa": {
      "onyesha": kweli,
      "text": "Usahihi wa Miundo Tofauti kwenye Kazi Mbalimbali"
    },
    "mizani": {
      "yAxes": [
        {
          "tiki": {
            "beginAtZero": kweli
          }
        }
      ]
    }
  }
}

##Hitimisho

Katika makala haya, tumechunguza maendeleo katika hoja za LLM, ikiwa ni pamoja na hoja zinazotegemea grafu, ujifunzaji wa kazi nyingi, na mbinu za umakini. Pia tumetoa mifano ya msimbo katika Python, Rust, na Go ili kuonyesha dhana hizi. Hatimaye, tumetumia chati kuibua utendaji wa LLM kwenye kazi mbalimbali. Maendeleo haya yana uwezo wa kuleta mapinduzi katika uwanja wa NLP, kuwezesha LLM kufikiria na kuelewa uhusiano changamano kati ya dhana.

##Marejeleo

  • Vaswani et al. (2017). Tahadhari Ndio Unachohitaji. arXiv preprint arXiv:1706.03762.
  • Devlin et al. (2018). BERT: Mafunzo ya awali ya Vibadilishaji Kina vya Mielekeo miwili kwa Uelewa wa Lugha. arXiv preprint arXiv:1810.04805.
  • Radford et al. (2019). Miundo ya Lugha ni Wanafunzi wa Kazi Nyingi Wasiosimamiwa. arXiv preprint arXiv:1906.08237.

Have Questions?

Let's Talk

Contact me on LinkedIn