LLM-ийн үндэслэлийн дэвшил: Техникийн гүнзгий шумбалт | B4N1

LLM-ийн үндэслэлийн дэвшил: Техникийн гүнзгий шумбалт

9 months ago · b4n1 Read time: 3 min

Танилцуулга

Том хэлний загварууд (LLMs) нь сүүлийн жилүүдэд байгалийн хэл боловсруулах (NLP) салбарт хувьсгал хийсэн. Эдгээр загварууд нь хэлний орчуулга, текстийг нэгтгэн дүгнэх, асуултанд хариулах зэрэг NLP-ийн төрөл бүрийн ажлуудад хамгийн сүүлийн үеийн үр дүнд хүрсэн. Гэсэн хэдий ч LLM-ийн жинхэнэ чадавхи нь ойлголт хоорондын нарийн төвөгтэй харилцааг ойлгох, ойлгох чадварт оршдог. Энэ нийтлэлд бид LLM-ийн үндэслэлийн дэвшлийн талаар судалж, үндсэн техник, архитектур, сорилтуудыг судлах болно.

Дэвсгэр

LLM нь үг ба ойлголтуудын хоорондын зүй тогтол, харилцааг сурахын тулд асар их хэмжээний текст өгөгдөл дээр сургагдсан мэдрэлийн сүлжээний нэг төрөл юм. Эдгээр загварууд нь ихэвчлэн кодлогч ба декодероос бүрддэг бөгөөд кодлогч нь оролтын текстийг боловсруулж, декодлогч нь гаралтын текстийг үүсгэдэг. Кодлогч нь ихэвчлэн трансформаторт суурилсан архитектур бөгөөд текст гэх мэт дараалсан өгөгдөлд маш тохиромжтой байдаг.

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

Трансформаторын архитектурыг Васвани нар "Анхаарал бол танд хэрэгтэй бүх зүйл" нийтлэлд танилцуулсан. (2017) нь LLM-ийн де факто стандарт болсон. Трансформатор нь кодлогч ба декодероос бүрдэх бөгөөд тус бүр нь олон давхаргаас бүрддэг. Давхарга бүр нь өөртөө анхаарал хандуулах механизм ба бүрэн холбогдсон урагш дамжуулах сүлжээ (FFNN) гэсэн хоёр дэд давхаргаас бүрдэнэ.

импортын бамбар
импортын бамбар.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.Шугаман(d_model, d_ff)
        self.dropout = nn.Dropout(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def урагш (өөрөө, x):
        # Өөртөө анхаарал хандуулах механизм
        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)

        x_ffnn буцаана

LLM үндэслэлийн дэвшил

LLM нь үзэл баримтлал хоорондын нарийн төвөгтэй харилцааг ойлгох, ойлгоход ихээхэн ахиц дэвшил гаргасан. Гол дэвшилтүүдийн зарим нь:

1. График дээр суурилсан үндэслэл

График дээр суурилсан үндэслэл нь мэдлэгийг график хэлбэрээр илэрхийлэх бөгөөд зангилаа нь ойлголтыг, ирмэг нь тэдгээрийн хоорондын харилцааг илэрхийлдэг. LLM-үүдийг эдгээр графикуудын талаар тайлбарлаж, зангилаа хоорондын харилцааны талаар таамаглал дэвшүүлэхэд сургаж болно.

график ашиглах::График;
neural_network ашиглах:: NeuralNetwork;

fn graph_reasoning(график: &График, асуулга: &str) -> Мөр {
    let embedding = neural_network.query(график, query);
    үр дүн = neural_network.reason(график, оруулах);
    үр дүн.to_string()
}

2. Олон даалгаварт суралцах

Олон даалгаварт суралцах нь нэг загварыг олон даалгаварт нэгэн зэрэг сургах явдал юм. Энэхүү арга барил нь ээдрээтэй харилцааг ойлгох, ойлгох зэрэг янз бүрийн даалгаварт LLM-ийн гүйцэтгэлийг сайжруулдаг болохыг харуулсан.

үндсэн багц

импортлох (
	"fmt"
	"gonum.org/v1/gonum/mat"
)

төрөл загвар бүтэц {
	*nn.Шугаман
	*nn.Шугаман
}

func (m *Загвар) Урагшаа(x *мат.Нягт) *мат.Нягт {
	// Урагшаа дамжуулалт
	z := m.Шугаман(x)
	z = m. Шугаман(z)
	буцах z
}

3. Анхаарал татах механизмууд

Анхаарал татах механизмууд нь LLM-д гаралтыг үүсгэх үед оролтын текстийн тодорхой хэсгүүдэд анхаарлаа төвлөрүүлэх боломжийг олгодог. Энэхүү арга барил нь ээдрээтэй харилцааг ойлгох, ойлгох зэрэг янз бүрийн даалгаварт LLM-ийн гүйцэтгэлийг сайжруулдаг болохыг харуулсан.

импортын бамбар
импортын бамбар.nn гэж nn

анги Анхаарлын механизм(nn.Module):
    def __init__(өөрөө, d_model, n_heads):
        супер(Анхаарлын механизм, өөрөө).__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 урагш (өөрөө, 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"],
    "өгөгдлийн багц": [
      {
        "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 хэл дээр эдгээр ойлголтуудыг тайлбарлахын тулд кодын жишээг өгсөн. Эцэст нь бид янз бүрийн даалгавар дээр LLM-ийн гүйцэтгэлийг харуулахын тулд график ашигласан. Эдгээр дэвшил нь NLP-ийн салбарт хувьсгал хийх боломжтой бөгөөд LLM-д ойлголт хоорондын нарийн төвөгтэй харилцааг ойлгох, ойлгох боломжийг олгодог.

Лавлагаа

  • Васвани нар. (2017). Анхаарал л танд хэрэгтэй. arXiv урьдчилсан хэвлэх arXiv:1706.03762.
  • Devlin et al. (2018). БЕРТ: Хэлний ойлголтод зориулсан гүн гүнзгий хоёр чиглэлт хувиргагчийн урьдчилсан сургалт. arXiv урьдчилсан хэвлэх arXiv:1810.04805.
  • Рэдфорд нар. (2019). Хэлний загварууд нь хяналтгүй олон даалгаварт суралцагчид юм. arXiv урьдчилсан хэвлэх arXiv:1906.08237.

Have Questions?

Let's Talk

Contact me on LinkedIn