Buckets:

rtrm's picture
|
download
raw
11.9 kB

คำถามท้ายบท

ทดสอบความรู้ที่คุณได้เรียนมาจากบทนี้กัน!

1. ใน emotion dataset ซึ่งได้รวบรวมข้อความ Twitter ที่มีการ labeled ว่าแต่ละข้อความนั้นเป็นข้อความที่มีอารมณ์แบบใด ลองค้นข้อมูลดูจาก Hubและอ่าน dataset card ดูแล้วตอบว่า ข้อใดไม่ใช่หนึ่งในอารมณ์พื้นฐานของ dataset นี้?

2. ลองหาข้อมูล ar_sarcasm dataset ใน Hub ดูว่ามันสามารถทำ Task อะไรได้บ้าง?

dataset card!" }, { text: "Named entity recognition (การจำแนกหน่วยย่อยของประโยค)", explain: "ยังไม่ถูกนะ — ลองดูข้อมูลใหม่อีกครั้งที่ dataset card!" }, { text: "Question answering (การตอบคำถาม)", explain: "ตอบคำถามได้ดีแต่ยังไม่ถูกนะ ลองใหม่อีกครั้ง!" } ]} />

3. โมเดล BERT ต้องการข้อมูลนำเข้า เป็นคู่ประโยคในลักษณะใด?

[SEP] เพื่อแยกระหว่างคู่ประโยคด้วย แต่แค่นี้ยังไม่ครบถ้วนนะ!" }, { text: "[CLS] Tokens_of_sentence_1 Tokens_of_sentence_2", explain: "คุณต้องใส่ Token พิเศษชื่อ [CLS] ไว้ที่ต้นประโยคแรกด้วย แต่แค่นี้ยังไม่ครบถ้วนนะ!" }, { text: "[CLS] Tokens_of_sentence_1 [SEP] Tokens_of_sentence_2 [SEP]", explain: "ถูกต้อง!", correct: true }, { text: "[CLS] Tokens_of_sentence_1 [SEP] Tokens_of_sentence_2", explain: "คุณต้องใส่ Token พิเศษชื่อ [CLS] ไว้ที่ต้นประโยคแรก รวมถึง Token พิเศษชื่อ [SEP] เพื่อแยกระหว่างคู่ประโยค แต่แค่นี้ยังไม่ครบถ้วนนะ!" } ]} />

