ทรานส์ฟอร์เมอร์

โครงสร้างสถาปัตยกรรมทรานส์ฟอร์เมอร์มาตรฐาน ด้านซ้ายคือตัวเข้ารหัส ด้านขวาคือตัวถอดรหัส
ทรานส์ฟอร์เมอร์ (transformer) เป็นแบบจำลองการเรียนรู้เชิงลึก ที่เผยแพร่โดยนักวิจัยของกูเกิลเมื่อวันที่ 12 มิถุนายน 2017 มีการนำมาประยุกต์ใช้อย่างกว้างขวาง โดยเฉพาะในสาขาการประมวลภาษาธรรมชาติ
เช่นเดียวกับ โครงข่ายประสาทแบบเวียนซ้ำ (RNN) สถาปัตยกรรมทรานส์ฟอร์เมอร์ได้รับการออกแบบมาเพื่อจัดการข้อมูลอนุกรมเวลา เช่น ภาษาธรรมชาติ เพื่อดำเนินการต่าง ๆ เช่น การแปล และ การสรุปความอัตโนมัติ แต่ในกรณีของทรานส์ฟอร์เมอร์นั้น สามารถทำการประมวลข้อมูลทั้งหมดในอนุกรมเวลาพร้อมกันโดยไม่ต้องตามลำดับได้ ตัวอย่างเช่น หากข้อมูลที่ป้อนเป็นประโยคภาษาธรรมชาติ ก็ไม่จำเป็นต้องประมวลผลตั้งแต่ต้นจนจบประโยค ด้วยเหตุนี้ทรานส์ฟอร์เมอร์จึงยอมให้มีการคำนวณแบบขนานได้มากกว่าโครงข่ายประสาทแบบเวียนซ้ำ ซึ่งทำให้ช่วยลดเวลาในการฝึกแบบจำลองลงไปได้มาก
นับตั้งแต่ได้รับการเผยแพร่ แบบจำลองทรานส์ฟอร์เมอร์ได้รับการนำมาใช้งานอย่างกว้างขวางเพื่อแก้ไขปัญหามากมายในการประมวลผลภาษาธรรมชาติ โดยแทนที่แบบจำลองโครงข่ายประสาทแบบเวียนซ้ำแบบเก่า เช่น หน่วยความจำระยะสั้นแบบยาว (LSTM) แบบจำลองทรานส์ฟอร์เมอร์มีส่วนช่วยให้สามารถทำการคำนวณแบบขนานระหว่างการฝึก ช่วยให้สามารถฝึกชุดข้อมูลขนาดใหญ่ได้ ซึ่งนำไปสู่การพัฒนาระบบฝึกล่วงหน้า เช่น BERT (Bidirectional Encoder Representations from Transformers) และ GPT (Generative Pre-trained Transformer) แบบจำลองได้รับการฝึกโดยชุดข้อมูลภาษาทั่วไปขนาดใหญ่เพื่อสร้างแบบจำลองรากฐาน และนำไปทำการปรับละเอียดให้เข้ากับงานภาษาเฉพาะได้

**การออกแบบพื้นฐาน**
เช่นเดียวกับแบบจำลองที่ประดิษฐ์ขึ้นก่อนหน้านี้ ทรานส์ฟอร์เมอร์เป็นโครงสร้างที่ประกอบไปด้วยตัวเข้ารหัสและตัวถอดรหัส ตัวเข้ารหัสประกอบด้วยชุดของชั้นเข้ารหัสที่ประมวลผลค่าป้อนเข้าซ้ำ ๆ กัน และตัวถอดรหัสประกอบด้วยชุดของชั้นถอดรหัสที่ทำสิ่งเดียวกันกับข้อมูลขาออกจากตัวเข้ารหัส
หน้าที่ของชั้นเข้ารหัสแต่ละชั้นคือการประมวลผลข้อมูลขาเข้าและสร้างการเข้ารหัส รวมถึงข้อมูลเกี่ยวกับส่วนของข้อมูลขาเข้าที่เกี่ยวข้องกัน ชั้นเข้ารหัสแต่ละชั้นจะส่งผ่านลำดับของการเข้ารหัสแล้วใช้เป็นค่าขาเข้าป้อนไปยังชั้นตัวเข้ารหัสถัดไป
แต่ละชั้นตัวถอดรหัสทำสิ่งที่ตรงกันข้าม: โดยรับข้อมูลจากตัวเข้ารหัสทั้งหมดมา แล้วนำมาจัดการประมวลผล ใช้ข้อมูลบริบทที่ฝังไว้เพื่อสร้างลำดับขาออก
เพื่อให้บรรลุเป้าหมายนี้ แต่ละชั้นของตัวเข้ารหัสและตัวถอดรหัสจะใช้กลไกความใส่ใจ โดยกลไกความใส่ใจจะกำหนดน้ำหนักแต่ละขาเข้าตามความสัมพันธ์กับข้อมูลขาเข้าอื่น ๆ ทั้งหมด แล้วดึงข้อมูล สร้างข้อมูลขาออก ชั้นถอดรหัสแต่ละชั้นมีกลไกความใส่ใจเพื่อรับข้อมูลจากชั้นถอดรหัสก่อนหน้า ก่อนที่จะรับข้อมูลจากชั้นเข้ารหัส ทั้งชั้นเข้ารหัสและชั้นถอดรหัสประกอบด้วยโครงข่ายประสาทเทียมแบบป้อนไปข้างหน้าเพื่อประมวลผลค่าขาออกเพิ่มเติม

