ZTSI KOLOS PDF
Document Details
Uploaded by SophisticatedSalamander3310
Tags
Summary
This document provides notes on image segmentation, a crucial concept in computer vision and artificial intelligence. It explains different types of segmentation, architectures like U-Net, and details the process of image segmentation. It also touches on object detection algorithms like R-CNN, Faster R-CNN, and Mask R-CNN, and discusses concepts such as Intersection over Union (IoU) and Non-maximum suppression (NMS).
Full Transcript
Segmentacja Segmentacja = podział obrazu na regiony/segmenty (idk) Segmentacja semantyczna = klasyfikacja każdego piksela obrazka Segmentacja obiektów/instancji = segmentacja + oddzielanie osobnych obiektów tej samej klasy klasy są z góry zadane zwykle jest kl...
Segmentacja Segmentacja = podział obrazu na regiony/segmenty (idk) Segmentacja semantyczna = klasyfikacja każdego piksela obrazka Segmentacja obiektów/instancji = segmentacja + oddzielanie osobnych obiektów tej samej klasy klasy są z góry zadane zwykle jest klasa "tło" np. jeśli wejściowy obrazek jest rozmiaru 3 x 800 x 600 i mamy 5 klas to wyjście jest rozmiaru 5 x 800 x 600 Wejście: 3 × H × W (3 kanały: RGB). Wyjście: K × H × W (K to liczba klas, np. 5). Każdy kanał wyjściowy odpowiada jednej klasie, a wartości reprezentują prawdopodobieństwo przynależności piksela do tej klasy. funkcja straty entropia krzyżowa lub dice loss U-Net to architektura sieci neuronowej zaprojektowana specjalnie do segmentacji obrazów, szczególnie w zadaniach związanych z danymi medycznymi, ale znalazła również zastosowanie w innych dziedzinach. Oto główne informacje, które możesz dodać: 1. Architektura: U-Net ma kształt litery U: Część kontrakcyjna (downsampling): ekstrakcja cech za pomocą konwolucji i max pooling. Część ekspansywna (upsampling): rekonstrukcja obrazu z użyciem transponowanych splotów i łączenia z cechami z części kontrakcyjnej. 2. Skip Connections: - wiedziec ze skip connections sluza temu zeby model nie stracil szczegolow 3. Symetria: Liczba warstw w części kontrakcyjnej i ekspansywnej jest taka sama. 4. Zalety: Dokładna segmentacja nawet przy małych zbiorach danych. Radzi sobie dobrze z obrazami o różnych skalach, np. w medycynie. 5. Wyjście: Tensor o wymiarach K × H × W, gdzie: - K – liczba klas, - H – wysokość obrazu, - W – szerokość obrazu. Ważne czym sie rozni sementyczna od instanciji a wejsciu obrazek -> na wyjsciu ksztalt obrazka x klasy architekture uneta wiedziec ze skip connections sluza temu zeby model nie stracil szczegolow ze jest tam koder i dekoder Segmentacja Semantyczna Funkcja Straty: skoro to klasyfikacja pikseli to taka sama jak w klasyfikacji! tj. binarna entropia krzyżowa uśredniamy straty z poszczególnych pikseli jakość modelu w segmentacji semantycznej: % poprawnie sklasyfikowanych pikseli (iou - mozna ale ludzie tego nie robia wiec w sumie irrelevant) jakiego rozmiaru jest wyjście u-neta gdzie 600x200x3 i 12 klas ODP: 12x600x200 Segmentacja obiektów = segmentacja + oddzielanie osobnych obiektów tej samej klasy Robi się to na dwa sposoby: 2 sposoby: unet + postprocessing segment anything segment anything 2 Segmentacji nie można wykonywać modelami, które: Sieci w pełni połączone (Feedforward Neural Networks) – brak analizy lokalnych cech obrazu. Rekurencyjne sieci neuronowe (RNN) – przystosowane do danych sekwencyjnych, nie przestrzennych. Modele klasyfikacji obrazów (np. VGG, AlexNet) – klasyfikują cały obraz, a nie piksele. Detekcja model detekcyjny zwraca współrzędne ramki (kodowane przez 4 liczby) oraz co znalazł i jego prawdopodobieństwo, lista/wektor algorytmy 2-krokowe R-CNN, Fast RCNN, FASTER RCNN, Mask RCNN i 1-krokowe YOLO 2 Step: proponujemy ramki i potem klasyfikujemy (wolniejsze, dokładniejsze) | R-CNN, Fast RCNN, FASTER RCNN, Mask RCNN 1 Step: ramki i klasyfikacja w 1 kroku (szybsze, mniej dokładne) | YOLO Intersection over Union (IoU) to miara nakładania się dwóch obszarów Zakres wartości IoU: Minimalna wartość: 0 (brak nakładania się obszarów). Maksymalna wartość: 1 (całkowite nakładanie się obszarów). Postprocessing - NMS - Non-maximum suppression Jak działa: Dla wszystkich przewidzianych regionów (bounding box'ów) wybieramy ten z najlepszym prawdopodieństwem Usuwamy wszystkie inne regiony, które mają duże pokrycie (IoU) z tym wybranym, powtarzamy, aż wszystkie zostaną przetworzone. Polega na: wybraniu przewidywania z najwyższym score (pewnością) i usunięciu pozostałych przewidywań, które mają duży stopień nakładania się (IoU). Fast R-CNN Weź propozycje ramek z zewnątrz, Przepuść obrazek i ramki przez warstwy splotowe sieci, Sklasyfikuj każdą ramkę na podstawie takiej reprezentacji, Dodatkowo, popraw współrzędne ramek przy pomocy głowy regresyjnej Wady: Trzeba skądś wziąć propozycje ramek, Klasyfikator nie widzi kontekstu reszty obrazka Faster R-CNN Przepuść obrazek przez warstwy splotowe sieci, Wygeneruj ramki na podstawie takiej reprezentacji, Sklasyfikuj każdą ramkę, Dodatkowo, popraw współrzędne ramek przy pomocy głowy regresyjnej początkowe propozycje ramek: Jedź przesuwnym oknem po reprezentacji, Dla każdego położenia sprawdź kilka wielkości i kształtów ramek (w oryginale 3 wielkości x 3 kształty) Mask R-CNN Faster R-CNN z dodatkową głową do segmentacji obiektów, lepsza detekcja niż Faster R-CNN Faster R-CNN i Mask R-CNN Wady: Klasyfikator nie widzi kontekstu reszty obrazka YOLO - szypki 1-krokowy Podziel obrazek na S x S kawałków Dla każdego kawałka rozważ B ramek Załóż, że wszystkie B ramek z 1 kawałka jest tej samej kategorii! Każda ramka jest reprezentowana przez 5 liczb - 4 współrzędne ramki + 1 p-stwo, że obiekt rzeczywiście w niej jest Dodatkowo klasyfikuj ramki z kawałka, tj. produkuj wektor długości C dla C klas YOLO to sieć splotowa o S x S x (5 x B + C) wyjściach YOLO a R-CNN 1. YOLO to znacznie prostsza architektura niż modele z rodziny R-CNN 2. YOLO jest szybkie 3. YOLO proponuje tylko S x S x B ramek (w oryginale 98) zamiast ok. 2000 4. YOLO zakłada, że w jednym kawałku obrazka mogą być ramki tylko jednej kategorii, więc słabo sobie radzi: z małymi Funkcja Straty w Detekcji? mamy dwa zadania: regresja położenia ramek oraz klasyfikacja ich zawartości funkcja straty jest sumą straty dla regresji ramek i klasyfikacji ich zawartości Jak mierzymy jakość modelu detekcyjnego? Wybierz poziom IOU, Wybierz klasę obiektów, Jest ileś prawdziwych ramek i ileś predykowanych, każda ze swoim prawdopodobieństwem, Policz precyzję i czułość dla wszystkich progów, z tego policz łączne AP 5. Uśrednij Average Precision (AP) dla wszystkich klas -> Dostajemy mAP Autoenkoder zastosowanie (to niekoniecznie) wszystko jest na slajdach 1. redukcja wymiaru 2. odszumianie danych i wykrywanie anomalii 3. generowanie danych wyjście = wejście (co najmniej jeżeli chodzi o rozmiar) (w środku jest trochę mniej) warstwy kodujące kodują wejście w mniejszej środkowej warstwie warstwy dekodujące dekodują wyjście z mniejszej środkowej warstwy wyjście = wejście, tzn. chcemy nauczyć model identyczności to jest w zasadzie regresja, czyli używamy np. błędu średniokwadratowego kiedy model się nauczy, odrzucamy warstwy dekodujące Dlaczego w enkoderze nie używamy skip connections (a dlaczego w unecie uzywamy skipa) Enkoder ma za zadanie skompresować informację do zwięzłej reprezentacji (tzw. bottleneck). Jego celem jest nauczenie się wydobywania najważniejszych cech z danych wejściowych i zakodowania ich w mniejszej przestrzeni. Gdybyśmy dodali skip connections, pozwoliłyby one "przeciekać" surowym danym do kolejnych warstw, co utrudniłoby enkodowi nauczenie się tej kompresji. W U-Net: Kiedy przechodzimy przez część dekodującą i próbujemy odtworzyć oryginalny rozmiar obrazu, skip connections pozwalają nam zachować detale wysokopoziomowe, które zostały "zgubione" podczas kompresji w enkoderze połączenia "na skróty" między warstwami w autoenkoderze byłyby bez sensu Autoenkoder a U-Net Czym się różni autoenkoder od U-Neta? przeznaczeniem! w U-Necie wyjście ma inną liczbę kanałów niż wejście połączenia "na skróty" między warstwami w autoenkoderze byłyby bez sensu funkcją straty: uczenie z samonadzorem kontra uczenie z nadzorem regresja kontra klasyfikacja (każdego piksela) Autoenkoder Wariacyjny (VAE) wiedzieć że istnieje czym się różni od podstawowego bez wnikania o co chodzi z próbkowaniem Podstawowy autoenkoder uczy się kompresować dane do pewnej ukrytej reprezentacji (latent space), a następnie rekonstruować je z powrotem. VAE natomiast koduje dane jako rozkłady prawdopodobieństwa zamiast pojedynczych punktów. Tworzy to bardziej ciągłą, "gładką" przestrzeń ukrytą, co pozwala na generowanie nowych, sensownych danych poprzez próbkowanie z tej przestrzeni. Ta własność sprawia, że VAE są szczególnie przydatne w zadaniach generatywnych. W standardowym autoenkoderze: ograniczenie związane z przestrzenią ukrytą (latent space). Nie mamy kontroli nad tym, jak enkoder organizuje tę przestrzeń - punkty mogą być rozmieszczone w sposób nieciągły i nieuporządkowany. To oznacza, że między zakodowanymi reprezentacjami danych mogą występować "dziury" - obszary, które nie odpowiadają żadnym sensownym danym. Autoenkoder wariacyjny: wymuszenie określonej struktury na przestrzeni ukrytej. Koduje dane jako rozkłady prawdopodobieństwa i wprowadza regularyzację, która sprawia, że przestrzeń ukryta staje się bardziej ciągła i uporządkowana. Generowanie danych - przy użyciu dekodera możemy wygenerować coś "pomiędzy" dwoma obserwacjami, x1 koduje się na (μx1,σx1), x2 koduje się na (μx2,σx2), to losując z rozkładu N((μx1+μx2)/2, (σx1+σx2)/2) dostajemy z, które po zdekodowaniu będzie wyglądało jak coś między x1 a x2 Regularyzacja: dla tego samego wejścia za każdym razem losujemy inne z Modele Dyskryminacyjne model dyskryminacyjny uczy się P(y0|x) i P(y1|x), czyli rozróżniać psy od kotów, wprost na podstawie cech - w klasycznym uczeniu maszynowym sami wymyślamy cechy - w głębokim uczeniu sieć sobie je wymyśla tak działają wszystkie algorytmy, które do tej pory rozważaliśmy (poza autoenkoderem wariacyjnym) model dyskryminacyjny nie potrzebuje wiedzieć, czym jest pies ani kot dlatego model dyskryminacyjny nie pokaże nam, jak według niego wygląda typowy pies, a jak typowy kot Modele Generatywne model generatywny uczy się, jak wygląda typowy pies, a jak typowy kot kiedy pokazujemy modelowi generatywnemu zdjęcie x, ten odpowiada na pytania: P(x|y0) - "jak bardzo zwierzę na obrazku x przypomina typowego psa" P(x|y1) - "jak bardzo zwierzę na obrazku x przypomina typowego kota" model generatywny łatwo pokaże nam, jak według niego wygląda typowy pies, a jak typowy kot, więc możemy go użyć do generowania zdjęć psów i kotów GAN Generative Adversarial Network Generator -> Fake image -> Dyskryminator: real or fake GAN składa się z dwóch sieci: ○ generator (G) uczy się tworzyć jak najnaturalniej wyglądające obrazki z losowego szumu (!) ○ klasyfikator (D) uczy się odróżniać prawdziwe obrazki od sztucznych G i D "walczą" przeciwko sobie -> Możemy np. myśleć, że: ○ G to fałszerz pieniędzy robiący coraz lepsze podróbki ○ D to policjant coraz lepiej rozpoznający fałszywki GAN - jak trenować trenowanie GAN-ów jest podobno trudne trenujemy GAN-y przy pomocy algorytmu najszybszego spadku Należy trenować generator i klasyfikator naprzemiennie: zamroź generator, wykonaj n kroków trenowania klasyfikatora zamroź klasyfikator, wykonaj m kroków trenowania generatora n i m trzeba dobrze dobrać! Trenowanie klasyfikatora - funkcja straty Co się stanie, gdy za długo będziemy trenować klasyfikator dla bieżącej wersji generatora (za duże n)? D przeuczy się do chwilowej postaci G Trenowanie generatora - funkcja straty Co się stanie, gdy za długo będziemy trenować generator dla bieżącej wersji klasyfikatora (za duże m)? G przeuczy się do modelu stałego generującego pewne x znane przez D! Taka sytuacja w literaturze jest określana jako Helvetica scenario lub mode collapse. Jeśli będziemy uczyć tylko generator to ten zacznie printować zawsze ten sam obrazek z setu: Bez dyskryminatora, który "zmuszałby" generator do tworzenia różnorodnych i realistycznych obrazów, generator wybiera najprostsze rozwiązanie zapewniające niską stratę. To zjawisko nazywane jest "mode collapse". Zastosowania GAN-ów thispersondoesnotexist.com Text-to-image Tekst jest jakoś kodowany jako wektor Wytrenowany model umożliwia "zero-shot learning", tzn. generowanie obrazka dla podpisu, którego model nie widział na treningu. Ogólniej "zero-shot learning" oznacza sytuację, w której model jest w stanie poprawnie sklasyfikować kategorię, której nie widział na treningu Super resolution - funkcja straty - IN -> mały obrazek OUT -> Duży obrazek Po co tu w ogóle klasyfikator? Tylko po to, żeby namawiać generator do generowania bardziej "naturalnych" obrazków! Inpainting - funkcja straty - błąd średniokwadratowy | IN -> obrazek z wycietą częścią | OUT -> wycięta część obrazka Po co tu w ogóle klasyfikator? Błąd średniokwadratowy powoduje, że wystarcza wypełnienie plamą o odpowiednim kolorze, dodanie błędu GAN-owego powoduje, że obrazki wyglądają naturalniej Style transfer - można też prościej NLP - Przetwarzanie języka naturalnego Zastosowania. modelowanie języka podaj najbardziej prawdopodobne kolejne słowo tłumaczenie maszynowe przetłumacz zdanie z języka A na język B analiza wydźwięku (sentymentu) - przykład klasyfikacji tekstu określ wydźwięk zdania (pozytywny/neutralny/negatywny) automatyczne podsumowywanie streść długi tekst do kilku zdań odpowiadanie na pytania odpowiedz na pytanie, np. "dokąd tupta nocą jeż?", "kto jest ojcem Smerfusia?" czatboty nieustrukturyzowane konwersacje (rozrywka, terapia, obsługa klienta) systemy dialogowe dialog zorientowany na wykonanie zadania, np. asystenty głosowe rozpoznawanie mowy napisz, co zostało powiedziane (transkrypcja) Dlaczego NLP może być trudne? polisemia (wieloznaczność) ironia mowa: homofonia kontekst specyfika danego języka niedobór danych, jeśli nie po angielsku Etapy procesu przetwarzania języka naturalnego 1. Tekst, czyli łańcuch znaków, musi zostać najpierw wstępnie oczyszczony i podzielony na jednostki znaczeniowe - tzw. tokeny (mogą być pojedynczymi słowami, częściami słów lub nawet znakami, w zależności od przyjętej metody tokenizacji.) 2. Tekst musi zostać następnie reprezentowany w sposób zrozumiały dla algorytmów. 3. Otrzymawszy zrozumiałą reprezentację tekstu, model może wykonać swoje zadanie, przetwarzając dane wejściowe w odpowiedni sposób. Najprostsze podejście do tokenizacji: podział na spacjach (whitespace tokenization) idealnie nigdy nie będzie, trzeba przyjąć pewne reguły Aktualny trend: subword tokenization → tokenami mogą być fragmenty słów, przykładowe algorytmy: - Byte Pair Encoding (BPE) WordPiece - zamknięty algorytm od Google, istnieje otwarta implementacja od Hugging Face zgadująca oryginalny algorytm SentencePiece - różni się pewnymi szczegółami od BPE (m.in. spacja jako token) tokenizacja subword jest standardem w najnowszych modelach (np. Transformerach) BPE - Byte Pair Encoding potrzebujemy korpusu uczącego zaczynamy od słownika (vocabulary) złożonego z pojedynczych znaków znajdujemy w korpusie najczęściej występującą obok siebie parę znaków i dodajemy nowy token (dwuznakowy) do słownika; zastępujemy nim wszystkie wystąpienia łączonych tokenów w tekście powtarzamy procedurę k razy (poszukując coraz dłuższych tokenów), ostatecznie mamy w słowniku początkowe znaki oraz k innych tokenów, a także reguły tokenizacji (podziału słów na fragmenty) Tokenizacja - algorytm BPE (Byte Pair Encoding) Zanurzanie Tokenów: (word embedding) to proces przekształcania tokenów (słów lub części słów) w wektory liczbowe o ustalonej długości. Te wektory reprezentują znaczenie i kontekst słów w przestrzeni wielowymiarowej, gdzie podobne słowa mają podobne wektory. Na przykład: słowo "kot" może być reprezentowane jako wektor [0.2, -0.5, 0.8,...], a podobne znaczeniowo słowo "pies" jako [0.3, -0.4, 0.7,...]. Wstępna obróbka tekstu (preprocessing) To raczej się nie przyda ale: Stemming: Proste ucinanie końcówek słów do rdzenia (np. "uczenie" -> "ucz"). Szybkie ale mniej dokładne. Lematyzacja: Zamiana słów na ich podstawową formę słownikową (np. "poszedł" -> "iść"). Wykorzystuje analizę morfologiczną, dokładniejsza ale wolniejsza. Stop wordy: Bardzo częste słowa (np. "i", "lub", "jest"), które zwykle usuwa się z tekstu przed analizą, bo nie niosą istotnego znaczenia. przed podziałem na tokeny warto rozważyć oczyszczenie tekstu istnieje wiele możliwości wstępnej obróbki tekstu, zawsze należy wybrać zestaw operacji odpowiedni do rozwiązywanego problemu: usunięcie nadmiarowych spacji, nowych linii itd. usunięcie interpunkcji → czasem warto ją jednak zostawić sprowadzenie do małych liter (case folding) → jw. usunięcie “stałych fragmentów” tekstu (np. tagów HTML) Segmentacja Tekstu: Kolejny krok w preprocessingu. najprostsze podejście: podział na kropkach, znakach zapytania i wykrzyknikach ale nie zawsze kropka oznacza koniec zdania algorytm Punkt (Kiss & Strunk, 2006): tak działa sent_tokenize w NLTK Preprocessing - Podsumowanie: tekst należy podzielić na jednostki znaczeniowe - tokeny aktualnie tokenami mogą być fragmenty słów preprocessing tekstu pozwala wyczyścić i znormalizować dane wybór konkretnych operacji zależy od rozwiązywanego problemu i od danych uwaga: dla najnowszych modeli preprocessing ma coraz mniejsze znaczenie Reprezentacja tekstu - Tekst musi zostać następnie reprezentowany w sposób zrozumiały dla algorytmów. Podejście naiwne - słownik lista słów posortowanych np. alfabetycznie każdemu słowu przypisana kolejna liczba trudno wyrazić podobieństwo znaczeń słów Podejście _one-hot encoding_ lista słów posortowanych np. alfabetycznie każdemu słowu przypisany wektor one-hot nieefektywne obliczeniowo i pamięciowo (reprezentacja rzadka) rekomenduje się brać pod uwagę tylko najczęściej występujące tokeny (np. 50k) Bag of Words - tekst jako “worek” słów Zdanie może być reprezentowane np. jako suma wektorów typu one-hot dla poszczególnych tokenów Bag of Words (BoW) to reprezentacja tekstu jako wektora, gdzie: Każdemu słowu w słowniku przypisujemy unikalny indeks Tworzymy wektor o długości słownika Na każdym indeksie zapisujemy liczbę wystąpień odpowiadającego słowa Kolejność słów w tekście jest ignorowana Przykład: Tekst: "kot pies kot" Słownik: {kot:0, pies:1} Wektor BoW: [2,1] (kot wystąpił 2 razy, pies 1 raz) TF-IDF - bazuje na Bag of Words; również tworzy wektor o długości słownika. Różnica polega na tym, że zamiast zliczać wystąpienia słów, wartości w wektorze są ważone: częstością występowania słowa w dokumencie (TF) - Term Frequency rzadkością występowania tokena w całym korpusie dokumentów (IDF) - Inverse Document Frequency TF-IDF = TF * IDF gdzie: TF(t,d) = liczba wystąpień tokenu t w dokumencie d / liczba tokenów w dokumencie d IDF(t) = log(liczba dokumentów w korpusie / liczba dokumentów zawierających token t) Wektory zanurzeń słów - word2vec - (ang. word embeddings) - proces przekształcania tokenów (słów lub części słów) w wektory liczbowe dwa warianty: CBOW (continuous bag of words) i skip-gram zanurzenia słów to wagi modelu wyciągnięte z warstwy ukrytej do klasyfikacji nie potrzebujemy ręcznie etykietowanych danych, bierzemy potrzebne informacje z tekstów w korpusie! → uczenie z samo nadzorem W kontekście Word2Vec te określenia odnoszą się do metod łączenia wektorów reprezentujących pojedyncze słowa w wektor reprezentujący całe zdanie/dokument: 1. "Na siłę dodaje" - po prostu sumuje wektory wszystkich słów 2. "Uśrednia" - oblicza średnią arytmetyczną wektorów wszystkich słów Obie metody są proste, ale tracą informację o kolejności słów. CBOW: szybsze niz skip-gram, Lepsze wyniki dla częstych słów, gorsze dla rzadkich Cel: przewidywanie słowa na podstawie kontekstu (słów otaczających) Jak działa: Bierze okno kontekstowe (np. 2-4 słowa z każdej strony słowa docelowego) Próbuje przewidzieć słowo środkowe na podstawie otaczających słów, np: "Kot [???] na dachu" → system uczy się przewidywać "siedzi" Proces: Konwertuje słowa kontekstu na wektory one-hot Uśrednia te wektory Przepuszcza przez sieć neuronową Uczy się minimalizować błąd między przewidywanym a faktycznym słowem Skip-Gram: lepiej radzi sobie z rzadkimi słowami, wolniejsze uczenie niż CBOW Jak działa: Na wejściu dostaje pojedyncze słowo Próbuje przewidzieć słowa kontekstowe wokół niego, np: "[???] siedzi [???]" → system uczy się przewidywać "kot" i "na" Proces: Konwertuje słowo wejściowe na wektor one-hot Przepuszcza przez sieć neuronową Na wyjściu przewiduje słowa kontekstowe Aktualizuje wagi, by minimalizować błąd przewidywań W obu metodach optymalizujemy funkcję straty opartą na prawdopodobieństwie warunkowym: CBOW: Maksymalizujemy P(słowo_docelowe | słowa_kontekstu) Używamy cross-entropy loss między przewidywanym a rzeczywistym słowem Skip-gram: Maksymalizujemy P(słowa_kontekstu | słowo_docelowe) Optymalizujemy sumę logarytmów prawdopodobieństw dla każdego słowa kontekstowego Word2Vec Wady (CBOW I SKIPGRAM): problem ze słowami spoza słownika tzw. OOV - out of vocabulary, np. literówki, słownictwo domenowe każde słowo (token) ma przypisany jeden wektor niezależnie od kontekstu jeden wektor dla wyrazów wieloznacznych - np. zamek Przetworzenie tekstu - Etapy procesu przetwarzania języka naturalnego Zastosowania: oznawanie nazw własnych (NER) oznaczanie części mowy (POS tagging) parsowanie tekstu Model języka Klasyczne algorytmy NLP: model języka (language model, LM) → prawdopodobieństwo P(w|h), prawdopodobieństwo że kolejnym słowem po sekwencji h będzie w wykorzystywany m.in: w rozpoznawaniu mowy - w połączeniu z modelem akustycznym w tłumaczeniu maszynowym do generowania tekstu (pośrednio) w praktycznie każdym zastosowaniu NLP N-gramowy model języka n-gram to po prostu sekwencja n słów (unigram, bigram, …) użycie n-gramów pozwala liczyć przybliżone wartości prawdopodobieństw sekwencji na podstawie n ostatnich słów w praktyce używa się raczej trigramów i 4-gramów niż bigramów - im większe N, tym lepiej modelujemy korpus uczący → oby nie za bardzo! celem uniknięcia problemów numerycznych używa się logarytmów i sum słowa (n-gramy) spoza zbioru uczącego mają zerowe prawdopodobieństwo OOV → specjalny token zamiast rzadkich tokenów znane słowa w nieznanych kontekstach → LM smoothing Ewaluacja modeli języka zewnętrzna - poprzez porównanie w zastosowaniach korzystających z LM wewnętrzna - z wykorzystaniem zbioru testowego (tekstu) do oceny wewnętrznej modeli języka używa się miary perplexity*, czyli znormalizowanej odwrotności prawdopodobieństwa testowej sekwencji W m mniejsza tym (teoretycznie) lepiej, ale nie zawsze model o mniejszej wartości PP da lepszy wynik w ewaluacji zewnętrznej ** Naiwny klasyfikator bayesowski: ** cechy opisujące dokument nie muszą być częstościami wystąpień słów: analiza wydźwięku - czy słowo wystąpiło (a nie ile razy) detekcja spamu - czy temat wielkimi literami, czy zawiera pewne całe frazy identyfikacja języka - n-gramy znaków zamiast słów Inne klasyczne modele NLP ukryty model Markowa (HMM) tagowanie części mowy (POS tagging) rozpoznawanie mowy (ASR) warunkowe pola losowe (CRF) rozpoznawanie nazw własnych (NER) programowanie dynamiczne: algorytm Viterbiego, CKY standardowe klasyfikatory np. SVM / regresja logistyczna (BoW / TF-IDF) Sieci Neuronowe w NLP Rekurencyjna sieć neuronowa RNN sieć rekurencyjną można sobie wyobrazić jako sieć typu feed-forward, z dodatkowym zestawem parametrów U → wagi te określają jak sieć będzie korzystać z kontekstu z przeszłości w czasie inferencji wagi U, V, W nie zmieniają się w czasie Architektura -> przyjmuje wejście sekwencyjne i przetwarza je po kolei do przetwarzania sekwencji idealnie (?) nadają się sieci rekurencyjne Na każdym kroku czasowym t: 1. Wejście: nowy element sekwencji (xt) 2. Stan ukryty z poprzedniego kroku (ht-1) 3. Wyjście: nowy stan ukryty (ht) wyjście z sieci zależy nie tylko od wejścia, ale też od stanu sieci w chwili poprzedniej → forma “pamięci”, pozwala zachować kontekst (teoretycznie) kontekst ma nieograniczoną “długość Problemy RNN: Zanikający gradient | Gradient maleje podczas propagacji wstecznej Trudności z długimi sekwencjami | Informacja z początku sekwencji "rozmywa się" pod koniec kontekst wcale nie jest nieograniczony - informacja zakodowana w stanach ukrytych RNN jest raczej “lokalna” Wolne ponieważ jest to przetwarzanie sekwencyjne czyli: trudno zrównoleglić obliczenia Rozwiązania: LSTM/GRU - bramki kontrolujące przepływ informacji | LSTM (Long Short-Term Memory) to ulepszona wersja RNN: Dodaje bramki kontrolne: forget gate (zapominanie) input gate (nowe informacje) output gate (co przekazać dalej) Cell state (długoterminowa pamięć) Hidden state (krótkoterminowy stan) GRU TO PROSTE LSTM TYLKO DWIE BRAMKI -> RESET I UPDATE GATE ?? zanurzenia kontekstowe seq2seq - rewolucja w tłumaczeniu maszynowym Model enkoder-dekoder (seq2seq) oryginalnie: ostatni stan ukryty enkodera przekazywany jest do dekodera enkoder i dekoder mogą być dwukierunkowe, wielowarstwowe (stacked) itd. kontekst przekazywany dekoderowi nie musi być ostatnim stanem ukrytym kodera, może być dowolną funkcją jego stanów ukrytych kontekst może być przekazywany w każdym kroku dekodowania sekwencja enkodowana do czegoś tam i to coś tam jest dekodowane na wyjście w innym języku (?) autoenkoder też jest enkoder dekoderem Mechanizm uwagi w RNN (2014-15) pozwala nauczyć się dekoderowi wykorzystywać wszystkie stany kodera - kontekst w kroku dekodowania i jako ważona suma stanów kodera mechanizm samouwagi co to jest samouwaga self attention Mechanizm uwagi (attention) w RNN: Dekoder uczy się korzystać ze wszystkich stanów kodera Kontekst w kroku i to ważona suma stanów kodera Poprawia tłumaczenie długich sekwencji Samouwaga (self-attention): Token jest reprezentowany jako ważona suma innych tokenów Wagi zależą od podobieństwa między tokenami Złożoność: O(n²) - każdy token z każdym|złożoność: kwadratowa n*n-1 obserwacji O^2 Parametry: Query (Q): co szukamy Key (K): z czym porównujemy Value (V): co agregujemy Bez trenowanych wag Q,K,V mechanizm działałby deterministycznie. Tak są trenowalne! Multihead attention pozwala modelowi zwracać uwagę na różne aspekty jednocześnie: Każda głowica (head) uczy się innych wzorców/relacji Np. jedna może skupić się na składni, inna na semantyce Równoległe przetwarzanie wielu głowic Na końcu wyniki są łączone (konkatenowane) To jak patrzenie na tekst z kilku perspektyw naraz. Transformer - RNN juz niemodne Transformer - głównie mechanizm uwagi w zasadzie wszystkie nowe pomysły / modele oparte są na Transformerze nie tylko w NLP, ale także m.in. w przetwarzaniu obrazu oryginalny Transformer - model enkoder-dekoder do tłumaczenia maszynowego Blok enkodera składa się z: self-attention feed-forward Blok dekodera składa się z: self-attention feed-forward encode-decoder attention Decoder-encoder attention is looking from: one current decoder state at: all encoder states Self-attention is looking from: each state from a set of states at: all other states in the same set (tokeny “patrzą” na siebie nawzajem, by lepiej modelować kontekst, to sie może działać równolegle) Samouwaga w dekoderze w enkoderze tokeny patrzą zarówno “wstecz”, jak i “w przód” w dekoderze: tylko “wstecz” -“masked self-attention” Positional Encoding: musimy jakoś przekazać enkoderowi informację o kolejności tokenów w zdaniu wprowadza się w tym celu dodatkową reprezentację - tzw. positional encoding reprezentacje pozycji mogą być uczone, albo liczone wg wzoru s54 niepodchwytliwe pytanie BERT - Bidirectional Encoder Representations from Transformers reprezentacje (zanurzenia kontekstowe) słów z Transformera a właściwie z enkodera dwukierunkowe połowa transformera do kodowania reprezentacji z tekstu BERT używa tylko części enkodera z architektury Transformer, pomijając dekoder: 1. BERT bazuje na architekturze Transformer, ale używa tylko modułów enkodera 2. Nie ma dekodera, ponieważ BERT skupia się na rozumieniu tekstu, nie na jego generowaniu 3. W oryginalnym transformerze enkoder i dekoder pracują razem, by tłumaczyć tekst BERT jest pre-trenowanym modelem do rozumienia tekstu, nie do jego generowania. Dlatego nie potrzebuje dekodera. BERTBASE - 12 warstw, 12 atencyjnych głów, 768-elem. wektory, 110M param. BERTLARGE - 24 warstwy, 16 głów, 1024-elem. wektory, 340M param. Alternatywy do BERTA: Robustly Optimized BERT Pre-training Approach (ROBERTA) GPT, GPT-2, GPT-3 InstructGPT, ChatGPT, GPT-4 - kod ani wagi nieujawnione LLaMA, LLaMA 2 - kod i wagi ujawnione ChatGPT jest oparty na architekturze Transformer, konkretnie używa architektury GPT (Generative Pre-trained Transformer), która wykorzystuje tylko część dekoderową Transformera. Jest to odwrotność BERT-a, który używał tylko enkodera. Duże modele językowe - wyzwania i trendy RAG (Retrieval-Augmented Generation) to metoda łącząca wyszukiwanie informacji z bazy wiedzy z generowaniem tekstu przez modele językowe. Wbudowaną wiedzę modelu (z treningu) Aktualnie wyszukane informacje z zewnętrznych źródeł (np. dokumenty, bazy danych, internet) Kluczowe elementy: 1. Retrieval: Wyszukuje relewantne informacje z zewnętrznej bazy danych 2. Augmentation: Dodaje znalezione informacje do promptu 3. Generation: Model generuje odpowiedź bazując na rozszerzonym kontekście Główna zaleta: Model może wykorzystywać aktualne dane zewnętrzne, nie jest ograniczony wiedzą z treningu. wyzwania: rozmiar (koszt, latencja), halucynacje, długość wejścia LoRA - LowRank Adaption trenowanie wielu wyspecjalizowanych adaptacji, małych protez dla jednego LLM-a 1. Redukuje ilość parametrów do trenowania, lora metoda zmniejszenia liczby wag 2. Dodaje małe macierze adaptacyjne zamiast modyfikowania całego modelu 3. Jest wydajna pamięciowo i obliczeniowo 4. Pozwala na fine-tuning dużych modeli na słabszym sprzęcie To popularna metoda do tworzenia wyspecjalizowanych wersji modeli pod konkretne zadania ewaluacja (LLM ocenia LLM) Modele językowe mogą oceniać jakość odpowiedzi innych modeli Przydatne do automatycznej oceny generowanego tekstu Zastępuje czasochłonną ocenę ludzką prompt engineering Technika tworzenia efektywnych poleceń dla modeli językowych Obejmuje formatowanie, kontekst i precyzyjne instrukcje Wpływa na jakość i trafność odpowiedzi modelu Duży model językowy (LLM) to model z miliardami parametrów. Kluczowe cechy: Kwantyzacja modelu: Zmniejsza precyzję liczb (np. z 32-bit na 8-bit) Redukuje rozmiar modelu Przyspiesza inferencję Może nieco obniżyć jakość RAG vs LoRA vs Kwantyzacja: RAG: dodaje zewnętrzną wiedzę do odpowiedzi LoRA: efektywne dostrajanie modelu Kwantyzacja: kompresja modelu przez redukcję bitów Model podstawowy (Foundational model): Trenowany na dużym zbiorze danych Wykorzystuje mechanizm self-attention Uczy się ogólnych wzorców językowych Fine-tuning: Dostrajanie wstępnie wytrenowanego modelu Dodanie warstwy klasyfikacyjnej Trenowanie na konkretnym zadaniu Mniejszy zbiór danych, specyficzny dla zadania "Foundational model trained with self-attention" oznacza model bazowy trenowany z wykorzystaniem mechanizmu self-attention (Transformera), który: Uczy się ogólnych zależności w języku Przetwarza tekst równolegle Skupia uwagę na różnych częściach wejścia jednocześnie Stanowi podstawę do dalszego dostrajania pod konkretne zadania Przykłady to BERT, GPT, T5. Foundational model trained with samonadzór, fine tuning trenujemy model i klasyfikator Model bazowy trenowany metodą samodzielnego uczenia się Uczy się na własnych przewidywaniach i błędach Fine-tuning: Fine-tuning w tym kontekście składa się z dwóch części: 1. Trenowanie samego modelu - dostrajanie parametrów modelu bazowego 2. Trenowanie klasyfikatora - warstwa końcowa uczona do konkretnego zadania (np. klasyfikacji tekstu) Ta dwuetapowość pozwala najpierw dostroić wiedzę ogólną modelu, a potem wyspecjalizować go pod konkretne zadanie. Co to ChatBot Chatbot oparty na modelu językowym: System komputerowy wykorzystujący LLM'y (np. GPT) do prowadzenia konwersacji z człowiekiem Przetwarza tekst wejściowy i generuje odpowiedzi w języku naturalnym Bezstanowość oznacza: Nie przechowuje informacji między interakcjami Każda odpowiedź generowana jest na podstawie aktualnego kontekstu rozmowy Historia konwersacji musi być za każdym razem przekazywana wraz z nowym pytaniem Nie "uczy się" ani nie zapamiętuje informacji z wcześniejszych rozmów Transformery w przetwarzaniu obrazu Tak, stosowane w modelach Vision Transformer (ViT) Obraz dzielony na patches/patche (np. 16x16 pikseli) - cięty na pałę :3 Każdy patch traktowany jak token w tekście Dodawane embeddingi pozycyjne określające lokalizację w obrazie Przetwarzanie obrazu przed transformerem Podział na równe patche Spłaszczenie każdego patcha do wektora Dodanie specjalnego tokena klasyfikacyjnego [CLS] Dodanie embeddingów pozycyjnych 2D Model multimodalny Przetwarza różne typy danych (tekst, obraz, dźwięk, wideo) Tworzy wspólną reprezentację (embedding) dla różnych modalności Modalności mogą być dowolnie łączone - model jest elastyczny Modele Dyfuzyjne - Generowanie obrazów z tekstu Modele dyfuzyjne dominują (Stable Diffusion, DALL-E) Dlaczego dyfuzyjne: Modele dyfuzyjne mają dwie kluczowe przewagi: 1. Stabilność treningu: GAN-y: trudne w treningu przez konflikt generator vs. dyskryminator Modele dyfuzyjne: stabilny proces uczenia przez jasno zdefiniowany cel odszumiania 2. Trenujemy tylko jeden model To właśnie połączenie efektywności obliczeniowej i stabilności treningu sprawia, że dominują w generowaniu obrazów. Działają przez stopniowe odszumianie Złożoność liniowa vs kwadratowa w innych podejściach Sekwencyjnie usuwają szum, krok po kroku rekonstruując obraz Funkcja strat: Najczęściej stosowana jest miara podobieństwa między danymi przewidywanymi przez model a rzeczywistymi, np. funkcja strat oparta na rozkładach Gaussa (MSE - średni błąd kwadratowy). CLIP (OpenAI) Tworzy wspólną przestrzeń embedingów dla tekstu i obrazów Trenowany na parach tekst-obraz Używany w innych modelach jako encoder Pozwala na efektywne łączenie modalności tekst-obraz BEIT == BERT dla obrazów (2021), v2 i v3 (2022) Czy transformery nadają się do przetwarzania obrazu: Tak, ale: Wymagają dużych zbiorów danych do treningu (ViT) Często łączone są z elementami CNN dla lepszych wyników Ich skuteczność potwierdzają kolejne modele i architektury Model multimodalny: Przetwarza różne typy danych (tekst, obraz, dźwięk, wideo) Każdy typ danych jest dzielony na fragmenty: Obraz → patche Dźwięk → segmenty czasowe Wideo → klatki + segmenty audio Wszystkie dane są przekształcane do wspólnej przestrzeni (embeddingi) Model pracuje na ujednoliconej reprezentacji, niezależnie od źródła danych Przykład: może łączyć opis tekstowy z obrazem lub dźwięk z wideo Dodatkowe: Czym się różnią dane obrazowe od danych językowych? Obrazy to zawsze zbiór pikseli, języki są różne, zapisywane różnymi symbolami Obrazy mają przewidywalny rozmiar, teksty mają zróżnicowaną długość Obrazy zajmują więcej pamięci niż tekst Obrazy mają strukturę dwuwymiarową, tekst jednowymiarową Pojedyncze słowo w tekście może mieć znacznie większe znaczenie niż pojedynczy piksel na obrazie Różna dostępność danych (?) Niewielka zmiana obrazu nie zmienia jego odbioru przez człowieka, niewielka zmiana tekstu zwykle zmienia jego sens → łatwiej jest sztucznie produkować obrazy "podobne" do pierwotnych niż tekst