Những tiến bộ trong lý luận LLM: Tìm hiểu sâu về kỹ thuật | B4N1

Những tiến bộ trong lý luận LLM: Tìm hiểu sâu về kỹ thuật

9 months ago · b4n1 Read time: 5 min

Giới thiệu

Mô hình ngôn ngữ lớn (LLM) đã cách mạng hóa lĩnh vực xử lý ngôn ngữ tự nhiên (NLP) trong những năm gần đây. Những mô hình này đã đạt được kết quả tiên tiến trong các nhiệm vụ NLP khác nhau, bao gồm dịch ngôn ngữ, tóm tắt văn bản và trả lời câu hỏi. Tuy nhiên, tiềm năng thực sự của LLM nằm ở khả năng suy luận và hiểu các mối quan hệ phức tạp giữa các khái niệm. Trong bài viết này, chúng ta sẽ đi sâu vào những tiến bộ trong lý luận LLM, khám phá các kỹ thuật, kiến ​​trúc và thách thức cơ bản.

Bối cảnh

LLM là một loại mạng thần kinh được đào tạo trên lượng lớn dữ liệu văn bản để tìm hiểu các mẫu và mối quan hệ giữa các từ và khái niệm. Các mô hình này thường bao gồm bộ mã hóa và bộ giải mã, trong đó bộ mã hóa xử lý văn bản đầu vào và bộ giải mã tạo ra văn bản đầu ra. Bộ mã hóa thường có kiến ​​trúc dựa trên máy biến áp, đặc biệt phù hợp với dữ liệu tuần tự như văn bản.

Kiến trúc máy biến áp

Kiến trúc máy biến áp, được giới thiệu trong bài báo "Sự chú ý là tất cả những gì bạn cần" của Vaswani et al. (2017), đã trở thành tiêu chuẩn thực tế cho LLM. Máy biến áp bao gồm một bộ mã hóa và một bộ giải mã, mỗi bộ gồm nhiều lớp. Mỗi lớp bao gồm hai lớp con: cơ chế tự chú ý và mạng chuyển tiếp nguồn cấp dữ liệu được kết nối đầy đủ (FFNN).

ngọn đuốc nhập khẩu
nhập torch.nn dưới dạng nn

lớp 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 về phía trước (tự, x):
        # Cơ chế tự chú ý
        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)

        trả lại x_ffnn

Những tiến bộ trong lý luận LLM

LLM đã đạt được tiến bộ đáng kể trong việc lý luận và hiểu các mối quan hệ phức tạp giữa các khái niệm. Một số tiến bộ chính bao gồm:

1. Suy luận dựa trên đồ thị

Lý luận dựa trên đồ thị liên quan đến việc biểu diễn kiến thức dưới dạng biểu đồ, trong đó các nút biểu thị các khái niệm và các cạnh biểu thị mối quan hệ giữa chúng. LLM có thể được đào tạo để suy luận về các biểu đồ này, đưa ra dự đoán về mối quan hệ giữa các nút.

sử dụng đồ thị::Đồ thị;
sử dụng mạng lưới thần kinh::Mạng thần kinh;

fn graph_reasoning(graph: &Graph, query: &str) -> Chuỗi {
    hãy nhúng = Neural_network.query(biểu đồ, truy vấn);
    hãy để kết quả = Neural_network.reason(biểu đồ, nhúng);
    kết quả.to_string()
}

2. Học đa nhiệm

Học đa nhiệm liên quan đến việc đào tạo một mô hình duy nhất cho nhiều nhiệm vụ cùng một lúc. Cách tiếp cận này đã được chứng minh là cải thiện hiệu suất của LLM trong các nhiệm vụ khác nhau, bao gồm cả lý luận và hiểu các mối quan hệ phức tạp.

gói chính

nhập khẩu (
	"fmt"
	"gonum.org/v1/gonum/mat"
)

gõ Cấu trúc mô hình {
	*nn.Tuyến tính
	*nn.Tuyến tính
}

