강의 복습 내용은 아래의 링크(PDF 파일에는 후첨)로 첨부합니다. 기초적인 Python 문법은 생략하고, 딥러닝 수학 관련해서 헷갈릴 만하거나 새롭게 알게 된 내용을 첨부합니다.
또한, 강의 중 optimizer와 gradient descent 알고리즘을 실험하고 시각화하기 위해 직접 Google Colab에서 위 알고리즘의 시각화를 진행하였습니다. 해당 링크는 기재하고, pdf 파일을 후첨합니다.
이미 지난 학기에 PyTorch를 다뤄본 경험이 있어서 필수 과제 수행은 수월했습니다. 다만, 아직 해당 모델 혹은 모듈을 직접 구현할 수 있는 수준은 아니기에, 주말 동안 복습하면서 해당 내용을 정리해놓고자 합니다. 특히 multi-headed attention과 같은 부분은 중요하기에, 직접 Q, K, V를 계산하고 실제로 훈련시키는 과정까지 만들어볼 것입니다.
우선, CV 또는 GAN 분야는 익숙하지 않아서 과제 수행에 상당한 고민이 필요했습니다. 하지만 2주차 과제이다보니 모형의 직접적인 구현보다는 in_features
와 out_features
수를 맞추는 수준의 난이도여서 생각보다 수월했습니다. 복잡한 모형들의 구현을 직접 보는 것이 쉽지는 않았는데, 이를 경험할 수 있어서 좋았습니다. 특히 GAN이 정규분포 노이즈(white noise)를 변환하여 원하는 오브젝트를 생성한다는 개념을 직접 실습할 수 있었습니다.
AAE(Adversarial Autoencoder)의 결과는 아래와 같습니다. 맨 왼쪽은 생성물의 input으로 투입되는 gaussian white noise를 의미하고, 가운데는 1번의 epoch 후 결과, 오른쪽은 10번의 epoch 후 결과입니다. 갈수록 글씨가 선명해지고, 형체를 알아볼 수 있는 것을 확인할 수 있습니다.
ViT는 "Attention is all you need"에 제시된 Transformer를 성공적으로 CV task에 접목시킨 모델로, Transformer가 앞으로 딥러닝의 가장 큰 화두이자, XAI로 가는 길목에 놓여 있음을 의미합니다. 따라서 해당 모델이 어디를 중점적으로 보고 해당 판단을 내렸는 지를 파악할 수 있습니다.
피어세션에서는 주간 학습 활동을 정리하고 서로 질문하고 대답하는 시간을 가졌습니다. 저의 경우에는 학회 활동에서 읽었던 "Attention is all you need" 논문을 요약해서 발표하는 것을 맡았습니다. 다만, 코로나 백신 접종으로 인해서 피어세션에 참가하기가 어려워서, 사전에 동영상으로 녹화해서 이를 업로드하는 방식으로 진행했습니다. 해당 동영상은 아래에 있습니다.