Przejdź do głównej treści

Wyjaśnienie kodowania pozycyjnego: jak dać transformatorom poczucie porządku

Zrozum, jak transformatory śledzą kolejność słów, porównaj kodowania sinusoidalne, uczone, względne, RoPE i ALiBi oraz zobacz implementację w PyTorchu.
Zaktualizowano 14 sie 2026  · 14 min Czytać

Eksploruj z AI

ChatGPTClaudePerplexity

Wyobraź sobie czytanie powieści, w której każde słowo na stronie jest przemieszane w losowej kolejności. Nawet jeśli rozumiesz każde pojedyncze słowo, fabuła całkowicie się gubi, bo to kolejność słów nadaje znaczenie. Gdy inżynierowie zaczęli projektować duże modele językowe (LLM), stanęli przed podobną przeszkodą. Jak nauczyć model rozumieć sekwencję słów, skoro jego główny mechanizm przetwarza wszystko równolegle?

Tu wkracza kodowanie pozycyjne. W tym artykule zajrzymy do wnętrza kodowania pozycyjnego i tego, jak nadaje ono transformatorom poczucie porządku. Prześledzimy jego ewolucję od oryginalnych formuł sinusoidalnych po nowoczesne osadzenia obrotowe oraz to, jak zaimplementować je w kolejnym projekcie uczenia maszynowego. Jeśli dopiero zaczynasz z tą architekturą, polecam nasz przewodnik jak działają transformatory.

Czym jest kodowanie pozycyjne?

Kodowanie pozycyjne to technika, dzięki której sieci neuronowe rozumieją sekwencyjny porządek danych wejściowych. Działa jak zestaw współrzędnych reprezentujących względną lub bezwzględną pozycję tokena i jest łączone ze standardową reprezentacją danych.

Zanim tekst trafi do sieci neuronowej, słowa są konwertowane na ciągłe formy liczbowe zwane osadzeniami. Standardowe osadzenia uchwytują jednak tylko znaczenie semantyczne: nie mówią nic o pozycji słowa w tekście. Dokładnie, jak to działa, poznasz w naszym kursie Wprowadzenie do osadzeń z OpenAI API.

Kodowanie pozycyjne to dodatkowa warstwa matematyczna dodawana bezpośrednio do tych osadzeń tokenów. Łącząc reprezentację semantyczną ze znacznikiem pozycji, model transformera potrafi odróżniać identyczne słowa występujące w różnych częściach zdania.

Problem niezmienniczości względem permutacji

Dane sekwencyjne silnie zależą od kolejności. W języku naturalnym zdanie „pies ugryzł człowieka” ma zupełnie inne znaczenie niż „człowiek ugryzł psa”.

Problem niezmienniczości względem permutacji w mechanizmie self-attention

Historycznie rekurencyjne sieci neuronowe (RNN) i LSTM radziły sobie z tym w sposób wrodzony. Przetwarzały tokeny sekwencyjnie, czyli sieć matematycznie „połykała” drugie słowo dopiero po zakończeniu pierwszego. Podobnie splotowe sieci neuronowe (CNN) przetwarzają dane za pomocą lokalnych okien przesuwających się, które wychwytują ułożenie pikseli lub sąsiadujących słów.

Transformatory całkowicie porzucają przetwarzanie sekwencyjne. Przetwarzają wszystkie tokeny równolegle. Rdzeniem transformera jest mechanizm self‑attention, który oblicza parowe wyniki relacji pomiędzy każdym tokenem w sekwencji jednocześnie. Matematycznie self‑attention jest niezmienniczy względem permutacji. Jeśli przetasujesz sekwencję wejściową, mechanizm self‑attention zwróci dokładnie te same wagi uwagi dla par słów.

Bez mechanizmu zachowującego kolejność model całkowicie traci informację sekwencyjną. Znaczenie semantyczne zapada się do nieuporządkowanego worka słów. Kodowanie pozycyjne rozwiązuje problem niezmienniczości, wymuszając modyfikację wektorów wejściowych tak, by mechanizm self‑attention rejestrował tokeny na pozycji 1 inaczej niż tokeny na pozycji 10.

