08 Autoencoders

Warning

🚧 Դասերի սլայդերը պատրաստ են (L22, L23), գործնականը (ներքևում, PyTorch/MNIST) նույնպես։ Տեսանյութերը դեռ չեն ձայնագրվել։

🎲 Random

TBD

📚 Նյութը

Երկու դասախոսություն (սլայդերը ml/ch8_autoencoders/ պանակում)․

  • L22 — Autoencoders: encoder/decoder, bottleneck, autoencoder = nonlinear PCA, denoising, sparse, anomaly detection, և ինչու պարզ autoencoder-ը չի կարող գեներացնել։ PDF
  • L23 — Variational Autoencoders: generative reframe, ELBO-ի ամբողջական արտածում, reparameterization trick, generation և latent-space walk, β-VAE, և կապը ժամանակակից image-model-ների հետ։ PDF

Ժամանակակից կիրառություններ (դասերի ներսում)․ denoising → BERT/MAE pretraining, sparse → LLM interpretability (Anthropic), bottleneck → DeepSeek MLA, VAE → Stable Diffusion-ի latent տարածությունը։

Լրացուցիչ դիտելու համար (animated, անգլերեն)․

Սլայդերի մի մասը հիմնված է LMU I2DL-ի վրա (slds-lmu, CC BY 4.0)։

📝 Թեմայի վերաբերյալ հարցաշար (Google Form): TBD

🏡 Տնային

Practical — Autoencoders & VAE on MNIST 🧀🧀

PyTorch-ով MNIST-ի վրա կառուցիր plain autoencoder, denoising autoencoder, anomaly detector և variational autoencoder (VAE)։ Ամեն ինչ աշխատում է laptop-ի CPU-ի վրա մեկ րոպեում (thread-capped, subsample)։ Սա նույն կոդն է, որ ստեղծում է դասերի նկարները։

Առաջադրանքներ

  1. Latent size 🧀 — վերապատրաստիր VAE-ն latent=16-ով։ Sample-ներն ավելի սու՞ր են։ Կարո՞ղ ես դեռ 2D grid նկարել (ինչու ոչ)։
  2. KL knob (β-VAE) 🧀🧀 — բազմապատկիր KL անդամը β=4-ով։ Ինչ է լինում reconstruction-ի vs latent-ի կառուցվածքի հետ։
  3. Fair anomaly test 🧀🧀 — վերապատրաստիր anomaly AE-ն 0-8 թվանշանների վրա և փորձիր բռնել 9-ը։ Ինչու է ձախողվում, երբ 1-ի vs 0-ի դեպքը աշխատում էր։
  4. Convolutional AE 🧀🧀🧀 — փոխարինիր MLP encoder/decoder-ը Conv2d + ConvTranspose2d շերտերով։ Reconstruction-ներն ավելի սու՞ր են։

Գործնական notebook: ae_vae_practical.ipynb (download) · view on GitHub

HW1 — Կարդալ RNN-ի միտքը (sparse autoencoders) 🧀🧀🧀

Mechanistic interpretability-ի մինի-լաբորատորիա։ Փոքրիկ GRU-ն (ch7) սովորում է գրել 40 բառից բաղկացած բառարանի բառերը, հետո դու sparse autoencoder ես սովորեցնում նրա hidden state-ի վրա և կարդում ես, թե ինչ կա ներսում։ Ամբողջ տեքստը մենք ենք գեներացնում, ուստի ճշմարտությունը հայտնի է ամեն քայլում — այսինքն ամեն պնդում չափվում է, ոչ թե պարզապես «երևում է»։ Ամեն ինչ CPU-ի վրա, առանց ներբեռնումների։

Առաջադրանքներ

  1. Սովորեցրու RNN-ը 🧀 — char-level next-character prediction։ Ստուգիր, որ իրոք սովորել է (assert-ը կընկնի, եթե ոչ)։
  2. Մեկ նեյրոնը բավակա՞ն է 🧀🧀 — լավագույն նեյրոնը vs linear probe-ը։ Ինֆորմացիան կա, բայց ոչ մի առանձին նեյրոնի վրա գրված չէ։
  3. Սովորեցրու SAE-ն 🧀🧀 — 32 → 256 (8x overcomplete), unit-norm decoder, \(L_1\) code-ի վրա։
  4. Կարդա feature-ը 🧀 — max-activating contexts (feature dashboard), համեմատած չմշակված նեյրոնի հետ։
  5. Չափիր 🧀🧀🧀 — ամեն բառի համար լավագույն feature-ի F1-ը, ընդդեմ երկու baseline-ի։ Ինչու՞ probe-ը մրցակից չէ, այլ առաստաղ։
  6. Ablation 🧀🧀🧀 — զրոյացրու feature-ը և նայիր՝ կոտրվու՞մ է կանխատեսումը։ Պարտադիր՝ control (պատահական feature)։ Correlation vs causation։
  7. Sparsity-ի բռնակը 🧀🧀 — \(\lambda\)-ի sweep։ Reconstruction-ը միապաղաղ լավանում է, interpretability-ն՝ ոչ. loss-ը չի կարող \(\lambda\)-ն ընտրել։
  8. Երբ SAE-ն չի օգնում 🧀🧀🧀 — bracket-ների լեզու, nesting depth. dense հասկացություն → SAE-ն ոչինչ չի շահում։ Չափված բացասական արդյունք։
  • Bonus 🎁 — ուրիշ seed-ով երկրորդ RNN։ Նու՞յն feature-ներն են հայտնվում։ (Սա բաց հետազոտական հարց է։)

Առաջադրանք: HW1_sae_rnn.ipynb (download) · view on GitHub

Լուծում: HW1_sae_rnn_solution.ipynb (download) · view on GitHub

Flag Counter