**หน่วยความใส่ใจ**
ส่วนประกอบพื้นฐานของทรานส์ฟอร์เมอร์ คือหน่วยความใส่ใจ ซึ่งผ่านการคำนวณโดยผลคูณจุดแล้วปรับสเกล (Scaled dot-product attention unit) เมื่อข้อความถูกป้อนเข้าให้กับแบบจำลองทรานส์ฟอร์เมอร์ ค่าน้ำหนักความใส่ใจจะถูกคำนวณจากโทเค็นทั้งหมดพร้อมกัน หน่วยความใส่ใจจะสร้างการฝังโทเค็นทุกรายการภายในบริบท ซึ่งไม่เพียงแต่รวมถึงข้อมูลเกี่ยวกับตัวโทเค็นนั้นเท่านั้น แต่ยังรวมถึงความเชื่อมโยง (ถ่วงน้ำหนักด้วยน้ำหนักความใส่ใจ) กับโทเค็นอื่น ๆ ที่เกี่ยวข้องด้วย
แบบจำลองทรานส์ฟอร์เมอร์ จะทำการเรียนรู้ 3 อย่างคือ เมทริกซ์น้ำหนักเควียรี , เมทริกซ์น้ำหนักคีย์ และ เมทริกซ์น้ำหนักค่า  สำหรับแต่ละหน่วยความใส่ใจ เมื่อคูณค่าป้อนเข้า  จากชั้นการฝังคำด้วยเมทริกซ์น้ำหนักสำหรับโทเค็นที่  แต่ละตัวแล้ว จะได้เวกเตอร์เควียรี , เวกเตอร์คีย์ , เวกเตอร์ค่า  น้ำหนักความใส่ใจ  เป็นผลคูณจุดของเวกเตอร์เควียรี  กับเวกเตอร์คีย์  แล้วหารด้วยรากที่สองของจำนวนมิติ  เพื่อรักษาเสถียรภาพของความชัน จากนั้นผลรวมน้ำหนักจะถูกทำให้เป็น 1 โดยใช้ฟังก์ชันซอฟต์แมกซ์
พารามิเตอร์น้ำหนักเควียรี  และพารามิเตอร์น้ำหนักคีย์  เป็นเมทริกซ์ที่แตกต่างกัน และอาจไม่จำเป็นต้องสมมาตร นั่นคือแม้โทเค็นตัวที่  จะมุ่งความใส่ใจไปที่โทเค็นตัวที่  (นั่นคือ  มีขนาดใหญ่) แต่โทเคนตัวที่  ก็อาจไม่จำเป็นต้องให้ความใส่ใจกับโทเคนตัวที่   (นั่นคือ  ไม่จำเป็นต้องใหญ่โต) ค่าขาออกของหน่วยความใส่ใจที่มีต่อโทเค็นตัวที่  นั้นเป็นผลรวมถ่วงน้ำหนักของเวกเตอร์ค่าของโทเค็นทั้งหมด
การคำนวณความใส่ใจโทเค็นทั้งหมดสามารถแสดงในรูปการคำนวณเมทริกซ์ขนาดใหญ่รายการเดียวได้ ซึ่งมีส่วนช่วยอย่างมากในการฝึกแบบจำลอง ทำให้สามารถฝึกได้อย่างรวดเร็ว
การคำนวณภายในหน่วยความใส่ใจของทรานส์ฟอร์เมอร์เขียนเป็นสูตรได้ว่าในที่นี้ , ,  คือเมทริกซ์ของเควียรี, คีย์, ค่า โดยเวกเตอร์เควียรี , เวกเตอร์คีย์ , เวกเตอร์ค่า  จะแสดงถึงแถวที่  ของเมทริกซ์ , , 

