muszaki_informatika:gepi_tanulas
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| muszaki_informatika:gepi_tanulas [2025/05/22 10:30] – [Felügyelt és felügyelet nélküli tanulás] knehez | muszaki_informatika:gepi_tanulas [2025/05/23 06:12] (current) – [Felügyelt és felügyelet nélküli tanulás] knehez | ||
|---|---|---|---|
| Line 237: | Line 237: | ||
| $$ \mathcal{L}(w) = -\frac{1}{N} \sum_{n=1}^N \log \hat{p}(x_n; | $$ \mathcal{L}(w) = -\frac{1}{N} \sum_{n=1}^N \log \hat{p}(x_n; | ||
| - | ==== //Felügyelt// és //felügyelet nélküli// tanulás ==== | + | ==== Felügyelt és felügyelet nélküli tanulás ==== |
| - | * A regresszió és osztályozás esetén mindig szükség van egy **célértékre** (\( y \)), ezért ezeket **felügyelt tanulásnak** nevezzük. | + | * A //regresszió// és //osztályozás// esetén mindig szükség van egy **célértékre** (\( y \)), ezért ezeket **felügyelt tanulásnak** nevezzük. |
| - | * A sűrűségmodellezés során nincs célérték, | + | * A //sűrűségmodellezés// során nincs célérték, |
| ==== Megjegyzés ==== | ==== Megjegyzés ==== | ||
| Line 249: | Line 249: | ||
| * Léteznek összetett modellek, amelyek többféle célt is egyszerre tanulnak (pl. képgenerálás és címkézés együtt). | * Léteznek összetett modellek, amelyek többféle célt is egyszerre tanulnak (pl. képgenerálás és címkézés együtt). | ||
| + | ===== Hatékony számítási módszerek ===== | ||
| + | |||
| + | A modern gépi tanulási modellek gyakorlati megvalósítása és alkalmazása, | ||
| + | |||
| + | ==== GPU-k, TPU-k és batch feldolgozás ==== | ||
| + | |||
| + | A legtöbb mélytanulási számítás **grafikus feldolgozóegységek (GPU-k)** segítségével történik. Ezeket eredetileg képfeldolgozásra tervezték, de mivel képesek **több ezer szálon párhuzamos számításokat végezni**, kiválóan alkalmasak a gépi tanulás modelljeinek betanítására és futtatására is. | ||
| + | |||
| + | A GPU-k saját gyors memóriával rendelkeznek, | ||
| + | |||
| + | A hatékony működés érdekében az adatokat gyakran **batch-ekre (kötegekre)** osztjuk, vagyis egyszerre több mintát dolgozunk fel. A GPU szinte ugyanolyan gyorsan képes feldolgozni egy batch-et, mint egyetlen mintát, mivel a szűk keresztmetszet ilyenkor is a GPU-ba történő adatbetöltés marad. | ||
| + | |||
| + | Egy tipikus GPU elméleti teljesítménye: | ||
| + | |||
| + | $$ 10^{13} \text{ – } 10^{14} \text{ FLOP/s (floating point művelet másodpercenként)} $$ | ||
| + | |||
| + | A lebegőpontos számokat jellemzően 32 biten (FP32) tároljuk, de sok esetben **16 bites (FP16)** vagy kisebb pontosság is elegendő, ami még tovább gyorsíthatja a számítást. FP16-os tárolással közel kétszeres sebességnövekedés érhető el, az FP32-vel szemben. | ||
| + | |||
| + | ==== Tenzorok használata ==== | ||
| + | |||
| + | A mélytanulási könyvtárak, | ||
| + | |||
| + | $$ \text{Vektor: | ||
| + | |||
| + | A tenzorokkal reprezentáljuk: | ||
| + | * a bemeneti adatokat (pl. képek, hangminták), | ||
| + | * a modell paramétereit (súlyok), | ||
| + | * a rejtett rétegek aktivációit. | ||
| + | |||
| + | Példák: | ||
| + | * Egy RGB kép (64 pixel × 64 pixel): \( \mathbb{R}^{3 \times 64 \times 64} \) | ||
| + | * 32 ilyen kép: \( \mathbb{R}^{32 \times 3 \times 64 \times 64} \) | ||
| + | |||
| + | A népszerű mélytanulási könyvtárak lehetővé teszik ezek **formátumának gyors átalakítását** (tenzorátalakításokat). | ||
| + | |||
| + | ==== Példák tenzorátalakításokra ==== | ||
| + | |||
| + | === Dimenziók átrendezése (transpose) === | ||
| + | |||
| + | Ha van egy mátrixunk: | ||
| + | |||
| + | $$ | ||
| + | A = \begin{bmatrix} | ||
| + | 1 & 2 & 3 \\ | ||
| + | 4 & 5 & 6 | ||
| + | \end{bmatrix} | ||
| + | \in \mathbb{R}^{2 \times 3} | ||
| + | $$ | ||
| + | |||
| + | A transzponáltja: | ||
| + | |||
| + | $$ | ||
| + | A^\top = \begin{bmatrix} | ||
| + | 1 & 4 \\ | ||
| + | 2 & 5 \\ | ||
| + | 3 & 6 | ||
| + | \end{bmatrix} | ||
| + | \in \mathbb{R}^{3 \times 2} | ||
| + | $$ | ||
| + | |||
| + | **PyTorch-ban**: | ||
| + | <sxh python> | ||
| + | A = torch.tensor([[1, | ||
| + | [4, 5, 6]]) | ||
| + | A_T = A.T # vagy A.transpose(0, | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Szeletek kivágása === | ||
| + | |||
| + | Tegyük fel, hogy van egy 3x4-es mátrix, és csak az első két oszlopra van szükségünk: | ||
| + | |||
| + | $$ | ||
| + | B = \begin{bmatrix} | ||
| + | 1 & 2 & 3 & 4 \\ | ||
| + | 5 & 6 & 7 & 8 \\ | ||
| + | 9 & 10 & 11 & 12 | ||
| + | \end{bmatrix} | ||
| + | $$ | ||
| + | |||
| + | Kivágva az első két oszlop: | ||
| + | |||
| + | $$ | ||
| + | B[:, 0:2] = \begin{bmatrix} | ||
| + | 1 & 2 \\ | ||
| + | 5 & 6 \\ | ||
| + | 9 & 10 | ||
| + | \end{bmatrix} | ||
| + | $$ | ||
| + | |||
| + | **PyTorch-ban**: | ||
| + | <sxh python> | ||
| + | B = torch.arange(1, | ||
| + | slice = B[:, 0:2] # minden sor, az első két oszlop | ||
| + | </ | ||
| + | |||
| + | === Sorozatok kibontása (reshape) === | ||
| + | |||
| + | Egy hosszú vektor: | ||
| + | |||
| + | $$ | ||
| + | v = [1, 2, 3, 4, 5, 6] \in \mathbb{R}^6 | ||
| + | $$ | ||
| + | |||
| + | Ezt átalakíthatjuk egy 2 soros, 3 oszlopos mátrixszá: | ||
| + | |||
| + | $$ | ||
| + | \text{reshape: | ||
| + | 1 & 2 & 3 \\ | ||
| + | 4 & 5 & 6 | ||
| + | \end{bmatrix} | ||
| + | \in \mathbb{R}^{2 \times 3} | ||
| + | $$ | ||
| + | |||
| + | **PyTorch-ban**: | ||
| + | <sxh python> | ||
| + | v = torch.tensor([1, | ||
| + | reshaped = v.reshape(2, | ||
| + | </ | ||
| + | |||
| + | Ezek a műveletek gyakran **memóriamásolás nélkül** végrehajthatók, | ||
| + | A modern mélytanulási rendszerek tervezése során a tenzoros reprezentáció fontos követelmén. Ha a számításokat **tenzoros formában** szervezzük meg, akkor ez lehetővé teszi a hatékony párhuzamos végrehajtást. Minden szint – a modell, a programkönyvtár, | ||
| + | A tenzoros struktúra támogatja a memóriabeli **lokalitást**, | ||
muszaki_informatika/gepi_tanulas.1747909855.txt.gz · Last modified: 2025/05/22 10:30 by knehez