Jak działa kodowanie pozycyjne?

Kodowanie pozycyjne działa poprzez matematyczną modyfikację wektorów tokenów wejściowych, zanim trafią do warstw self‑attention. Dzięki temu model oblicza relacje na podstawie zarówno znaczenia, jak i pozycji.

Zbudujmy intuicję. Wyobraź sobie standardowe osadzenia tokenów jako identyfikatory na konferencji. Identyfikator mówi, kim jest osoba, ale to, gdzie siedzi, nie zmienia tego, kim jest ani jej relacji z innymi. Kodowanie pozycyjne to jak dodanie numeru miejsca do identyfikatora. Po połączeniu wiesz zarówno, kim jest osoba, jak i gdzie siedzi. To dodaje kontekst do potencjalnych interakcji.

W transformatorze to połączenie zazwyczaj realizuje się przez proste dodawanie element po elemencie. Model bierze wektor osadzenia semantycznego słowa i dodaje do niego wektor kodowania pozycyjnego o dokładnie tym samym rozmiarze. Powstały wektor zawiera subtelną modulację, którą kolejne warstwy uczą się interpretować jako współrzędne przestrzenne.

Przykładowe obliczenie

Spójrzmy na uproszczony przykład. Załóżmy miniaturową przestrzeń osadzeń o wymiarze 4. Chcemy przetworzyć słowo „DataCamp” znajdujące się na pozycji 0 w sekwencji.

  1. Osadzenie semantyczne: Sieć pobiera osadzenie dla „DataCamp”, które może wyglądać tak: [0.51, -0.22, 0.88, 0.14].
  2. Kodowanie pozycyjne: Formuła pozycyjna generuje wektor współrzędnych dla pozycji 0. Załóżmy, że oblicza [0.00, 1.00, 0.00, 1.00].
  3. Połączenie: Dodajemy oba wektory element po elemencie.
  4. Końcowe wejście: Przekaz w przód otrzymuje [0.51, 0.78, 0.88, 1.14].

Nawet jeśli ten sam token „DataCamp” pojawi się później na pozycji 5, wektor kodowania pozycyjnego będzie inny. W konsekwencji końcowy wektor wejściowy będzie wyglądał dla mechanizmu self‑attention zupełnie inaczej.

Sinusoidalne kodowanie pozycyjne

Oryginalna praca „Attention Is All You Need” wprowadziła błyskotliwy sposób generowania wektorów pozycyjnych z wykorzystaniem podstawowej trygonometrii. Podejście to nie wymaga żadnych wag uczenia i opiera się wyłącznie na stałych funkcjach matematycznych.

Podstawa matematyczna

Sinusoidalne kodowanie pozycyjne używa funkcji sinus i cosinus o różnych częstotliwościach do zakodowania informacji o położeniu. Oryginalna formuła mówi, że dla danej pozycji (pos) i konkretnego indeksu wymiaru (i) wektora osadzeń kodowanie wylicza się następująco:

  • Dla parzystych wymiarów (2i): PE(pos, 2i) = sin(pos / 10000^(2i/dmodel))

  • Dla nieparzystych wymiarów (2i+1): PE(pos, 2i+1) = cos(pos / 10000^(2i/dmodel))

W tej formule dmodel to całkowity rozmiar wektora osadzeń. Wraz z przechodzeniem po wymiarach od indeksu 0 do dmodel długość fali funkcji sinusoidalnych rośnie geometrycznie.

Zalety i własności

