Decoder (Transformer) (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

Decoder (ตัวถอดรหัส) — ในสาขา Machine Learning และการเรียนรู้เชิงลึก คือส่วนประกอบของ Neural Network ที่มีหน้าที่หลักในการแปลงการแทนค่าที่เข้ารหัสแล้ว (เช่น เวกเตอร์บริบท หรือลำดับของสถานะแฝงที่ได้รับจาก encoder) ให้กลายเป็นลำดับข้อมูลเอาต์พุต (เช่น ข้อความหรือรูปภาพ) Decoder สร้างข้อมูลเอาต์พุตทีละขั้นตอน โดยทั่วไปจะทำงานในรูปแบบ autoregressive

ในความหมายที่กว้างขึ้น ในทฤษฎีสารสนเทศ decoder คืออุปกรณ์หรืออัลกอริทึมใด ๆ ที่แปลงข้อมูลที่เข้ารหัสกลับไปสู่รูปแบบเดิมหรือรูปแบบที่เข้าใจได้

แนวคิดและจุดประสงค์

หาก encoder ทำหน้าที่ ทำความเข้าใจ และบีบอัดข้อมูลอินพุต decoder ก็ทำหน้าที่ สร้าง และคลี่ขยายข้อมูลเอาต์พุต มันรับการแทนค่าที่กระชับและอุดมด้วยข้อมูล แล้วแปลงอย่างต่อเนื่องให้เป็นรูปแบบที่ต้องการ ไม่ว่าจะเป็นประโยคในภาษาอื่น คำอธิบายข้อความของรูปภาพ หรือลำดับโน้ตดนตรี

คุณลักษณะสำคัญของ decoder ส่วนใหญ่คือธรรมชาติที่เป็น autoregressive: ในการสร้างองค์ประกอบถัดไปของลำดับ (เช่น คำหรือพิกเซล) decoder จะใช้ทั้งการแทนค่าที่เข้ารหัสแล้วและองค์ประกอบทั้งหมดที่สร้างขึ้นก่อนหน้านี้

Decoder ในสถาปัตยกรรมต่าง ๆ

Decoder ใน Autoencoder

ในสถาปัตยกรรม autoencoder decoder ทำหน้าที่ตรงข้ามกับ encoder:

  1. Encoder บีบอัดข้อมูลอินพุตให้เป็นการแทนค่าแฝง
  2. Decoder รับการแทนค่าแฝงนั้นและพยายามกู้คืน (reconstruct) ข้อมูลเดิมจากมัน

การฝึกเครือข่ายดังกล่าวช่วยให้สามารถใช้ decoder แยกต่างหากสำหรับการสร้างข้อมูลใหม่ได้ โดยป้อนเวกเตอร์จาก latent space เข้าไปยังอินพุตของมัน

Decoder ใน Recurrent Neural Network (RNN/LSTM)

ในโมเดล sequence-to-sequence (seq2seq) แบบดั้งเดิมที่อิงบน RNN หรือ LSTM decoder คือเครือข่าย recurrent ที่สร้างลำดับเอาต์พุตทีละ token

  • หลักการทำงาน: Decoder ถูกกำหนดค่าเริ่มต้นด้วยสถานะแฝงสุดท้าย (เวกเตอร์บริบท) ของ encoder ในแต่ละขั้นตอน มันรับ token ที่สร้างขึ้นก่อนหน้าและสถานะแฝงก่อนหน้าของตัวเองเป็นอินพุต จากนั้นสร้าง token ถัดไปและอัปเดตสถานะของตัวเอง กระบวนการนี้ดำเนินต่อไปจนกว่าจะสร้าง token พิเศษที่แสดงจุดสิ้นสุดของลำดับ (`<EOS>`)

Decoder ในสถาปัตยกรรม Transformer

Decoder ที่อิงบนสถาปัตยกรรม Transformer ก็ทำงานแบบ autoregressive เช่นกัน แต่โครงสร้างภายในแตกต่างออกไป ประกอบด้วยสแตก (N) ของเลเยอร์ที่เหมือนกัน โดยแต่ละเลเยอร์มีสามชั้นย่อยหลัก:

  1. Masked Multi-Head Self-Attention (การให้ความสนใจตัวเองแบบหลายหัวที่มีการปิดบัง): กลไกนี้ทำงานเหมือนกับใน encoder แต่มีความแตกต่างสำคัญหนึ่งประการ คือ การปิดบัง (masking) มาสก์จะป้องกันไม่ให้แต่ละตำแหน่ง "ให้ความสนใจ" กับตำแหน่งที่อยู่ถัดไปในลำดับ ซึ่งรับประกันว่าการทำนายสำหรับตำแหน่ง i จะขึ้นอยู่กับเอาต์พุตที่ทราบแล้วที่ตำแหน่ง <i เท่านั้น โดยรักษาคุณสมบัติ autoregressive ไว้
  2. Multi-Head Cross-Attention (การให้ความสนใจข้ามแบบหลายหัว): นี่คือกลไกสำคัญที่เชื่อม decoder กับ encoder ในที่นี้ Query มาจากเลเยอร์ก่อนหน้าของ decoder ในขณะที่ Key และ Value มาจากการแทนค่าเอาต์พุตของ encoder ซึ่งช่วยให้ decoder สามารถโฟกัสไปที่ส่วนที่เกี่ยวข้องมากที่สุดของลำดับอินพุตในแต่ละขั้นตอนของการสร้าง
  3. Feed-Forward Network (เครือข่ายประสาทแบบเชื่อมต่อเต็มรูปแบบ): คล้ายคลึงกับที่ใช้ใน encoder

ประเภทของโมเดลที่อิงบน Decoder

โมเดล Encoder-Decoder

นี่คือสถาปัตยกรรมแบบดั้งเดิมที่ encoder และ decoder ทำงานร่วมกันเป็นคู่

  • หลักการทำงาน: Encoder สร้างการแทนค่าของข้อมูลอินพุต และ decoder สร้างข้อมูลเอาต์พุตโดยใช้การแทนค่านั้น
  • ตัวอย่าง: Transformer ต้นฉบับ, T5, BART

โมเดล Decoder-Only (เฉพาะ Decoder)

โมเดลเหล่านี้ซึ่งกลายเป็นโมเดลที่โดดเด่นใน Generative AI ใช้เฉพาะสแตก decoder ของ Transformer

  • หลักการทำงาน: โมเดลเหล่านี้ไม่มี cross-attention ไปยัง encoder เนื่องจากไม่มี encoder โมเดลทำงานในรูปแบบ autoregressive อย่างแท้จริง โดยทำนาย token ถัดไปบนพื้นฐานของ token ก่อนหน้าทั้งหมดในลำดับเดียวกัน prompt อินพุตและข้อความที่สร้างขึ้นแล้วจะถูกประมวลผลร่วมกัน
  • การประยุกต์ใช้: เหมาะอย่างยิ่งสำหรับงานที่ต้องการต่อเนื่องข้อความที่กำหนด (การสร้างข้อความ ระบบสนทนา แชทบอท)
  • ตัวอย่าง: ซีรีส์ GPT, LLaMA, Claude

ความสัมพันธ์กับ Encoder

การโต้ตอบระหว่าง encoder และ decoder เป็นหลักการพื้นฐานสำหรับงานการแปลง

  • Encoder บีบอัดข้อมูลเกี่ยวกับลำดับอินพุตให้เป็นชุดของเวกเตอร์
  • Decoder ใช้ชุดเวกเตอร์นั้นเพื่อสร้างลำดับใหม่อย่างต่อเนื่อง

Cross-attention ช่วยให้ decoder สามารถ "ปรึกษา" encoder ได้ในแต่ละขั้นตอน เพื่อทำความเข้าใจว่าควรโฟกัสไปที่ส่วนใดของข้อความต้นฉบับในขณะนั้น ตัวอย่างเช่น ในการแปลประโยค decoder เมื่อสร้างคำภาษาเยอรมัน สามารถ "มองไปที่" คำภาษาอังกฤษที่สอดคล้องกันจากอินพุตได้

ดูเพิ่มเติม

  • GPT

เอกสารอ้างอิง

  • Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.