ความก้าวหน้าในการใช้เหตุผล LLM: เจาะลึกทางเทคนิค | B4N1

ความก้าวหน้าในการใช้เหตุผล LLM: เจาะลึกทางเทคนิค

9 months ago · b4n1 Tiempo de lectura: 2 min

บทนำ

โมเดลภาษาขนาดใหญ่ (LLM) ได้ปฏิวัติการประมวลผลภาษาธรรมชาติ (NLP) ในช่วงไม่กี่ปีที่ผ่านมา โมเดลเหล่านี้ได้รับผลลัพธ์ที่ล้ำสมัยในงาน NLP ต่างๆ รวมถึงการแปลภาษา การสรุปข้อความ และการตอบคำถาม อย่างไรก็ตาม ศักยภาพที่แท้จริงของ LLM อยู่ที่ความสามารถในการให้เหตุผลและเข้าใจความสัมพันธ์ที่ซับซ้อนระหว่างแนวคิด ในบทความนี้ เราจะเจาะลึกความก้าวหน้าในการใช้เหตุผล LLM สำรวจเทคนิคพื้นฐาน สถาปัตยกรรม และความท้าทาย

พื้นหลัง

LLM เป็นโครงข่ายประสาทเทียมประเภทหนึ่งที่ได้รับการฝึกอบรมเกี่ยวกับข้อมูลข้อความจำนวนมหาศาลเพื่อเรียนรู้รูปแบบและความสัมพันธ์ระหว่างคำและแนวคิด โดยทั่วไปโมเดลเหล่านี้ประกอบด้วยตัวเข้ารหัสและตัวถอดรหัส โดยที่ตัวเข้ารหัสจะประมวลผลข้อความอินพุต และเครื่องถอดรหัสจะสร้างข้อความเอาต์พุต ตัวเข้ารหัสมักจะเป็นสถาปัตยกรรมแบบหม้อแปลงไฟฟ้า ซึ่งเหมาะอย่างยิ่งสำหรับข้อมูลตามลำดับ เช่น ข้อความ

สถาปัตยกรรมหม้อแปลงไฟฟ้า

สถาปัตยกรรมหม้อแปลงไฟฟ้าที่นำมาใช้ในรายงาน "Attention is All You Need" โดย Vaswani และคณะ (2017) ได้กลายเป็นมาตรฐานโดยพฤตินัยสำหรับ LLM หม้อแปลงไฟฟ้าประกอบด้วยตัวเข้ารหัสและตัวถอดรหัส ซึ่งแต่ละตัวประกอบด้วยหลายชั้น แต่ละเลเยอร์ประกอบด้วยสองชั้นย่อย: กลไกการเอาใจใส่ตนเองและเครือข่ายฟีดฟอร์เวิร์ดที่เชื่อมต่ออย่างสมบูรณ์ (FFNN)

นำเข้าไฟฉาย
นำเข้า torch.nn เป็น nn

