קידוד מיקומי

term_id: positional_encoding

Category: basic_concepts

Definition

מכיוון שטרנספורמרים מעבדים את כל האסימונים במקביל ולא ברצף כמו ב-RNNs, חסר להם ידע מובנה בסדר האסימונים. קידוד מיקומי מוסיף וקטורים ספציפיים להטמעות הקלט כדי לספק מידע זה.

Summary

טכניקה המחדירה מידע על המיקום היחסי או המוחלט של אסימונים ברצף לתוך מודלי טרנספורמר.

Key Concepts

  • סדר רצפי
  • התעניינות עצמית
  • פונקציות סינוסואידליות
  • הטמעת אסימונים

Use Cases

  • תרגום מכונה
  • סיכום טקסט
  • מודלי שפה

Code Example

1
2
3
4
5
6
7
8
9
import torch
import math
def get_positional_encoding(seq_len, d_model):
    pe = torch.zeros(seq_len, d_model)
    position = torch.arange(0, seq_len, dtype=torch.float).unsqueeze(1)
    div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
    pe[:, 0::2] = torch.sin(position * div_term)
    pe[:, 1::2] = torch.cos(position * div_term)
    return pe.unsqueeze(0)