Ta geometryczna progresja częstotliwości daje kilka wyraźnych korzyści. 

  1. Wartości sinus i cosinus są ściśle ograniczone do przedziału od -1 do 1. Dzięki temu kodowania pozycyjne nie dominują numerycznie nad osadzeniami semantycznymi.
  2. Funkcje są okresowe. Dzięki trygonometrycznym wzorom dodawania transformacja liniowa może łatwo przedstawić kodowanie pozycji przyszłej (pos + k) jako funkcję bieżącej pozycji (pos). Ta własność naturalnie pozwala modelowi uczyć się względnego kodowania pozycji.
  3. Kodowanie sinusoidalne używa stałych parametrów. Nie wymaga uczonych wag, znacząco redukując narzut pamięci. Ponieważ opiera się na ciągłej funkcji matematycznej, model ma teoretyczną zdolność ekstrapolacji, czyli może mapować współrzędne pozycyjne dla sekwencji dłuższych niż te widziane podczas treningu.

Wizualizacja

Aby lepiej zrozumieć kodowanie sinusoidalne, warto zobaczyć je jako mapę cieplną.

Macierz sinusoidalnego kodowania pozycyjnego

Oś X wizualizacji reprezentuje rozmiar wymiaru osadzeń, a oś Y oznacza pozycję tokena. 

Niższe wymiary po lewej oscylują szybko między wartościami ujemnymi i dodatnimi, co pozwala im rozróżniać pobliskie pozycje tokenów. Wraz ze wzrostem indeksu wymiaru długość fali się wydłuża, a kodowanie zmienia się bardziej stopniowo. Te wymiary uchwytują różnice pozycyjne na większych dystansach.

Dla 50 pozycji pokazanych tutaj wiele wyższych wymiarów wygląda jak niemal jednolite pionowe pasy. Dzieje się tak, ponieważ ich długości fal są na tyle duże, że wartości sinusa pozostają blisko 0, a cosinusa blisko 1 w tej krótkiej sekwencji, a nie odpowiednio 0 i 1. Zatem naprzemienne pasy odzwierciedlają sąsiadujące wymiary sinus–cosinus, a nie prosty kod binarny. W dłuższej sekwencji te wymiary również zaczęłyby zauważalnie się zmieniać.

Wniosek jest taki, że różne częstotliwości dostarczają informacji pozycyjnej na wielu skalach: szybko zmieniające się wymiary uchwytują drobne różnice między sąsiednimi tokenami, a wolno zmieniające się śledzą szersze położenie w dłuższych sekwencjach.

Uczone kodowanie pozycyjne

Choć stałe formuły matematyczne są eleganckie, nowoczesne architektury DL często polegają na danych, by nauczyć się optymalnych reprezentacji. Uczone osadzenia pozycyjne przenoszą cały ciężar układu na etap treningu.

Koncepcja i implementacja

Zamiast sztywno ustalać wartości pozycyjne funkcjami sinus i cosinus, uczone osadzenia traktują współrzędne pozycji jako standardowe, uczalne parametry. 

Model inicjalizuje całkowicie pustą macierz osadzeń, w której każdy wiersz odpowiada konkretnej pozycji w sekwencji. Podczas standardowej pętli treningowej wstecznej propagacji sieć aktualizuje te wagi pozycyjne wraz z osadzeniami tokenów semantycznych, by minimalizować ogólną funkcję straty.

Porównawcze zalety

Główną zaletą uczonych osadzeń jest ogromna elastyczność. Mają pełną swobodę uczenia się dokładnie takich reprezentacji pozycyjnych, jakie najlepiej działają dla danego zbioru danych. Architektury takie jak BERT i GPT‑2 spopularyzowały to podejście dzięki wysokiej adaptowalności i dobrym wynikom w zadaniach downstream.

Ograniczenia i wyzwania

Najpoważniejszym ograniczeniem uczonych osadzeń jest twarda granica długości sekwencji. Jeśli model trenowano z maksymalnie 2048 wektorami pozycji, fizycznie nie przetworzy dokumentu o 2049 tokenach. 

To ograniczenie mocno utrudnia ekstrapolację długości i często wymaga kosztownego douczania, by wydłużyć okno kontekstu.

Względne kodowanie pozycyjne

Gdy modele zaczęły obsługiwać dłuższe dokumenty, inżynierowie zauważyli, że bezwzględna pozycja słowa często ma mniejsze znaczenie niż jego odległość względem innych słów.

Przesunięcie koncepcji ku pozycjom względnym

Weźmy frazę „the rapid advancement of AI”. Związek gramatyczny między „advancement” a „AI” pozostaje identyczny, niezależnie czy fraza pojawia się na samym początku dokumentu, czy na samym końcu. Względne kodowanie pozycyjne porzuca bezwzględną siatkę współrzędnych. Zamiast tego skupia się wyłącznie na różnicach odległości między interakcyjnymi tokenami.

Implementacja w mechanizmach uwagi

Aby zaimplementować kodowanie względne, inżynierowie modyfikują bezpośrednio obliczenia wag uwagi, zamiast zmieniać osadzenia wejściowe na początku sieci. 

Podczas obliczania wagi uwagi między macierzą „query” a „key” do operacji dodaje się dodatkowy uczony wyraz biasu reprezentujący względną odległość. Ta modyfikacja gwarantuje niezmienniczość względem przesunięcia w tekście. Głębiej o działaniu tych macierzy przeczytasz w naszym przewodniku po mechanizmie uwagi w LLM.

Praktyczne kompromisy

To podejście daje bardzo dokładne rozumienie kontekstu, ale wprowadza duży narzut obliczeniowy. Liczenie unikalnych macierzy odległości względnych dla każdej głowy uwagi drastycznie zwiększa zużycie pamięci. Komplikuje też wewnętrzne mechanizmy cache’owania używane do przyspieszania generowania tekstu.

Informacja bezwzględna vs względna

Wybór między bezwzględnym a względnym kodowaniem zależy od konkretnego zadania. 

  • Kodowanie bezwzględne działa świetnie, gdy układ przestrzenny jest sztywny, a priorytetem jest szybkie wykonanie. 
  • Kodowanie względne sprawdza się znacznie lepiej w długich zadaniach NLP, gdzie struktura gramatyczna zależy głównie od lokalnych odległości kontekstowych, a nie od bezwzględnych współrzędnych dokumentu.

Rotary Position Embedding (RoPE)

W trwającym dążeniu do udoskonalenia transformatorów badacze wprowadzili Rotary Position Embedding (RoPE). Łączy ono najlepsze własności bezwzględnych i względnych kodowań pozycyjnych i szybko stało się standardem branżowym.

Nowatorskie podejście

RoPE jednoczy bezwzględne położenie i odległości względne za pomocą transformacji obrotowych. Zamiast dodawać wektor do osadzeń albo duże biasy do wag uwagi, RoPE odwzorowuje wektor osadzenia na płaszczyznę zespoloną i obraca go o określony kąt. Wielkość tego kąta jest ściśle wyznaczona przez bezwzględną pozycję tokena w sekwencji.

Kodowanie pozycyjne RoPE

Wgląd matematyczny

W przestrzeni 2D rotację stosuje się za pomocą standardowej macierzy obrotu 2D. Dla wyższych wymiarów RoPE po prostu grupuje wymiary osadzeń w pary i stosuje unikalne obroty 2D do każdej pary na podstawie indeksu pozycji bezwzględnej.

Dzięki geometrycznym własnościom macierzy obrotu iloczyn skalarny obróconego wektora zapytania i obróconego wektora klucza zależy wyłącznie od ich względnego kąta. W ten sposób RoPE wykorzystuje odwzorowanie pozycji bezwzględnej, by naturalnie zakodować odległość względną między tokenami.

RoPE vs kodowanie sinusoidalne

Jak pokazano na grafice powyżej, kodowanie sinusoidalne zmienia długość i kierunek oryginalnego wektora. RoPE zamiast tego zachowuje informację o długości i potrzebuje jedynie kąta między dwiema pozycjami, aby zrozumieć ich względną odległość.

Attention With Linear Biases (ALiBi)