**กลไกความใส่ใจแบบหลายหัว**
เมทริกซ์ชุดหนึ่ง  เรียกว่า หัวความใส่ใจ (attention head) และแต่ละชั้นของแบบจำลองทรานส์ฟอร์เมอร์จะมีหัวความใส่ใจหลายหัว ส่วนหัวความใส่ใจหนึ่งหัวให้ความใส่ใจกับโทเค็นที่เกี่ยวข้องกับแต่ละโทเค็น แต่การใช้ส่วนหัวความใส่ใจหลายหัวทำให้แบบจำลองสามารถดำเนินการที่คล้ายกันกับความเกี่ยวพันที่นิยามแบบต่าง ๆ ได้ การวิจัยแสดงให้เห็นว่าหัวความใส่ใจจำนวนมากใน ทรานส์ฟอร์เมอร์สามารถเข้ารหัสความสัมพันธ์ในแบบที่มนุษย์สามารถตีความได้ ตัวอย่างเช่น มีหัวความใส่ใจที่มุ่งความใส่ไปไปที่คำถัดไปเป็นหลัก และหัวความใส่ใจที่มุ่งความใส่ใจจากคำกริยาไปยังกรรมโดยตรง เนื่องจากแบบจำลอง ทรานส์ฟอร์เมอร์ มีหัวความใส่ใจหลายหัว จึงสามารถจับความสัมพันธ์การเชื่อมโยงได้หลายระดับและหลายประเภท ตั้งแต่ผิวเผินไปจนถึงความหมาย ขาออกหลายรายการจากชั้นความใส่ใจแบบหลายหัวจะถูกต่อเข้าด้วยกันและส่งผ่านไปยังชั้นโครงข่ายประสาทแบบป้อนไปข้างหน้า

**ชั้นย่อยป้อนไปข้างหน้าแบบตามจุด**
ที่ส่วนชั้นย่อยป้อนไปข้างหน้าแบบตามจุด (point-wise feed-forward) ใช้โครงข่ายเชื่อมต่อสมบูรณ์แบบป้อนไปข้างหน้ากับเวกเตอร์ขาเข้า  ที่ตำแหน่ง  พารามิเตอร์น้ำหนัก  และ  ไม่ขึ้นกับตำแหน่ง  (น้ำหนักต่างกันสำหรับแต่ละชั้น) กล่าวคือ จะดำเนินการประมวลผลเทียบเท่ากับชั้นสังวัตนาการแบบตามจุด (ซึ่งมีขนาดเคอร์เนลเป็น 1) 2 ชั้นในทิศทางตำแหน่ง
โครงสร้างเชื่อมต่อสมบูรณ์สามารถทำการคำนวณแบบคู่ขนานภายในชั้นได้ ดังนั้นชั้นย่อยนี้สามารถทำการคำนวณแบบขนานในทิศทางของตำแหน่ง ทำให้สามารถเรียนรู้แบบคู่ขนานในระดับสูง ซึ่งนี่เป็นเป้าหมายหลักอย่างหนึ่งของทรานส์ฟอร์เมอร์
เนื่องจากชั้นย่อยถูกใช้ภายในการเชื่อมต่อส่วนเหลือ จึงเป็นการดีที่จะให้มิติของขาเข้าและขาออกเท่ากัน ในงานวิจัยต้นฉบับใช้ขนาดขาเข้าและขาออกเป็น  ขนาดของชั้นกลางมีขนาดใหญ่กว่าขาเข้าและขาออก

**ตัวเข้ารหัส**
ตัวเข้ารหัสแต่ละตัวประกอบด้วย 2 ส่วน ได้แก่ กลไกความใส่ใจตัวเอง และชั้นย่อยป้อนไปข้างหน้าแบบตามจุด กลไกความใส่ใจตัวเองจะใช้ชุดการเข้ารหัสขาเข้าจากตัวเข้ารหัสตัวก่อน ๆ และถ่วงน้ำหนักด้วยค่าความเกี่ยวพันร่วมกันเพื่อสร้างชุดการเข้ารหัสขาออก จากนั้นชั้นย่อยป้อนไปข้างหน้าจะประมวลผลการเข้ารหัสขาออกแต่ละรายการแยกกัน การเข้ารหัสขาออกเหล่านี้จะถูกป้อนเป็นข้อมูลขาเข้าไปยังตัวเข้ารหัสถัดไปในที่สุด
ตัวเข้ารหัสตัวแรกจะรับข้อมูลตำแหน่งและการฝังลำดับขาเข้าเป็นข้อมูลป้อนเข้า ข้อมูลตำแหน่งเป็นสิ่งจำเป็นสำหรับทรานส์ฟอร์เมอร์ในการระบุข้อมูลตำแหน่งของข้อมูลป้อนเข้า เนื่องจากไม่มีส่วนอื่นใดให้ข้อมูลตำแหน่ง

