Aktywne Wpisy

Greensy +98
Rozwiązanie na problemy tego świata
źródło: 1000069482
Pobierz#igrzyskabebzonow v6
niestety mam malo czasu pisac podsumowania, ale postaram sie takie zbiorcze z tygiodnia 4 i 5
w skrocie - jest zle
grubasy sa leniwe, tluste i glupie
serio
niestety mam malo czasu pisac podsumowania, ale postaram sie takie zbiorcze z tygiodnia 4 i 5
w skrocie - jest zle
grubasy sa leniwe, tluste i glupie
serio





Mam takie zadanie do wykonania, jestem newbie i zastanawiam sie nad generalnym podejsciem/architektura:
Generowanie textu na podstawie podprzednio widzianych zdan oraz przekazanego kontekstu (slowa kluczowe).
W pierwszym przypadku jak rozumiem, moge zastosowac jakas rekurencyjna warstwe np LSTM, GRU, zmapowac zdania na chary i jako cel ustawic wybor kolejnej litery - zrobiem pare takich.
Ale w jaki sposob moge przekazac konktekst wypowiedzi? Np. uczenie generowania zdan ala Shakespear lub Nietzsche? Zalozmy ze dane wejsciowe bede mial dodatkowo otagowane taka statyczna flaga oznaczajaca autora.
paperwithcode
OpenML
Github
h0 to jest stan początkowy dla komórki rnn. Potem komórka wczytuje po kolei tokeny (czyli zakodowane znaki / wyrazy) i przy każdym zmienia ten stan na kolejny.
Najpierw skup się na tym jak działają LSTM, potem czym jest atencja (xD), a potem jak działa Transformer.
Mam do Ciebie dwa pytania, skoro tak:
1) Dlaczego lepiej jest kodować całe wyrazy niż litery? Generalnie nie mam zbyt dużo danych, ok 20k zdań z tagami opisującymi każde z nich - może powiem totalną głupotę - czy nie lepiej w takim wypadku stosować pojedyncze litery?
2) Dostałem początkowe info
Kodować całe wyrazy jest lepiej po prostu dlatego, że wtedy sekwencja jest o wiele krótsza. Jak napiszesz zdanie "Ala ma kota" to zakodowanie tego wyrazami da Ci sekwencję o długości 3, a znakami 11. I odwrotnie, stworzenie tego zdania przez model będzie wymagało wygenerowania 3 wartości zamiast 11.
Seq2seq to inaczej architektura encoder-decoder, może pod tym hasłem znajdziesz więcej
1) mój problem nie jest klasycznym Seq2Seq -> oglądałem jakiegoś mądrego azjatę na YT i przedstawiał tam różne struktury RNN. Wspomniany wyżej zakłada, że Input jest sekwencyjny, jak w przypadku np. tłumaczenia zdań z angielkiego na polski (w wielkim uproszczeniu jak rozumiem). Powiedział także o modelu One2Many, który
Embeddings to przypisanie każdemu elementowi (w tym wypadku literze albo słowu) wektora n liczb. Można na to patrzeć, jak na współrzędną tego elementu w n-wymiarowej przestrzeni. Na początku, gdy inicjujemy losowo, te elementy są porozrzucane w tej przestrzeni chaotycznie i bez sensu.
W trakcie treningu te współrzędne
(autor, zdanie) -> (następne zdanie)
Jeśli kodujesz całe słowa, to możesz po prostu scalić autora i zdanie w jeden string, tak że słowo reprezentujące autora będzie zawsze na pierwszym miejscu. Więc twój przykład będzie wyglądał
Mój zbiór danych to komentarze do zdjęć - każde zdjęcie jest otagowane kilkoma słowami kluczowymi (np. animal, ecology). Same komentarze są raczej jednozdaniowe i mało skomplikowane (Instagram :P), aczkolwiek problematyczny moze być fakt, że jest w nich dużo emotek (które być może wyfiltruję, jeśli okaże się to zbyt złożony problem
W zasugerowanym przykladzie bez RNN, jak rozumiem, zakladam kodowanie literowe.
Input = array[200], gdzie 1 sa tylko uzywane tagi, np. input[34] = 1, bo ecology tam zakodowalem.
Przepuszczam calosc przez warstw Dense
Jak już zrobisz wszystko tak, że będzie działało i się uczyło, to będziesz mógł eksperymentować. Np zamiast warstwy wyjściowej wsadzić kilka warstw rnn. Potem dodać atencję. Albo zamiast wejścia multi-hot zrobić embedding-bag (zsumowane embeddings). Albo zrobić
PS: Bede mogl sie w przyszlosci jeszcze Cie podpytac o te rnn? Bo prawde mowiac, nadal nie mam pojecia jak to osadzic w tej architekturze (。◕‿‿◕。)
input - one hot encoded tags : [1,1,0,0 ... 0] - dlugosc to 200, od poczatku sa najczesciej uzywane (jako ciekawostka powiem Ci, ze calkiem wysoko w tematach ekologicznych jest