Podczas gdy RoPE opiera się na złożonej matematyce obrotów, inna technika o nazwie Attention with Linear Biases (ALiBi) obrała zupełnie inny kierunek.

Prostota i wydajność

ALiBi całkowicie porzuca pomysł dodawania informacji pozycyjnej do początkowych osadzeń tokenów. Osadzenia słów trafiają do transformera całkowicie nienaruszone. 

Zamiast tego ALiBi ingeruje w ostatnim kroku obliczania uwagi. Tuż przed przepuszczeniem logitów przez funkcję softmax, ALiBi odejmuje statyczną karę proporcjonalną do odległości między dwoma tokenami. Im dalej od siebie są dwa słowa, tym większą karę odejmuje się od ich wyniku uwagi.

Wydajność

Ta metoda jest bardzo prosta w implementacji i wydajna. Jej największą zaletą jest wyjątkowa skuteczność w zadaniach ekstrapolacji długości. Model trenowany z ALiBi na sekwencjach 1024 tokenów może bez trudu generować spójny tekst na sekwencjach dwukrotnie dłuższych, bez awarii. 

Osobom zainteresowanym innymi zaawansowanymi technikami szybkiego generowania tekstu i wnioskowania polecamy nasz przewodnik po dekodowaniu spekulatywnym.

Kiedy używać którego kodowania pozycyjnego

Zacznij od tego, co budujesz, a potem dobierz metodę, która pasuje — czasem jedną, czasem kilka.

  • Chcesz prostą bazę bez parametrów: sinusoidalne (stałe formuły, nic do trenowania).
  • Twoja długość sekwencji jest stała i chcesz maksymalnej wydajności na konkretnym zbiorze: uczone.
  • Musisz obsłużyć dłuższe sekwencje niż na treningu: RoPE to najsilniejszy wybór wśród technik zdolnych do ekstrapolacji.
  • Gramatyka zależy od odległości między tokenami, a nie ich bezwzględnej pozycji: względne lub RoPE.
  • Budujesz nowoczesny, uniwersalny LLM: RoPE.
  • Ekstrapolacja długości to absolutny priorytet i chcesz najprostszej implementacji: ALiBi.
  • Chcesz korzyści pozycji względnej bez narzutu pamięci i cache’owania: RoPE (koding względny daje korzyści, ale jest droższy).

Praktyczna implementacja i kwestie architektoniczne

Przeskok od teorii do praktyki wymaga zrozumienia, jak integrować kodowania pozycyjne w realnych bazach kodu i radzić sobie z ograniczeniami architektury.

Implementacja kodowania pozycyjnego w transformatorach

Aby dodać kodowania pozycyjne do transformera w ramach takich jak PyTorch, deweloperzy zwykle tworzą dedykowany moduł. Moduł generuje macierz kodowania raz i rejestruje ją jako bufor, aby nie była przypadkowo aktualizowana podczas wstecznej propagacji. 

Poniżej standardowa praktyczna implementacja kroku forward z sinusoidalnymi kodowaniami. Kodowania są wyliczane raz z formuł sinus i cosinus i nigdy nie zmieniają się podczas treningu, dlatego przechowuje się je w buforze zamiast jako parametry uczone (i dlatego nie zwiększają kosztu treningu).

import torch
import torch.nn as nn
import math

class PositionalEncoding(nn.Module):
    def __init__(self, d_model: int, max_len: int = 5000):
        super().__init__()
        
        pe = torch.zeros(max_len, d_model)
        position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
        
        # Calculate the division term for frequencies
        div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
        
        # Apply sine to even indices and cosine to odd indices
        pe[:, 0::2] = torch.sin(position * div_term)
        pe[:, 1::2] = torch.cos(position * div_term)
        
        pe = pe.unsqueeze(0)
        
        # Register as a buffer
        self.register_buffer('pe', pe)

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        # Add positional encoding directly to the input embeddings
        seq_len = x.size(1)
        x = x + self.pe[:, :seq_len, :]
        return x

W __init__ moduł wstępnie wylicza tablicę kodowań do max_len pozycji: position to kolumna indeksów (0, 1, 2, …), a div_term to częstotliwości, sprowadzające się do 1 / 10000^(2i/d_model), więc niższe wymiary dostają szybkie fale, a wyższe wolne. 

Zastosowanie sin do wymiarów parzystych (0::2) i cos do nieparzystych (1::2) wypełnia tablicę. Następnie forward robi jedyną pracę w czasie wykonania: przycina tablicę do długości sekwencji wejścia i dodaje ją do osadzeń tokenów element po elemencie. Zauważ, że moduł zakłada kształt batch‑first [batch, seq_len, d_model], dlatego forward tnie po wymiarze 1.

Bias pozycyjny i zjawisko „zagubienia w środku”

Niezamierzonym skutkiem mapowania długich sekwencji bywa bias pozycyjny. Często objawia się to jako zjawisko „lost‑in‑the‑middle”. Podczas przetwarzania ogromnych dokumentów modele językowe mają tendencję do lepszego zapamiętywania faktów z samego początku lub końca promptu niż z części środkowej. Brzmi znajomo, bo ludzka pamięć działa podobnie (przynajmniej u mnie; nie mów, że tylko ja lepiej pamiętam początek i koniec książek niż resztę!).

Teoria mówi, że dzieje się tak, ponieważ mechanizm uwagi jest przytłoczony nieistotnym kontekstem i naturalnie kotwiczy się do wczesnych tokenów (które nadają instrukcję) oraz najnowszych tokenów (które są najświeższe w pamięci). Aby złagodzić ten bias, deweloperzy sięgają po zaawansowane strategie dzielenia na segmenty i systemy wyszukiwania semantycznego.

Kodowanie pozycyjne dla domen specjalistycznych

Transformatory nie są już ograniczone wyłącznie do tekstu. Koncepcja kodowania pozycyjnego szybko adaptuje się do różnych typów danych w wielu domenach.

W transformerach wizji obrazy dzieli się na siatki łatek. Proste 1D kodowanie sekwencji nie uchwytuje bliskości przestrzennej w 2D. Dlatego modele wizji często używają 2D uczonych kodowań pozycyjnych, które uwzględniają zarówno współrzędne X, jak i Y łatki obrazu. 

Istnieją podobne adaptacje dla ciągłych szeregów czasowych, gdzie specjalistyczne kodowania śledzą odległości czasowe, sezonowość i znaczniki czasu.

Dalsze badania nad kodowaniem pozycyjnym

Wraz z wyścigiem o większe okna kontekstu ulepszanie sposobu, w jaki modele rozumieją pozycję, pozostaje bardzo aktywnym i kluczowym obszarem badań ML.

Ekstrapolacja długości i rozszerzanie kontekstu

Dzisiejsi użytkownicy oczekują ogromnych okien kontekstu, by jednorazowo przetwarzać całe bazy kodu czy serie powieści. Ponieważ trenowanie modeli od zera na ogromnych długościach sekwencji jest zbyt kosztowne, badacze polegają na technikach rozszerzania kontekstu. 

Metody takie jak interpolacja pozycyjna matematycznie „ściskają” współrzędne pozycyjne znacznie dłuższej sekwencji do granic oryginalnej długości treningowej. Metody adaptacyjne, jak YaRN, dynamicznie dostosowują częstotliwość obrotową parametrów RoPE, by płynnie „rozciągnąć” rozumienie dystansu przez model.

Transformatory bez jawnego kodowania pozycji

Co zaskakujące, niektóre badania sugerują, że jawne kodowanie pozycji nie zawsze jest bezwzględnie konieczne. W modelach dekoder‑only z kauzalnością standardowe maskowanie kauzalne (mechanizm zmuszający tokeny do patrzenia wyłącznie wstecz) samo w sobie ujawnia informację o uporządkowaniu czasowym. 

