Encoder–decoder architecture — สถาปัตยกรรม encoder–decoder
โมเดล Encoder-Decoder (อังกฤษ: Encoder-Decoder Models) — คือกลุ่มสถาปัตยกรรมของ Neural Network ที่ออกแบบมาเพื่อแก้ปัญหา การแปลงลำดับเป็นลำดับ (sequence-to-sequence, seq2seq) สถาปัตยกรรมนี้ประกอบด้วยองค์ประกอบหลักสองส่วน:
- Encoder (ตัวเข้ารหัส): ประมวลผลลำดับอินพุตและบีบอัดให้เป็นการแทนค่าตัวเลขที่กระชับ (เวกเตอร์บริบท หรือลำดับของสถานะแฝง)
- Decoder (ตัวถอดรหัส): นำการแทนค่านั้นมาสร้างลำดับเอาต์พุต
สถาปัตยกรรมนี้เป็นรากฐานสำหรับงานประมวลผลภาษาธรรมชาติ (NLP) และการมองเห็นด้วยคอมพิวเตอร์หลายประเภท เช่น การแปลภาษาด้วยเครื่อง การสรุปข้อความ และการสร้างคำบรรยายภาพ
แนวคิด
แนวคิดหลักของสถาปัตยกรรม Encoder-Decoder คือการแยกงาน การทำความเข้าใจ และ การสร้าง ออกจากกัน Encoder รับผิดชอบการทำความเข้าใจลำดับอินพุต โดยดึงข้อมูลเชิงความหมายที่จำเป็นทั้งหมดออกมา ส่วน Decoder รับผิดชอบการสร้างลำดับใหม่โดยใช้ข้อมูลที่ Encoder ส่งมาให้
สิ่งนี้ช่วยให้โมเดลทำงานกับลำดับที่มีความยาวต่างกันทั้งในอินพุตและเอาต์พุต ซึ่งเป็นสิ่งที่ยากสำหรับสถาปัตยกรรมรุ่นก่อนหน้า
วิวัฒนาการของสถาปัตยกรรม
โมเดลยุคแรกที่ใช้ RNN/LSTM
ในตอนแรก สถาปัตยกรรม Encoder-Decoder ถูกพัฒนาโดยใช้ Recurrent Neural Network (RNN) หรือรูปแบบที่ปรับปรุงแล้วคือ LSTM
- Encoder: RNN Encoder ประมวลผลลำดับอินพุตทีละ token และให้ผลลัพธ์เป็น เวกเตอร์บริบท หนึ่งตัว ซึ่งเป็นสถานะแฝงหลังจากประมวลผล token สุดท้าย โดยควรจะเก็บข้อมูลของลำดับทั้งหมดไว้
- Decoder: RNN Decoder ถูกกำหนดค่าเริ่มต้นด้วยเวกเตอร์บริบทนี้ และสร้างลำดับเอาต์พุตแบบ autoregressive
ข้อเสียหลักของแนวทางนี้คือปัญหา "คอขวด": ข้อมูลทั้งหมดจากลำดับอินพุตต้องถูกบีบอัดลงในเวกเตอร์ขนาดคงที่เพียงตัวเดียว ซึ่งทำให้สูญเสียข้อมูล โดยเฉพาะกับลำดับที่ยาว
การนำกลไก Attention มาใช้
ความก้าวหน้าครั้งสำคัญเกิดขึ้นจากการนำ กลไก attention (attention mechanism) มาใช้ (Bahdanau et al., 2014)
- หลักการทำงาน: แทนที่จะพึ่งพาเวกเตอร์บริบทเพียงตัวเดียว Decoder จะ "ให้ความสนใจ" กับสถานะแฝง ทั้งหมด ของ Encoder ในแต่ละขั้นตอนการสร้าง โดยคำนวณน้ำหนัก attention ที่แสดงว่าส่วนใดของลำดับอินพุตมีความเกี่ยวข้องมากที่สุดในการสร้าง token เอาต์พุตปัจจุบัน
- ข้อดี: สิ่งนี้แก้ปัญหา "คอขวด" และช่วยให้โมเดลทำงานกับลำดับที่ยาวได้อย่างมีประสิทธิภาพ ซึ่งปรับปรุงคุณภาพได้อย่างมีนัยสำคัญ โดยเฉพาะในการแปลภาษาด้วยเครื่อง
สถาปัตยกรรม Transformer
ในปี ค.ศ. 2017 บทความ "Attention Is All You Need" ได้นำเสนอสถาปัตยกรรม Transformer ที่ละทิ้งการใช้ recurrence ทั้งหมดเพื่อหันมาใช้กลไก attention แทน
- Encoder ของ Transformer: ประกอบด้วยชั้นซ้อนกัน โดยแต่ละชั้นใช้ self-attention เพื่อสร้างการแทนค่าเชิงบริบทสำหรับแต่ละ token อินพุต
- Decoder ของ Transformer: ประกอบด้วยชั้นซ้อนกัน โดยแต่ละชั้นมีกลไก attention สองประเภท:
- Masked Self-Attention: สำหรับประมวลผลส่วนของลำดับเอาต์พุตที่สร้างไปแล้ว
- Cross-Attention: สำหรับ "ให้ความสนใจ" กับการแทนค่าเอาต์พุตของ Encoder
สถาปัตยกรรมนี้กลายเป็นมาตรฐานสำหรับงาน seq2seq เนื่องจากประสิทธิภาพสูงและความสามารถในการประมวลผลแบบขนาน
การประยุกต์ใช้
สถาปัตยกรรม Encoder-Decoder เป็นมาตรฐานสำหรับงานหลากหลายประเภท:
- การแปลภาษาด้วยเครื่อง: การแปลงประโยคจากภาษาหนึ่งไปยังอีกภาษาหนึ่ง
- การสรุปข้อความอัตโนมัติ: การสร้างเนื้อหาสรุปของเอกสารที่ยาว
- ระบบสนทนา: การสร้างคำตอบต่อคำพูดของผู้ใช้
- การสร้างคำบรรยายภาพ (Image Captioning): Encoder (มักใช้ Convolutional Neural Network) ประมวลผลภาพ ส่วน Decoder (มักเป็น RNN หรือ Transformer) สร้างคำบรรยายข้อความของภาพนั้น
- การรู้จำเสียงพูด: การแปลงสัญญาณเสียงเป็นข้อความถอดความ
โมเดลหลัก
- Transformer ต้นฉบับ (Vaswani et al., 2017): โมเดลที่แนะนำสถาปัตยกรรมนี้
- BART (Bidirectional and Auto-Regressive Transformers): โมเดลจาก Facebook ที่ฝึกล่วงหน้าด้วยงานการฟื้นฟูข้อความ "เสีย" Encoder เป็นแบบสองทิศทาง (เช่นเดียวกับ BERT) ส่วน Decoder เป็นแบบ autoregressive (เช่นเดียวกับ GPT)
- T5 (Text-to-Text Transfer Transformer): โมเดลจาก Google ที่รวมงาน NLP ทั้งหมดโดยนำเสนอในรูปแบบของการแปลงข้อความเป็นข้อความ T5 แสดงผลลัพธ์ที่โดดเด่นบน benchmark หลายรายการ
การเปรียบเทียบกับสถาปัตยกรรมอื่น
| สถาปัตยกรรม | งานหลัก | องค์ประกอบ | โมเดลตัวอย่าง |
|---|---|---|---|
| Encoder-Decoder | การแปลงลำดับเป็นลำดับ | Encoder + Decoder | T5, BART, Transformer ต้นฉบับ |
| Encoder เท่านั้น | การทำความเข้าใจข้อความ | เฉพาะ Encoder | BERT, RoBERTa |
| Decoder เท่านั้น | การสร้างข้อความ | เฉพาะ Decoder |
เอกสารอ้างอิง
- Bahdanau, D. et al. (2014). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473.
- Sutskever, I. et al. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
- Luong, M.-T. et al. (2015). Effective Approaches to Attention-based Neural Machine Translation. arXiv:1508.04025.
- Wu, Y. et al. (2016). Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation. arXiv:1609.08144.
- Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
- Britz, D. et al. (2017). Massive Exploration of Neural Machine Translation Architectures. arXiv:1703.03906.
- Lewis, M. et al. (2020). BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation. arXiv:1910.13461.
- Raffel, C. et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
- Dong, L. et al. (2019). Unified Language Model Pre-training for Natural Language Understanding and Generation. arXiv:1905.03197.
- Zhang, J. et al. (2020). PEGASUS: Pre-training with Extracted Gap-Sentences for Abstractive Summarization. arXiv:1912.08777.