W tej sekcji omawiamy kilka sposobów uzyskiwania wektorów zanurzeniowych oraz sposób przekształcania wektorów zanurzeniowych statycznych w wektory zanurzeniowe kontekstowe.
Techniki redukcji wymiarowości
Istnieje wiele technik matematycznych, które umożliwiają odwzorowanie ważnych struktur w wielowymiarowej przestrzeni w przestrzeni o małej wymiarowości. Teoretycznie można użyć dowolnej z tych technik do utworzenia wbudowanego systemu uczenia maszynowego.
Na przykład do utworzenia zaszyfrowanych słów użyto analizy głównych składowych (PCA). Na podstawie zbioru wystąpień, takich jak wektory treści słownej, PCA próbuje znaleźć silnie skorelowane wymiary, które można zredukować do jednego wymiaru.
szkolenie wbudowania w ramach sieci neuronowej;
Możesz utworzyć kodowanie podczas trenowania sieci neuronowej do wykonania zadania docelowego. Dzięki temu możesz uzyskać kodowanie dobrze dopasowane do Twojego konkretnego systemu, ale może to zająć więcej czasu niż trenowanie go osobno.
Ogólnie w swojej sieci neuronowej możesz utworzyć warstwę ukrytą o rozmiarze d, która jest wyznaczona jako warstwa zanurzeniowa, gdzie d reprezentuje zarówno liczbę węzłów w warstwie ukrytej, jak i liczbę wymiarów w przestrzeni zanurzeniowej. Ten poziom zanurzania można łączyć z dowolnymi innymi cechami i warstwami ukrytymi. Podobnie jak w przypadku każdej głębokiej sieci neuronowej, parametry będą optymalizowane podczas trenowania, aby zminimalizować straty na węzłach warstwy wyjściowej sieci.
Wracając do przykładu rekomendacji dotyczących jedzenia, naszym celem jest przewidywanie nowych posiłków, które spodobają się użytkownikowi, na podstawie jego obecnych ulubionych posiłków. Po pierwsze, możemy zebrać dodatkowe dane o 5 ulubionych produktach spożywczych użytkowników. Następnie możemy modelować to zadanie jako problem uczenia nadzorowanego. Cztery z tych 5 najlepszych produktów traktujemy jako dane o cechach, a piąty losowo wybrany produkt traktujemy jako pozytywną etykietę, którą nasz model ma przewidzieć. Prognozy modelu optymalizujemy za pomocą funkcji utraty softmax.
Podczas trenowania model sieci neuronowej uczy się optymalnych wag dla węzłów na pierwszej warstwie ukrytej, która służy jako warstwa wstawiania. Jeśli na przykład model zawiera 3 węzły w pierwszym ukrytym warstwie, może określić, że 3 najbardziej istotne wymiary produktów spożywczych to: „sandwichness”, „dessertness” i „liquidness”. Rysunek 12 przedstawia wartość wejściową „hot dog” zakodowaną w postaci wektora trójwymiarowego.
![Rysunek 12. Sieć neuronowa do kodowania hot doga za pomocą kodowania 1-hot. Pierwszym poziomem jest
poziom wejściowy z 5 węzłami, z których każdy jest opatrzony ikoną potrawy, którą reprezentuje (barszcz, hot dog, sałata, ..., shawarma). Te węzły mają odpowiednio wartości [0, 1, 0, ..., 0], co odpowiada kodowaniu „hot dog” w formie wektora jednowymiarowego. Warstwa wejściowa jest połączona z warstwą embeddingu z 3 węzłami, której węzły mają odpowiednio wartości 2,98, -0, 75 i 0. Warstwa embeddingu jest połączona z 5-węzłową warstwą ukrytą, która jest następnie połączona z 5-węzłową warstwą wyjściową.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?authuser=6&hl=pl)
hot dog
podawane jako dane wejściowe do głębokiej sieci neuronowej. Warstwa embeddingu przekształca kodowanie one-hot w 3-wymiarowy wektor embeddingu:[2.98, -0.75, 0]
.
W trakcie trenowania wagi warstwy embeddingu są optymalizowane, aby wektory embeddingu w przypadku podobnych przykładów były bliżej siebie. Jak już wspomnieliśmy, wymiary wybierane przez model do utworzenia wektorów zastępczych prawdopodobnie nie będą tak intuicyjne ani zrozumiałe jak w tym przykładzie.
Współrzędne kontekstowe
Jednym z ograniczeń statycznych wektorów zanurzania jest to, że słowa mogą mieć różne znaczenie w zależności od kontekstu.word2vec
„Yeah” oznacza jedno, ale przeciwieństwo w wyrażeniu „Yeah, right”. „Post” może oznaczać „pocztę”, „wysłać pocztą”, „element mocujący kolczyka”, „punkt kontrolny na mecie wyścigu konnego”, „postprodukcję”, „filar”, „wywieszenie ogłoszenia” lub „po”, między innymi.
Jednak w przypadku statycznych zanurzeń każde słowo jest reprezentowane przez pojedynczy punkt w przestrzeni wektorowej, nawet jeśli może ono mieć różne znaczenia.
W poprzednim ćwiczeniu poznaliśmy ograniczenia statycznych zasobów danych w przypadku słowa pomarańcza, które może oznaczać kolor lub rodzaj owocu. Przy użyciu tylko jednego stałego zakodowania pomarańcza będzie zawsze bliżej innych kolorów niż soku, jeśli trenowany zbiór danych to word2vec
.
Aby rozwiązać ten problem, opracowano kontekstowe kody zanurzeniowe. Umieszczanie w kontekście umożliwia reprezentowanie słowa za pomocą wielu wektorów, które zawierają informacje o otaczających słowach, a także o samym słowie. Pomarańczowy ma inną wartość embeddingu dla każdego niepowtarzalnego zdania zawierającego słowo w zbiorze danych.
Niektóre metody tworzenia kontekstowych wektorów zanurzonych, np. ELMo, wykorzystują statyczny wektor zanurzony przykładu, np. wektor word2vec
słowa w zdani, i przekształcają go za pomocą funkcji, która uwzględnia informacje o otaczających go słowach. Spowoduje to utworzenie kontekstowego osadzenia.
Szczegóły dotyczące kontekstowych wektorów zastępczych
- W przypadku modeli ELMo jest ona agregowana z embeddingami pochodzącymi z innych warstw, które kodują odczyty zdania od początku do końca i od końca do początku.
- Modele BERT maskują część sekwencji, którą model przyjmuje jako dane wejściowe.
- Modele transformacyjne korzystają z poziomu samouczenia, aby nadać odpowiednią wagę poszczególnym słowom w sekwencji. Dodają też odpowiednią kolumnę z tabeli macierzy embeddingów pozycjonowania (patrz kodowanie pozycjonowania) do każdego wcześniej wyuczonego embeddingu tokena, element po elemencie, aby wygenerować embedding wejściowy, który jest podawany do reszty modelu w celu wnioskowania. Ten embedding wejściowy, unikalny dla każdej odrębnej sekwencji tekstowej, jest kontekstowym embeddingiem.
Opisane powyżej modele to modele językowe, ale kontekstowe embeddingi są przydatne w innych zadaniach generatywnych, np. w przypadku obrazów. Umieszczenie w uczeniu głębokim wartości RGB pikseli na zdjęciu konia, w połączeniu z macierzą pozycyjną reprezentującą każdy piksel i nieco kodowania sąsiednich pikseli, tworzy kontekstowe zanurzone modele, które zawierają więcej informacji niż oryginalne statyczne zanurzone modele z wartościami RGB.