คลาส TransformerLayer (nn.Module):
    def __init__ (ตัวเอง, d_model, n_heads, d_ff):
        ซุปเปอร์ (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_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

LLM มีความก้าวหน้าอย่างมากในการให้เหตุผลและการทำความเข้าใจความสัมพันธ์ที่ซับซ้อนระหว่างแนวคิด ความก้าวหน้าที่สำคัญบางประการ ได้แก่:

1. การใช้เหตุผลตามกราฟ

การใช้เหตุผลตามกราฟเกี่ยวข้องกับการแสดงความรู้ในรูปแบบกราฟ โดยที่โหนดแสดงถึงแนวคิด และขอบแสดงถึงความสัมพันธ์ระหว่างสิ่งเหล่านั้น LLM สามารถถูกฝึกให้ให้เหตุผลเกี่ยวกับกราฟเหล่านี้ได้ ทำให้สามารถคาดการณ์ความสัมพันธ์ระหว่างโหนดได้

ใช้กราฟ::กราฟ;
ใช้ neural_network::NeuralNetwork;

fn graph_reasoning (กราฟ: &กราฟ, ข้อความค้นหา: &str) -> สตริง {
    ให้ฝัง = neural_network.query (กราฟ, แบบสอบถาม);
    ให้ผลลัพธ์ = neural_network.reason (กราฟ, การฝัง);
    ผลลัพธ์.to_string()
}

2. การเรียนรู้แบบหลายงาน

การเรียนรู้แบบหลายงานเกี่ยวข้องกับการฝึกอบรมโมเดลเดียวในหลาย ๆ งานพร้อมกัน แนวทางนี้แสดงให้เห็นแล้วว่าปรับปรุงประสิทธิภาพของ LLM ในงานต่างๆ รวมถึงการให้เหตุผลและการทำความเข้าใจความสัมพันธ์ที่ซับซ้อน

แพ็คเกจหลัก

นำเข้า (
	"เอฟเอ็มที"
	"gonum.org/v1/gonum/mat"
)

พิมพ์โมเดลโครงสร้าง {
	*nn.ลิเนียร์
	*nn.ลิเนียร์
}

func (m *Model) ไปข้างหน้า (x *mat.Dense) *mat.Dense {
	//ส่งต่อ
	z := m.เชิงเส้น(x)
	z = ม.เชิงเส้น(z)
	กลับ z
}

3. กลไกความสนใจ

กลไกความสนใจช่วยให้ LLM สามารถมุ่งเน้นไปที่ส่วนเฉพาะของข้อความอินพุตเมื่อสร้างเอาต์พุต แนวทางนี้แสดงให้เห็นแล้วว่าปรับปรุงประสิทธิภาพของ LLM ในงานต่างๆ รวมถึงการให้เหตุผลและการทำความเข้าใจความสัมพันธ์ที่ซับซ้อน

นำเข้าไฟฉาย
นำเข้า torch.nn เป็น nn

คลาส AttentionMechanism (nn.Module):
    def __init__ (ตัวเอง d_model, n_heads):
        ซุปเปอร์ (AttentionMechanism ตนเอง).__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 = self.key (x)
        v = ค่าตนเอง(x)

        #น้ำหนักความสนใจ
        น้ำหนัก = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
        น้ำหนัก = self.dropout (น้ำหนัก)
        น้ำหนัก = torch.softmax (น้ำหนัก, สลัว = -1)

        # เวกเตอร์บริบท
        บริบท = torch.matmul (น้ำหนัก, v)

        ส่งคืนบริบท

การแสดงภาพ

เพื่อให้เห็นภาพประสิทธิภาพของ LLM ในงานต่างๆ เราสามารถใช้แผนภูมิเพื่อเปรียบเทียบความแม่นยำของโมเดลต่างๆ ในงานที่กำหนดได้ นี่คือตัวอย่างแผนภูมิที่ใช้ Chart.js:

{
  "type": "บาร์",
  "ข้อมูล": {
    "labels": ["งาน 1", "งาน 2", "งาน 3"],
    "ชุดข้อมูล": [
      {
        "label": "รุ่น 1",
        "ข้อมูล": [0.8, 0.7, 0.9],
        "สีพื้นหลัง": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "ความกว้างของเส้นขอบ": 1
      },
      {
        "label": "รุ่น 2",
        "ข้อมูล": [0.9, 0.8, 0.7],
        "สีพื้นหลัง": "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
  • เดฟลิน และคณะ (2018) BERT: การฝึกอบรมล่วงหน้าเกี่ยวกับหม้อแปลงสองทิศทางเชิงลึกเพื่อการทำความเข้าใจภาษา arXiv พิมพ์ล่วงหน้า arXiv:1810.04805
  • แรดฟอร์ด และคณะ (2019) โมเดลภาษาเป็นผู้เรียนมัลติทาสก์ที่ไม่ได้รับการดูแล arXiv พิมพ์ล่วงหน้า arXiv:1906.08237

¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn