การสร้างและการแยกเจตนาโดยใช้โมเดลภาษาขนาดใหญ่

Dec 01 2022
ในบทความก่อนหน้านี้ ฉันแย้งว่าควรปฏิบัติตามแนวทางที่เน้นข้อมูลเป็นศูนย์กลางเพื่อจัดทำข้อมูลการฝึกอบรม NLU ทางวิศวกรรม ในบทความนี้ ฉันพิจารณาการสร้างและใช้ Intent ในบริบทของ Large Language Models (LLM) บทนำ ในบทความก่อนหน้านี้ ฉันให้เหตุผลว่า เช่นเดียวกับ AI โดยทั่วไป โมเดล NLU ยังต้องการแนวทางที่เน้นข้อมูลเป็นศูนย์กลางในการออกแบบ NLU

ในบทความก่อนหน้านี้ ฉันแย้งว่าควรปฏิบัติตามแนวทางที่เน้นข้อมูลเป็นศูนย์กลางเพื่อจัดทำข้อมูลการฝึกอบรม NLU ทางวิศวกรรม ในบทความนี้ ฉันพิจารณาการสร้างและใช้ Intent ในบริบทของ Large Language Models (LLM)

การแนะนำ

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

แนวทางปฏิบัติที่ดีที่สุด สำหรับการออกแบบ NLUจำเป็นต้องปฏิบัติตาม โดยข้อมูลที่ไม่มีโครงสร้างการสนทนาที่มีอยู่จะถูกแปลงเป็นข้อมูลการฝึกอบรม NLU ที่มีโครงสร้าง

ตามหลักการแล้ว การออกแบบ NLUไม่ควรใช้ประโยชน์จากข้อมูลสังเคราะห์หรือข้อมูลที่สร้างขึ้น แต่เป็นการสนทนากับลูกค้าจริงๆ

ภาพด้านล่างแสดงกระบวนการที่สามารถปฏิบัติตามได้สำหรับแนวทางศูนย์กลางข้อมูลในการตรวจจับ สร้าง และใช้งานเจตนา จ้องมองด้วยการฝัง

1️⃣ การฝัง

ขั้นตอนแรกคือการใช้ข้อมูลการสนทนาหรือการใช้คำพูดของผู้ใช้เพื่อสร้างการฝัง โดยเน้นที่กลุ่มของประโยคที่มีความหมายคล้ายกัน

การจัดกลุ่มเหล่านี้แต่ละกลุ่มประกอบด้วยเจตนา แต่ละกลุ่มจำเป็นต้องได้รับป้ายกำกับซึ่งเป็น "ชื่อเจตนา"

อ่านบทความด้านล่างสำหรับคำอธิบายโดยละเอียดของขั้นตอนที่หนึ่ง ⬇️

การใช้ AI เป็นศูนย์กลางข้อมูลสำหรับโมเดล NLU

⭐️ โปรดติดตามฉันบนLinkedInสำหรับการอัปเดตเกี่ยวกับ Conversational AI ⭐️

2️⃣ สร้างการจำแนกประเภท

เมื่อเรามีการจัดกลุ่ม/คลัสเตอร์ของข้อมูลการฝึกอบรมแล้ว เราสามารถเริ่มกระบวนการสร้างการจัดประเภทหรือจุดประสงค์ได้ คำว่า "คลาส" และ "เจตนา" จะใช้แทนกันได้

สำหรับจุดประสงค์ของบทความนี้ ฉันจะใช้Cohere LLM

การจำแนกประเภทสามารถทำได้ผ่าน Cohere classify post endpoint:

https://api.cohere.ai/classify

เนื้อหาการฝึกอบรมแบ่งออกเป็นหนึ่งในหลายชั้นเรียน/เจตนา จุดสิ้นสุดต้องการเพียงไม่กี่ตัวอย่างเพื่อสร้างตัวแยกประเภทที่ใช้ประโยชน์จากโมเดลกำเนิด

ข้อมูล โค้ดของสมุดบันทึก Colabด้านล่างแสดงวิธีติดตั้งCohere SDK และวิธีสร้างไคลเอ็นต์ คุณต้องมีรหัส API ซึ่งคุณสามารถรับได้ฟรีโดยสร้างการเข้าสู่ระบบบนเว็บไซต์Cohere

ด้วยเหตุผลของการเพิ่มประสิทธิภาพและความเร็ว ควรใช้โมเดลขนาดเล็ก