{#if fw === 'pt'}

4. ข้อใดเป็นประโยชน์ที่ได้จากการใช้เมธอด Dataset.map()?

5. dynamic padding หมายถึงอะไร?

6. ข้อใดคือหน้าที่ของฟังก์ชั่น collate?

DataCollatorWithPadding" }, { text: "เพื่อเก็บข้อมูลเข้ามาทำเป็น batch อย่างเหมาะสม", explain: "ถูกต้อง! คุณสามารถใส่ฟังก์ชั่น collate เป็นอากิวเมนต์ของ DataLoader เราได้ใช้ฟังก์ชั่น DataCollatorWithPadding ในการเติมข้อมูลทุกตัวใน batch ให้มีความยาวเท่ากัน", correct: true }, { text: "เพื่อประมวลผลข้อมูลทั้ง dataset.", explain: "นั่นเป็นหน้าที่ของฟังก์ชั่นประมวลผล (preprocessing) ไม่ใช่หน้าที่ของฟังก์ชั่น collate" }, { text: "เพื่อตัด sequences ทุกตัวใน dataset.", explain: "ฟังก์ชั่น collate นั้นมีการจัดการเพียงในแต่ละ batch ไม่ได้จัดการทั้ง dataset และถ้าคุณต้องการตัด (truncating) คุณสามารถใช้อากิวเมนต์ truncate ของ tokenizer." } ]} />

7. จะเกิดอะไรขึ้นถ้าคุณสร้างออพเจ็กต์ของคลาส AutoModelForXxx ตัวหนึ่งซึ่งมี pretrained language model (เช่น bert-base-uncased) เพื่อนำไปทำ task ที่แตกต่างไปจาก task ที่เคยเทรนไว้?

AutoModelForSequenceClassification กับ bert-base-uncased เราจะได้ข้อความ warnings เพราะ pretrained head นั้นไม่ใช้ในการทำ sequence classification มันจึงถูกตัดทิ้งและมีการสร้าง head ใหม่ขึ้นมาแทน โดยกำหนดค่า weights ขึ้นแบบสุ่ม", correct: true }, { text: "head ของ pretrained model จะถูกตัดทิ้งไป", explain: "ยังมีอีกสิ่งหนึ่งที่จะต้องเกิดขึ้นด้วย ลองใหม่อีกครั้งนะ!" }, { text: "ไม่มีอะไรเกิดขึ้น เนื่องจากเราสามารถ fine tune โมเดลให้ทำ task ที่ต่างออกไปได้", explain: "head ของ pretrained model ไม่ได้ถูกเทรนมาให้ทำ task นี้ เราจึงต้องตัดมันทิ้งไป!" } ]} />

8. ข้อใดคือหน้าที่ของ TrainingArguments?

Trainer", explain: "ถูกต้อง!", correct: true }, { text: "เพื่อกำหนดขนาดของโมเดล", explain: "ขนาดของโมเดลนั้นจะถูกกำหนดโดย model configuration ไม่ใช่ TrainingArguments" }, { text: "เพื่อเก็บ hyperparameters ที่ใช้ในการประเมินผลโมเดล", explain: "ในตัวอย่างเราได้กำหนดว่าจะเก็บโมเดลและ checkpoints ไว้ที่ไหนด้วย ลองใหม่อีกครั้ง!" }, { text: "เพื่อเก็บ hyperparameters ที่ใช้ในการเทรนโมเดล", explain: "ในตัวอย่างเราได้ใช้ evaluation_strategy ด้วย มันจึงส่งผลต่อการประเมินผลโมเดลด้วย ลองใหม่อีกครั้ง!" } ]} />

9. ทำไมคุณจึงควรใช้ไลบรารี่ 🤗 Accelerate?

Trainer ไม่ใช่ไลบรารี่ 🤗 Accelerate ลองใหม่อีกครั้ง!" }, { text: "ช่วยให้ลูปในการเทรนของคุณใช้การได้กับ distributed setup", explain: "ถูกต้อง! การใช้ 🤗 Accelerate จะช่วยให้ลูปในการเทรนของคุณใช้การได้เมื่อต้องเทรนด้วย GPUs หรือ TPUs หลาย ๆ ตัว", correct: true }, { text: "มันมีฟังก์ชั่น optimization ให้เลือกใช้มากกว่า", explain: "ไม่ใช่นะ ไลบรารี่ 🤗 Accelerate ไม่มีฟังก์ชั่น optimization เลย" } ]} />

{:else}

4. จะเกิดอะไรขึ้นถ้าคุณสร้างออพเจ็กต์ของคลาส AutoModelForXxx ตัวหนึ่งซึ่งมี pretrained language model (เช่น bert-base-uncased) เพื่อนำไปทำ task ที่แตกต่างไปจาก task ที่เคยเทรนไว้?

AutoModelForSequenceClassification กับ bert-base-uncased เราจะได้ข้อความ warnings เพราะ pretrained head นั้นไม่ใช้ในการทำ sequence classification มันจึงถูกตัดทิ้งและมีการสร้าง head ใหม่ขึ้นมาแทน โดยกำหนดค่า weights ขึ้นแบบสุ่ม", correct: true }, { text: "head ของ pretrained model จะถูกตัดทิ้งไป", explain: "ยังมีอีกสิ่งหนึ่งที่จะต้องเกิดขึ้นด้วย ลองใหม่อีกครั้งนะ!" }, { text: "ไม่มีอะไรเกิดขึ้น เนื่องจากเราสามารถ fine tune โมเดลให้ทำ task ที่ต่างออกไปได้", explain: "head ของ pretrained model ไม่ได้ถูกเทรนมาให้ทำ task นี้ เราจึงต้องตัดมันทิ้งไป!" } ]} />

5. โมเดล TensorFlow จาก transformers นั้นเป็นโมเดล Keras อยู่แล้ว การที่เป็นแบบนี้นั้นมีประโยชน์อะไรบ้าง?

TPUStrategy scope รวมถึงการ initialize โมเดลด้วย" }, { text: "คุณสามารถใช้ประโยชน์จากเมธอดที่มีอยู่แล้วอย่างเช่น compile(), fit() และ predict()", explain: "ถูกต้อง! เมื่อคุณมีข้อมูล การเทรนก็ไม่ยาก แค่ต้องทำงานเพิ่มอีกนิดเดียวเท่านั้น", correct: true }, { text: "คุณจะได้เรียนวิธีใช้ Keras และ transformers.", explain: "ก็ถูกนะ แต่เราอยากได้คำตอบอื่น :)", correct: true }, { text: "คุณจะสามารถคำนวณ metrics ที่เกี่ยวข้องกับ dataset ได้โดยง่าย", explain: "Keras นั้นช่วยในการเทรนและประเมินผลโมเดล แต่ไม่ได้ช่วยคำนวณ metrics ที่เกี่ยวข้องกับ dataset" } ]} />

6. คุณสามารถสร้าง metric ของคุณเองได้อย่างไร?

tf.keras.metrics.Metric.", explain: "เยี่ยมเลย!", correct: true }, { text: "ใช้ Keras functional API.", explain: "ลองใหม่อีกครั้ง!" }, { text: "โดยการใช้ callable ด้วย signature metric_fn(y_true, y_pred).", explain: "ถูกต้อง!", correct: true }, { text: "ใช้ google ค้นหาวิธี", explain: "นั่นไม่ใช่คำตอบที่เราต้องการนะ แต่มันก็น่าจะช่วยคุณหาวิธีได้จริง ๆ", correct: true } ]} />

{/if}

Xet Storage Details

Size:
11.9 kB
·
Xet hash:
85132450dd72e229e2072a7604800087f17e04b33d46f9abedf13863003cfd7a

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.