ຄວາມກ້າວຫນ້າໃນ LLM ເຫດຜົນ: A Technical Deep Dive | B4N1

ຄວາມກ້າວຫນ້າໃນ LLM ເຫດຜົນ: A Technical Deep Dive

9 months ago · b4n1 Read time: 2 min

ແນະນຳ

ຮູບແບບພາສາຂະຫນາດໃຫຍ່ (LLMs) ໄດ້ປະຕິວັດພາກສະຫນາມຂອງການປຸງແຕ່ງພາສາທໍາມະຊາດ (NLP) ໃນຊຸມປີມໍ່ໆມານີ້. ຮູບແບບເຫຼົ່ານີ້ໄດ້ບັນລຸຜົນໄດ້ຮັບທີ່ທັນສະໄຫມໃນວຽກງານ NLP ຕ່າງໆ, ລວມທັງການແປພາສາພາສາ, ການສະຫຼຸບຂໍ້ຄວາມ, ແລະການຕອບຄໍາຖາມ. ຢ່າງໃດກໍ່ຕາມ, ທ່າແຮງທີ່ແທ້ຈິງຂອງ LLMs ແມ່ນຢູ່ໃນຄວາມສາມາດໃນການຫາເຫດຜົນແລະເຂົ້າໃຈຄວາມສໍາພັນທີ່ສັບສົນລະຫວ່າງແນວຄວາມຄິດ. ໃນບົດຄວາມນີ້, ພວກເຮົາຈະເຈາະເລິກເຖິງຄວາມກ້າວຫນ້າຂອງເຫດຜົນຂອງ LLM, ຂຸດຄົ້ນເຕັກນິກທີ່ຕິດພັນ, ສະຖາປັດຕະຍະກໍາ, ແລະສິ່ງທ້າທາຍ.

ຄວາມເປັນມາ

LLMs ແມ່ນປະເພດຂອງເຄືອຂ່າຍ neural ທີ່ໄດ້ຮັບການຝຶກອົບຮົມກ່ຽວກັບຂໍ້ມູນຂໍ້ຄວາມຈໍານວນຫລາຍເພື່ອຮຽນຮູ້ຮູບແບບແລະຄວາມສໍາພັນລະຫວ່າງຄໍາສັບແລະແນວຄວາມຄິດ. ຮູບແບບເຫຼົ່ານີ້ປົກກະຕິແລ້ວປະກອບດ້ວຍຕົວເຂົ້າລະຫັດແລະຕົວຖອດລະຫັດ, ບ່ອນທີ່ຕົວເຂົ້າລະຫັດປະມວນຜົນຂໍ້ຄວາມທີ່ປ້ອນເຂົ້າແລະຕົວຖອດລະຫັດຈະສ້າງຂໍ້ຄວາມອອກ. ປົກກະຕິແລ້ວຕົວເຂົ້າລະຫັດແມ່ນສະຖາປັດຕະຍະກໍາທີ່ອີງໃສ່ຕົວແປງສັນຍານ, ເຊິ່ງແມ່ນເຫມາະສົມໂດຍສະເພາະສໍາລັບຂໍ້ມູນຕາມລໍາດັບເຊັ່ນຂໍ້ຄວາມ.

ສະຖາປັດຕະຍະກຳ Transformer

ຖາປັດຕະຍະການຫັນເປັນ, ນໍາສະເຫນີໃນເຈ້ຍ "ຄວາມສົນໃຈແມ່ນທັງຫມົດທີ່ທ່ານຕ້ອງການ" ໂດຍ Vaswani et al. (2017), ໄດ້ກາຍເປັນມາດຕະຖານ de facto ສໍາລັບ LLMs. ຫມໍ້ແປງປະກອບດ້ວຍຕົວເຂົ້າລະຫັດແລະຕົວຖອດລະຫັດ, ແຕ່ລະຊັ້ນປະກອບດ້ວຍຫຼາຍຊັ້ນ. ແຕ່ລະຊັ້ນປະກອບດ້ວຍສອງຊັ້ນຍ່ອຍ: ກົນໄກການເອົາໃຈໃສ່ຕົນເອງແລະເຄືອຂ່າຍການສົ່ງຕໍ່ທີ່ເຊື່ອມຕໍ່ຢ່າງເຕັມສ່ວນ (FFNN).

`` python ນໍາເຂົ້າໄຟ ນໍາເຂົ້າ torch.nn ເປັນ nn

