การเข้ารหัสตำแหน่งในรุ่นหม้อแปลงคืออะไร?


23

ฉันใหม่กับ ML และนี่เป็นคำถามแรกของฉันที่นี่ดังนั้นขออภัยถ้าคำถามของฉันโง่

ฉันกำลังพยายามอ่านและทำความเข้าใจกับกระดาษความสนใจคือสิ่งที่คุณต้องการและในนั้นมีรูปภาพ:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่รู้ว่าการเข้ารหัสตำแหน่งคืออะไร โดยการฟังวิดีโอ youtube บางรายการฉันพบว่ามันเป็นการฝังทั้งความหมายและตำแหน่งของคำในนั้นและมีบางสิ่งที่เกี่ยวข้องกับหรือsin(x)cos(x)

แต่ฉันไม่เข้าใจว่ามันคืออะไรและมันทำอย่างนั้น ดังนั้นฉันมาที่นี่เพื่อขอความช่วยเหลือ ขอบคุณล่วงหน้า.

คำตอบ:


31

ตัวอย่างเช่นสำหรับคำที่ตำแหน่งในลำดับอินพุตพร้อมการฝัง 4 มิติและการดำเนินการจะเป็น wpos[0,L1]w=(w0,,wL1)ewdmodel=4

ew=ew+[sin(pos100000),cos(pos100000),sin(pos100002/4),cos(pos100002/4)]=ew+[sin(pos),cos(pos),sin(pos100),cos(pos100)]

โดยที่สูตรสำหรับการเข้ารหัสตำแหน่งมีดังนี้ ด้วย (เช่น ) ในเอกสารต้นฉบับ

PE(pos,2i)=sin(pos100002i/dmodel),
PE(pos,2i+1)=cos(pos100002i/dmodel).
dmodel=512i[0,255]

ใช้เทคนิคนี้เนื่องจากไม่มีแนวคิดเกี่ยวกับการเรียงลำดับคำ (1 คำ, คำที่ 2, .. ) ในสถาปัตยกรรมที่เสนอ คำทั้งหมดของลำดับการป้อนข้อมูลจะถูกป้อนไปยังเครือข่ายโดยไม่มีคำสั่งหรือตำแหน่งพิเศษ (ต่างจากสถาปัตยกรรม RNN ทั่วไปหรือ ConvNet) ดังนั้นแบบจำลองจึงไม่ทราบว่าคำสั่งนั้นจะเรียงลำดับอย่างไร ดังนั้นสัญญาณที่ขึ้นกับตำแหน่งจะถูกเพิ่มเข้าไปในการฝังคำแต่ละคำเพื่อช่วยให้ตัวแบบรวมคำสั่ง จากการทดลองการเพิ่มนี้ไม่เพียง แต่หลีกเลี่ยงการทำลายข้อมูลการฝัง แต่ยังเพิ่มข้อมูลตำแหน่งที่สำคัญ ในกรณีของ RNN เราป้อนคำต่อเนื่องกับ RNN นั่นคือคำที่ -th จะถูกป้อนในขั้นตอนที่ซึ่งช่วยให้แบบจำลองรวมลำดับของคำnn

บทความโดย Jay Alammarอธิบายบทความนี้ด้วยการสร้างภาพข้อมูลที่ยอดเยี่ยม น่าเสียดายที่ตัวอย่างของการเข้ารหัสตำแหน่งไม่ถูกต้องในขณะนี้ (ใช้สำหรับครึ่งแรกของมิติการฝังและสำหรับครึ่งหลังแทนที่จะใช้สำหรับดัชนีแม้แต่และสำหรับดัชนีคี่)sincossincos


1
คุณมีบทความที่ยอดเยี่ยมนี้มุ่งเน้นไปที่การฝังตำแหน่ง: kazemnejad.com/blog/…
Yohan Obadia

6

การเข้ารหัสตำแหน่งเป็นการแสดงค่าของคำและตำแหน่งในประโยคอีกครั้ง (เนื่องจากไม่เหมือนกันในตอนเริ่มต้นที่ปลายหรือตรงกลาง)

แต่คุณต้องคำนึงว่าประโยคอาจมีความยาวใด ๆ ดังนั้นการพูดว่า "X" คำที่สามในประโยค 'ไม่สมเหตุสมผลถ้ามีประโยคยาวแตกต่างกัน: 3 ใน 3 คำเป็นประโยคที่สมบูรณ์ แตกต่างจากที่ 3 ใน 20 คำประโยค

สิ่งที่เข้ารหัสตำแหน่งไม่สามารถที่จะได้รับความช่วยเหลือจากวงจรธรรมชาติของและฟังก์ชั่นข้อมูลการกลับมาของตำแหน่งของคำในประโยคsin(x)cos(x)


2
ขอบคุณ. คุณสามารถอธิบายรายละเอียดเกี่ยวกับวิธีการเข้ารหัสตำแหน่งนี้จะทำอย่างไรกับและ ? sincos
Peyman

1

เพื่อเพิ่มคำตอบอื่น ๆ การใช้งานการอ้างอิงของ OpenAI จะคำนวณในพื้นที่บันทึกตามธรรมชาติ (เพื่อปรับปรุงความแม่นยำฉันคิดว่าไม่แน่ใจว่าพวกเขาสามารถใช้เข้าสู่ระบบฐาน 2 ได้หรือไม่ พวกเขาไม่ได้มากับการเข้ารหัส นี่คือการสร้างตารางการค้นหา PE ที่เขียนใหม่ใน C เป็น for for for loop:

int d_model = 512, max_len = 5000;
double pe[max_len][d_model];

for (int i = 0; i < max_len; i++) {
   for (int k = 0; k < d_model; k = k + 2) {
      double div_term = exp(k * -log(10000.0) / d_model);
      pe[i][k] = sin(i * div_term);
      pe[i][k + 1] = cos(i * div_term);
   }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.