func (m *Model) Forward(x *mat.Dense) *mat.Dense {
	// Chuyển tiếp
	z := m.Tuyến tính(x)
	z = m.Tuyến tính(z)
	trở lại z
}

3. Cơ chế chú ý

Cơ chế chú ý cho phép LLM tập trung vào các phần cụ thể của văn bản đầu vào khi tạo đầu ra. Cách tiếp cận này đã được chứng minh là cải thiện hiệu suất của LLM trong các nhiệm vụ khác nhau, bao gồm cả lý luận và hiểu các mối quan hệ phức tạp.

ngọn đuốc nhập khẩu
nhập torch.nn dưới dạng nn

lớp Cơ chế chú ý (nn.Module):
    def __init__(self, d_model, n_heads):
        super(Cơ chế chú ý, tự).__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 về phía trước (tự, x):
        # Truy vấn, khóa và giá trị
        q = self.query(x)
        k = self.key(x)
        v = self.value(x)

        # Trọng lượng chú ý
        trọng lượng = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
        trọng lượng = self.dropout(trọng lượng)
        trọng lượng = torch.softmax(trọng lượng, dim=-1)

        # Vectơ bối cảnh
        bối cảnh = torch.matmul(trọng lượng, v)

        bối cảnh trả về

Trực quan hóa

Để hình dung hiệu suất của LLM trong các nhiệm vụ khác nhau, chúng ta có thể sử dụng biểu đồ để so sánh độ chính xác của các mô hình khác nhau trong một nhiệm vụ nhất định. Dưới đây là ví dụ về biểu đồ sử dụng Chart.js:

{
  "loại": "thanh",
  "dữ liệu": {
    "nhãn": ["Nhiệm vụ 1", "Nhiệm vụ 2", "Nhiệm vụ 3"],
    "bộ dữ liệu": [
      {
        "nhãn": "Mẫu 1",
        "dữ liệu": [0,8, 0,7, 0,9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "Biên giới rộng": 1
      },
      {
        "nhãn": "Mẫu 2",
        "dữ liệu": [0,9, 0,8, 0,7],
        "backgroundColor": "rgba(54, 162, 235, 0.2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "Biên giới rộng": 1
      }
    ]
  },
  "tùy chọn": {
    "tiêu đề": {
      "hiển thị": đúng,
      "text": "Độ chính xác của các mô hình khác nhau cho các nhiệm vụ khác nhau"
    },
    "cân": {
      "yAxes": [
        {
          "tích tắc": {
            "bắt đầuAtZero": đúng
          }
        }
      ]
    }
  }
}

Kết luận

Trong bài viết này, chúng tôi đã khám phá những tiến bộ trong lý luận LLM, bao gồm lý luận dựa trên đồ thị, học tập đa tác vụ và cơ chế chú ý. Chúng tôi cũng đã cung cấp các ví dụ về mã bằng Python, Rust và Go để minh họa các khái niệm này. Cuối cùng, chúng tôi đã sử dụng biểu đồ để trực quan hóa hiệu suất của LLM trong các nhiệm vụ khác nhau. Những tiến bộ này có khả năng cách mạng hóa lĩnh vực NLP, cho phép LLM suy luận và hiểu các mối quan hệ phức tạp giữa các khái niệm.

Tài liệu tham khảo

  • Vaswani và cộng sự. (2017). Sự chú ý là tất cả những gì bạn cần. bản in trước arXiv arXiv:1706.03762.
  • Devlin và cộng sự. (2018). BERT: Đào tạo trước Máy biến áp hai chiều sâu để hiểu ngôn ngữ. bản in trước arXiv arXiv:1810.04805.
  • Radford và cộng sự. (2019). Mô hình ngôn ngữ là những người học đa nhiệm không được giám sát. bản in trước arXiv arXiv:1906.08237.

Have Questions?

Let's Talk

Contact me on LinkedIn