เมื่อคุณติดตั้ง SDK และสร้างไคลเอ็นต์แล้ว ให้รันโค้ดนี้ ⬇️ เพื่อสร้าง Intent

แต่ละรายการมีตัวอย่างการฝึก...

from cohere.classify import Example

examples =  [
  Example("Do you offer same day shipping?", "Shipping and handling policy"),  
  Example("Can you ship to Italy?", "Shipping and handling policy"),  
    Example("How long does shipping take?", "Shipping and handling policy"),  
    Example("Can I buy online and pick up in store?", "Shipping and handling policy"),  
    Example("What are your shipping options?", "Shipping and handling policy"),  
    Example("My order arrived damaged, can I get a refund?", "Start return or exchange"),  
    Example("You sent me the wrong item", "Start return or exchange"),  
    Example("I want to exchange my item for another colour", "Start return or exchange"),  
    Example("I ordered something and it wasn't what I expected. Can I return it?", "Start return or exchange"),  
    Example("What's your return policy?", "Start return or exchange"),  
    Example("Where's my package?", "Track order"),  
    Example("When will my order arrive?", "Track order"),  
    Example("What's my shipping number?", "Track order"),  
    Example("Which carrier is my package with?", "Track order"),  
    Example("Is my package delayed?", "Track order")
]

Shipping and handling policy

Start return or exchange

Track order

⭐️ โปรดติดตามฉันบนLinkedInสำหรับการอัปเดตเกี่ยวกับ Conversational AI ⭐️

3️⃣แยกประเภท

ข้อความด้านล่างแสดงข้อความค้นหา คล้ายกับคำพูดของผู้ใช้ที่ส่งไปยังตัวแทนการสนทนา...

inputs=[" Am I still able to return my order?",  
        "When can I expect my package?",  
        "Do you ship overseas?",  
        ]

( 1 ) สามารถส่งอินพุตหรือข้อความค้นหาได้
( 2 ) แยกประเภทแล้ว
( 3 ) ผลลัพธ์ที่พิมพ์ออกมา

ส่วนหนึ่งจากสมุดบันทึก Colab ที่แสดงขั้นตอนที่ 1, 2 และ 3 ⬇️

ผลลัพธ์:

[
   "Classification<prediction":"Start return or exchange",
   "confidence":0.9900205>,
   "Classification<prediction":"Track order",
   "confidence":0.99867964>,
   "Classification<prediction":"Shipping and handling policy",
   "confidence":0.9982495>
]

เจตนามักถูกละเลยและมองว่าเป็นขั้นตอนเล็กน้อยในการสร้างตัวแทนการสนทนา เฟรมเวิร์ก เช่น Amelia, Oracle Digital Assistant และ Yellow AI นำเสนอวลีการฝึกอบรมที่สร้างขึ้นโดยสังเคราะห์ วิธีการนี้อาจทำให้เกิดอันตรายจากการทำให้กระบวนการสร้างความตั้งใจเป็นเรื่องเล็กน้อย

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

นอกจากนี้ วลีการฝึกอบรมสังเคราะห์เหล่านี้ยังอิงตามเจตนาและชื่อเจตนาที่ มัก "คิดขึ้นเอง" ซึ่งส่วนใหญ่อาจไม่สอดคล้องกับเจตนาของผู้ใช้ที่มีอยู่ และแน่นอนไม่ได้กล่าวถึง การกระจายเจตนา แบบหางยาว

ถึงเวลาแล้วที่เราจะเริ่มพิจารณาเจตนาเป็นการจัดประเภทของการสนทนากับลูกค้าที่มีอยู่ จำเป็นต้องมีกระบวนการพัฒนาที่ขับเคลื่อนด้วยความตั้งใจเพื่อให้การปรับใช้ผู้ช่วยดิจิทัลประสบความสำเร็จ

⭐️ โปรดติดตามฉันบนLinkedInสำหรับการอัปเดตเกี่ยวกับ Conversational AI ⭐️

ตอนนี้ฉันเป็นหัวหน้าผู้สอนศาสนา @ HumanFirst ฉันสำรวจและเขียนเกี่ยวกับทุกสิ่งที่จุดตัดของ AI และภาษา ตั้งแต่LLMs , Chatbots , Voicebots , Development Frameworks , Data-Centric Latent Spaceและอื่นๆ

https://www.linkedin.com/in/cobusgreyling
Cobus Quadrant™ ของการออกแบบ NLU Cobus Quadrant™ ของความสามารถในการออกแบบการสนทนา
การใช้ AI เป็นศูนย์กลางข้อมูลสำหรับโมเดล NLU