Oznacza to, że być może da się implicytnie nauczyć reguł pozycyjnych wyłącznie z maski kauzalnej poprzez odpowiednie strojenie temperatury i poprawki architektoniczne.

Wyzwania i kierunki rozwoju

Ostateczna granica to trwały kompromis między ścisłą adaptacją (optymalizacja pod konkretną długość sekwencji) a idealną ekstrapolacją (umożliwiającą nieskończone uogólnianie). 

Nowe kierunki badań koncentrują się na kodowaniu multimodalnym. Celem dla kolejnej generacji modeli AI jest tworzenie uniwersalnych reprezentacji pozycyjnych łączących współrzędne wideo 3D z tekstem i dźwiękiem.

Wnioski

Kodowanie pozycyjne łączy przetwarzanie równoległe ze zrozumieniem sekwencyjnym i pozwala tworzyć modele, które przetwarzają duże ilości danych w kolejności. Przeanalizowaliśmy, jak uczone i względne osadzenia dają ogromną elastyczność oraz jak nowoczesne innowacje, takie jak RoPE i ALiBi, łączą elegancję matematyczną z wydajnością obliczeniową. 

Gdy okna kontekstu rozszerzają się z kilku tysięcy tokenów do milionów, prosta matematyczna czynność wskazania sieci neuronowej, gdzie co się znajduje, pozostanie w samym sercu projektowania modeli. 

Jeśli chcesz wejść głębiej i zdobyć praktyczne doświadczenie, polecam ścieżkę umiejętności Developing Large Language Models.

FAQ dotyczące kodowania pozycyjnego

Czym jest kodowanie pozycyjne w uczeniu maszynowym?

Kodowanie pozycyjne to technika matematyczna używana do przekazywania sieciom neuronowym informacji o kolejności danych w sekwencji.

Dlaczego modele transformatorowe potrzebują kodowania pozycyjnego?

W przeciwieństwie do starszych rekurencyjnych sieci neuronowych, które przetwarzają dane krok po kroku, transformatory przetwarzają wszystko równocześnie za pomocą mechanizmu self‑attention. Ponieważ self‑attention jest z natury niezmienniczy względem permutacji, traktuje wejście jak nieuporządkowany worek słów. Kodowanie pozycyjne rozwiązuje to, wstrzykując sekwencyjne współrzędne bezpośrednio do danych przed przetwarzaniem przez model.

Jaka jest różnica między bezwzględnym a względnym kodowaniem pozycyjnym?

Bezwzględne kodowanie pozycyjne przypisuje tokenowi stałą współrzędną na podstawie jego dokładnego indeksu w sekwencji. Względne kodowanie pozycyjne ignoruje dokładną lokalizację na siatce i zamiast tego oblicza odległość między dwoma tokenami, skupiając się wyłącznie na ich przesunięciu kontekstowym.

Czym jest Rotary Position Embedding (RoPE)?

RoPE to szeroko stosowana metoda kodowania, która odwzorowuje osadzenia tokenów na płaszczyznę zespoloną i obraca je o kąt wyznaczony przez bezwzględną pozycję. Gdy model oblicza wagi uwagi, relacja między dwoma obróconymi wektorami zależy wyłącznie od ich względnej odległości.

Czym są uczone osadzenia pozycyjne?

Zamiast używać stałych formuł matematycznych jak sinus i cosinus, uczone osadzenia pozycyjne traktują współrzędne przestrzenne jako wagi uczalne. Model inicjalizuje pustą macierz pozycji i aktualizuje te współrzędne podczas treningu, aby nauczyć się optymalnych reprezentacji przestrzennych dla konkretnego zbioru danych.

Tematy

Najlepsze kursy o transformatorach

Track

Tworzenie dużych modeli językowych

16 godz.
Naucz się tworzyć duże modele językowe (LLM) z użyciem PyTorch i Hugging Face, korzystając z najnowszych technik deep learningu i NLP.
Zobacz szczegółyRight Arrow
Rozpocznij Kurs
Zobacz więcejRight Arrow