ຊັ້ນ TransformerLayer(nn.Module): def init(ຕົວ​ເອງ, d_model, n_heads, d_ff): super(TransformerLayer, ຕົນເອງ).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 forward(ຕົວ​ເອງ​, x​):
    # ກົນໄກການເອົາໃຈໃສ່ຕົນເອງ
    x_attn = self.self_attn(x, x)
    x_attn = self.dropout(x_attn)
    x_attn = x + x_attn

    # FFNN
    x_ffnn = ຕົນເອງ.ffnn(x_attn)
    x_ffnn = self.dropout(x_ffnn)
    x_ffnn = self.layer_norm(x_ffnn + x_attn)

    ກັບຄືນ x_ffnn

## ຄວາມກ້າວຫນ້າໃນ LLM ສົມເຫດສົມຜົນ

LLMs ມີຄວາມຄືບຫນ້າຢ່າງຫຼວງຫຼາຍໃນການສົມເຫດສົມຜົນແລະການເຂົ້າໃຈຄວາມສໍາພັນທີ່ສັບສົນລະຫວ່າງແນວຄວາມຄິດ. ບາງຄວາມກ້າວຫນ້າທີ່ສໍາຄັນປະກອບມີ:

### 1. ການໃຫ້ເຫດຜົນຕາມກຣາບ

ການໃຫ້ເຫດຜົນຕາມກຣາບກ່ຽວຂ້ອງກັບການເປັນຕົວແທນຄວາມຮູ້ເປັນກາຟ, ບ່ອນທີ່ nodes ເປັນຕົວແທນຂອງແນວຄວາມຄິດ ແລະຂອບສະແດງຄວາມສໍາພັນລະຫວ່າງພວກມັນ. LLMs ສາມາດຖືກຝຶກອົບຮົມໃຫ້ສົມເຫດສົມຜົນກ່ຽວກັບກາຟເຫຼົ່ານີ້, ເຮັດໃຫ້ການຄາດຄະເນກ່ຽວກັບຄວາມສໍາພັນລະຫວ່າງ nodes.

``ຂີ້ໝິ້ນ
ໃຊ້ກາຟ::ກຣາບ;
ໃຊ້ neural_network::NeuralNetwork;

fn graph_reasoning(graph: &Graph, query: &str) -> String {
    let embedding = neural_network.query(graph, query);
    ໃຫ້ຜົນໄດ້ຮັບ = neural_network.reason(ກາຟ, ການຝັງ);
    result.to_string()
}

2. Multi-Task Learning

ການຮຽນຮູ້ຫຼາຍໜ້າວຽກກ່ຽວຂ້ອງກັບການຝຶກອົບຮົມແບບຢ່າງດຽວໃນຫຼາຍໜ້າວຽກພ້ອມກັນ. ວິທີການນີ້ໄດ້ຖືກສະແດງໃຫ້ເຫັນເຖິງການປັບປຸງການປະຕິບັດຂອງ LLMs ໃນວຽກງານຕ່າງໆ, ລວມທັງການສົມເຫດສົມຜົນແລະການເຂົ້າໃຈຄວາມສໍາພັນທີ່ສັບສົນ.

``ໄປ ຊຸດຫຼັກ

ນໍາເຂົ້າ ( "fmt" "gonum.org/v1/gonum/mat" )

ໂຄງສ້າງແບບຈໍາລອງປະເພດ { * nn. Linear * nn. Linear }

