14 คะแนน โดย xguru 2024-04-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Vision Transformers (ViTs) คือคลาสของโมเดลดีปเลิร์นนิงที่ทำผลงานได้ดีที่สุดในงานจัดประเภทภาพ
  • นำสถาปัตยกรรม Transformer ที่ออกแบบมาสำหรับการประมวลผลภาษาธรรมชาติ (NLP) มาประยุกต์ใช้กับข้อมูลภาพ
  • คู่มือนี้ใช้ภาพประกอบและคำอธิบายแบบง่ายเพื่อช่วยให้เข้าใจว่าโมเดลเหล่านี้ทำงานอย่างไร และการไหลของข้อมูลมีหน้าตาอย่างไรเมื่อข้อมูลผ่านเข้าไปในโมเดล

เนื้อหาหลัก

  • แบ่งภาพออกเป็นแพตช์ขนาดเท่ากัน p x p
  • เวกเตอร์ที่เข้ารหัสแต่ละแพตช์จะมีขนาดคงที่ d
  • สิ่งที่เหลืออยู่คืออาร์เรย์ขนาด n x d (n คือจำนวนแพตช์ของภาพ, d คือขนาดของ patch embedding)
  • เพื่อฝึกโมเดลได้อย่างมีประสิทธิภาพ จึงขยายอาร์เรย์ของ patch embedding ด้วยเวกเตอร์เพิ่มเติมที่เรียกว่า classification token (cls token)
  • เนื่องจากไม่มีข้อมูลตำแหน่ง จึงเพิ่มเวกเตอร์ positional embedding ที่สุ่มค่าเริ่มต้นไว้
  • หลังจากเพิ่มเวกเตอร์ positional embedding แล้ว จะนำอาร์เรย์ขนาด (n+1) x d ไปเป็นอินพุตของ Transformer
  • ภายใน Transformer
    • 10.1 เวกเตอร์อินพุต patch embedding ของ Transformer ถูกฝังเชิงเส้นเป็นเวกเตอร์ขนาดใหญ่หลายตัว ได้แก่ Q - query vector, K - key vector, V - value vector
    • 10.2 คูณ query vector Q ทุกตัวกับ key vector K ทุกตัวเพื่อคำนวณคะแนน attention A
    • 10.3 เมื่อได้เมทริกซ์คะแนน attention A แล้ว ให้นำฟังก์ชัน softmax ไปใช้กับทุกแถว เพื่อให้ผลรวมของแต่ละแถวเป็น 1
    • 10.4 เพื่อคำนวณข้อมูลบริบทแบบสรุปรวมสำหรับเวกเตอร์ patch embedding ตัวแรก จะโฟกัสที่แถวแรกของเมทริกซ์ attention และใช้แต่ละรายการเป็นค่าน้ำหนักของ value vector V
    • 10.5 จากนั้นทำซ้ำกระบวนการนี้กับทุกแถวของเมทริกซ์คะแนน attention ก็จะได้เวกเตอร์ข้อมูลบริบทแบบสรุปรวมจำนวน N+1 ตัว (หนึ่งตัวต่อแพตช์ + หนึ่งตัวสำหรับ classification token) ขั้นตอนนี้ทำให้ attention head แรกเสร็จสมบูรณ์
    • 10.6 เนื่องจากเป็น multi-head attention จึงทำซ้ำกระบวนการทั้งหมดของขั้นตอน 10.1 - 10.5 อีกครั้ง โดยใช้การแมป QKV แบบอื่น
    • 10.7 ขั้นตอนสุดท้ายของ attention layer โดยนำ head ต่าง ๆ มาวางรวมกันและแมปเป็นเวกเตอร์ขนาด d ซึ่งมีขนาดเท่ากับ patch embedding
    • 10.8 หลังจากขั้นตอนก่อนหน้า attention layer ก็เสร็จสมบูรณ์ และจะเหลือจำนวน embedding เท่าเดิมที่มีขนาดตรงกับอินพุตทุกประการ
    • 10.9 Transformer ใช้ residual connection เป็นจำนวนมาก ซึ่งหมายถึงการนำอินพุตของเลเยอร์ก่อนหน้ามาบวกกับเอาต์พุตของเลเยอร์ปัจจุบันแบบตรงไปตรงมา
    • 10.10 ผลลัพธ์ของ residual connection (การบวก) จะได้เวกเตอร์ที่มีขนาดเท่าเดิม
    • 10.11 เอาต์พุตนี้จะผ่านโครงข่ายประสาทเทียมแบบ feed-forward ที่มีฟังก์ชันกระตุ้นแบบไม่เชิงเส้น
    • 10.12 หลังจบขั้นตอน Transformer จะมี residual connection อีกครั้ง แต่ในที่นี้ละไว้ เพียงเท่านี้ก็ถือว่า Transformer layer เสร็จสมบูรณ์ โดยสรุปแล้ว Transformer จะสร้างเอาต์พุตที่มีขนาดเท่ากับอินพุต
  • จากนั้นทำซ้ำขั้นตอนการคำนวณทั้งหมดของ Transformer ตั้งแต่ 10.1 - 10.12 หลายครั้ง (เช่น 6 ครั้ง)
  • ขั้นตอนสุดท้ายคือระบุเอาต์พุตของ classification token ซึ่งเวกเตอร์นี้จะถูกนำไปใช้ในขั้นสุดท้ายของ Vision Transformer
  • ในขั้นสุดท้าย จะใช้ classification output token นี้ร่วมกับโครงข่ายประสาทเทียมแบบ fully connected อีกตัวเพื่อทำนายความน่าจะเป็นของการจัดประเภทภาพอินพุต
  • Vision Transformer ถูกฝึกด้วยฟังก์ชันสูญเสีย cross-entropy มาตรฐาน ซึ่งเปรียบเทียบความน่าจะเป็นของคลาสที่โมเดลทำนายกับป้ายกำกับคลาสจริง
    • โมเดลถูกฝึกด้วย backpropagation และ gradient descent โดยอัปเดตพารามิเตอร์ของโมเดลเพื่อทำให้ฟังก์ชันสูญเสียมีค่าน้อยที่สุด

1 ความคิดเห็น

 
ninebow 2024-04-22

ผมเห็นจากบทความที่คุณแนะนำแล้วคิดว่าการอธิบายพร้อมภาพประกอบน่าจะดี จึงได้ขออนุญาตผู้เขียนและแปลต้นฉบับไว้ดังนี้: