พลังของคำ
คำที่เราใช้ในการสร้าง prompt เรียกว่า tokens. แต่ละ token มี พลัง ของมันเอง ซึ่งขึ้นอยู่กับความถี่ในการเกิดขึ้นในชุดข้อมูลที่ใช้ในการฝึก AI เราจะพูดถึงรายละเอียดทางเทคนิคในอีกสักครู่ แต่ก่อนอื่นเราจะมุ่งเน้นไปที่วิธีการคิดเกี่ยวกับ tokens อย่างเป็นรูปธรรม
ลองมาดูตัวอย่างกัน: ฉันสร้าง prompt “1girl wearing white oversized coat with >< and outstretched arms”. หากแต่ละคำเป็น token เราจะมี 11 tokens.
(เมื่อพิมพ์ prompt นี้ลงใน BetterWaifu คุณจะสังเกตเห็นว่าเคาน์เตอร์ token แสดง 13. นี่เป็นเพราะ <start> และ <end> tokens ถูกเพิ่มโดย AI ในเบื้องหลัง จะพูดถึงเรื่องนี้ในส่วนถัดไป)
คำบุพบทเช่น “with” “for” “at” “in” และคำอนุภาคเช่น “and” “a” “to” ถือเป็น tokens ดังนั้นพวกมันก็มีพลังและมีอิทธิพลต่อภาพด้วย
ลองใช้ prompt เดิมโดยไม่มีอนุภาคหรือบุพบท: “1girl, white oversized coat, ><, outstretched arms”. เครื่องหมายจุลภาคถือเป็น tokens ดังนั้นเรายังคงมี 11 tokens, 13 เมื่อรวมกับ tokens เริ่มต้นและสิ้นสุด ผลลัพธ์จะแตกต่างออกไปค่อนข้างมาก:
ฉันชอบผลลัพธ์นี้มากกว่าเพราะดูเหมือนว่ามีการใส่ใจมากขึ้นในเสื้อโค้ต token จุลภาคถูกใช้เพื่อแบ่งแยกระหว่างแนวคิดที่แตกต่างกัน
ตอนนี้ ขณะที่การใช้ แท็กที่แยกด้วยจุลภาค เป็นวิธีที่ฉันแนะนำในการสร้าง prompt บน BetterWaifu นั่นไม่ได้หมายความว่าการลบบุพบทและอนุภาคทั้งหมดจะทำให้ผลลัพธ์ดีขึ้นเสมอไป บางครั้งการใช้บุพบทเพื่อบ่งบอกตำแหน่งสัมพัทธ์ก็สำคัญ
นี่คือตัวอย่างง่ายๆ เมื่อบุพบททำให้เกิดความแตกต่างทั้งหมด:
1girl, airplane, white oversized coat, ><, outstretched arms
1girl inside airplane, white oversized coat, ><, outstretched arms
นอกจากพลังที่มีอยู่ใน token แล้ว ตำแหน่งของมันใน prompt ก็มีน้ำหนักเช่นกัน. Tokens ที่อยู่ต้นมีน้ำหนักมากกว่า tokens ที่อยู่ท้าย มันสำคัญที่จะเข้าใจเรื่องนี้ เพราะ token ที่อ่อนแอที่อยู่ท้าย prompt อาจไม่มีผลกระทบต่อภาพ ในทางกลับกัน token ที่แข็งแกร่งที่อยู่ต้นสามารถกำหนดผลลัพธ์ได้ทั้งหมด
เพื่อควบคุมพลังของ token คุณสามารถใช้การสร้าง (token:1.0) ซึ่งตัวเลขแสดงถึงพลังของ token 0 - ไม่มีอิทธิพล, 1 - น้ำหนักปกติ ฉันมักจะไม่เกิน 1.5 การทดลองกับค่าพลังที่แตกต่างกันสามารถช่วยให้คุณปรับแต่งระดับการควบคุมที่ต้องการต่อ tokens ใน prompt ของคุณ
คำอธิบายทางเทคนิค
การแบ่ง token เป็นวิธีที่ใช้กันทั่วไปในการจัดการข้อมูลข้อความในการสร้าง AI เราใช้มันเพื่อเปลี่ยนข้อความให้เป็นตัวเลขและประมวลผลด้วยเครือข่ายประสาท
Stable Diffusion จะแบ่ง prompt ข้อความออกเป็นลำดับของ tokens ตัวอย่างเช่น มันจะแบ่ง prompt ข้อความ “กระต่ายน่ารักและน่าเอ็นดู” ออกเป็น tokens a, cute, and, adorable, และ bunny. จากนั้น Stable Diffusion จะเพิ่ม <start> และ <end> tokens ที่ต้นและท้ายของ tokens
ลำดับ token ที่ได้จากตัวอย่างข้างต้นจะเป็น <start>, a, cute, and, adorable, bunny, และ <end> (7 tokens).
เพื่อความสะดวกในการคำนวณ Stable Diffusion จะเก็บลำดับ token ของ prompt ข้อความใดๆ ให้มีความยาวเท่ากับ 77 โดยการเติมหรือการตัด หาก prompt ที่ป้อนมีน้อยกว่า 77 tokens จะมีการเพิ่ม <end> tokens ที่ท้ายลำดับจนกว่าจะถึง 77 tokens
ความยาว 77 ถูกตั้งขึ้นเพื่อสร้างสมดุลระหว่างประสิทธิภาพและประสิทธิภาพในการคำนวณ ซอฟต์แวร์ที่แตกต่างกันจะมีพฤติกรรมที่แตกต่างกันหากมีการใช้มากกว่า 77 tokens:
- tokens แรก 77 ตัวจะถูกเก็บไว้และที่เหลือจะถูกตัดออก
- prompt ทั้งหมดจะแบ่งออกเป็นชิ้นๆ ขนาด 75, tokens เริ่มต้นและสิ้นสุดจะถูกเพิ่ม และแต่ละชิ้นจะถูกประมวลผลตามลำดับ นี่คือวิธีที่ BetterWaifu ใช้