func (m *Model) Forward(x *mat.Dense) *mat.Dense { // Forward pass z := m.Linear(x) z = m.Linear(z) ກັບຄືນ z }


### 3. ກົນໄກການເອົາໃຈໃສ່

ກົນໄກການເອົາໃຈໃສ່ອະນຸຍາດໃຫ້ LLMs ສຸມໃສ່ພາກສ່ວນສະເພາະຂອງຂໍ້ຄວາມທີ່ປ້ອນເຂົ້າໃນເວລາທີ່ສ້າງຜົນຜະລິດ. ວິທີການນີ້ໄດ້ຖືກສະແດງໃຫ້ເຫັນເຖິງການປັບປຸງການປະຕິບັດຂອງ LLMs ໃນວຽກງານຕ່າງໆ, ລວມທັງການສົມເຫດສົມຜົນແລະການເຂົ້າໃຈຄວາມສໍາພັນທີ່ສັບສົນ.

`` python
ນໍາເຂົ້າໄຟ
ນໍາເຂົ້າ torch.nn ເປັນ nn

class AttentionMechanism(nn.Module):
    def __init__(ຕົວ​ເອງ, d_model, n_heads):
        super(ກົນໄກການເອົາໃຈໃສ່, ຕົນເອງ).__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 forward(ຕົວ​ເອງ​, x​):
        # ຄໍາຖາມ, ລະຫັດ, ແລະມູນຄ່າ
        q = self.query(x)
        k = self.key(x)
        v = self.value(x)

        # ນໍ້າໜັກໃສ່ໃຈ
        ນ້ຳໜັກ = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
        weights = self.dropout(ນ້ຳໜັກ)
        ນ້ຳໜັກ = torch.softmax(ນ້ຳໜັກ, dim=-1)

        # ບໍລິບົດ vector
        context = torch.matmul(ນ້ຳໜັກ, ວ)

        ກັບຄືນບໍລິບົດ

ການເບິ່ງເຫັນ

ເພື່ອເບິ່ງພາບການປະຕິບັດຂອງ LLMs ໃນວຽກງານຕ່າງໆ, ພວກເຮົາສາມາດນໍາໃຊ້ຕາຕະລາງເພື່ອປຽບທຽບຄວາມຖືກຕ້ອງຂອງຕົວແບບຕ່າງໆໃນຫນ້າວຽກໃດຫນຶ່ງ. ນີ້ແມ່ນຕົວຢ່າງຂອງຕາຕະລາງທີ່ໃຊ້ Chart.js:

{
  "type": "ແຖບ",
  "ຂໍ້ມູນ": {
    "labels": ["ວຽກງານ 1", "ວຽກງານ 2", "ວຽກງານ 3"],
    "ຊຸດຂໍ້ມູນ": [
      {
        "label": "ແບບ 1",
        "ຂໍ້ມູນ": [0.8, 0.7, 0.9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "ຄວາມກວ້າງຊາຍແດນ": 1
      },
      {
        "label": "ແບບ 2",
        "ຂໍ້ມູນ": [0.9, 0.8, 0.7],
        "backgroundColor": "rgba(54, 162, 235, 0.2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "ຄວາມກວ້າງຊາຍແດນ": 1
      }
    ]
  },
  "ທາງເລືອກ": {
    "ຫົວຂໍ້": {
      "ສະແດງ": ຄວາມຈິງ,
      "text": "ຄວາມຖືກຕ້ອງຂອງຕົວແບບທີ່ແຕກຕ່າງກັນໃນວຽກງານຕ່າງໆ"
    },
    "ເກັດ": {
      "yAxes": [
        {
          "ຫມາຍຕິກ": {
            "beginAtZero": ແທ້
          }
        }
      ]
    }
  }
}

ສະຫຼຸບ

ໃນບົດຄວາມນີ້, ພວກເຮົາໄດ້ຄົ້ນຫາຄວາມກ້າວຫນ້າຂອງເຫດຜົນ LLM, ລວມທັງການໃຫ້ເຫດຜົນໂດຍອີງໃສ່ກາຟ, ການຮຽນຮູ້ຫຼາຍຫນ້າວຽກ, ແລະກົນໄກການເອົາໃຈໃສ່. ພວກເຮົາຍັງໄດ້ໃຫ້ຕົວຢ່າງລະຫັດໃນ Python, Rust, ແລະ Go ເພື່ອສະແດງແນວຄວາມຄິດເຫຼົ່ານີ້. ສຸດທ້າຍ, ພວກເຮົາໄດ້ໃຊ້ຕາຕະລາງເພື່ອສະແດງພາບການປະຕິບັດຂອງ LLMs ໃນວຽກງານຕ່າງໆ. ຄວາມກ້າວຫນ້າເຫຼົ່ານີ້ມີທ່າແຮງທີ່ຈະປະຕິວັດພາກສະຫນາມຂອງ NLP, ເຮັດໃຫ້ LLMs ມີເຫດຜົນແລະເຂົ້າໃຈຄວາມສໍາພັນທີ່ສັບສົນລະຫວ່າງແນວຄວາມຄິດ.

ເອກະສານອ້າງອີງ

  • Vaswani et al. (2017). ເອົາ ໃຈ ໃສ່ ແມ່ນ ທັງ ຫມົດ ທີ່ ທ່ານ ຕ້ອງ ການ. arXiv preprint arXiv:1706.03762.
  • Devlin et al. (2018). BERT: ການຝຶກອົບຮົມທາງສ່ວນຫນ້າຂອງ Deep Bidirectional Transformers ສໍາລັບຄວາມເຂົ້າໃຈພາສາ. arXiv preprint arXiv:1810.04805.
  • Radford et al. (2019). ຮູບແບບພາສາແມ່ນຜູ້ຮຽນ Multitask ທີ່ບໍ່ມີການເບິ່ງແຍງ. arXiv preprint arXiv:1906.08237.

Have Questions?

Let's Talk

Contact me on LinkedIn