โมเดลภาษาขนาดใหญ่ (LLMS) ได้รับความสนใจมากขึ้นเรื่อย ๆ ในทุกวันนี้ แต่ความสามารถในการเรียนรู้ที่เป็นศูนย์/ไม่กี่ครั้งมักจะได้รับการประเมินและฉันรู้สึกว่าพวกเขาไม่ได้ใช้เพื่อใช้ในการจำแนกประเภทข้อความที่ปรับแต่งเช่นโมเดลที่ผ่านการฝึกอบรมมาก่อนเช่นเบิร์ต ดังนั้นเพื่อค้นหาว่าการจำแนกประเภทข้อความเป็นไปได้เท่าใดกับ LLM เราได้ทำการทดลองโดยใช้ LLM สำหรับการจำแนกประเภทข้อความโดยใช้วิธีเดียวกับการจำแนกประเภทข้อความโดยใช้ BERT
จุดประสงค์ของการทดลองนี้คือการตรวจสอบสิ่งที่เกิดขึ้นเมื่อ LLM ซึ่งมักจะดึงดูดความสนใจสำหรับความสามารถในการเรียนรู้ที่เป็นศูนย์/ไม่กี่นัดใช้สำหรับการจำแนกข้อความปกติ
เบิร์ตซึ่งใช้กันทั่วไปสำหรับการจำแนกข้อความจนถึงตอนนี้เป็นแบบจำลองแบบสองทิศทางและใช้โทเค็นประโยค [CLS] บ่อยครั้งสำหรับการจำแนกประเภทข้อความ อย่างไรก็ตาม LLMS ซึ่งมักใช้ในทุกวันนี้เช่น Llama เป็นแบบจำลองทิศทางเดียว ดังนั้นในรูปแบบทิศทางเดียวจึงไม่มีประเด็นในการรับโทเค็นประโยค ดังนั้นในการนำไปใช้งานนี้เราใช้การเป็นตัวแทนฝังตัวของโทเค็นประโยคสำหรับการจำแนกประเภทข้อความโดยใช้คลาส LlamaForSequenceClassification ของ transformers เป็นข้อมูลอ้างอิง ในรูปแบบภาษาทิศทางเดียวโทเค็นสิ้นสุดของคำสั่งสามารถพิจารณาได้ว่าเป็นโทเค็นของคำแถลงทั้งหมดในซีรีส์ดังนั้นจึงถือว่าเป็นทางเลือกที่เหมาะสมสำหรับ [CLS]
นอกจากนี้เนื่องจากการปรับแต่ง LLM อย่างละเอียดเป็นเรื่องยากอย่างยิ่งจากมุมมองของหน่วยความจำและประสิทธิภาพการคำนวณเราจึงใช้ LORA ซึ่งเป็นเทคนิคการปรับจูนที่ช่วยให้คุณได้ประสิทธิภาพเทียบเท่ากับการปรับแต่งแบบเต็มโดยการปรับเมทริกซ์ระดับต่ำเพิ่มเติม หมายเหตุ: PEFT ใช้สำหรับการปรับแต่งด้วยวัสดุคำอธิบาย LORA
ในการทดลองประเมินผลเราจะจำแนกค่านิยมเก้าค่าของ Livedoor News Corpus เนื้อหาการทดลองเกือบจะเหมือนกับการสอนการจำแนกประเภทข้อความของผู้เขียนโดยใช้ Bert
ในการทดลองประเมินผลมีการใช้ LLM ญี่ปุ่นเจ็ดประเภท โดยเฉพาะเราทำการทดลองกับรุ่น Rinna 3.6B สี่รุ่นและรุ่นไซเบอร์ 7B, 3B และ 1B
เป็นวิธีในการปรับพารามิเตอร์ไฮเปอร์เราทำการทดลองด้วยอัตราการเรียนรู้ที่กำหนดไว้ที่ 1E-4, 3E-4, 5E-4 และ 1E-3 นอกจากนี้เรายังทดลองกับรูปแบบอินพุตสามประเภทกับโมเดล โดยเฉพาะอย่างยิ่งสำหรับแต่ละบทความใน Livedoor News Corpus ชื่อถูกเก็บไว้ในตัวแปรที่เรียกว่า title และ body บทความและฉีดเข้าไปในเทมเพลตสามตัวต่อไปนี้
| ประเภทเทมเพลต | รูปร่าง |
|---|---|
| 0 | f "title: {title} nbody: {body} nlabel:" |
| 1 | f "title: {title} nbody: {body}" |
| 2 | f "{title} n {body}" |
เราทำการทดลองทีละรายการสำหรับการรวมกันทั้งหมดของอัตราการเรียนรู้และเทมเพลตที่กล่าวถึงข้างต้นและใช้ hyperparameter ที่มีค่า F เฉลี่ยสูงสุดในการพัฒนาที่กำหนดไว้สำหรับการประเมินผลในชุดทดสอบขั้นสุดท้าย อันดับ R ของ Lora ได้รับการแก้ไขที่ 32
โปรดทราบว่าผลการทดลองไม่ถูกต้องเนื่องจากการทดลองดำเนินการเพียงครั้งเดียวด้วยค่าเมล็ดสุ่มตัวเลขเดียวและไม่มีการตรวจสอบข้ามแบบแยก ดังนั้นโปรดอย่าเชื่อถือผลลัพธ์ด้านล่าง แต่โปรดดูว่าพวกเขาเป็นข้อมูลอ้างอิงเท่านั้น
ผลลัพธ์จะแสดงในตารางด้านล่าง ผลการทดลองถูกจัดเรียงตามลำดับจากมากไปน้อยสำหรับค่า F เฉลี่ยแมโคร ผลลัพธ์ที่ตามมาทั้งหมดสามารถดูได้จากไฟล์ CSV ที่เก็บไว้ในไดเรกทอรี results
| ความแม่นยำ | ความแม่นยำ | ระลึกถึง | F1 | |
|---|---|---|---|---|
| Rinna/Japanese-GPT-NEOX-3.6B-Instruction-SFT-V2 | 97.96 | 97.77 | 97.76 | 97.75 |
| Rinna/Japanese-Gpt-Neox-3.6b | 97.55 | 97.24 | 97.39 | 97.30 |
| Rinna/Japanese-Gpt-Neox-3.6b-Instruction-SFT | 97.55 | 97.32 | 97.27 | 97.27 |
| Rinna/Japanese-Gpt-Neox-3.6b-Instruction-PPO | 97.55 | 97.03 | 97.37 | 97.18 |
| Cyberagent/Open-Calm-7b | 97.01 | 96.76 | 96.42 | 96.55 |
| Cyberagent/Open-Calm-3B | 96.88 | 96.38 | 96.51 | 96.42 |
| Cyberagent/Open-Calm-1b | 94.43 | 94.24 | 93.80 | 93.98 |
จากตารางเราจะเห็นได้ว่าคำสั่งที่ปรับแต่ง rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 แสดงค่า F สูงสุด ในทางกลับกันโมเดลที่ค่อนข้างใหญ่ที่ 7B, cyberagent/open-calm-7b มีค่า F ต่ำกว่าเล็กน้อย เพื่อปรับปรุงประสิทธิภาพอาจจำเป็นต้องปรับแต่งอีกเล็กน้อยเช่น Rola's R และ Paras สูงอื่น ๆ
บังเอิญค่า F ของ rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 คือ 97.75 ซึ่งสูงกว่าค่า F ของ studio-ousia/luke-japanese-large-lite 97.47 แน่นอนว่าจำนวนพารามิเตอร์ในโมเดลนั้นแตกต่างกันประมาณ 9 เท่าดังนั้นจึงไม่สามารถเปรียบเทียบได้ง่าย แต่ถ้าคุณต้องการติดตามประสิทธิภาพของการจำแนกประเภทข้อความโดยใช้ LLM+LORA เป็นทางเลือกแทน Bert อาจเป็นตัวเลือกที่ดี
ถัดไป rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 cyberagent/open-calm-7b rinna/japanese-gpt-neox-3.6b เทมเพลตสำหรับทั้งสามรุ่นตัวแทนในการทดลองนี้จะแสดงในตารางด้านล่าง
| เทมเพลต | วาล F1 | F1 | |
|---|---|---|---|
| Rinna/Japanese-GPT-NEOX-3.6B-Instruction-SFT-V2 | 2 | 97.27 | 97.75 |
| Rinna/Japanese-GPT-NEOX-3.6B-Instruction-SFT-V2 | 1 | 97.18 | 97.14 |
| Rinna/Japanese-GPT-NEOX-3.6B-Instruction-SFT-V2 | 0 | 97.05 | 96.80 |
| Rinna/Japanese-Gpt-Neox-3.6b | 1 | 97.14 | 97.30 |
| Rinna/Japanese-Gpt-Neox-3.6b | 2 | 96.92 | 97.36 |
| Rinna/Japanese-Gpt-Neox-3.6b | 0 | 96.61 | 96.69 |
| Cyberagent/Open-Calm-7b | 1 | 97.22 | 96.55 |
| Cyberagent/Open-Calm-7b | 0 | 97.07 | 96.56 |
| Cyberagent/Open-Calm-7b | 2 | 96.88 | 96.85 |
โดยทั่วไปความสามารถในการอนุมานของ LLM ได้รับอิทธิพลอย่างมากจากเทมเพลต (พรอมต์) ในทางกลับกันเนื่องจากการทดลองนี้ไม่ใช่การตั้งค่าแบบศูนย์/ไม่กี่ครั้งจึงคาดว่าความแตกต่างของประสิทธิภาพเนื่องจากเทมเพลตสามารถลดลงได้บ้าง อย่างไรก็ตามผลลัพธ์แสดงให้เห็นว่าเทมเพลตได้สร้างความแตกต่างในค่า F (ประมาณ 1 จุดในค่า F) template_type=0 เป็นเทมเพลตที่ค่อนข้างซับซ้อน template_type=2 เป็นเทมเพลตง่าย ๆ ที่เชื่อมต่อกับตัวแบ่งบรรทัด แต่สามารถเห็นได้ว่า template_type=2 มีแนวโน้มที่จะมีประสิทธิภาพที่ดีขึ้น พรอมต์มีความสำคัญมากในการตั้งค่าศูนย์/ไม่กี่นัด แต่ถ้าคุณสามารถปรับแต่งได้ดีอาจเป็นการดีกว่าที่จะทำให้พรอมต์ง่ายที่สุดเท่าที่จะทำได้
จากนั้นมาดูประสิทธิภาพของอัตราการเรียนรู้แต่ละครั้งเมื่อโมเดลได้รับการแก้ไขให้กับ rinna/japanese-gpt-neox-3.6b และ template_type ได้รับการแก้ไขเป็น 2
| LR | วาล F1 | ความแม่นยำ | ความแม่นยำ | ระลึกถึง | F1 |
|---|---|---|---|---|---|
| 5E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 3E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 5E-3 | 24.78 | 32.20 | 36.30 | 30.27 | 28.21 |
| 3e-3 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 5E-4 | 96.77 | 98.23 | 98.02 | 97.87 | 97.93 |
| 3e-4 | 96.74 | 96.88 | 96.46 | 96.21 | 96.30 |
| 1E-4 | 94.79 | 97.01 | 96.85 | 96.72 | 96.76 |
| 5E-5 | 94.28 | 95.92 | 95.73 | 95.50 | 95.58 |
| 3e-5 | 93.74 | 94.02 | 93.50 | 93.61 | 93.55 |
| 1E-5 | 78.94 | 81.25 | 80.21 | 79.43 | 79.62 |
จากตารางจะเห็นได้ว่าแม้ว่าอัตราการเรียนรู้ที่ค่อนข้างใหญ่จะมีประสิทธิภาพสำหรับการเรียนรู้กับ LORA แต่ขีด จำกัด สูงสุดอยู่ที่ประมาณ 1e-3 และหากคุณใช้อัตราการเรียนรู้ที่มีขนาดใหญ่มากเช่น 1e-2 การเรียนรู้ของคุณจะไม่เป็นไปด้วยดี ฉันต้องการเห็นผลการทดลองเกี่ยวกับโมเดลที่กว้างขึ้น แต่เมื่อจำแนกโดยใช้ LLM+LORA ฉันคิดว่ามันเป็นความคิดที่ดีที่จะลองอัตราการเรียนรู้ประมาณ 5e-4 เป็นครั้งแรก
ยิ่งไปกว่านั้นลองดูที่ความแตกต่างของประสิทธิภาพสำหรับแต่ละชุดขนาดเมื่อโมเดลได้รับการแก้ไขให้กับ rinna/japanese-gpt-neox-3.6b , template_type 2 และ Lora's r ถูกแก้ไขไว้ที่ 32
| ขนาดแบทช์ | LR | วาล F1 | ความแม่นยำ | ความแม่นยำ | ระลึกถึง | F1 |
|---|---|---|---|---|---|---|
| 2 | 5E-4 | 97.12 | 98.10 | 98.02 | 97.48 | 97.70 |
| 16 | 1E-3 | 97.12 | 97.83 | 97.77 | 97.37 | 97.52 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 64 | 5E-4 | 96.57 | 97.55 | 97.39 | 97.35 | 97.35 |
| 4 | 5E-4 | 97.08 | 97.42 | 97.37 | 97.01 | 97.15 |
| 8 | 3e-4 | 97.20 | 97.28 | 96.99 | 96.87 | 96.91 |
ตารางนี้จัดเรียงตามลำดับจากมากไปน้อยสำหรับค่า F เป็นผลให้มีความเป็นไปได้ที่ความแตกต่างของประสิทธิภาพอาจเกิดขึ้นได้ในระดับหนึ่งขึ้นอยู่กับขนาดแบทช์ แต่ในการทดลองนี้การทดลองได้ดำเนินการเพียงครั้งเดียวด้วยค่าเมล็ดสุ่มหนึ่งครั้งดังนั้นจึงยากที่จะได้ข้อสรุปที่ชัดเจน โดยทั่วไปขนาดแบทช์ขนาดเล็กใช้เวลานานกว่าในการฝึกอบรมและมีแนวโน้มที่จะไม่เสถียรในการปฏิบัติงานดังนั้นจึงเป็นความคิดที่ดีที่จะกำหนดขนาดแบทช์เป็นประมาณ 16 หรือ 32 ในตอนนี้
ในที่สุดลองดูประสิทธิภาพของ LORA ต่อ R เมื่อโมเดลได้รับการแก้ไขให้กับ rinna/japanese-gpt-neox-3.6b และ template_type ได้รับการแก้ไขเป็น 2
| Lora R | LR | วาล F1 | ความแม่นยำ | ความแม่นยำ | ระลึกถึง | F1 |
|---|---|---|---|---|---|---|
| 8 | 5E-4 | 97.45 | 97.15 | 96.97 | 96.75 | 96.83 |
| 64 | 1E-3 | 97.22 | 97.28 | 96.96 | 96.85 | 96.89 |
| 16 | 1E-3 | 97.20 | 97.69 | 97.59 | 97.27 | 97.38 |
| 4 | 3e-4 | 97.12 | 97.69 | 97.64 | 97.24 | 97.40 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
เป็นผลให้ฉันรู้สึกว่าไม่มีความสัมพันธ์กันมากระหว่างค่า F ในชุดการพัฒนาและค่า F ในชุดทดสอบ เนื่องจากค่าของ R ของ Lora นั้นคิดว่าเป็น "โมเดลที่ใหญ่กว่าค่าที่เล็กกว่า" ฉันคิดว่ามันจะปลอดภัยกว่าที่จะตั้งค่าเป็น 32 หรือสูงกว่าสำหรับ LLM ขนาดกลางเพียงไม่กี่ B แต่ฉันอยากลองทดลองเพิ่มขึ้นอีกเล็กน้อย
ในการดำเนินการนี้เราทำการทดลองโดยใช้ LLM สำหรับการจำแนกข้อความแบบดั้งเดิม เป็นผลให้การปรับเปลี่ยนที่ดีโดยใช้ LORA เราสามารถบรรลุประสิทธิภาพได้ค่อนข้างสูงโดยเพียงแค่ปรับพารามิเตอร์จำนวนน้อยและ "การใช้ LLM เป็นทางเลือกแทนเบิร์ต" อาจถือว่าเป็นตัวเลือกที่สมเหตุสมผล นอกจากนี้ยังมีแนวโน้มที่เทมเพลตจะยังคงส่งผลกระทบต่อประสิทธิภาพแม้ในขณะที่ตั้งค่าการปรับแต่ง นอกจากนี้เมื่อทำการปรับเปลี่ยนที่ดีโดยใช้ LORA อัตราการเรียนรู้จะต้องถูกตั้งค่าให้มีค่าค่อนข้างมากและพบว่ามูลค่าของอันดับ r ยังส่งผลต่อประสิทธิภาพ
ผู้แต่ง: Hayato Tsukagoshi
อีเมล: [email protected]
หากคุณต้องการอ้างถึงการใช้งานนี้ในกระดาษ ฯลฯ โปรดใช้สิ่งต่อไปนี้:
@misc {
hayato-tsukagoshi-2023-llm-lora-classification,
title = { {Text Classification with LLMs and LoRA} } ,
author = { Hayato Tsukagoshi } ,
year = { 2023 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/hppRC/llm-lora-classification} } ,
url = { https://github.com/hppRC/llm-lora-classification } ,
}