DL Basic
MLP: 여러개의 hidden layer로 구성된 architecture
Optimization: 최적화 문제는 여러가지가 있다. 각 train, test set에 대한 성능 이슈인 Generalization, over-fitting, 최적의 Hyperparameter를 찾는 Corss-validation, Bais and Variance 개념과 tradeoff, 좋은 모델을 위한 bagging, boosting Batch-size 문제 경사하강 메소드들
CNN: filter가 data를 순회하면서 feature map 생성, filter의 weight 학습 다양한 CNN 모델의 parameter를 계산하는 것에 익숙해져야 한다.
LSTM: forget, input, output gate 역할 중요 핵심 키워드는 컨베이어벨트 역할을 하는 중간에 layer를 나가지 않고 output까지 이어진 Previous Cell의 역할이 중요하다.
Multi-headed Attention: 어떤 sequential data에 대해 학습할 때 한 단어가 다른 단어와 연관이 얼만큼 있는지 스스로 학습하는 self-attention 개념 중요
GAN: generator와 discriminator가 동시에 학습되어 결과물이 좋다. 또한 generative 모델은 새로운 데이터를 생성하는 것도 중요하지만 explicit models이어야 한다.
Data Viz
Bar Plot: 범주에 따른 수치 비교를 할 때 적절하다. 수직, 수평방향으로 표현할 수있다.
Line Plot: 색, 마커, 선의 종류로 표현이 가능하다. 데이터가 자주 변하는 경우 noise로 인해 추세 파악이 어려워 smoothing을 적용한다. line plot은 특히 표현할 때 불필요한 정보는 최대한 뺀다. grid 선이다. annotate를 제거하고 추세를 최대한 잘 파악할 수 있도록 하는 것이 좋다.
Scatter Plot: 색, 모양, 크기를 변경해 표현이 가능하다. scatter plot의 목적은 상관 관계(양/음/없음)를 확인하는데 있다. 또한 군집(cluster), 값 사이 차이, 이상치(outliers)를 확인한다. 표현하는데 있어 점이 점점 많아지면 분포를 파악하기 힘들다. 따라서 투명도를 이용해 표현하거나 히스토그램, 등고선분포를 사용하여 표현할 수 잇따.
MLP
MNIST 데이터를 분류할 수 있는 Fully Connected Network로만 이루어진 MLP 모델을 실습했다. torch 모듈의 사용법을 익혔고 hidden layer의 output을 리스트로 받아 반복문을 사용해 layers를 구성하는 방식으로 코드를 변경해보면서 실습하였다.
CNN
MNIST 데이터를 분류할 수 있는 CNN 모델을 실습했다. Convolution layer의 역할과 kernel, pooling 개념을 학습하면서 torch 문법을 익혔다. kernel의 output channel을 바꿔가면서 parameter 계산해보는 실습을 하였다.
LSTM
MNIST 데이터를 분류할 수 있는 LSTM 모델을 실습했다. 확실히 MLP, CNN보다 좀 어려웠고 hidden state와 cell 변수를 사용해야하는 점이 특히 달랐다. 전체적인 코드는 이해하였지만 hyperparameter를 변경하면서 흐름을 복습해봐야 할 것 같다.
ViT
Transformer에 대한 이해와 원리를 어느정도 이해하고 논문에서 소개한 수식대로 구현만 해놓은 수준이다. 아직 완전하게 이해하지 못하였고, 전체 코드 실행 결과가 약간 달랐는데 아마 encoder를 stack하는 구현부분에서 조금 정답과 달랐던것 같다.
AAE
AutoEncoder에 대한 개념과 GAN에 대한 개념을 학습하였더니 어느정도 이해하였더니 비교적 재밌는 과제였다. Encoder의 output과 Generator의 결과를 Discriminator가 판단하여 Generator에 Encoder가 맞추도록 학습하는 정도만 이해하고 있는데 코드를 작성하는 부분은 크게 어렵지 않았다.
MDN
MDN을 사용하는 목적을 이해하고 빈칸만 맞추었다. 하나의 데이터 x에 대해서 y값이 2개 이상일 때 사용하는 것으로 알고 있는데 구체적으로 이해하려면 수식을 이해할 필요가 있어보인다. 시간을 내서 좀 봐야할 것 같다.
이번주 피어세션은 주로 강의 내용에 대한 질문으로 진행
positional enconding이 concat이 아니라 더하는 것인데 어떻게 성능을 낼까?
Transformer는 LSTM, RNN 처럼 시간적 속성을 본질적으로 고려하는 모델이 아님. 하지만 언어는 단어의 순서가 중요함 따라서 단어의 위치 정보가 단어 학습 및 추론에 영향을 주기 위해 positional encoding을 더해준다.(영향을 미치게 한다)
ReLU 함수 0에서 미분?
https://datascience.stackexchange.com/questions/19272/deep-neural-network-backpropogation-with-relu
정보량과 엔트로피?
https://angeloyeo.github.io/2020/10/26/information_entropy.html
2주차부터 내용이 갑작스럽게 어려워 져서 (특히 선택과제) 시간이 좀 부족했다. 하나의 주제에 대해 오랫동안 공부를 해야할 것 같은데 다음 나오는 과제도 어려워서 그랬던것 같다. 주말에 부족한 기본기를 학습해서 새로운 내용을 받아들일 준비를 해야할 것 같다.