**ตัวถอดรหัส**
ตัวถอดรหัสแต่ละตัวประกอบด้วย 3 ส่วน ได้แก่ กลไกความใส่ใจตัวเอง กลไกความใส่ใจที่เกี่ยวข้องกับการเข้ารหัส และชั้นย่อยป้อนไปข้างหน้า ตัวถอดรหัสทำหน้าที่คล้ายกับตัวเข้ารหัส โดยแทรกกลไกความใส่ใจเพิ่มเติมเพื่อดึงข้อมูลที่เกี่ยวข้องจากการเข้ารหัสที่สร้างโดยตัวเข้ารหัส
เช่นเดียวกับตัวเข้ารหัสตัวแรก ตัวถอดรหัสตัวแรกจะได้รับค่าเป็นข้อมูลตำแหน่งขาเข้าและการฝังลำดับขาออก แทนที่จะเป็นการเข้ารหัส อย่างไรก็ตาม ภายในทรานส์ฟอร์เมอร์ไม่ควรใช้ค่าขาออกปัจจุบันหรือในอนาคตเพื่อคาดการณ์ขาออก ดังนั้นลำดับขาออกจึงควรถูกปกปิดบางส่วนเพื่อป้องกันการไหลของข้อมูลย้อนกลับ
ตัวถอดรหัสตัวสุดท้ายจะตามด้วยการแปลงเชิงเส้นขั้นสุดท้ายและชั้นซอฟต์แมกซ์ เพื่อสร้างความน่าจะเป็นสำหรับคำศัพท์ ซึ่งเป็นผลลัพธ์สุดท้ายที่ต้องการ

**รูปแบบทางเลือก**
การฝึกสถาปัตยกรรมที่ใช้ทรานส์ฟอร์เมอร์อาจใช้ทรัพยากรมาก โดยเฉพาะประโยคยาว ๆ มีสถาปัตยกรรมที่เรียกว่า รีฟอร์เมอร์ (Reformer) ถูกสร้างขึ้นมาเป็นทางเลือก โดยอ้างว่าช่วยลดภาระในการคำนวณ  จาก  (โดยที่  คือความยาวของลำดับ) รีฟอร์เมอร์ใช้ locality sensitive hashing และชั้นที่พลิกกลับได้

**การฝึก**
โดยทั่วไปแล้ว ทรานส์ฟอร์เมอร์จะผ่านการเรียนรู้แบบกึ่งมีผู้สอน (การฝึกล่วงหน้าด้วยการเรียนรู้แบบไม่มีผู้สอน ตามด้วยการปรับละเอียดด้วยการเรียนรู้แบบมีผู้สอน) เนื่องจากข้อมูลการฝึกที่มีฉลากกำกับมีอยู่จำกัด การฝึกล่วงหน้าจึงมักดำเนินการกับชุดข้อมูลที่มีขนาดใหญ่ งานก่อนการเรียนรู้และการปรับแต่งมีดังนี้- การทำนายคำถัดไป- การตอบคำถาม- การอ่านตีความ- การวิเคราะห์ความรู้สึก- การสรุปความอัตโนมัติ

**การเขียนโปรแกรม**
แบบจำลองทรานส์ฟอร์เมอร์ได้รับการบรรจุอยู่ในเฟรมเวิร์กการเรียนรู้เชิงลึกที่สำคัญ เช่น TensorFlow และ PyTorch สำหรับเขียนด้วยภาษาไพธอน

**การประยุกต์ใช้**
ทรานส์ฟอร์เมอร์ถูกนำมาใช้เป็นหลักในด้าน การประมวลภาษาธรรมชาติ เช่น การแปลด้วยเครื่อง และ การทำนายอนุกรมเวลา แบบจำลองที่ได้รับการฝึกล่วงหน้าจำนวนมาก เช่น GPT (GPT-1, GPT-2, GPT-3, GPT-4, ChatGPT), BERT, XLNet, RoBERTa ฯลฯ ล้วนมีพื้นฐานจากทรานส์ฟอร์เมอร์
ในปี 2020 ยังพบว่า GPT-2 ซึ่งใช้โครงสร้างทรานส์ฟอร์เมอร์สามารทำการปรับละเอียดให้ใช้เล่นหมากรุกได้ด้วย
วิชันทรานส์ฟอร์เมอร์ ซึ่งสร้างขึ้นจากสถาปัตยกรรมทรานส์ฟอร์เมอร์ เผยแพร่โดยทีมวิจัยของกูเกิลในปี 2020 ได้รับการนำมาใช้ในด้านคอมพิวเตอร์วิทัศน์ และบรรลุผลสำเร็จที่เหนือกว่าโครงข่ายประสาทเทียมแบบสังวัตนาการ

**อ้างอิง**
หมวดหมู่:โครงข่ายประสาทเทียม