2023-Q4-AI 9. Auto-Encoders, AE, DAE

 

Lekcija klātienē:

Trešdienās 14:30 Zunda krastmala 10 Lekcijas notiks Kabinets: 122 (1. stāvs)

 

Saturs:

  1. Nepārraudzītās apmācības nozīme - Yann Le Cun Cake

  2. Parastais AE, Kļūdas funkcija

  3. Jēgas skaidrojums - anomāliju atpazīšana, nemarķēti dati, Generative features

  4. Latentā vektora attālumu mērīšana

    1. L1, L2 distances

    2. Kosīnusa distance

    3. Mahalanobis distance

    4. PLDA

  5. Work - Encoder

  6. Transposed Convolutions, Dilations

  7. Work - Decoder

  8. Test loss daļā izmantot real y_ground

  9. Denoising Auto Encoder

  10. Modern AE - Homework

    1. Svaru saglabāšana

    2. Upsampling / Downsampling

    3. Group Norm, Layer norm, instance norm skaidrojums

 

⚠️ Source code (finished code examples)

http://share.yellowrobot.xyz/quick/2023-11-2-9BFED98D-BBC1-41A0-B9D2-6A7E48F8102A.zip

 

9.1. Video / Materials

Video: (8 Nov 2023, 14:30) https://youtube.com/live/-KArtyODIT4?feature=share

Jamboard: https://jamboard.google.com/d/1tKGRQ7RwYTpDkq8n7mih4BP0L0lw_RvvlM_kj45YYEU/edit?usp=sharing

Sagatavošanās materiāli:

  1. AE / DAE: https://towardsdatascience.com/auto-encoder-what-is-it-and-what-is-it-used-for-part-1-3e5c6f017726

  2. Cosine / Euclidean / mahalanobis distances: https://cmry.github.io/notes/euclidean-v-cosine

  3. PCA whitening: [http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/](

 


^ Shared to stefan.dayneko@gmail.com

 

When starting the lection start Screen Recording using OBS software (you can choose a window to record using it + Mirror it on Wall Display in Class)

Stream key: 2c4r-cxsy-dmdq-7wtv-cj1x ⚠️ Youtube RTMP key: pjat-ew6h-6tae-f7w9-dgt5

Before lecture test streaming NOT on this key, but create your own livestream in youtube to make sure this works

 

This is way how to make output of OBS visible on Display on Wall (left click)

image-20231026155842296

Setting stream image-20231026160000783

 

 

Previous year materials (check)

Video: https://youtu.be/WOmH67RU33U

Jamboard: https://jamboard.google.com/d/1AC-5eRS5LV30lN7PmMHE3M7_L4XqemFPgFHMjOb6UZA/edit?usp=sharing

Sagatavošanās materiāli:

  1. AE / DAE: https://towardsdatascience.com/auto-encoder-what-is-it-and-what-is-it-used-for-part-1-3e5c6f017726

  2. Cosine / Euclidean / mahalanobis distances: https://cmry.github.io/notes/euclidean-v-cosine

  3. PCA whitening: [http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/](

 

9.2. Implemementēt iekodētāja daļu AE modelim

  1. Implemementēt iekodētāja daļu AE modelim, izmantojot konvolūciju formulu - samazināt dimensijas līdz izmēram z.shape = (B, 32, 1, 1), pēc noplacināšanas z.shape = (B, 32)

  2. Implementēt kļūdas funkciju pēc izvēles

Iesniegt pirmkodum, tzmantojot sagatavi: http://share.yellowrobot.xyz/1630528570-intro-course-2021-q4/session_9_2_ae_template.py.zip

 

9.3. Implementēt atkodētāja daļu AE modelim

Implementēt atkodētāja daļu AE modelim, izmantojot transposed convolution formulu. Atcerieties arī kādās robežās jābūt rezultāta vērtībai.

Iesniegt pirmkodum, izmantojot sagatavi no iepriekšējā uzdevuma.

9.4. Implementēt DAE

Implementēt DAE. Datu kopas programmas daļā ar torch.random.random(shape) vai kādu citu funkciju pēc jūsu izvēles iegūt, ka katrs pikselis x ievad-datos 50% gadījumu tiek aizstāts ar 0 vērtību. 50% gadījumu no ievades paraugiem arī izmantot orģinālo attēlu bez kropļojumiem.

Iesniegt pirmkodum, tzmantojot sagatavi no iepriekšējā uzdevuma. Pievienot ekrānšāviņus ar rezultātiem.

 

9.5. Mājasdarbs - Implementēt modernu DAE versiju

  1. Balstoties uz 9.4 kodu implementēt modernāku encoder, decoder versiju

EncoderBlock: torch.nn.Conv2d(in_channels=, out_channels=, kernel_size=3, stride=1, padding=1), torch.nn.GroupNorm(num_groups=, num_channels=), torch.nn.Mish(), torch.nn.Upsample(size=),

DecoderBlock:

torch.nn.ConvTranspose2d(in_channels=, out_channels=, kernel_size=3, stride=1, padding=1), torch.nn.GroupNorm(num_groups=, num_channels=), torch.nn.Mish(), torch.nn.Upsample(size=)

torch.nn.Upsample var arī ielikt ik pa 3 blokiem, lai palielinātu parametru skaitu

  1. Pievienot testa kopai dotos piemērus un pārbaudīt vai tie atdalās kā anomālijas latentajā Z telpā (Iesniegt screenshots klāt pie pie pirmkoda),

    Lai šo varētu izdarīt visvienkāršāk būtu test iterācijas beigās izsaukt model.forward ar iepriekš sagatavotiem manuāli izvēlētiem paraugiem, dataset_full.labels var pievienot “anomaly”, lai attēlotos vizuāli. Ja vēlaties iekļaut datu kopā, tad jāpārraksta dataset_full kods, izmantojot torch.utils.data.Subset priekš train un test (test kopā iekļautas anomālijas, bet tās nav iekļautas train kopā)

    Implement MSA / L1 loss

  2. Implement saving models when best loss value achieved

  3. Pievienot testa kopai dotos piemērus un pārbaudīt vai tie atdalās kā anomālijas latentajā Z telpā (Iesniegt screenshots klāt pie pie pirmkoda)

 

 

 

Materials

 

 

image-20231027100320906

 

 

 

image-20231101235355358

 

 

 

image-20211103071136682

 

75F2E95F-9CCC-4E36-A2D0-EE6D1582B5A0

 

3FB8CE9F-901A-42E7-A962-52226E9878DF

(1)LL2=1NN(xx)2

 

F9EF31ED-D989-4A7F-BBC0-F1A4C1FAA68C

 

image-20211103071157906

image-20211103071221192

image-20211103071249113

 

Mērķis dabūt 2 pakāpi (sākotnēji 64)

encoder:100 => 64 => 4/4/4 decoder: 1×2×2×5×5 => SIGMOID!

dilation = 1 by default

rewrite equations without D

 

buggy - (w_in + 2 * p - k) / s + 1

(2)Wout=Win+2PKS+1Wout=S(Win1)2P+K

Deconvolutions / Transposed convolutions

https://towardsdatascience.com/what-is-transposed-convolutional-layer-40e5e6e31c11

Mākslīgi sagatavo lielāka izmēra input, saliekot strides un paddings

img

 

 

image-20211103110037378

 

image-20211103093757713

886E37B1-8C66-46C5-8FA5-5F2E2C7AE090

 

 

 

 

image-20211103071342663

E624D99C-1511-47E1-80DF-EA8F17600BEA

 

64775CB1-D9F1-4219-B680-3309ACF0132F

819A4147-A685-4545-A575-F88C411C547E

 

https://distill.pub/2016/deconv-checkerboard/

Checkerboard Artifacts

image-20211103095551704

 

image-20211103095642177