Buckets:
คำถามท้ายบท
มาทดสอบความรู้ที่คุณได้เรียนในบทนี้กันเถอะ!
1. สถานการณ์ไหนที่คุณควรจะเทรน tokenizer ขึ้นมาใหม่?
<Question choices={[ { text: "เมื่อชุดข้อมูลเป้าหมาย คล้ายกับชุดข้อมูลที่โมเดลที่มีอยู่แล้วใช้ในการเทรน และคุณต้องการจะเทรนโมเดลขึ้นมาใหม่", explain: "ในกรณีนี้ คุณควรจะใช้ tokenizer ตัวเดิมเป็น pretrained model แล้ว fine-tune มันจะดีกว่า เพื่อจะได้ประหยัดเวลาและทรัพยากร" }, { text: "เมื่อชุดข้อมูลเป้าหมาย คล้ายกับชุดข้อมูลที่ pretrained model ใช้ในการเทรน และคุณต้องการจะ fine-tune โมเดลตัวนี้", explain: "ถ้าคุณต้องการ fine-tune โมเดลจาก pretrained model คุณควรจะใช้ tokenizer ตัวเดียวกันเสมอ" }, { text: "เมื่อชุดข้อมูลเป้าหมาย แตกต่างจากชุดข้อมูลที่ pretrained model ใช้ และคุณต้องการจะเทรนโมเดลใหม่ขึ้นมา", explain: "ถูกต้อง! ในกรณีนี้ ไม่มีประโยชน์ที่จะใช้ tokenizer ตัวเดิม", correct: true }, { text: "เมื่อชุดข้อมูลเป้าหมายแตกต่างจากชุดข้อมูลที่ใช้โดย pretrained model แต่คุณต้องการ fine-tune โมเดลตัวนี้เพื่อให้ได้โมเดลใหม่", explain: "ในการ fine-tune จาก pretrained model คุณควรใช้ tokenizer ตัวเดียวกันเสมอ" } ]} />
2. เวลาใช้ train_new_from_iterator() อะไรคือข้อดีของการใช้ generator of lists of texts เทียบกับการใช้ list of lists of texts?
<Question
choices={[
{
text: "มันเป็นข้อมูลประเภทเดียวที่ train_new_from_iterator() สามารถใช้ได้",
explain: "list of lists of texts เป็น generator ประเภทหนึ่ง ดังนั้น method นี้สามารถใช้มันได้เช่นกัน ลองดูใหม่นะ!"
},
{
text: "เพื่อป้องกันไม่ให้คุณต้องโหลดชุดข้อมูลทั้งหมด ลงไปใน memory ภายในครั้งเดียว",
explain: "ถูกต้อง! แต่ละ batch ของข้อความ จะถูกปล่อยออกจาก memory เวลาที่คุณ iterate มัน คุณจะเห็นประโยชน์ของการทำแบบนี้ได้ชัดเจนยิ่งขึ้น เวลาที่คุณใช้ 🤗 Datasets เพื่อเก็บข้อความ",
correct: true
},
{
text: "ทำให้ 🤗 Tokenizers library สามารถใช้ multiprocessing ได้",
explain: "ไม่ถูก เพราะมันจะใช้ multiprocessing ในทั้งสองกรณี"
},
{
text: "tokenizer จะสามารถผลิตข้อความได้ดีขึ้น",
explain: "tokenizer ไม่สามารถผลิตข้อความได้ -- คุณอาจจะกำลังสับสนมันกับ language model หรือเปล่า"
}
]}
/>
3. อะไรคือข้อดีของ "fast" tokenizer?
<Question choices={[ { text: "มันสามารถประมวลผลข้อความ input ได้เร็วกว่า slow tokenizer เวลาที่คุณใช้ input batch ขนาดใหญ่", explain: "ถูกต้อง! มันทำแบบนั้นได้ก็เพราะ การทำงานแบบ parallelism จาก Rust จะทำให้มันประมวลผล input ในรูปแบบ batch ได้เร็วขึ้น นอกจากนี้แล้ว คุณรู้ไหมว่ามันยังมีประโยชน์อะไรอีก", correct: true }, { text: "Fast tokenizer สามารถประมวลได้เร็วกว่า slow tokenizer เสมอ", explain: "ไม่ถูก เพราะว่า fast tokenizer จะช้ากว่าถ้าหาก input น้อยมาก เพราะมันจะไม่สามารถใช้ parallelism ได้" }, { text: "มันสามารถทำ padding และ truncation (ตัดบางส่วนของข้อความออก ถ้ายาวไป) ได้", explain: "slow tokenizers สามารถทำได้เช่นกัน" }, { text: "มันมี feature พิเศษที่ช่วยให้คุณสามารถ map แต่ละ token ไปหา span ของข้อความหลักได้", explain: " ถูกต้อง Feature นี้เรียกว่า offset mappings แต่ยังมีอีกข้อที่ถูกเช่นกัน", correct: true } ]} />
4. token-classification pipeline มีวิธีจัดการกับ entity ที่ประกอบไปด้วยหลายๆ token ได้อย่างไร?
<Question choices={[ { text: "Entity ที่มี label เดียวกันจะถูกรวมเป็น entity เดียว", explain: "คำอธิบายนี้ง่ายเกินไป ลองใหม่นะ!" }, { text: "มันจะใช้ label ประเภทหนึ่งสำหรับ token ที่อยู่จุดเริ่มต้นของ entity และ label อีกประเภทสำหรับ token ส่วนที่เหลือ", explain: "ถูกต้อง!", correct: true }, { text: "ในคำๆหนึ่ง ถ้า token แรกมี label ของ entity คำทั้งคำจะถูก label ให้เป็น entity นั้นด้วย", explain: "ถูกต้อง นี่เป็นวิธีหนึ่งในการจัดการกับ entity ลองดูว่ามีคำตอบอื่นที่ถูกต้องอีกมั้ย", correct: true }, { text: "ถ้า token หนึ่งถูก label ว่าเป็น entity token อื่นๆที่ตามมาที่มี label เดียวกัน จะถูกจัดว่าเป็น entity เดียวกัน ยกเว้นว่า มันจะเป็น label ที่บอกว่าเริ่ม entity ใหม่", explain: "ถูกต้อง นี่เป็นวิธีมาตรฐานที่เอาไว้ใช้รวม token ของ entity เข้าด้วยกัน -- ยังมีอีกคำตอบที่ถูกต้องเช่นกัน ลองหาดู", correct: true } ]} />
5. question-answering pipeline มีวิธีจัดการกับข้อความส่วนบริบท(context)ที่มีขนาดยาวอย่างไร?
<Question choices={[ { text: "มันไม่ได้จัดการอะไร มันแค่ตัด context ให้มีความยาวเท่ากับความยาวสูงสุดที่เป็นไปได้เท่านั้น", explain: "เราได้เรียนทริกที่เอาไว้ใช้แก้ปัญหา context ยาวกันแล้ว จำได้มั้ย" }, { text: "มันจะแบ่ง context ออกเป็นหลายๆส่วน แล้วคำนวณค่าเฉลี่ยของผลลัพธ์จากแต่ละส่วนเป็นคำตอบ", explain: "ไม่ถูก มันไม่สมเหตุสมผลที่จะใช้ค่าเฉลี่ย เพราะว่าบางส่วนของ context อาจจะไม่มีคำตอบอยู่เลยก็ได้" }, { text: "มันจะแยก context ออกเป็นหลายๆส่วน โดยให้แต่ละส่วนทับซ้อนกันด้วย (overlap) แล้วมันจะคำนวณ score ให้แต่ละส่วน แล้วเลือกส่วนที่มี score สูงที่สุดเป็นคำตอบ", explain: "ถูกต้อง!", correct: true }, { text: "มันจะแบ่ง context ออกเป็นหลายๆส่วน โดยไม่มีส่วนทับซ้อน เพื่อรักษาประสิทธิภาพ แล้วเลือกส่วนที่มี score สูงที่สุดเป็นคำตอบ", explain: "ไม่ถูก เราควรแบ่ง context ให้มีส่วนที่ทับซ้อนด้วย เพื่อป้องกันไม่ให้เกิดกรณีที่ span ของคำตอบ ถูกตัดออกไปอยู่หลายๆส่วน" } ]} />
6. อะไรคือ normalization?
<Question choices={[ { text: "ขั้นตอนที่เกี่ยวข้องกับการทำความสะอาดข้อมูล ที่ tokenizer ทำในขั้นเริ่มต้น", explain: "ถูกต้อง ตัวอย่างเช่น ลบ accents หรือ whitespace หรือแปลงข้อความเป็นตัวอักษรเล็ก", correct: true }, { text: "เทคนิคในการสร้างข้อมูลใหม่จากข้อมูลที่มีอยู่เพื่อขยายชุดข้อมูล (data augmentation) เกี่ยวข้องกับการทำข้อความให้เป็นปกติมากขึ้น โดยลบคำที่พบได้ยากออก", explain: "ไม่ถูก! ลองดูใหม่นะ" }, { text: "ลำดับสุดท้ายหลังการประมวลผลหลัก ซึ่ง tokenizer จะเพิ่ม token พิเศษเข้าไปใน vocabulary", explain: "ไม่ถูก ขั้นตอนนี้คือ post-processing" }, { text: "ขั้นตอนการสร้าง embeddings ให้มีค่า mean เท่ากับ 0 และค่า standard deviation เท่ากับ 1 ซึ่งคำนวณได้โดยการลบค่า mean ออกจากค่าหลัก และ หารโดย standard deviation", explain: "นี่เป็นขั้นตอน normalization สำหรับงานด้าน computer vision ที่เอาไว้ใช้ปรับค่าของ pixel ให้เป็นมาตรฐาน แต่วิธีนี้ใช้ไม่ได้ใน NLP" } ]} />
7. อะไรคือขั้นตอนการ pre-tokenization ของ subword tokenizer?
<Question choices={[ { text: "ขั้นตอนก่อนการ tokenize ที่มีการทำ data augmentation เช่น random masking", explain: "ไม่ถูก ขั้นตอนนี้เป็นส่วนหนึ่งในการประมวลผลหลัก" }, { text: "ขั้นตอนก่อนการ tokenize ที่ข้อความจะถูกทำความสะอาด (cleanup)", explain: "ไม่ถูก ขั้นตอนนี้เรียกว่า normalization" }, { text: "ขั้นตอนก่อนการ tokenize ที่ข้อความจะถูกแยกออกเป็นคำๆ", explain: "ถูกต้อง!", correct: true }, { text: "ขั้นตอนก่อนการ tokenize ที่ข้อความจะถูกแยกออกเป็น token", explain: "ไม่ถูก นี่คือขั้นตอนหลักของ tokenizer" } ]} />
8. เลือกข้อความที่ถูกต้อง เกี่ยวกับ BPE model?
<Question choices={[ { text: "BPE คืออัลกอริทึมแบบ subword ที่เริ่มการเทรนด้วย vocabulary ขนาดเล็ก และมันจะเรียนกฎเพื่อรวม token (merge rules)", explain: "ถูกต้อง!", correct: true }, { text: "BPE คืออัลกอริทึมแบบ subword ที่เริ่มการเทรนด้วย vocabulary ขนาดใหญ่ และมันจะพยายามจะลบ token ออกจาก vocabulary เรื่อยๆ", explain: "ไม่ถูก นี่คือคำอธิบายของอัลกอริทึมอีกประเภทต่างหาก" }, { text: "BPE มีเป้าหมายคือการเรียนกฎเพื่อรวม token เข้าด้วยกัน (merge rules) โดยมันจะรวมคู่ของ token ที่พบบ่อยที่สุดเข้าด้วยกัน", explain: "ถูกต้อง!", correct: true }, { text: "BPE มีเป้าหมายคือการเรียนกฎเพื่อรวม token เข้าด้วยกัน (merge rules) มันจะรวมคู่ของ token ที่มี score สูงที่สุดเข้าด้วยกัน ถ้าหากคู่ token นี้มีจำนวนมากและแต่ละ token ในคู่มีจำนวนน้อย คู่นี้จะมี score สูง", explain: "ไม่ถูก นี่คือคำอธิบายของอัลกอริทึมอีกประเภทต่างหาก" }, { text: "BPE ตัดคำออกเป็นคำย่อย (subwords) โดยแบ่งแต่ละคำออกเป็นตัวอักษร แล้วใช้ merge rules เพื่อรวมคำย่อยพวกนี้เข้าด้วยกัน", explain: "ถูกต้อง!", correct: true }, { text: "BPE ตัดคำออกเป็นคำย่อย (subwords) โดยจะแบ่งคำเมื่อเจอคำย่อยที่ยาวที่สุดที่อยู่ใน vocabulary เริ่มจากต้นคำ จากนั้น มันจะทำแบบเดียวกันนี้กับส่วนที่เหลือของข้อความไปเรื่อยๆ", explain: "ไม่ถูก นี่คือคำอธิบายของอัลกอริทึมอีกประเภทต่างหาก" }, ]} />
9. เลือกข้อความที่ถูกต้อง เกี่ยวกับ WordPiece model?
<Question choices={[ { text: "WordPiece คืออัลกอริทึมแบบ subword ที่เริ่มการเทรนด้วย vocabulary ขนาดเล็ก และเรียนกฎสำหรับการรวม token (merge rules)", explain: "ถูกต้อง!", correct: true }, { text: "WordPiece คืออัลกอริทึมแบบ subword ที่เริ่มการเทรนด้วย vocabulary ขนาดใหญ่ และมันจะพยายามจะลบ token ออกจาก vocabulary เรื่อยๆ", explain: "ไม่ถูก นี่คือคำอธิบายของอัลกอริทึมอีกประเภทต่างหาก" }, { text: "WordPiece มีเป้าหมายคือการเรียนกฎเพื่อรวม token เข้าด้วยกัน (merge rules) โดยมันจะรวมคู่ของ token ที่พบบ่อยที่สุดเข้าด้วยกัน", explain: "ไม่ถูก นี่คือคำอธิบายของอัลกอริทึมอีกประเภทต่างหาก" }, { text: "WordPiece มีเป้าหมายคือการเรียนกฎเพื่อรวม token เข้าด้วยกัน (merge rules) มันจะรวมคู่ของ token ที่มี score สูงที่สุดเข้าด้วยกัน ถ้าหากคู่ token นี้มีจำนวนมากและแต่ละ token ในคู่มีจำนวนน้อย คู่นี้จะมี score สูง", explain: "ถูกต้อง!", correct: true }, { text: "WordPiece ตัดคำให้เป็นคำย่อย (subwords) โดยเลือก segmentation ที่มีความเป็นไปได้มากที่สุดเป็นคำตอบ", explain: "ไม่ถูก นี่คือคำอธิบายของอัลกอริทึมอีกประเภทต่างหาก" }, { text: "WordPiece ตัดคำออกเป็นคำย่อย (subwords) โดยจะแบ่งคำเมื่อเจอคำย่อยที่ยาวที่สุดที่อยู่ใน vocabulary เริ่มจากต้นคำ จากนั้น มันจะทำแบบเดียวกันนี้กับส่วนที่เหลือของข้อความไปเรื่อยๆ", explain: "ถูกต้อง นี่คือวิธีที่ WordPiece ทำการ encoding", correct: true }, ]} />
10. เลือกข้อความที่ถูกต้อง เกี่ยวกับ Unigram model?
<Question choices={[ { text: "Unigram คืออัลกอริทึมแบบ subword ที่เริ่มการเทรนด้วย vocabulary ขนาดเล็ก และเรียนกฎสำหรับการรวม token (merge rules)", explain: "ไม่ถูก นี่คือคำอธิบายของอัลกอริทึมอีกประเภทต่างหาก" }, { text: "Unigram คืออัลกอริทึมแบบ subword ที่เริ่มการเทรนด้วย vocabulary ขนาดใหญ่ และมันจะพยายามจะลบ token ออกจาก vocabulary เรื่อยๆ", explain: "ถูกต้อง!", correct: true }, { text: "Unigram จะปรับ vocabulary โดยพยายามลดให้ค่า loss ของ corpus", explain: "ถูกต้อง!", correct: true }, { text: "Unigram จะปรับ vocabulary โดยเลือกเก็บ token ที่มีความถี่สูงไว้", explain: "ไม่ถูก" }, { text: "Unigram WordPiece ตัดคำให้เป็นคำย่อย (subwords) โดยเลือก segmentation ที่มีความเป็นไปได้มากที่สุดเป็นคำตอบ", explain: "ถูกต้อง!", correct: true }, { text: "Unigram ตัดคำออกเป็นคำย่อย (subwords) โดยแบ่งแต่ละคำออกเป็นตัวอักษร แล้วใช้ merge rules เพื่อรวมคำย่อยพวกนี้เข้าด้วยกัน", explain: "ไม่ถูก นี่คือคำอธิบายของอัลกอริทึมอีกประเภทต่างหาก" }, ]} />
Xet Storage Details
- Size:
- 21.9 kB
- Xet hash:
- cb8a5e1f9e6ea4997fab75ef60bb0bd8c50cc25a9f0d5c0f55ec0772641bd44b
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.