From c2d5a96afcec537c836264fd2a53f346ec78bfde Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Sat, 14 May 2022 10:27:03 +0200 Subject: [PATCH] LSTM --- wyk/07_Zanurzenia_slow.ipynb | 550 ++++++++++++++++++- wyk/08_Neuronowy_ngramowy_model.ipynb | 727 ++++++++++++++++++++++++- wyk/08_Neuronowy_ngramowy_model.pdf | Bin 0 -> 298242 bytes wyk/09_Rekurencyjny_model_jezyka.ipynb | 2 +- wyk/09_Rekurencyjny_model_jezyka.org | 72 ++- 5 files changed, 1341 insertions(+), 10 deletions(-) create mode 100644 wyk/08_Neuronowy_ngramowy_model.pdf diff --git a/wyk/07_Zanurzenia_slow.ipynb b/wyk/07_Zanurzenia_slow.ipynb index bb98b73..720c72d 100644 --- a/wyk/07_Zanurzenia_slow.ipynb +++ b/wyk/07_Zanurzenia_slow.ipynb @@ -1,4 +1,3 @@ - { "cells": [ { @@ -16,4 +15,551 @@ "\n" ] }, -{"cell_type":"markdown","metadata":{},"source":["## Zanurzenia słów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["W praktyce stosowalność słowosieci okazała się zaskakująco\nograniczona. Większy przełom w przetwarzaniu języka naturalnego przyniosły\nwielowymiarowe reprezentacje słów, inaczej: zanurzenia słów.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### „Wymiary” słów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Moglibyśmy zanurzyć (ang. *embed*) w wielowymiarowej przestrzeni, tzn. zdefiniować odwzorowanie\n$E \\colon V \\rightarrow \\mathcal{R}^m$ dla pewnego $m$ i określić taki sposób estymowania\nprawdopodobieństw $P(u|v)$, by dla par $E(v)$ i $E(v')$ oraz $E(u)$ i $E(u')$ znajdujących się w pobliżu\n(według jakiejś metryki odległości, na przykład zwykłej odległości euklidesowej):\n\n$$P(u|v) \\approx P(u'|v').$$\n\n$E(u)$ nazywamy zanurzeniem (embeddingiem) słowa.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Wymiary określone z góry?\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Można by sobie wyobrazić, że $m$ wymiarów mogłoby być z góry\nokreślonych przez lingwistę. Wymiary te byłyby związane z typowymi\n„osiami” rozpatrywanymi w językoznawstwie, na przykład:\n\n- czy słowo jest wulgarne, pospolite, potoczne, neutralne czy książkowe?\n- czy słowo jest archaiczne, wychodzące z użycia czy jest neologizmem?\n- czy słowo dotyczy kobiet, czy mężczyzn (w sensie rodzaju gramatycznego i/lub\n socjolingwistycznym)?\n- czy słowo jest w liczbie pojedynczej czy mnogiej?\n- czy słowo jest rzeczownikiem czy czasownikiem?\n- czy słowo jest rdzennym słowem czy zapożyczeniem?\n- czy słowo jest nazwą czy słowem pospolitym?\n- czy słowo opisuje konkretną rzecz czy pojęcie abstrakcyjne?\n- …\n\nW praktyce okazało się jednak, że lepiej, żeby komputer uczył się sam\nmożliwych wymiarów — z góry określamy tylko $m$ (liczbę wymiarów).\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Bigramowy model języka oparty na zanurzeniach\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Zbudujemy teraz najprostszy model język oparty na zanurzeniach. Będzie to właściwie najprostszy\n**neuronowy model języka**, jako że zbudowany model można traktować jako prostą sieć neuronową.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Słownik\n\n"]},{"cell_type":"markdown","metadata":{},"source":["W typowym neuronowym modelu języka rozmiar słownika musi być z góry\nograniczony. Zazwyczaj jest to liczba rzędu kilkudziesięciu wyrazów —\npo prostu będziemy rozpatrywać $|V|$ najczęstszych wyrazów, pozostałe zamienimy\nna specjalny token `` reprezentujący nieznany (*unknown*) wyraz.\n\nAby utworzyć taki słownik użyjemy gotowej klasy `Vocab` z pakietu torchtext:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"16"}],"source":["from itertools import islice\nimport regex as re\nimport sys\nfrom torchtext.vocab import build_vocab_from_iterator\n\n\ndef get_words_from_line(line):\n line = line.rstrip()\n yield ''\n for m in re.finditer(r'[\\p{L}0-9\\*]+|\\p{P}+', line):\n yield m.group(0).lower()\n yield ''\n\n\ndef get_word_lines_from_file(file_name):\n with open(file_name, 'r') as fh:\n for line in fh:\n yield get_words_from_line(line)\n\nvocab_size = 20000\n\nvocab = build_vocab_from_iterator(\n get_word_lines_from_file('opensubtitlesA.pl.txt'),\n max_tokens = vocab_size,\n specials = [''])\n\nvocab['jest']"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"['', '', '', 'w', 'wierzyli']"}],"source":["vocab.lookup_tokens([0, 1, 2, 10, 12345])"]},{"cell_type":"markdown","metadata":{},"source":["#### Definicja sieci\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Naszą prostą sieć neuronową zaimplementujemy używając frameworku PyTorch.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["from torch import nn\nimport torch\n\nembed_size = 100\n\nclass SimpleBigramNeuralLanguageModel(nn.Module):\n def __init__(self, vocabulary_size, embedding_size):\n super(SimpleBigramNeuralLanguageModel, self).__init__()\n self.model = nn.Sequential(\n nn.Embedding(vocabulary_size, embedding_size),\n nn.Linear(embedding_size, vocabulary_size),\n nn.Softmax()\n )\n\n def forward(self, x):\n return self.model(x)\n\nmodel = SimpleBigramNeuralLanguageModel(vocab_size, embed_size)\n\nvocab.set_default_index(vocab[''])\nixs = torch.tensor(vocab.forward(['pies']))\nout[0][vocab['jest']]"]},{"cell_type":"markdown","metadata":{},"source":["Teraz wyuczmy model. Wpierw tylko potasujmy nasz plik:\n\n shuf < opensubtitlesA.pl.txt > opensubtitlesA.pl.shuf.txt\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["from torch.utils.data import IterableDataset\nimport itertools\n\ndef look_ahead_iterator(gen):\n prev = None\n for item in gen:\n if prev is not None:\n yield (prev, item)\n prev = item\n\nclass Bigrams(IterableDataset):\n def __init__(self, text_file, vocabulary_size):\n self.vocab = build_vocab_from_iterator(\n get_word_lines_from_file(text_file),\n max_tokens = vocabulary_size,\n specials = [''])\n self.vocab.set_default_index(self.vocab[''])\n self.vocabulary_size = vocabulary_size\n self.text_file = text_file\n\n def __iter__(self):\n return look_ahead_iterator(\n (self.vocab[t] for t in itertools.chain.from_iterable(get_word_lines_from_file(self.text_file))))\n\ntrain_dataset = Bigrams('opensubtitlesA.pl.shuf.txt', vocab_size)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"(2, 5)"}],"source":["from torch.utils.data import DataLoader\n\nnext(iter(train_dataset))"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"[tensor([ 2, 5, 51, 3481, 231]), tensor([ 5, 51, 3481, 231, 4])]"}],"source":["from torch.utils.data import DataLoader\n\nnext(iter(DataLoader(train_dataset, batch_size=5)))"]},{"cell_type":"markdown","metadata":{},"source":[" device = 'cuda'\n model = SimpleBigramNeuralLanguageModel(vocab_size, embed_size).to(device)\n data = DataLoader(train_dataset, batch_size=5000)\n optimizer = torch.optim.Adam(model.parameters())\n criterion = torch.nn.NLLLoss()\n \n model.train()\n step = 0\n for x, y in data:\n x = x.to(device)\n y = y.to(device)\n optimizer.zero_grad()\n ypredicted = model(x)\n loss = criterion(torch.log(ypredicted), y)\n if step % 100 == 0:\n print(step, loss)\n step += 1\n loss.backward()\n optimizer.step()\n \n torch.save(model.state_dict(), 'model1.bin')\n\nPoliczmy najbardziej prawdopodobne kontynuację dla zadanego słowa:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"[('ciebie', 73, 0.1580502986907959), ('mnie', 26, 0.15395283699035645), ('', 0, 0.12862136960029602), ('nas', 83, 0.0410110242664814), ('niego', 172, 0.03281523287296295), ('niej', 245, 0.02104802615940571), ('siebie', 181, 0.020788608118891716), ('którego', 365, 0.019379809498786926), ('was', 162, 0.013852755539119244), ('wszystkich', 235, 0.01381855271756649)]"}],"source":["device = 'cuda'\nmodel = SimpleBigramNeuralLanguageModel(vocab_size, embed_size).to(device)\nmodel.load_state_dict(torch.load('model1.bin'))\nmodel.eval()\n\nixs = torch.tensor(vocab.forward(['dla'])).to(device)\n\nout = model(ixs)\ntop = torch.topk(out[0], 10)\ntop_indices = top.indices.tolist()\ntop_probs = top.values.tolist()\ntop_words = vocab.lookup_tokens(top_indices)\nlist(zip(top_words, top_indices, top_probs))"]},{"cell_type":"markdown","metadata":{},"source":["Teraz zbadajmy najbardziej podobne zanurzenia dla zadanego słowa:\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"[('.', 3, 0.404473215341568), (',', 4, 0.14222915470600128), ('z', 14, 0.10945753753185272), ('?', 6, 0.09583134204149246), ('w', 10, 0.050338443368673325), ('na', 12, 0.020703863352537155), ('i', 11, 0.016762692481279373), ('', 0, 0.014571071602404118), ('...', 15, 0.01453721895813942), ('', 1, 0.011769450269639492)]"}],"source":["vocab = train_dataset.vocab\nixs = torch.tensor(vocab.forward(['kłopot'])).to(device)\n\nout = model(ixs)\ntop = torch.topk(out[0], 10)\ntop_indices = top.indices.tolist()\ntop_probs = top.values.tolist()\ntop_words = vocab.lookup_tokens(top_indices)\nlist(zip(top_words, top_indices, top_probs))"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":"[('poszedł', 1087, 1.0), ('idziesz', 1050, 0.4907470941543579), ('przyjeżdża', 4920, 0.45242372155189514), ('pojechałam', 12784, 0.4342481195926666), ('wrócił', 1023, 0.431664377450943), ('dobrać', 10351, 0.4312002956867218), ('stałeś', 5738, 0.4258835017681122), ('poszła', 1563, 0.41979148983955383), ('trafiłam', 18857, 0.4109022617340088), ('jedzie', 1674, 0.4091658890247345)]"}],"source":["cos = nn.CosineSimilarity(dim=1, eps=1e-6)\n\nembeddings = model.model[0].weight\n\nvec = embeddings[vocab['poszedł']]\n\nsimilarities = cos(vec, embeddings)\n\ntop = torch.topk(similarities, 10)\n\ntop_indices = top.indices.tolist()\ntop_probs = top.values.tolist()\ntop_words = vocab.lookup_tokens(top_indices)\nlist(zip(top_words, top_indices, top_probs))"]},{"cell_type":"markdown","metadata":{},"source":["#### Zapis przy użyciu wzoru matematycznego\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Powyżej zaprogramowaną sieć neuronową można opisać następującym wzorem:\n\n$$\\vec{y} = \\operatorname{softmax}(CE(w_{i-1}),$$\n\ngdzie:\n\n- $w_{i-1}$ to pierwszy wyraz w bigramie (poprzedzający wyraz),\n- $E(w)$ to zanurzenie (embedding) wyrazy $w$ — wektor o rozmiarze $m$,\n- $C$ to macierz o rozmiarze $|V| \\times m$, która rzutuje wektor zanurzenia w wektor o rozmiarze słownika,\n- $\\vec{y}$ to wyjściowy wektor prawdopodobieństw o rozmiarze $|V|$.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Hiperparametry\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Zauważmy, że nasz model ma dwa hiperparametry:\n\n- $m$ — rozmiar zanurzenia,\n- $|V|$ — rozmiar słownika, jeśli zakładamy, że możemy sterować\n rozmiarem słownika (np. przez obcinanie słownika do zadanej liczby\n najczęstszych wyrazów i zamiany pozostałych na specjalny token, powiedzmy, ``.\n\nOczywiście możemy próbować manipulować wartościami $m$ i $|V|$ w celu\npolepszenia wyników naszego modelu.\n\n**Pytanie**: dlaczego nie ma sensu wartość $m \\approx |V|$ ? dlaczego nie ma sensu wartość $m = 1$?\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Diagram sieci\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Jako że mnożenie przez macierz ($C$) oznacza po prostu zastosowanie\nwarstwy liniowej, naszą sieć możemy interpretować jako jednowarstwową\nsieć neuronową, co można zilustrować za pomocą następującego diagramu:\n\n![img](./07_Zanurzenia_slow/bigram1.drawio.png \"Diagram prostego bigramowego neuronowego modelu języka\")\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Zanurzenie jako mnożenie przez macierz\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Uzyskanie zanurzenia ($E(w)$) zazwyczaj realizowane jest na zasadzie\nodpytania (look-up\\_). Co ciekawe, zanurzenie można intepretować jako\nmnożenie przez macierz zanurzeń (embeddingów) $E$ o rozmiarze $m \\times |V|$ — jeśli słowo będziemy na wejściu kodowali przy użyciu\nwektora z gorącą jedynką (one-hot encoding\\_), tzn. słowo $w$ zostanie\npodane na wejściu jako wektor $\\vec{1_V}(w) = [0,\\ldots,0,1,0\\ldots,0]$ o rozmiarze $|V|$\nzłożony z samych zer z wyjątkiem jedynki na pozycji odpowiadającej indeksowi wyrazu $w$ w słowniku $V$.\n\nWówczas wzór przyjmie postać:\n\n$$\\vec{y} = \\operatorname{softmax}(CE\\vec{1_V}(w_{i-1})),$$\n\ngdzie $E$ będzie tym razem macierzą $m \\times |V|$.\n\n**Pytanie**: czy $\\vec{1_V}(w)$ intepretujemy jako wektor wierszowy czy kolumnowy?\n\nW postaci diagramu można tę interpretację zilustrować w następujący sposób:\n\n![img](./07_Zanurzenia_slow/bigram2.drawio.png \"Diagram prostego bigramowego neuronowego modelu języka z wejściem w postaci one-hot\")\n\n"]}],"metadata":{"org":null,"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zanurzenia słów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "W praktyce stosowalność słowosieci okazała się zaskakująco\n", + "ograniczona. Większy przełom w przetwarzaniu języka naturalnego przyniosły\n", + "wielowymiarowe reprezentacje słów, inaczej: zanurzenia słów.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### „Wymiary” słów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Moglibyśmy zanurzyć (ang. *embed*) w wielowymiarowej przestrzeni, tzn. zdefiniować odwzorowanie\n", + "$E \\colon V \\rightarrow \\mathcal{R}^m$ dla pewnego $m$ i określić taki sposób estymowania\n", + "prawdopodobieństw $P(u|v)$, by dla par $E(v)$ i $E(v')$ oraz $E(u)$ i $E(u')$ znajdujących się w pobliżu\n", + "(według jakiejś metryki odległości, na przykład zwykłej odległości euklidesowej):\n", + "\n", + "$$P(u|v) \\approx P(u'|v').$$\n", + "\n", + "$E(u)$ nazywamy zanurzeniem (embeddingiem) słowa.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Wymiary określone z góry?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Można by sobie wyobrazić, że $m$ wymiarów mogłoby być z góry\n", + "określonych przez lingwistę. Wymiary te byłyby związane z typowymi\n", + "„osiami” rozpatrywanymi w językoznawstwie, na przykład:\n", + "\n", + "- czy słowo jest wulgarne, pospolite, potoczne, neutralne czy książkowe?\n", + "- czy słowo jest archaiczne, wychodzące z użycia czy jest neologizmem?\n", + "- czy słowo dotyczy kobiet, czy mężczyzn (w sensie rodzaju gramatycznego i/lub\n", + " socjolingwistycznym)?\n", + "- czy słowo jest w liczbie pojedynczej czy mnogiej?\n", + "- czy słowo jest rzeczownikiem czy czasownikiem?\n", + "- czy słowo jest rdzennym słowem czy zapożyczeniem?\n", + "- czy słowo jest nazwą czy słowem pospolitym?\n", + "- czy słowo opisuje konkretną rzecz czy pojęcie abstrakcyjne?\n", + "- …\n", + "\n", + "W praktyce okazało się jednak, że lepiej, żeby komputer uczył się sam\n", + "możliwych wymiarów — z góry określamy tylko $m$ (liczbę wymiarów).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Bigramowy model języka oparty na zanurzeniach\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zbudujemy teraz najprostszy model język oparty na zanurzeniach. Będzie to właściwie najprostszy\n", + "**neuronowy model języka**, jako że zbudowany model można traktować jako prostą sieć neuronową.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Słownik\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "W typowym neuronowym modelu języka rozmiar słownika musi być z góry\n", + "ograniczony. Zazwyczaj jest to liczba rzędu kilkudziesięciu wyrazów —\n", + "po prostu będziemy rozpatrywać $|V|$ najczęstszych wyrazów, pozostałe zamienimy\n", + "na specjalny token `` reprezentujący nieznany (*unknown*) wyraz.\n", + "\n", + "Aby utworzyć taki słownik użyjemy gotowej klasy `Vocab` z pakietu torchtext:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "16" + ] + } + ], + "source": [ + "from itertools import islice\n", + "import regex as re\n", + "import sys\n", + "from torchtext.vocab import build_vocab_from_iterator\n", + "\n", + "\n", + "def get_words_from_line(line):\n", + " line = line.rstrip()\n", + " yield ''\n", + " for m in re.finditer(r'[\\p{L}0-9\\*]+|\\p{P}+', line):\n", + " yield m.group(0).lower()\n", + " yield ''\n", + "\n", + "\n", + "def get_word_lines_from_file(file_name):\n", + " with open(file_name, 'r') as fh:\n", + " for line in fh:\n", + " yield get_words_from_line(line)\n", + "\n", + "vocab_size = 20000\n", + "\n", + "vocab = build_vocab_from_iterator(\n", + " get_word_lines_from_file('opensubtitlesA.pl.txt'),\n", + " max_tokens = vocab_size,\n", + " specials = [''])\n", + "\n", + "vocab['jest']" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['', '', '', 'w', 'wierzyli']" + ] + } + ], + "source": [ + "vocab.lookup_tokens([0, 1, 2, 10, 12345])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Definicja sieci\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Naszą prostą sieć neuronową zaimplementujemy używając frameworku PyTorch.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from torch import nn\n", + "import torch\n", + "\n", + "embed_size = 100\n", + "\n", + "class SimpleBigramNeuralLanguageModel(nn.Module):\n", + " def __init__(self, vocabulary_size, embedding_size):\n", + " super(SimpleBigramNeuralLanguageModel, self).__init__()\n", + " self.model = nn.Sequential(\n", + " nn.Embedding(vocabulary_size, embedding_size),\n", + " nn.Linear(embedding_size, vocabulary_size),\n", + " nn.Softmax()\n", + " )\n", + "\n", + " def forward(self, x):\n", + " return self.model(x)\n", + "\n", + "model = SimpleBigramNeuralLanguageModel(vocab_size, embed_size)\n", + "\n", + "vocab.set_default_index(vocab[''])\n", + "ixs = torch.tensor(vocab.forward(['pies']))\n", + "out[0][vocab['jest']]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Teraz wyuczmy model. Wpierw tylko potasujmy nasz plik:\n", + "\n", + " shuf < opensubtitlesA.pl.txt > opensubtitlesA.pl.shuf.txt\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from torch.utils.data import IterableDataset\n", + "import itertools\n", + "\n", + "def look_ahead_iterator(gen):\n", + " prev = None\n", + " for item in gen:\n", + " if prev is not None:\n", + " yield (prev, item)\n", + " prev = item\n", + "\n", + "class Bigrams(IterableDataset):\n", + " def __init__(self, text_file, vocabulary_size):\n", + " self.vocab = build_vocab_from_iterator(\n", + " get_word_lines_from_file(text_file),\n", + " max_tokens = vocabulary_size,\n", + " specials = [''])\n", + " self.vocab.set_default_index(self.vocab[''])\n", + " self.vocabulary_size = vocabulary_size\n", + " self.text_file = text_file\n", + "\n", + " def __iter__(self):\n", + " return look_ahead_iterator(\n", + " (self.vocab[t] for t in itertools.chain.from_iterable(get_word_lines_from_file(self.text_file))))\n", + "\n", + "train_dataset = Bigrams('opensubtitlesA.pl.shuf.txt', vocab_size)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2, 5)" + ] + } + ], + "source": [ + "from torch.utils.data import DataLoader\n", + "\n", + "next(iter(train_dataset))" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[tensor([ 2, 5, 51, 3481, 231]), tensor([ 5, 51, 3481, 231, 4])]" + ] + } + ], + "source": [ + "from torch.utils.data import DataLoader\n", + "\n", + "next(iter(DataLoader(train_dataset, batch_size=5)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " device = 'cuda'\n", + " model = SimpleBigramNeuralLanguageModel(vocab_size, embed_size).to(device)\n", + " data = DataLoader(train_dataset, batch_size=5000)\n", + " optimizer = torch.optim.Adam(model.parameters())\n", + " criterion = torch.nn.NLLLoss()\n", + " \n", + " model.train()\n", + " step = 0\n", + " for x, y in data:\n", + " x = x.to(device)\n", + " y = y.to(device)\n", + " optimizer.zero_grad()\n", + " ypredicted = model(x)\n", + " loss = criterion(torch.log(ypredicted), y)\n", + " if step % 100 == 0:\n", + " print(step, loss)\n", + " step += 1\n", + " loss.backward()\n", + " optimizer.step()\n", + " \n", + " torch.save(model.state_dict(), 'model1.bin')\n", + "\n", + "Policzmy najbardziej prawdopodobne kontynuację dla zadanego słowa:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('ciebie', 73, 0.1580502986907959), ('mnie', 26, 0.15395283699035645), ('', 0, 0.12862136960029602), ('nas', 83, 0.0410110242664814), ('niego', 172, 0.03281523287296295), ('niej', 245, 0.02104802615940571), ('siebie', 181, 0.020788608118891716), ('którego', 365, 0.019379809498786926), ('was', 162, 0.013852755539119244), ('wszystkich', 235, 0.01381855271756649)]" + ] + } + ], + "source": [ + "device = 'cuda'\n", + "model = SimpleBigramNeuralLanguageModel(vocab_size, embed_size).to(device)\n", + "model.load_state_dict(torch.load('model1.bin'))\n", + "model.eval()\n", + "\n", + "ixs = torch.tensor(vocab.forward(['dla'])).to(device)\n", + "\n", + "out = model(ixs)\n", + "top = torch.topk(out[0], 10)\n", + "top_indices = top.indices.tolist()\n", + "top_probs = top.values.tolist()\n", + "top_words = vocab.lookup_tokens(top_indices)\n", + "list(zip(top_words, top_indices, top_probs))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Teraz zbadajmy najbardziej podobne zanurzenia dla zadanego słowa:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('.', 3, 0.404473215341568), (',', 4, 0.14222915470600128), ('z', 14, 0.10945753753185272), ('?', 6, 0.09583134204149246), ('w', 10, 0.050338443368673325), ('na', 12, 0.020703863352537155), ('i', 11, 0.016762692481279373), ('', 0, 0.014571071602404118), ('...', 15, 0.01453721895813942), ('', 1, 0.011769450269639492)]" + ] + } + ], + "source": [ + "vocab = train_dataset.vocab\n", + "ixs = torch.tensor(vocab.forward(['kłopot'])).to(device)\n", + "\n", + "out = model(ixs)\n", + "top = torch.topk(out[0], 10)\n", + "top_indices = top.indices.tolist()\n", + "top_probs = top.values.tolist()\n", + "top_words = vocab.lookup_tokens(top_indices)\n", + "list(zip(top_words, top_indices, top_probs))" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('poszedł', 1087, 1.0), ('idziesz', 1050, 0.4907470941543579), ('przyjeżdża', 4920, 0.45242372155189514), ('pojechałam', 12784, 0.4342481195926666), ('wrócił', 1023, 0.431664377450943), ('dobrać', 10351, 0.4312002956867218), ('stałeś', 5738, 0.4258835017681122), ('poszła', 1563, 0.41979148983955383), ('trafiłam', 18857, 0.4109022617340088), ('jedzie', 1674, 0.4091658890247345)]" + ] + } + ], + "source": [ + "cos = nn.CosineSimilarity(dim=1, eps=1e-6)\n", + "\n", + "embeddings = model.model[0].weight\n", + "\n", + "vec = embeddings[vocab['poszedł']]\n", + "\n", + "similarities = cos(vec, embeddings)\n", + "\n", + "top = torch.topk(similarities, 10)\n", + "\n", + "top_indices = top.indices.tolist()\n", + "top_probs = top.values.tolist()\n", + "top_words = vocab.lookup_tokens(top_indices)\n", + "list(zip(top_words, top_indices, top_probs))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Zapis przy użyciu wzoru matematycznego\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Powyżej zaprogramowaną sieć neuronową można opisać następującym wzorem:\n", + "\n", + "$$\\vec{y} = \\operatorname{softmax}(CE(w_{i-1}),$$\n", + "\n", + "gdzie:\n", + "\n", + "- $w_{i-1}$ to pierwszy wyraz w bigramie (poprzedzający wyraz),\n", + "- $E(w)$ to zanurzenie (embedding) wyrazy $w$ — wektor o rozmiarze $m$,\n", + "- $C$ to macierz o rozmiarze $|V| \\times m$, która rzutuje wektor zanurzenia w wektor o rozmiarze słownika,\n", + "- $\\vec{y}$ to wyjściowy wektor prawdopodobieństw o rozmiarze $|V|$.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Hiperparametry\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zauważmy, że nasz model ma dwa hiperparametry:\n", + "\n", + "- $m$ — rozmiar zanurzenia,\n", + "- $|V|$ — rozmiar słownika, jeśli zakładamy, że możemy sterować\n", + " rozmiarem słownika (np. przez obcinanie słownika do zadanej liczby\n", + " najczęstszych wyrazów i zamiany pozostałych na specjalny token, powiedzmy, ``.\n", + "\n", + "Oczywiście możemy próbować manipulować wartościami $m$ i $|V|$ w celu\n", + "polepszenia wyników naszego modelu.\n", + "\n", + "**Pytanie**: dlaczego nie ma sensu wartość $m \\approx |V|$ ? dlaczego nie ma sensu wartość $m = 1$?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Diagram sieci\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jako że mnożenie przez macierz ($C$) oznacza po prostu zastosowanie\n", + "warstwy liniowej, naszą sieć możemy interpretować jako jednowarstwową\n", + "sieć neuronową, co można zilustrować za pomocą następującego diagramu:\n", + "\n", + "![img](./07_Zanurzenia_slow/bigram1.drawio.png \"Diagram prostego bigramowego neuronowego modelu języka\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Zanurzenie jako mnożenie przez macierz\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Uzyskanie zanurzenia ($E(w)$) zazwyczaj realizowane jest na zasadzie\n", + "odpytania (look-up\\_). Co ciekawe, zanurzenie można intepretować jako\n", + "mnożenie przez macierz zanurzeń (embeddingów) $E$ o rozmiarze $m \\times |V|$ — jeśli słowo będziemy na wejściu kodowali przy użyciu\n", + "wektora z gorącą jedynką (one-hot encoding\\_), tzn. słowo $w$ zostanie\n", + "podane na wejściu jako wektor $\\vec{1_V}(w) = [0,\\ldots,0,1,0\\ldots,0]$ o rozmiarze $|V|$\n", + "złożony z samych zer z wyjątkiem jedynki na pozycji odpowiadającej indeksowi wyrazu $w$ w słowniku $V$.\n", + "\n", + "Wówczas wzór przyjmie postać:\n", + "\n", + "$$\\vec{y} = \\operatorname{softmax}(CE\\vec{1_V}(w_{i-1})),$$\n", + "\n", + "gdzie $E$ będzie tym razem macierzą $m \\times |V|$.\n", + "\n", + "**Pytanie**: czy $\\vec{1_V}(w)$ intepretujemy jako wektor wierszowy czy kolumnowy?\n", + "\n", + "W postaci diagramu można tę interpretację zilustrować w następujący sposób:\n", + "\n", + "![img](./07_Zanurzenia_slow/bigram2.drawio.png \"Diagram prostego bigramowego neuronowego modelu języka z wejściem w postaci one-hot\")\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.2" + }, + "org": null + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/wyk/08_Neuronowy_ngramowy_model.ipynb b/wyk/08_Neuronowy_ngramowy_model.ipynb index 607c5bc..a9a1212 100644 --- a/wyk/08_Neuronowy_ngramowy_model.ipynb +++ b/wyk/08_Neuronowy_ngramowy_model.ipynb @@ -1,4 +1,3 @@ - { "cells": [ { @@ -16,4 +15,728 @@ "\n" ] }, -{"cell_type":"markdown","metadata":{},"source":["## Neuronowy n-gramowy model języka\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Omówiony w poprzedniej części neuronowy bigramowy model języka\nwarunkuje kolejny wyraz jedynie względem bezpośrednio poprzedzającego\n— jak w każdym bigramowym modelu przyjmujemy założenie, że $w_i$\nzależy tylko od $w_{i-1}$. Rzecz jasna jest to bardzo duże\nograniczenie, w rzeczywistości bardzo często prawdopodobieństwo\nkolejnego wyrazu zależy od wyrazu dwie, trzy, cztery itd. pozycje\nwstecz czy w ogólności od wszystkich wyrazów poprzedzających (bez\nwzględu na ich pozycje).\n\n**Pytanie**: Wskaż zależności o zasięgu większym niż 1 wyraz w zdaniu\n/Zatopieni w kłębach dymu cygar i pochyleni nad butelkami z ciemnego\nszkła obywatele tej dzielnicy, jedni zakładali się o wygranę lub\nprzegranę Anglii, drudzy o bankructwo Wokulskiego; jedni nazywali\ngeniuszem Bismarcka, drudzy — awanturnikiem Wokulskiego; jedni\nkrytykowali postępowanie prezydenta MacMahona, inni twierdzili, że\nWokulski jest zdecydowanym wariatem, jeżeli nie czymś gorszym…/\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Trigramowy neuronowy model języka\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Spróbujmy najpierw rozszerzyć nasz model na trigramy, to znaczy\nbędziemy przewidywać słowo $w_i$ na podstawie słów $w_{i-2}$ i\n$w_{i-1}$.\n\nNajprostsze rozwiązanie polegałoby na zanurzeniu pary $(w_{i-2},\nw_{i-1})$ w całości i postępowaniu jak w przypadku modelu bigramowego.\nByłoby to jednak zupełnie niepraktyczne, jako że:\n\n- liczba zanurzeń do wyuczenia byłaby olbrzymia ($|V|^2$ — byłoby to\n ewentualnie akceptowalne dla modeli operujących na krótszych\n jednostkach niż słowa, np. na znakach),\n- w szczególności zanurzenia dla par $(v, u)$, $(u, v)$, $(u, u)$ i\n $(v, v)$ nie miałyby ze sobą nic wspólnego.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Konketanacja zanurzeń\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Właściwsze rozwiązanie polega na zanurzeniu dalej pojedynczych słów i\nnastępnie ich **konkatenowaniu**.\n\nPrzypomnijmy, że konkatenacja wektorów $\\vec{x_1}$ i $\\vec{x_2}$ to wektor o rozmiarze\n$|\\vec{x_1}| + |\\vec{x_2}|$ powstały ze „sklejania” wektorów $\\vec{x_1}$ i $\\vec{x_2}$.\nKonkatenację wektorów $\\vec{x_1}$ i $\\vec{x_2}$ będziemy oznaczać za pomocą $[\\vec{x_1}, \\vec{x_2}]$.\n\nPrzykład: jeśli $\\vec{x_1} = [-1, 2, 0]$ i $\\vec{x_2} = [3, -3]$,\nwówczas $[\\vec{x_1}, \\vec{x_2}] = [-1, 2, 0, 3, -3]$\n\nOznacza to, że nasza macierz „kontekstowa” $C$ powinna mieć w modelu trigramowym rozmiar nie\n$|V| \\times m$, lecz $|V| \\times (m+m)$ = $|V| \\times 2m$ i wyjście będzie zdefiniowane za pomocą wzoru:\n\n$$\\vec{y} = \\operatorname{softmax}(C[E(w_{i-2}),E(w_{i-1})]),$$\n\nco można przedstawić za pomocą następującego schematu:\n\n![img](./08_Neuronowy_ngramowy_model/trigram1.drawio.png \"Diagram prostego bigramowego neuronowego modelu języka\")\n\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Rozbicie macierzy $C$\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Zamiast mnożyć macierz $C$ przez konkatenację dwóch wektorów, można\nrozbić macierz $C$ na dwie, powiedzmy $C_{-2}$ i $C_{-1}$, przemnażać\nje osobno przez odpowiadające im wektory i następnie **dodać** macierze,\ntak aby:\n\n$$C[E(w_{i-2}),E(w_{i-1})] = C_{-2}E(w_{i-2}) + C_{-1}E(w_{i-1}).$$\n\nMacierze $C_{-2}$ i $C_{-1}$ będą miały rozmiar $|V| \\times m$.\n\nPrzy tym podejściu możemy powiedzieć, że ostatni i przedostatni wyraz\nmają swoje osobne macierze o potencjalnie różnych wagach — co ma sens,\njako że na inne aspekty zwracamy uwagę przewidując kolejne słowo na\npodstawie wyrazu bezpośrednio poprzedzającego, a na inne — na\npodstawie słowa występującego dwie pozycje wcześniej.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Uogólnienie na $n$-gramowy model języka dla dowolnego $n$\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Łatwo uogólnić opisany wyżej trigramowy model języka dla dowolnego $n$.\nUogólniony model można przedstawić za pomocą wzoru:\n\n$$\\vec{y} = \\operatorname{softmax}(C[E(w_{i-n+1}),\\dots,E(w_{i-1})]),$$\n\ngdzie macierz $C$ ma rozmiar $|V| \\times nm$ lub za pomocą wzoru:\n\n$$\\vec{y} = \\operatorname{softmax}(C_{-(n-1)}E(w_{i-n+1}) + \\dots + C_{-1}E(w_{i-1}),$$\n\ngdzie macierze $C_{-(n-1)}$, …, $C_{-1}$ mają rozmiary $|V| \\times m$.\n\nPor. diagram:\n\n![img](./08_Neuronowy_ngramowy_model/ngram.drawio.png \"Diagram prostego n-gramowego neuronowego modelu języka\")\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Dodanie kolejnej warstwy\n\n"]},{"cell_type":"markdown","metadata":{},"source":["W wypadku trigramowego czy — ogólniej — n-gramowego modelu języka dla\n$n \\geq 3$ warto dodać kolejną (**ukrytą**) warstwę, na którą będziemy rzutować\nskonkatenowane embeddingi, zanim zrzutujemy je do długiego wektora\nprawdopodobieństw.\n\nZakładamy, że warstwa ukryta zawiera $h$ neuronów. Wartość $h$ powinna być mniejsza\nniż $nm$ (a może nawet od $m$).\n\n**Pytanie**: Dlaczego wartość $h > nm$ nie jest racjonalnym wyborem?\n\n**Pytanie**: Dlaczego dodanie kolejnej warstwy nie ma sensu dla modelu bigramowego?\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Funkcja aktywacji\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Aby warstwa ukryta wnosiła coś nowego, na wyjściu z tej funkcji musimy (dlaczego?)\nzastosować nieliniową **funkcji aktywacji**. Zazwyczaj jako funkcji\naktywacji w sieciach neuronowych używa się funkcji ReLU albo funkcji\nsigmoidalnej. W prostych neuronowych modelach języka sprawdza się też\n**tangens hiperboliczny** (tgh, w literaturze anglojęzycznej tanh):\n\n$$\\operatorname{tgh}(x) = \\frac{e^x - e^{-x}}{e^x + e^{-x}}.$$\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAj90lEQVR4nO3de3xV5Z3v8c8vOzcg3Em4hEQuIhcRgUZqa0dFhSLVYvW0VTvWTs8MxzkyU3vanmHsOZ2+Tufi2E57ZlpbS1s79lRLtUplFBVEO9ZrAUXuCCJIQkjC/ZKQ2/6dP/aCbkPAJGTvtdfO9/3qfu21nudZK79tSb57PXvttczdERERiZqcsAsQERHpCgWYiIhEkgJMREQiSQEmIiKRpAATEZFIUoCJiEgkKcBERCSSFGAiIhJJCjAREYkkBZiIiESSAkxERCJJASYiIpGkABMRkUhSgImISCQpwEREJJIUYCIiEkkKMBERiSQFmIiIRJICTEREIkkBJiIikaQAExGRSFKAiYhIJCnAREQkkhRgIiISSQowERGJJAWYiIhEkgJMREQiSQEmIiKRpAATEZFIUoCJiEgkKcBERCSSFGAiIhJJCjAREYkkBZiIiERSbtgFpMqQIUN81KhRYZchIhIpa9as2efuxWHX0RFZG2CjRo1i9erVYZchIhIpZrYr7Bo6SlOIIiISSQowERGJJAWYiIhEUtoCzMweMLNaM9twhn4zs38zs+1mts7Mpif1zTGzrUHfwnTVLCIimSudR2D/Dsw5S/+1wLjgMR/4EYCZxYD7gv5JwC1mNimllYqISMZLW4C5+4vAgbMMmQf8whNeAwaY2XBgBrDd3Xe4exOwOBgrIiI9WCadRl8K7E5arwza2mv/cBrrEpEsFI87zfE4rXGnudVpjTstwXpr3InHodWDZQ8ecYi7484f2xzcHQ/26YA7OE7wv1Pr7omfHTyd2u59jbQZm9SeLLnZ2wyaMnIAw/oXnst/nkjIpACzdtr8LO2n78BsPonpR8rLy7uvMhEJTTzuHGpo5sDxRg7VN3O4IfE4eqKFoyeaOdrYwvHGFuqbWmloaqW+qZUTza2caInT2NxKY/Dc1BqnsSVOc2v8VGBlq/tunc4npgwPu4yUy6QAqwTKktZHAnuA/DO0n8bdFwGLACoqKrL3X6dIlnB39h1rYuf+41QerKfqYANVhxrYe/gENUcaqT16ggPHmzhb1uTHcuhTEKN3fi59CmL0yotRmBdjQK88CvsVUJAbIz83J/GIJZ7zYkZeLIe8WA6xHCM3J7GeEyzHzMjJMWI5kGNGLGgzM8wI+sFIjDPALDHWACzRZ5Z4B56Tk3gffnIcp9Y4NSax/Mf368ljrd338cn7er+ygb0/8L99NsikAFsKLDCzxSSmCA+7e7WZ1QHjzGw0UAXcDNwaYp0i0gXHGltYX3mYzdVH2LL3CFv3HmXHvuMcPdHyvnFDivIZ1r+QYf0LmTKyP0OKChjUJ5/BRfkM6J3PgF559O+VR79eefQpiFGQGwvpFUnY0hZgZvYr4EpgiJlVAn8H5AG4+/3AMmAusB2oB/4s6GsxswXAs0AMeMDdN6arbhHpmv3HGnn5nf28tmM/b+w6yNs1R08dSQ3uk8+E4X351LRSRg/pw+ghfSgb1JvSAb0ozFMgScekLcDc/ZYP6HfgzjP0LSMRcCKSodydLXuP8vT6ap7bXMum6iMA9C3IZWr5AD5+4TCmlg/gwuH9KO5b8L7pMpGuyKQpRBGJoKpDDTyyajdPrK1i5/56cgwqzhvEV2dfwMfGFXNRaX9iOQor6X4KMBHpNHfnha21PPjKLl7cVgfAR8cOZv7lY5l94VCGFBWEXKH0BAowEemw1rizbH01P/zdO2yuPsLQfgUsmHk+n6koo2xQzzjzTTKHAkxEOuTFt+v41pOb2FZ7jLHFffjOpy9m3tQR5MV0TXAJhwJMRM5qR90x/v6pzTy/pZbzBvfmvlunc+3kYae+2yQSFgWYiLQrHnd+/spO7n1mC/mxHO6eO4HbPzpK37uSjKEAE5HTVB6s56uPvsVrOw5w9YQS/unGiyjpl/3X1pNoUYCJyPv8flsddz70Bq1x596bpvDpipH6zpZkJAWYiACJU+N/9tK7/OOyzYwr6cuiz3+I8wb3CbsskTNSgIkILa1x7l6ynkdWVzJ70lC++9mpFBXoz4NkNv0LFenhmlvj3LV4LU+tr+avrjqfL19zgc4wlEhQgIn0YI0trfzVw2+yfFMNX587kb+4fEzYJYl0mAJMpIdqbo3zl798g+e31PLN6yfxhctGh12SSKcowER6IHfn7sfX8/yWWr51w2Ruu/S8sEsS6TRdA0akB/r+89t5dE0lf33V+QoviSwFmEgP89iaSr674m1unFbKl2ddEHY5Il2WtgAzszlmttXMtpvZwnb6v2Zma4PHBjNrNbNBQd9OM1sf9K1OV80i2eat3YdY+Pg6Pjp2MPfcNEVfUJZIS8tnYGYWA+4DZgGVwCozW+rum06OcfdvA98Oxl8PfNndDyTtZqa770tHvSLZ6HBDM3c+/AYlfQv54eemk5+rCRiJtnT9C54BbHf3He7eBCwG5p1l/C3Ar9JSmUgP4O4sfGwdew+f4Pu3TmNA7/ywSxI5Z+kKsFJgd9J6ZdB2GjPrDcwBHktqdmC5ma0xs/kpq1IkS/3ytV08vWEvX/v4eKaXDwy7HJFuka7T6NubaPczjL0eeLnN9OFl7r7HzEqAFWa2xd1fPO2HJMJtPkB5efm51iySFd6uOcq3ntzMzPHF/MWf6IvKkj3SdQRWCZQlrY8E9pxh7M20mT509z3Bcy2whMSU5GncfZG7V7h7RXFx8TkXLRJ1rXHnbx5bR5+CGN/59MW6RJRklXQF2CpgnJmNNrN8EiG1tO0gM+sPXAE8kdTWx8z6nlwGZgMb0lK1SMT98rVdvPneIb5x/SQGFxWEXY5It0rLFKK7t5jZAuBZIAY84O4bzeyOoP/+YOingOXufjxp86HAkuB031zgYXd/Jh11i0RZ1aEG7n1mC5dfUMwNU9v9yFkk0tJ2KSl3XwYsa9N2f5v1fwf+vU3bDuDiFJcnklXcnf+1ZD1xh3+4YbK+7yVZSV8EEclCyzfV8MLWOr4y+wLKBvUOuxyRlFCAiWSZppY49zy9hfNLivjCR0eFXY5IyijARLLMw6/v4t19x7l77gRyY/oVl+ylf90iWeRwQzP/unIbl50/mJnjS8IuRySlFGAiWeSHL2znUEMzd8+dqBM3JOspwESyROXBen7+8k5umj6SC0f0D7sckZRTgIlkifteeAeAr8zWPb6kZ1CAiWSBPYca+M2a3Xz2kjKG9+8VdjkiaaEAE8kC9/9n4ujrjivHhlyJSPoowEQirvbICRav2s1N00dSOkBHX9JzKMBEIu7HL+6gNe789yvPD7sUkbRSgIlE2L5jjTz0+i5umFpK+WBdMkp6FgWYSIT94pWdNLbEuXOmPvuSnkcBJhJRJ5pbeej197h6wlDGFBeFXY5I2inARCJq6Vt72H+8iS9eNirsUkRCoQATiSB35+cv72T80L58ZOzgsMsRCUXaAszM5pjZVjPbbmYL2+m/0swOm9na4PGNjm4r0tO8tuMAm6uP8MWPjdI1D6XHSssdmc0sBtwHzAIqgVVmttTdN7UZ+nt3v66L24r0GD9/+V0G9s5j3tTSsEsRCU26jsBmANvdfYe7NwGLgXlp2FYk67y3v54Vm2u49cPlFObFwi5HJDTpCrBSYHfSemXQ1tZHzOwtM3vazC7s5LYiPcJDr+8ix4zbLh0VdikioUrLFCLQ3iS9t1l/AzjP3Y+Z2Vzgt8C4Dm6b+CFm84H5AOXl5V0uViRTNbXE+c2aSq6eUMKw/oVhlyMSqnQdgVUCZUnrI4E9yQPc/Yi7HwuWlwF5ZjakI9sm7WORu1e4e0VxcXF31i+SEZ7bXMP+403cMkNv0ETSFWCrgHFmNtrM8oGbgaXJA8xsmAWnU5nZjKC2/R3ZVqSn+NUf3mNE/0Iuv0Bv0ETSMoXo7i1mtgB4FogBD7j7RjO7I+i/H/gvwF+aWQvQANzs7g60u2066hbJJLsP1PPS9n389VXjiOXo1HmRdH0GdnJacFmbtvuTln8A/KCj24r0NI+uTpzL9JlLyj5gpEjPoCtxiERAS2ucR1ZXcvm4Yt3zSySgABOJgP98u469R05wywwdfYmcpAATiYDfrKlkcJ98rp44NOxSRDKGAkwkwx1uaGbl5lquv3gEeTH9yoqcpN8GkQy3bH01Ta1xbpyuC9CIJFOAiWS4JW9WMaa4DxeV9g+7FJGMogATyWC7D9Tzh3cPcOO0Ut02RaQNBZhIBlv6VuKqabptisjpFGAiGcrdefyNSmaMGkTZoN5hlyOScRRgIhlqQ9UR3qk7zg3TdPQl0h4FmEiG+u3aKvJjOXziouFhlyKSkRRgIhkoHneeWlfNFeOL6d87L+xyRDKSAkwkA6157yB7j5zguik6+hI5EwWYSAZ6al01Bbk5unSUyFkowEQyTGvcWba+mpnjSygqSNsdj0QiRwEmkmFW7TxA7dFGrrtY04ciZ5O2ADOzOWa21cy2m9nCdvo/Z2brgscrZnZxUt9OM1tvZmvNbHW6ahYJw1PrqinMy+GqCSVhlyKS0dIyP2FmMeA+YBZQCawys6Xuvilp2LvAFe5+0MyuBRYBH07qn+nu+9JRr0hYWuPO0xuquXrCUHrna/pQ5GzSdQQ2A9ju7jvcvQlYDMxLHuDur7j7wWD1NWBkmmoTyRiv79jPvmNNOvtQpAPSFWClwO6k9cqg7Uz+K/B00roDy81sjZnNT0F9IhnhyfXV9M6PceV4TR+KfJB0zVG0dxltb3eg2UwSAfaxpObL3H2PmZUAK8xsi7u/2M6284H5AOXl5edetUgatcad5RtrmDmhhF75sbDLEcl46ToCqwTKktZHAnvaDjKzKcBPgXnuvv9ku7vvCZ5rgSUkpiRP4+6L3L3C3SuKi4u7sXyR1Fuz6yD7jjVy7eRhYZciEgnpCrBVwDgzG21m+cDNwNLkAWZWDjwO3Obubye19zGzvieXgdnAhjTVLZI2z2zYS35ujqYPRTooLVOI7t5iZguAZ4EY8IC7bzSzO4L++4FvAIOBHwY37mtx9wpgKLAkaMsFHnb3Z9JRt0i6uDvPbtzL5eOG6MvLIh2Utt8Ud18GLGvTdn/S8p8Df97OdjuAi9u2i2STDVVHqDrUwF3XjAu7FJHI0JU4RDLAMxurieUY1+jahyIdpgATyQDPbNjLpWMGMbBPftiliESGAkwkZNtqjvJO3XHmXKizD0U6QwEmErJnNuwFYLYCTKRTFGAiIXt2016mlw9gaL/CsEsRiRQFmEiIqg41sKHqCB/X0ZdIpynAREK0YmNi+nDWJJ19KNJZCjCREK3YXMP5JUWMKS4KuxSRyFGAiYTkcH0zr+04wGwdfYl0iQJMJCTPb62hNe6aPhTpIgWYSEhWbKqhpG8BF48cEHYpIpGkABMJwYnmVn63tY5Zk4aSk9Pe7fJE5IMowERC8Mo7+6hvatWXl0XOgQJMJAQrNtVQVJDLpWMGhV2KSGQpwETSLB53Vmyq5YrxxRTkxsIuRySy0hZgZjbHzLaa2XYzW9hOv5nZvwX968xseke3FYmSN3cfYt+xRp0+L3KO0hJgZhYD7gOuBSYBt5jZpDbDrgXGBY/5wI86sa1IZKzYVENujnHl+JKwSxGJtNMCzMwWmNnAbv45M4Dt7r7D3ZuAxcC8NmPmAb/whNeAAWY2vIPbikTGik17uXTMYPr3ygu7FJFIa+8IbBiwysweCabuuuMc31Jgd9J6ZdDWkTEd2VYkEnbUHeOduuNcM1FHXyLn6rQAc/f/RWIa72fAF4BtZvaPZjb2HH5OeyHoHRzTkW0TOzCbb2arzWx1XV1dJ0sUSb0Vm2oAuEaff4mcs3Y/A3N3B/YGjxZgIPAbM7u3iz+nEihLWh8J7OngmI5se7LuRe5e4e4VxcXFXSxVJHVWbKph0vB+jBzYO+xSRCKvvc/A/trM1gD3Ai8DF7n7XwIfAm7q4s9ZBYwzs9Fmlg/cDCxtM2Yp8PngbMRLgcPuXt3BbUUy3r5jjax576CufSjSTXLbaRsC3Ojuu5Ib3T1uZtd15Ye4e4uZLQCeBWLAA+6+0czuCPrvB5YBc4HtQD3wZ2fbtit1iITp+c21uOveXyLd5bQAc/dvnGmwu2/u6g9y92UkQiq57f6kZQfu7Oi2IlGzfFMNpQN6ceGIfmGXIpIVdCUOkTRoaGrlpe11XDOxhO45sVdEFGAiafD7bXWcaI7r4r0i3UgBJpIGyzfV0K8wlxmjdfFeke6iABNJsZbWOCs313DVhBLyYvqVE+ku+m0SSbE1uw5ysL5Z04ci3UwBJpJiyzfVkJ+bw+UX6Mv1It1JASaSQu7O8k17uWzsYIoK2vvapYh0lQJMJIW21hxl94EGTR+KpIACTCSFlm+swQyu1tXnRbqdAkwkhVZsqmFa2QBK+haGXYpI1lGAiaRI1aEG1lcd1vShSIoowERS5JkNewGYowATSQkFmEiKPLthLxOG9WXUkD5hlyKSlRRgIilQd7SRVbsOMGeyjr5EUkUBJpICKzbV4I4CTCSFFGAiKfD0hmpGDe7N+KF9wy5FJGulPMDMbJCZrTCzbcHzwHbGlJnZC2a22cw2mtmXkvq+aWZVZrY2eMxNdc0i5+JwfTOvvrOfj08epnt/iaRQOo7AFgIr3X0csDJYb6sF+Iq7TwQuBe40s0lJ/d9z96nBQ3dmloy2cksNLXHn2snDwy5FJKulI8DmAQ8Gyw8CN7Qd4O7V7v5GsHwU2AyUpqE2kW73zIa9DO9fyJTS/mGXIpLV0hFgQ929GhJBBZz1mjpmNgqYBrye1LzAzNaZ2QPtTUGKZIrjjS3859t1zJ40lJwcTR+KpFK3BJiZPWdmG9p5zOvkfoqAx4C73P1I0PwjYCwwFagG/uUs2883s9Vmtrqurq5rL0bkHKzcUktjS5y5F2n6UCTVuuX+Du5+zZn6zKzGzIa7e7WZDQdqzzAuj0R4PeTujyftuyZpzE+AJ89SxyJgEUBFRYV3+oWInKOn1u2hpG8Bl4waFHYpIlkvHVOIS4Hbg+XbgSfaDrDEqVo/Aza7+3fb9CW/lf0UsCFFdYqck6Mnmnlhax1zLxqu6UORNEhHgN0DzDKzbcCsYB0zG2FmJ88ovAy4DbiqndPl7zWz9Wa2DpgJfDkNNYt02srNtTS1xLluiqYPRdIh5beIdff9wNXttO8B5gbLLwHtvmV199tSWqBIN3lyXTXD+hUyvVznGYmkg67EIdINDjc08+LbdXxiiqYPRdJFASbSDZ7bVENTa5xPaPpQJG0UYCLd4Ml1eygd0ItpZQPCLkWkx1CAiZyjQ/VNvLR9H5+YMlzXPhRJIwWYyDl6an01za3O9VNGhF2KSI+iABM5R799s4rzS4qYXNov7FJEehQFmMg52H2gnlU7D/KpaaWaPhRJMwWYyDn47ZtVAMybqulDkXRTgIl0kbuzZG0VM0YPYuTA3mGXI9LjKMBEumhd5WF21B3nxmm6dZ1IGBRgIl205M0q8nNzuFa3ThEJhQJMpAuaW+P8x1t7uGZiCf175YVdjkiPpAAT6YLfba1j//Embpiq6UORsCjARLrg16veo7hvATMnlIRdikiPpQAT6aS9h0/w/JZaPv2hkeTF9CskEhb99ol00qOrdxN3+OwlZWGXItKjpTzAzGyQma0ws23Bc7t3+zOzncGdl9ea2erObi+SDvG48+vVu/no2MGcN7hP2OWI9GjpOAJbCKx093HAymD9TGa6+1R3r+ji9iIp9fI7+6g82MDNM8rDLkWkx0tHgM0DHgyWHwRuSPP2It1m8R92M6B3HrMnDQ27FJEeLx0BNtTdqwGC5zOdtuXAcjNbY2bzu7C9SErtP9bI8k17uXHaSArzYmGXI9Lj5XbHTszsOWBYO11f78RuLnP3PWZWAqwwsy3u/mIn65gPzAcoL9cUj3Svxat209zq3DJDJ2+IZIJuCTB3v+ZMfWZWY2bD3b3azIYDtWfYx57gudbMlgAzgBeBDm0fbLsIWARQUVHhXX9FIu/X3BrnF6/u5E/GDWHc0L5hlyMipGcKcSlwe7B8O/BE2wFm1sfM+p5cBmYDGzq6vUiqLVtfTc2RRr542eiwSxGRQDoC7B5glpltA2YF65jZCDNbFowZCrxkZm8BfwCecvdnzra9SDo98PJOxgzpwxUXFIddiogEumUK8WzcfT9wdTvte4C5wfIO4OLObC+SLm+8d5C3dh/i/8y7kJwc3XVZJFPoShwiH+CBl96lb2EuN00fGXYpIpJEASZyFtWHG3h6w15uvqSMPgUpn7AQkU5QgImcxU9efBeAz39kVLiFiMhpFGAiZ1B3tJGH/7CLG6aWUjaod9jliEgbCjCRM/jp73fQ1BLnzpljwy5FRNqhABNpx4HjTfy/13Zx3ZQRjCkuCrscEWmHAkykHQ+89C71Ta0suOr8sEsRkTNQgIm0cbihmQdf2cm1k4dxgS4bJZKxFGAibfzkxR0cbWzR0ZdIhlOAiSTZc6iBn/x+B5+8eAQXjugfdjkichYKMJEk31m+FQe+9vHxYZciIh9AASYS2FB1mCVvVvFnl43S975EIkABJgK4O//w1GYG9s7nzpn67EskChRgIsBzm2t5dcd+7rpmHP0K88IuR0Q6QAEmPd6xxhb+7okNjCsp4pYZ5WGXIyIdlPIAM7NBZrbCzLYFzwPbGTPezNYmPY6Y2V1B3zfNrCqpb26qa5ae5TvPbqX6yAnuuWkKeTG9pxOJinT8ti4EVrr7OGBlsP4+7r7V3ae6+1TgQ0A9sCRpyPdO9rv7srbbi3TVG+8d5MFXd/L5S8/jQ+ed9t5KRDJYOgJsHvBgsPwgcMMHjL8aeMfdd6WyKJGmljgLH1vHsH6FfG3OhLDLEZFOSkeADXX3aoDgueQDxt8M/KpN2wIzW2dmD7Q3BSnSFT94fhtv1xzj72+YTJFuVikSOd0SYGb2nJltaOcxr5P7yQc+CTya1PwjYCwwFagG/uUs2883s9Vmtrqurq7zL0R6jFe27+P7L2znxumlXD1xaNjliEgXdMvbTne/5kx9ZlZjZsPdvdrMhgO1Z9nVtcAb7l6TtO9Ty2b2E+DJs9SxCFgEUFFR4Z14CdKD1B1t5Eu/XsuYIX341rzJYZcjIl2UjinEpcDtwfLtwBNnGXsLbaYPg9A76VPAhm6tTnqUeNz5H4+s5UhDMz+4dTp9NHUoElnpCLB7gFlmtg2YFaxjZiPM7NQZhWbWO+h/vM3295rZejNbB8wEvpyGmiVLff/57fx+2z7+7voLmTi8X9jliMg5SPnbT3ffT+LMwrbte4C5Sev1wOB2xt2W0gKlx3hibRXfe+5tbpxWyi0zysIuR0TOkb61KT3Cazv287VH13HpmEH8000XYWZhlyQi50gBJllve+1R5v9iNeWDe/PjP62gIDcWdkki0g0UYJLVttce43M/fZ383Bg//8Il9O+tC/WKZAudgiVZa+veo3zup68B8NCfX6p7fIlkGR2BSVbaUHWYmxe9SizHWDz/I4wf1jfskkSkmynAJOus2FTDZ3/8Kr3yYvx6/kc4v6Qo7JJEJAU0hShZw9354e/e4TvLtzJ5RH8Wff5DDO/fK+yyRCRFFGCSFQ7VN3H3kvUsW7+XeVNH8M83TaEwT2cbimQzBZhE3gtba/mb36zjwPEm/vbaCcy/fIy+5yXSAyjAJLL2H2vk289uZfGq3VwwtIgHvnAJk0v7h12WiKSJAkwip6klzi9e3cm/rtxGfVMr/+3yMXx51gWaMhTpYRRgEhlNLXGWvFnJj373Djv313PFBcX87+smcn6JTpEX6YkUYJLxDtc38+ia3fzspXepPnyCyaX9+PkXLmHmhA+6ubeIZDMFmGSkeNx5/d0DPLJ6N8vWV9PYEufDowfxzzdN4U/GDdFJGiKiAJPM0dQSZ/XOAzy9YS/PbNxL3dFG+hbm8pmKMj57SZlO0BCR91GASWiaWuJsqj7C6p0HeGn7Pl7fcYCG5lYK83KYOb6EOZOHMXvSMHrl6+QMETldygPMzD4NfBOYCMxw99VnGDcH+FcgBvzU3U/euXkQ8GtgFLAT+Iy7H0x13dK9jp5o5p2642ypPsLm6iNs3HOE9VWHaWyJAzBmSB8+XTGSj50/hI+NG0LvfL23EpGzS8dfiQ3AjcCPzzTAzGLAfcAsoBJYZWZL3X0TsBBY6e73mNnCYP1vUl+2dJS7c+REC7VHTlBzpJHqww1UHmyg6lAD7x2o5919x6k72nhqfJ/8GBOH9+O2S89j+nkDmVY+QJd8EpFOS3mAuftm4IM+dJ8BbHf3HcHYxcA8YFPwfGUw7kHgdyjAzom70xp3mludxpZWmlriNLbEaWhu5URzKyea49Q3tVDf1MrxxhaON7ZwrLGFo40tHGlo5nDwOHi8mQPHmzhwvImm1vj7foYZlPQtoGxgb668oJgxxUWMKe7DxGH9GDmwFzk5OglDRM5NpszTlAK7k9YrgQ8Hy0PdvRrA3avNLKXnTv/HW3t4fkttu33u/sfl97VzWru7v2/MyRXHcU9sc2r51D6S1xPbxz1Ydoi7B4/EWXqnloNAag3aTi63xJ2W1uA5Hqel1WlqjdPcGn9fzR2Vn5tDv8I8+vfKpX+vPIb3L+TCEf0YVJRPcVEBJf0KGdq3gKH9Chk+oFB3PhaRlOqWADOz54Bh7XR93d2f6Mgu2mnr9J9YM5sPzAcoLy/v7OYAVB1qYM2uM3/Elnwgae9rt9Pbrf0xFuzHsFP7M7M/tif15ZgF6xDLsVPj8nNziAVHMbEcI2aJvtwcIxZLrOfGgvWcHPJiRl4sh9yYkR/LIS94FOTmUJCXQ34sh8K8GL3yYonn/Bh9CmL0zsulqDCXooJc8nN19x0RyRzdEmDufs057qISKEtaHwnsCZZrzGx4cPQ1HGj/8ChRxyJgEUBFRUUXjjHgjivGcscVY7uyqYiIpFGmvKVeBYwzs9Fmlg/cDCwN+pYCtwfLtwMdOaITEZEsl/IAM7NPmVkl8BHgKTN7NmgfYWbLANy9BVgAPAtsBh5x943BLu4BZpnZNhJnKd6T6ppFRCTzmXfl0/wIqKio8NWr2/3KmYiInIGZrXH3irDr6IhMmUIUERHpFAWYiIhEkgJMREQiSQEmIiKRpAATEZFIytqzEM2sDtgVdh1dMATYF3YRadbTXnNPe72g1xwl57l7cdhFdETWBlhUmdnqqJzC2l162mvuaa8X9JolNTSFKCIikaQAExGRSFKAZZ5FYRcQgp72mnva6wW9ZkkBfQYmIiKRpCMwERGJJAVYhjKzr5qZm9mQsGtJNTP7tpltMbN1ZrbEzAaEXVOqmNkcM9tqZtvNbGHY9aSamZWZ2QtmttnMNprZl8KuKR3MLGZmb5rZk2HXks0UYBnIzMpI3DrmvbBrSZMVwGR3nwK8DfxtyPWkhJnFgPuAa4FJwC1mNincqlKuBfiKu08ELgXu7AGvGeBLJG4NJSmkAMtM3wP+J9AjPqB09+XBPeEAXiNxR+5sNAPY7u473L0JWAzMC7mmlHL3and/I1g+SuKPemm4VaWWmY0EPgH8NOxasp0CLMOY2SeBKnd/K+xaQvJF4Omwi0iRUmB30nolWf7HPJmZjQKmAa+HXEqq/V8Sb0DjIdeR9XLDLqAnMrPngGHtdH0duBuYnd6KUu9sr9ndnwjGfJ3ElNND6awtjaydth5xlG1mRcBjwF3ufiTselLFzK4Dat19jZldGXI5WU8BFgJ3v6a9djO7CBgNvGVmkJhKe8PMZrj73jSW2O3O9JpPMrPbgeuAqz17v9tRCZQlrY8E9oRUS9qYWR6J8HrI3R8Pu54Uuwz4pJnNBQqBfmb2S3f/05Drykr6HlgGM7OdQIW7R/GCoB1mZnOA7wJXuHtd2PWkipnlkjhJ5WqgClgF3OruG0MtLIUs8U7sQeCAu98VcjlpFRyBfdXdrwu5lKylz8AkE/wA6AusMLO1ZnZ/2AWlQnCiygLgWRInMzySzeEVuAy4Dbgq+P92bXB0InLOdAQmIiKRpCMwERGJJAWYiIhEkgJMREQiSQEmIiKRpAATEZFIUoCJiEgkKcBERCSSFGAiaWJmlwT3PCs0sz7B/bEmh12XSFTpi8wiaWRmf0/iGnm9gEp3/6eQSxKJLAWYSBqZWT6JayCeAD7q7q0hlyQSWZpCFEmvQUARiWs/FoZci0ik6QhMJI3MbCmJOzGPBoa7+4KQSxKJLN0PTCRNzOzzQIu7P2xmMeAVM7vK3Z8PuzaRKNIRmIiIRJI+AxMRkUhSgImISCQpwEREJJIUYCIiEkkKMBERiSQFmIiIRNL/Bx8SvIIOeTvjAAAAAElFTkSuQmCC","text/plain":""},"metadata":{},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\nimport torch\nimport torch.nn as nn\n\nx = torch.linspace(-5,5,100)\nplt.xlabel(\"x\")\nplt.ylabel(\"y\")\na = torch.Tensor(x.size()[0]).fill_(2.)\nm = torch.stack([x, a])\nplt.plot(x, nn.functional.tanh(m)[0])\nfname = '08_Neuronowy_ngramowy_model/tanh.png'\nplt.savefig(fname)\nfname"]},{"cell_type":"markdown","metadata":{},"source":["##### Tangens hiperboliczny zastosowany dla wektora\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Tangens hiperboliczny wektora będzie po prostu wektorem tangensów\nhiperbolicznych poszczególnych wartości.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["import torch\nimport torch.nn as nn\n\nv = torch.Tensor([-100, -2.0, 0.0, 0.5, 1000.0])\nnn.functional.tanh(v)"]},{"cell_type":"markdown","metadata":{},"source":["[[[tensor](tensor)([-1.0000, -0.9640, 0.0000, 0.4621, 1.0000])]]\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Wzór i schemat dwuwarstwowego n-gramowego neuronowego modelu języka\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Dwuwarstwowy model języka będzie określony następującym wzorem:\n\n$$\\vec{y} = \\operatorname{softmax}(C\\operatorname{tgh}(W[E(w_{i-n+1}),\\dots,E(w_{i-1})])),$$\n\ngdzie:\n\n- $W$ jest wyuczalną macierzą wag o rozmiarze $h \\times nm$,\n- $C$ będzie macierzą o rozmiarze $|V| \\times h$.\n\nZmodyfikowaną sieć można przedstawić za pomocą następującego schematu:\n\n![img](./08_Neuronowy_ngramowy_model/ngram-tgh.drawio.png \"Dwuwarstwowy n-gramowy neuronowy model języka\")\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Liczba wag w modelu dwuwarstwowym\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Na wagi w modelu dwuwarstwowym składają się:\n\n- zanurzenia: $m|V|$,\n- wagi warstwy ukrytej: $hnm$,\n- wagi warstwy wyjściowej: $|V|h$,\n\na zatem łącznie:\n\n$$m|V| + hnm + |V|h$$\n\nJeśli $h \\approx m$ (co jest realistyczną opcją), wówczas otrzymamy oszacowanie:\n\n$$O(m|V| + nm^2).$$\n\nZauważmy, że względem $n$ oznacza to bardzo korzystną złożoność\n$O(n)$! Oznacza to, że nasz model może działać dla dużo większych\nwartości $n$ niż tradycyjny, statystyczny n-gramowy model języka (dla którego\nwartości $n > 5$ zazwyczaj nie mają sensu).\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Model worka słów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Jak stwierdziliśmy przed chwilą, dwuwarstwowy n-gramowy model języka\nmoże działać dla stosunkowo dużego $n$. Zauważmy jednak, że istnieje\npewna słabość tego modelu. Otóż o ile intuicyjnie ma sens odróżniać\nsłowo poprzedzające, słowo występujące dwie pozycje wstecz i zapewne\ntrzy pozycje wstecz, a zatem uczyć się osobnych macierzy $C_{-1}$,\n$C_{-2}$, $C_{-3}$ to różnica między wpływem słowa\nwystępującego cztery pozycje wstecz i pięć pozycji wstecz jest już\nraczej nieistotna; innymi słowy różnica między macierzami $C_{-4}$ i\n$C_{-5}$ będzie raczej niewielka i sieć niepotrzebnie będzie uczyła\nsię dwukrotnie podobnych wag. Im dalej wstecz, tym różnica wpływu\nbędzie jeszcze mniej istotna, można np. przypuszczać, że różnica\nmiędzy $C_{-10}$ i $C_{-13}$ nie powinna być duża.\n\nSpróbujmy najpierw zaproponować radykalne podejście, w którym nie\nbędziemy w ogóle uwzględniać pozycji słów (lub będziemy je uwzględniać\nw niewielkim stopniu), później połączymy to z omówionym wcześniej\nmodelem $n$-gramowym.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Agregacja wektorów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Zamiast patrzeć na kilka poprzedzających słów, można przewidywać na\npodstawie **całego** ciągu słów poprzedzających odgadywane słowo. Zauważmy jednak, że\nsieć neuronowa musi mieć ustaloną strukturę, nie możemy zmieniać jej\nrozmiaru. Musimy zatem najpierw zagregować cały ciąg do wektora o\n**stałej** długości. Potrzebujemy zatem pewnej funkcji agregującej $A$, takiej by\n$A(w_1,\\dots,w_{i-1})$ było wektorem o stałej długości, niezależnie od $i$.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Worek słów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Najprostszą funkcją agregującą jest po prostu… suma. Dodajemy po\nprostu zanurzenia słów:\n\n$$A(w_1,\\dots,w_{i-1}) = E(w_1) + \\dots + E(w_{i-1}) = \\sum_{j=1}^{i-1} E(w_j).$$\n\n**Uwaga**: zanurzenia słów nie zależą od pozycji słowa (podobnie było w wypadku n-gramowego modelu!).\n\nJeśli rozmiar zanurzenia (embeddingu) wynosi $m$, wówczas rozmiar\nwektora uzyskanego dla całego poprzedzającego tekstu wynosi również $m$.\n\nProste dodawanie wydaje się bardzo „prostacką” metodą, a jednak\nsuma wektorów słów jest **zaskakująco skuteczną metodą zanurzenia\n(embedowania) całych tekstów (doc2vec)**. Prostym wariantem dodawania jest obliczanie **średniej wektorów**:\n\n$$A(w_1,\\dots,w_{i-1}) = \\frac{E(w_1) + \\dots + E(w_{i-1})}{i-1} = \\frac{\\sum_{j=1}^{i-1} E(w_j)}{i-1}.$$\n\nTak czy siak uzyskany wektor **nie zależy od kolejności słów**\n(dodawanie jest przemienne i łączne!). Mówimy więc o **worku słów**\n(*bag of words*, *BoW*) — co ma symbolizować fakt, że słowa są\nprzemieszane, niczym produkty w torbie na zakupy.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Schemat graficzny modelu typu worek słów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Po zanurzeniu całego poprzedzającego tekstu postępujemy podobnie jak w\nmodelu bigramowym — rzutujemy embedding na długi wektor wartości, na\nktórym stosujemy funkcję softmax:\n\n![img](./08_Neuronowy_ngramowy_model/bow1.drawio.png \"Model typu worek słów\")\n\nOdpowiada to wzorowi:\n\n$$y = \\operatorname{softmax}(C\\sum_{j=1}^{i-1} E(w_j)).$$\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Jak traktować powtarzające się słowa?\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Według wzoru podanego wyżej, jeśli słowo w poprzedzającym tekście\npojawia się więcej niż raz, jego embedding zostanie zsumowany odpowiednią liczbę razy.\nNa przykład embedding tekstu *to be or not to be* będzie wynosił:\n\n$$E(\\mathrm{to}) + E(\\mathrm{be}) + E(\\mathrm{or}) + E(\\mathrm{not}) + E(\\mathrm{to}) + E(\\mathrm{be}) = 2E(\\mathrm{to}) + 2E(\\mathrm{be}) + E(\\mathrm{or}) + E(\\mathrm{not}).$$\n\nInnymi słowy, choć w worku słów nie uwzględniamy kolejności słów, to\n**liczba wystąpień** ma dla nas ciągle znaczenie. Można powiedzieć, że\ntraktujemy poprzedzający tekst jako **multizbiór** (struktura\nmatematyczna, w której nie uwzględnia się kolejności, choć zachowana\njest informacja o liczbie wystąpień).\n\n"]},{"cell_type":"markdown","metadata":{},"source":["##### Zbiór słów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Oczywiście moglibyśmy przy agregowaniu zanurzeń pomijać powtarzające\nsię słowa, a zatem zamiast multizbioru słów rozpatrywać po prostu ich zbiór:\n\n$$A(w_1,\\dots,w_{i-1}) = \\sum_{w \\in \\{w_1,\\dots,w_{i-1}\\}} E(w).$$\n\nJest kwestią dyskusyjną, czy to lepsze czy gorsze podejście — w końcu\nliczba wystąpień np. słów *Ukraina* czy *Polska* może wpływać w jakimś\nstopniu na prawdopodobieństwo kolejnego słowa (*Kijów* czy\n*Warszawa*?).\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Worek słów a wektoryzacja tf\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Wzór na sumę zanurzeń słów można przekształcić w taki sposób, by\nsumować po wszystkich słowach ze słownika, zamiast po słowach rzeczywiście występujących w tekście:\n\n$$A(w_1,\\dots,w_{i-1}) = \\sum_{j=1}^{i-1} E(w_j) = \\sum_{w \\in V} \\#wE(w)$$\n\ngdzie $\\#w$ to liczba wystąpień słowa $w$ w ciagu $w_1,\\dots,w_{i-1}$ (w wielu przypadkach równa zero!).\n\nJeśli teraz zanurzenia będziemy reprezentować jako macierz $E$ (por. poprzedni wykład),\nwówczas sumę można przedstawić jako iloczyn macierzy $E$ i pewnego wektora:\n\n$$A(w_1,\\dots,w_{i-1}) = E(w) [\\#w^1,\\dots,\\#w^{|V|}]^T.$$\n\n(Odróżniamy $w^i$ jako $i$-ty wyraz w słowniku $V$ od $w_i$ jako $i$-tego wyraz w rozpatrywanym ciągu).\n\nZwróćmy uwagę, że wektor $[\\#w_1,\\dots,\\#w_{|V|}]$ to po prostu\nreprezentacja wektora poprzedzającego tekstu (tj. ciągu\n$(w_1,\\dots,w_{i-1})$) przy użyciu schematu wektoryzacji tf (*term\nfrequency*). Przypomnijmy, że tf to reprezentacja tekstu przy użyciu\nwektorów o rozmiarze $|V|$ — na każdej pozycji odnotowujemy liczbę wystąpień.\nWektory tf są **rzadkie**, tj. na wielu pozycjach zawierają zera.\n\nInnymi słowy, nasz model języka *bag of words* można przedstawić za pomocą wzoru:\n\n$$y = \\operatorname{softmax}(C\\operatorname{tf}(w_1,\\dots,w_{i-1})),$$\n\nco można zilustrować w następujący sposób:\n\n![img](./08_Neuronowy_ngramowy_model/bow2.drawio.png \"Model typu worek słów — alternatywna reprezentacja\")\n\nMożna stwierdzić, że zanurzenie tekstu przekształca rzadki, długi wektor\ntf w gęsty, krótki wektor.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Ważenie słów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Czy wszystkie słowa są tak samo istotne? Rzecz jasna, nie:\n\n- jak już wiemy z naszych rozważań dotyczących n-gramowych modeli języka, słowa bezpośrednio\n poprzedzające odgadywany wyraz mają większy wpływ niż słowa wcześniejsze;\n intuicyjnie, wpływ słów stopniowo spada — tym bardziej, im bardziej słowo jest oddalone od słowa odgadywanego;\n- jak wiemy z wyszukiwania informacji, słowa, które występują w wielu tekstach czy dokumentach, powinny mieć\n mniejsze znaczenie, w skrajnym przypadku słowa występujące w prawie każdym tekście (*że*, *w*, *i* itd.) powinny\n być praktycznie pomijane jako *stop words* (jeśli rozpatrywać je w „masie” worka słów — oczywiście\n to, czy słowo poprzedzające odgadywane słowo to *że*, *w* czy *i* ma olbrzymie znaczenie!).\n\nZamiast po prostu dodawać zanurzenia, można operować na sumie (bądź średniej) ważonej:\n\n$$\\sum_{j=1}^{i-1} \\omega(j, w_j)E(w_j),$$\n\ngdzie $\\omega(j, w_j)$ jest pewną wagą, która może zależeć od pozycji $j$ lub samego słowa $w_j$.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Uwzględnienie pozycji\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Można w pewnym stopniu złamać „workowatość” naszej sieci przez proste\nuwzględnienie pozycji słowa, np. w taki sposób:\n\n$$\\omega(j, w_j) = \\beta^{i-j-1},$$\n\ndla pewnego hiperparametru $\\beta$. Na przykład jeśli $\\beta=0,9$,\nwówczas słowo bezpośrednio poprzedzające dane słowo ma $1 / 0,9^9 \\approx 2,58$\nwiększy wpływ niż słowo występujące 10 pozycji wstecz.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Odwrócona częstość dokumentowa\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Aby większą wagę przykładać do słów występujących w mniejszej liczbie\ndokumentów, możemy użyć, znanej z wyszukiwania informacji,\nodwrotnej częstości dokumentowej (*inverted document frequency*, *idf*):\n\n$$\\omega(j, w_j) = \\operatorname{idf}_S(w_j) = \\operatorname{log}\\frac{|S|}{\\operatorname{df}_S(w_j)},$$\n\ngdzie:\n\n- $S$ jest pewną kolekcją dokumentów czy tekstów, z którego pochodzi przedmiotowy ciąg słów,\n- $\\operatorname{df}_S(w)$ to częstość dokumentowa słowa $w$ w kolekcji $S$, tzn. odpowiedź na pytanie,\n w ilu dokumentach występuje $w$.\n\nRzecz jasna, ten sposób ważenia oznacza tak naprawdę zastosowanie wektoryzacji tf-idf zamiast tf,\nnasza sieć będzie dana zatem wzorem:\n\n$$y = \\operatorname{softmax}(C\\operatorname{tfidf}(w_1,\\dots,w_{i-1})).$$\n\n"]},{"cell_type":"markdown","metadata":{},"source":["#### Bardziej skomplikowane sposoby ważenia słów\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Można oczywiście połączyć odwrotną częstość dokumentową z uwzględnieniem pozycji słowa:\n\n$$\\omega(j, w_j) = \\beta^{i-j-1}\\operatorname{idf}_S(w_j).$$\n\n**Uwaga**: „wagi” $\\omega(j, w_j)$ nie są tak naprawdę wyuczalnymi\nwagami (parametrami) naszej sieci neuronowej, terminologia może być\ntutaj myląca. Z punktu widzenia sieci neuronowej $\\omega(j, w_j)$ są\nstałe i **nie** są optymalizowane w procesie propagacji wstecznej. Innymi\nsłowy, tak zdefiniowane $\\omega(j, w_j)$ zależą tylko od:\n\n- hiperparametru $\\beta$, który może być optymalizowany już poza siecią (w procesie **hiperoptymalizacji**),\n- wartości $\\operatorname{idf}_S(w_j)$ wyliczanych wcześniej na podstawie kolekcji $S$.\n\n**Pytanie**: czy wagi $\\omega(j, w_j)$ mogłyby sensownie uwzględniać\njakieś parametry wyuczalne z całą siecią?\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Modelowanie języka przy użyciu bardziej złożonych neuronowych sieci *feed-forward*\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Można połączyć zalety obu ogólnych podejść (n-gramowego modelu i worka\nsłów) — można **równocześnie** traktować w specjalny sposób (na\nprzykład) dwa poprzedzające wyrazy, wszystkie zaś inne wyrazy\nreprezentować jako „tło” modelowane za pomocą worka słów lub podobnej\nreprezentacji. Osiągamy to poprzez konkatenację wektora\npoprzedzającego słowa, słowa występującego dwie pozycje wstecz oraz\nzagregowanego zanurzenia całego wcześniejszego tekstu:\n\n$$y = \\operatorname{softmax}(C[E(w_{i-1}),E(w_{i-2}),A(w_1,\\dots,w_{i-3})]),$$\n\nczy lepiej z dodatkową warstwą ukrytą:\n\n$$y = \\operatorname{softmax}(C\\operatorname{tgh}(W[E(w_{i-1}),E(w_{i-2}),A(w_1,\\dots,w_{i-3})])),$$\n\nW tak uzyskanym dwuwarstwowym neuronowym modelu języka, łączącym model\ntrigramowy z workiem słów, macierz $W$ ma rozmiar $h \\times 3m$.\n\n**Pytanie**: jakie mamy możliwości, jeśli zamiast przewidywać kolejne słowo, mamy za zadanie\nodgadywać słowo w luce (jak w wyzwaniach typu *word gap*)?\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Literatura\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Skuteczny n-gramowy neuronowy model języka opisano po raz pierwszy\nw pracy [A Neural Probabilistic Language Model](https://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf) autorstwa Yoshua Bengio i in.\n\n"]}],"metadata":{"org":null,"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Neuronowy n-gramowy model języka\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Omówiony w poprzedniej części neuronowy bigramowy model języka\n", + "warunkuje kolejny wyraz jedynie względem bezpośrednio poprzedzającego\n", + "— jak w każdym bigramowym modelu przyjmujemy założenie, że $w_i$\n", + "zależy tylko od $w_{i-1}$. Rzecz jasna jest to bardzo duże\n", + "ograniczenie, w rzeczywistości bardzo często prawdopodobieństwo\n", + "kolejnego wyrazu zależy od wyrazu dwie, trzy, cztery itd. pozycje\n", + "wstecz czy w ogólności od wszystkich wyrazów poprzedzających (bez\n", + "względu na ich pozycje).\n", + "\n", + "**Pytanie**: Wskaż zależności o zasięgu większym niż 1 wyraz w zdaniu\n", + "/Zatopieni w kłębach dymu cygar i pochyleni nad butelkami z ciemnego\n", + "szkła obywatele tej dzielnicy, jedni zakładali się o wygranę lub\n", + "przegranę Anglii, drudzy o bankructwo Wokulskiego; jedni nazywali\n", + "geniuszem Bismarcka, drudzy — awanturnikiem Wokulskiego; jedni\n", + "krytykowali postępowanie prezydenta MacMahona, inni twierdzili, że\n", + "Wokulski jest zdecydowanym wariatem, jeżeli nie czymś gorszym…/\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Trigramowy neuronowy model języka\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Spróbujmy najpierw rozszerzyć nasz model na trigramy, to znaczy\n", + "będziemy przewidywać słowo $w_i$ na podstawie słów $w_{i-2}$ i\n", + "$w_{i-1}$.\n", + "\n", + "Najprostsze rozwiązanie polegałoby na zanurzeniu pary $(w_{i-2},\n", + "w_{i-1})$ w całości i postępowaniu jak w przypadku modelu bigramowego.\n", + "Byłoby to jednak zupełnie niepraktyczne, jako że:\n", + "\n", + "- liczba zanurzeń do wyuczenia byłaby olbrzymia ($|V|^2$ — byłoby to\n", + " ewentualnie akceptowalne dla modeli operujących na krótszych\n", + " jednostkach niż słowa, np. na znakach),\n", + "- w szczególności zanurzenia dla par $(v, u)$, $(u, v)$, $(u, u)$ i\n", + " $(v, v)$ nie miałyby ze sobą nic wspólnego.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Konketanacja zanurzeń\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Właściwsze rozwiązanie polega na zanurzeniu dalej pojedynczych słów i\n", + "następnie ich **konkatenowaniu**.\n", + "\n", + "Przypomnijmy, że konkatenacja wektorów $\\vec{x_1}$ i $\\vec{x_2}$ to wektor o rozmiarze\n", + "$|\\vec{x_1}| + |\\vec{x_2}|$ powstały ze „sklejania” wektorów $\\vec{x_1}$ i $\\vec{x_2}$.\n", + "Konkatenację wektorów $\\vec{x_1}$ i $\\vec{x_2}$ będziemy oznaczać za pomocą $[\\vec{x_1}, \\vec{x_2}]$.\n", + "\n", + "Przykład: jeśli $\\vec{x_1} = [-1, 2, 0]$ i $\\vec{x_2} = [3, -3]$,\n", + "wówczas $[\\vec{x_1}, \\vec{x_2}] = [-1, 2, 0, 3, -3]$\n", + "\n", + "Oznacza to, że nasza macierz „kontekstowa” $C$ powinna mieć w modelu trigramowym rozmiar nie\n", + "$|V| \\times m$, lecz $|V| \\times (m+m)$ = $|V| \\times 2m$ i wyjście będzie zdefiniowane za pomocą wzoru:\n", + "\n", + "$$\\vec{y} = \\operatorname{softmax}(C[E(w_{i-2}),E(w_{i-1})]),$$\n", + "\n", + "co można przedstawić za pomocą następującego schematu:\n", + "\n", + "![img](./08_Neuronowy_ngramowy_model/trigram1.drawio.png \"Diagram prostego bigramowego neuronowego modelu języka\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Rozbicie macierzy $C$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zamiast mnożyć macierz $C$ przez konkatenację dwóch wektorów, można\n", + "rozbić macierz $C$ na dwie, powiedzmy $C_{-2}$ i $C_{-1}$, przemnażać\n", + "je osobno przez odpowiadające im wektory i następnie **dodać** macierze,\n", + "tak aby:\n", + "\n", + "$$C[E(w_{i-2}),E(w_{i-1})] = C_{-2}E(w_{i-2}) + C_{-1}E(w_{i-1}).$$\n", + "\n", + "Macierze $C_{-2}$ i $C_{-1}$ będą miały rozmiar $|V| \\times m$.\n", + "\n", + "Przy tym podejściu możemy powiedzieć, że ostatni i przedostatni wyraz\n", + "mają swoje osobne macierze o potencjalnie różnych wagach — co ma sens,\n", + "jako że na inne aspekty zwracamy uwagę przewidując kolejne słowo na\n", + "podstawie wyrazu bezpośrednio poprzedzającego, a na inne — na\n", + "podstawie słowa występującego dwie pozycje wcześniej.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Uogólnienie na $n$-gramowy model języka dla dowolnego $n$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Łatwo uogólnić opisany wyżej trigramowy model języka dla dowolnego $n$.\n", + "Uogólniony model można przedstawić za pomocą wzoru:\n", + "\n", + "$$\\vec{y} = \\operatorname{softmax}(C[E(w_{i-n+1}),\\dots,E(w_{i-1})]),$$\n", + "\n", + "gdzie macierz $C$ ma rozmiar $|V| \\times nm$ lub za pomocą wzoru:\n", + "\n", + "$$\\vec{y} = \\operatorname{softmax}(C_{-(n-1)}E(w_{i-n+1}) + \\dots + C_{-1}E(w_{i-1}),$$\n", + "\n", + "gdzie macierze $C_{-(n-1)}$, …, $C_{-1}$ mają rozmiary $|V| \\times m$.\n", + "\n", + "Por. diagram:\n", + "\n", + "![img](./08_Neuronowy_ngramowy_model/ngram.drawio.png \"Diagram prostego n-gramowego neuronowego modelu języka\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dodanie kolejnej warstwy\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "W wypadku trigramowego czy — ogólniej — n-gramowego modelu języka dla\n", + "$n \\geq 3$ warto dodać kolejną (**ukrytą**) warstwę, na którą będziemy rzutować\n", + "skonkatenowane embeddingi, zanim zrzutujemy je do długiego wektora\n", + "prawdopodobieństw.\n", + "\n", + "Zakładamy, że warstwa ukryta zawiera $h$ neuronów. Wartość $h$ powinna być mniejsza\n", + "niż $nm$ (a może nawet od $m$).\n", + "\n", + "**Pytanie**: Dlaczego wartość $h > nm$ nie jest racjonalnym wyborem?\n", + "\n", + "**Pytanie**: Dlaczego dodanie kolejnej warstwy nie ma sensu dla modelu bigramowego?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Funkcja aktywacji\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Aby warstwa ukryta wnosiła coś nowego, na wyjściu z tej funkcji musimy (dlaczego?)\n", + "zastosować nieliniową **funkcji aktywacji**. Zazwyczaj jako funkcji\n", + "aktywacji w sieciach neuronowych używa się funkcji ReLU albo funkcji\n", + "sigmoidalnej. W prostych neuronowych modelach języka sprawdza się też\n", + "**tangens hiperboliczny** (tgh, w literaturze anglojęzycznej tanh):\n", + "\n", + "$$\\operatorname{tgh}(x) = \\frac{e^x - e^{-x}}{e^x + e^{-x}}.$$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import torch\n", + "import torch.nn as nn\n", + "\n", + "x = torch.linspace(-5,5,100)\n", + "plt.xlabel(\"x\")\n", + "plt.ylabel(\"y\")\n", + "a = torch.Tensor(x.size()[0]).fill_(2.)\n", + "m = torch.stack([x, a])\n", + "plt.plot(x, nn.functional.tanh(m)[0])\n", + "fname = '08_Neuronowy_ngramowy_model/tanh.png'\n", + "plt.savefig(fname)\n", + "fname" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Tangens hiperboliczny zastosowany dla wektora\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tangens hiperboliczny wektora będzie po prostu wektorem tangensów\n", + "hiperbolicznych poszczególnych wartości.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "\n", + "v = torch.Tensor([-100, -2.0, 0.0, 0.5, 1000.0])\n", + "nn.functional.tanh(v)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[[[tensor](tensor)([-1.0000, -0.9640, 0.0000, 0.4621, 1.0000])]]\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Wzór i schemat dwuwarstwowego n-gramowego neuronowego modelu języka\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dwuwarstwowy model języka będzie określony następującym wzorem:\n", + "\n", + "$$\\vec{y} = \\operatorname{softmax}(C\\operatorname{tgh}(W[E(w_{i-n+1}),\\dots,E(w_{i-1})])),$$\n", + "\n", + "gdzie:\n", + "\n", + "- $W$ jest wyuczalną macierzą wag o rozmiarze $h \\times nm$,\n", + "- $C$ będzie macierzą o rozmiarze $|V| \\times h$.\n", + "\n", + "Zmodyfikowaną sieć można przedstawić za pomocą następującego schematu:\n", + "\n", + "![img](./08_Neuronowy_ngramowy_model/ngram-tgh.drawio.png \"Dwuwarstwowy n-gramowy neuronowy model języka\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Liczba wag w modelu dwuwarstwowym\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Na wagi w modelu dwuwarstwowym składają się:\n", + "\n", + "- zanurzenia: $m|V|$,\n", + "- wagi warstwy ukrytej: $hnm$,\n", + "- wagi warstwy wyjściowej: $|V|h$,\n", + "\n", + "a zatem łącznie:\n", + "\n", + "$$m|V| + hnm + |V|h$$\n", + "\n", + "Jeśli $h \\approx m$ (co jest realistyczną opcją), wówczas otrzymamy oszacowanie:\n", + "\n", + "$$O(m|V| + nm^2).$$\n", + "\n", + "Zauważmy, że względem $n$ oznacza to bardzo korzystną złożoność\n", + "$O(n)$! Oznacza to, że nasz model może działać dla dużo większych\n", + "wartości $n$ niż tradycyjny, statystyczny n-gramowy model języka (dla którego\n", + "wartości $n > 5$ zazwyczaj nie mają sensu).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model worka słów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jak stwierdziliśmy przed chwilą, dwuwarstwowy n-gramowy model języka\n", + "może działać dla stosunkowo dużego $n$. Zauważmy jednak, że istnieje\n", + "pewna słabość tego modelu. Otóż o ile intuicyjnie ma sens odróżniać\n", + "słowo poprzedzające, słowo występujące dwie pozycje wstecz i zapewne\n", + "trzy pozycje wstecz, a zatem uczyć się osobnych macierzy $C_{-1}$,\n", + "$C_{-2}$, $C_{-3}$ to różnica między wpływem słowa\n", + "występującego cztery pozycje wstecz i pięć pozycji wstecz jest już\n", + "raczej nieistotna; innymi słowy różnica między macierzami $C_{-4}$ i\n", + "$C_{-5}$ będzie raczej niewielka i sieć niepotrzebnie będzie uczyła\n", + "się dwukrotnie podobnych wag. Im dalej wstecz, tym różnica wpływu\n", + "będzie jeszcze mniej istotna, można np. przypuszczać, że różnica\n", + "między $C_{-10}$ i $C_{-13}$ nie powinna być duża.\n", + "\n", + "Spróbujmy najpierw zaproponować radykalne podejście, w którym nie\n", + "będziemy w ogóle uwzględniać pozycji słów (lub będziemy je uwzględniać\n", + "w niewielkim stopniu), później połączymy to z omówionym wcześniej\n", + "modelem $n$-gramowym.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Agregacja wektorów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zamiast patrzeć na kilka poprzedzających słów, można przewidywać na\n", + "podstawie **całego** ciągu słów poprzedzających odgadywane słowo. Zauważmy jednak, że\n", + "sieć neuronowa musi mieć ustaloną strukturę, nie możemy zmieniać jej\n", + "rozmiaru. Musimy zatem najpierw zagregować cały ciąg do wektora o\n", + "**stałej** długości. Potrzebujemy zatem pewnej funkcji agregującej $A$, takiej by\n", + "$A(w_1,\\dots,w_{i-1})$ było wektorem o stałej długości, niezależnie od $i$.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Worek słów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Najprostszą funkcją agregującą jest po prostu… suma. Dodajemy po\n", + "prostu zanurzenia słów:\n", + "\n", + "$$A(w_1,\\dots,w_{i-1}) = E(w_1) + \\dots + E(w_{i-1}) = \\sum_{j=1}^{i-1} E(w_j).$$\n", + "\n", + "**Uwaga**: zanurzenia słów nie zależą od pozycji słowa (podobnie było w wypadku n-gramowego modelu!).\n", + "\n", + "Jeśli rozmiar zanurzenia (embeddingu) wynosi $m$, wówczas rozmiar\n", + "wektora uzyskanego dla całego poprzedzającego tekstu wynosi również $m$.\n", + "\n", + "Proste dodawanie wydaje się bardzo „prostacką” metodą, a jednak\n", + "suma wektorów słów jest **zaskakująco skuteczną metodą zanurzenia\n", + "(embedowania) całych tekstów (doc2vec)**. Prostym wariantem dodawania jest obliczanie **średniej wektorów**:\n", + "\n", + "$$A(w_1,\\dots,w_{i-1}) = \\frac{E(w_1) + \\dots + E(w_{i-1})}{i-1} = \\frac{\\sum_{j=1}^{i-1} E(w_j)}{i-1}.$$\n", + "\n", + "Tak czy siak uzyskany wektor **nie zależy od kolejności słów**\n", + "(dodawanie jest przemienne i łączne!). Mówimy więc o **worku słów**\n", + "(*bag of words*, *BoW*) — co ma symbolizować fakt, że słowa są\n", + "przemieszane, niczym produkty w torbie na zakupy.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Schemat graficzny modelu typu worek słów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Po zanurzeniu całego poprzedzającego tekstu postępujemy podobnie jak w\n", + "modelu bigramowym — rzutujemy embedding na długi wektor wartości, na\n", + "którym stosujemy funkcję softmax:\n", + "\n", + "![img](./08_Neuronowy_ngramowy_model/bow1.drawio.png \"Model typu worek słów\")\n", + "\n", + "Odpowiada to wzorowi:\n", + "\n", + "$$y = \\operatorname{softmax}(C\\sum_{j=1}^{i-1} E(w_j)).$$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Jak traktować powtarzające się słowa?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Według wzoru podanego wyżej, jeśli słowo w poprzedzającym tekście\n", + "pojawia się więcej niż raz, jego embedding zostanie zsumowany odpowiednią liczbę razy.\n", + "Na przykład embedding tekstu *to be or not to be* będzie wynosił:\n", + "\n", + "$$E(\\mathrm{to}) + E(\\mathrm{be}) + E(\\mathrm{or}) + E(\\mathrm{not}) + E(\\mathrm{to}) + E(\\mathrm{be}) = 2E(\\mathrm{to}) + 2E(\\mathrm{be}) + E(\\mathrm{or}) + E(\\mathrm{not}).$$\n", + "\n", + "Innymi słowy, choć w worku słów nie uwzględniamy kolejności słów, to\n", + "**liczba wystąpień** ma dla nas ciągle znaczenie. Można powiedzieć, że\n", + "traktujemy poprzedzający tekst jako **multizbiór** (struktura\n", + "matematyczna, w której nie uwzględnia się kolejności, choć zachowana\n", + "jest informacja o liczbie wystąpień).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Zbiór słów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Oczywiście moglibyśmy przy agregowaniu zanurzeń pomijać powtarzające\n", + "się słowa, a zatem zamiast multizbioru słów rozpatrywać po prostu ich zbiór:\n", + "\n", + "$$A(w_1,\\dots,w_{i-1}) = \\sum_{w \\in \\{w_1,\\dots,w_{i-1}\\}} E(w).$$\n", + "\n", + "Jest kwestią dyskusyjną, czy to lepsze czy gorsze podejście — w końcu\n", + "liczba wystąpień np. słów *Ukraina* czy *Polska* może wpływać w jakimś\n", + "stopniu na prawdopodobieństwo kolejnego słowa (*Kijów* czy\n", + "*Warszawa*?).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Worek słów a wektoryzacja tf\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wzór na sumę zanurzeń słów można przekształcić w taki sposób, by\n", + "sumować po wszystkich słowach ze słownika, zamiast po słowach rzeczywiście występujących w tekście:\n", + "\n", + "$$A(w_1,\\dots,w_{i-1}) = \\sum_{j=1}^{i-1} E(w_j) = \\sum_{w \\in V} \\#wE(w)$$\n", + "\n", + "gdzie $\\#w$ to liczba wystąpień słowa $w$ w ciagu $w_1,\\dots,w_{i-1}$ (w wielu przypadkach równa zero!).\n", + "\n", + "Jeśli teraz zanurzenia będziemy reprezentować jako macierz $E$ (por. poprzedni wykład),\n", + "wówczas sumę można przedstawić jako iloczyn macierzy $E$ i pewnego wektora:\n", + "\n", + "$$A(w_1,\\dots,w_{i-1}) = E(w) [\\#w^1,\\dots,\\#w^{|V|}]^T.$$\n", + "\n", + "(Odróżniamy $w^i$ jako $i$-ty wyraz w słowniku $V$ od $w_i$ jako $i$-tego wyraz w rozpatrywanym ciągu).\n", + "\n", + "Zwróćmy uwagę, że wektor $[\\#w_1,\\dots,\\#w_{|V|}]$ to po prostu\n", + "reprezentacja wektora poprzedzającego tekstu (tj. ciągu\n", + "$(w_1,\\dots,w_{i-1})$) przy użyciu schematu wektoryzacji tf (*term\n", + "frequency*). Przypomnijmy, że tf to reprezentacja tekstu przy użyciu\n", + "wektorów o rozmiarze $|V|$ — na każdej pozycji odnotowujemy liczbę wystąpień.\n", + "Wektory tf są **rzadkie**, tj. na wielu pozycjach zawierają zera.\n", + "\n", + "Innymi słowy, nasz model języka *bag of words* można przedstawić za pomocą wzoru:\n", + "\n", + "$$y = \\operatorname{softmax}(C\\operatorname{tf}(w_1,\\dots,w_{i-1})),$$\n", + "\n", + "co można zilustrować w następujący sposób:\n", + "\n", + "![img](./08_Neuronowy_ngramowy_model/bow2.drawio.png \"Model typu worek słów — alternatywna reprezentacja\")\n", + "\n", + "Można stwierdzić, że zanurzenie tekstu przekształca rzadki, długi wektor\n", + "tf w gęsty, krótki wektor.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ważenie słów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Czy wszystkie słowa są tak samo istotne? Rzecz jasna, nie:\n", + "\n", + "- jak już wiemy z naszych rozważań dotyczących n-gramowych modeli języka, słowa bezpośrednio\n", + " poprzedzające odgadywany wyraz mają większy wpływ niż słowa wcześniejsze;\n", + " intuicyjnie, wpływ słów stopniowo spada — tym bardziej, im bardziej słowo jest oddalone od słowa odgadywanego;\n", + "- jak wiemy z wyszukiwania informacji, słowa, które występują w wielu tekstach czy dokumentach, powinny mieć\n", + " mniejsze znaczenie, w skrajnym przypadku słowa występujące w prawie każdym tekście (*że*, *w*, *i* itd.) powinny\n", + " być praktycznie pomijane jako *stop words* (jeśli rozpatrywać je w „masie” worka słów — oczywiście\n", + " to, czy słowo poprzedzające odgadywane słowo to *że*, *w* czy *i* ma olbrzymie znaczenie!).\n", + "\n", + "Zamiast po prostu dodawać zanurzenia, można operować na sumie (bądź średniej) ważonej:\n", + "\n", + "$$\\sum_{j=1}^{i-1} \\omega(j, w_j)E(w_j),$$\n", + "\n", + "gdzie $\\omega(j, w_j)$ jest pewną wagą, która może zależeć od pozycji $j$ lub samego słowa $w_j$.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Uwzględnienie pozycji\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Można w pewnym stopniu złamać „workowatość” naszej sieci przez proste\n", + "uwzględnienie pozycji słowa, np. w taki sposób:\n", + "\n", + "$$\\omega(j, w_j) = \\beta^{i-j-1},$$\n", + "\n", + "dla pewnego hiperparametru $\\beta$. Na przykład jeśli $\\beta=0,9$,\n", + "wówczas słowo bezpośrednio poprzedzające dane słowo ma $1 / 0,9^9 \\approx 2,58$\n", + "większy wpływ niż słowo występujące 10 pozycji wstecz.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Odwrócona częstość dokumentowa\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Aby większą wagę przykładać do słów występujących w mniejszej liczbie\n", + "dokumentów, możemy użyć, znanej z wyszukiwania informacji,\n", + "odwrotnej częstości dokumentowej (*inverted document frequency*, *idf*):\n", + "\n", + "$$\\omega(j, w_j) = \\operatorname{idf}_S(w_j) = \\operatorname{log}\\frac{|S|}{\\operatorname{df}_S(w_j)},$$\n", + "\n", + "gdzie:\n", + "\n", + "- $S$ jest pewną kolekcją dokumentów czy tekstów, z którego pochodzi przedmiotowy ciąg słów,\n", + "- $\\operatorname{df}_S(w)$ to częstość dokumentowa słowa $w$ w kolekcji $S$, tzn. odpowiedź na pytanie,\n", + " w ilu dokumentach występuje $w$.\n", + "\n", + "Rzecz jasna, ten sposób ważenia oznacza tak naprawdę zastosowanie wektoryzacji tf-idf zamiast tf,\n", + "nasza sieć będzie dana zatem wzorem:\n", + "\n", + "$$y = \\operatorname{softmax}(C\\operatorname{tfidf}(w_1,\\dots,w_{i-1})).$$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Bardziej skomplikowane sposoby ważenia słów\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Można oczywiście połączyć odwrotną częstość dokumentową z uwzględnieniem pozycji słowa:\n", + "\n", + "$$\\omega(j, w_j) = \\beta^{i-j-1}\\operatorname{idf}_S(w_j).$$\n", + "\n", + "**Uwaga**: „wagi” $\\omega(j, w_j)$ nie są tak naprawdę wyuczalnymi\n", + "wagami (parametrami) naszej sieci neuronowej, terminologia może być\n", + "tutaj myląca. Z punktu widzenia sieci neuronowej $\\omega(j, w_j)$ są\n", + "stałe i **nie** są optymalizowane w procesie propagacji wstecznej. Innymi\n", + "słowy, tak zdefiniowane $\\omega(j, w_j)$ zależą tylko od:\n", + "\n", + "- hiperparametru $\\beta$, który może być optymalizowany już poza siecią (w procesie **hiperoptymalizacji**),\n", + "- wartości $\\operatorname{idf}_S(w_j)$ wyliczanych wcześniej na podstawie kolekcji $S$.\n", + "\n", + "**Pytanie**: czy wagi $\\omega(j, w_j)$ mogłyby sensownie uwzględniać\n", + "jakieś parametry wyuczalne z całą siecią?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modelowanie języka przy użyciu bardziej złożonych neuronowych sieci *feed-forward*\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Można połączyć zalety obu ogólnych podejść (n-gramowego modelu i worka\n", + "słów) — można **równocześnie** traktować w specjalny sposób (na\n", + "przykład) dwa poprzedzające wyrazy, wszystkie zaś inne wyrazy\n", + "reprezentować jako „tło” modelowane za pomocą worka słów lub podobnej\n", + "reprezentacji. Osiągamy to poprzez konkatenację wektora\n", + "poprzedzającego słowa, słowa występującego dwie pozycje wstecz oraz\n", + "zagregowanego zanurzenia całego wcześniejszego tekstu:\n", + "\n", + "$$y = \\operatorname{softmax}(C[E(w_{i-1}),E(w_{i-2}),A(w_1,\\dots,w_{i-3})]),$$\n", + "\n", + "czy lepiej z dodatkową warstwą ukrytą:\n", + "\n", + "$$y = \\operatorname{softmax}(C\\operatorname{tgh}(W[E(w_{i-1}),E(w_{i-2}),A(w_1,\\dots,w_{i-3})])),$$\n", + "\n", + "W tak uzyskanym dwuwarstwowym neuronowym modelu języka, łączącym model\n", + "trigramowy z workiem słów, macierz $W$ ma rozmiar $h \\times 3m$.\n", + "\n", + "**Pytanie**: jakie mamy możliwości, jeśli zamiast przewidywać kolejne słowo, mamy za zadanie\n", + "odgadywać słowo w luce (jak w wyzwaniach typu *word gap*)?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Literatura\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Skuteczny n-gramowy neuronowy model języka opisano po raz pierwszy\n", + "w pracy [A Neural Probabilistic Language Model](https://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf) autorstwa Yoshua Bengio i in.\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.2" + }, + "org": null + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/wyk/08_Neuronowy_ngramowy_model.pdf b/wyk/08_Neuronowy_ngramowy_model.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c997ccd8753779a62bd79de25331b95ec8d80761 GIT binary patch literal 298242 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�RLp^ALnC|LaC_Wq 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