개발자로 후회없는 삶 살기

네이버 부스트캠프 AI Tech 5주차 회고 본문

[AI]/[네이버 BoostCamp 회고]

네이버 부스트캠프 AI Tech 5주차 회고

몽이장쥰 2023. 12. 6. 07:44

서론

이번주는 새로운 이벤트가 많은 주였습니다. 기록하는 마음으로 회고합니다.

 

본론

- 확률 분포를 모델링하라

5주 차에 들어서기까지 다양한 강의와 과제를 하고 확률 분포를 모델링한다는 문장을 셀 수도 없이 많이 들었지만 정확히 그게 어떠한 의미, 메커니즘인지 이해를 못 했었습니다. 

 

[https://m.blog.naver.com/sqlmvp/221855713144]

마치 경사하강법을 처음 배울 때 최소값을 가지는 최적의 W를 찾아서 기울기를 따라 이동한다고 하긴 하는데 Cost 함수의 X, y축이 무엇인지 모르고 도대체 어떻게 최솟값을 찾아가는지 추상적으로만 알고 있던 상황과 비슷했습니다.

 

하지만 이번에 배운 Hourglass 모델을 통해 확률 분포를 모델링하고 정규분포가 되도록 모델링하고 두 분포의 KL 발산을 최소화한다는 것에 다시 한 번 생각해 보게 되었습니다.

 

저는 항상 공부를 할 때 추상적인 이론을 스케치로 그려보고 저만의 언어로 설명해봐야 이해를 할 수 있었는데 이번 과제를 통해 랜덤 샘플링한 히트맵을 정규 분포 히트맵을 직접 만들고 그것을 코드로 구현했습니다. 또한 두 분포의 차이가 최소가 되도록 학습을 시켜야 했습니다.

 

이를 통해 정규 분포를 모델링한다는 것은 현재 랜덤하게 초기화된 W의 분포를 또 하나의 다른 정규 분포와 Loss가 최소가 되도록 W를 갱신하는 것으로 이해할 수 있었습니다. 직접 눈으로 보니 단 번에 이해가 되었습니다.

 

-> AI는 확률 분프를 모델링하는 것이다? 🚨

사실 계속 확률 분포를 모델링 해왔었다는 사실에 놀랐습니다. 왜냐하면 정규 분포를 모델링한다는 것은 모델 출력이 정규 분포가 되도록 W를 갱신하는 것이기 때문입니다. 모델의 시그모이드나 소프트맥스 등을 사용하면 확률값으로 출력을 할 수 있는데 이것이 원하는 확률 분포를 가지도록 W를 갱신하는 과정이었습니다.

 

- 파이토치를 이용한 모델 구현 기초 지식 부족

cGAN 과제를 수행하면서 모델을 구현할 때 충분한 고민 없이 코드만 타이핑하는 느낌을 받았습니다. z와 c를 concat 할 때 어떻게 해야 할지 단 번에 생각이 나지 않았고 활성화 함수를 결정할 때 모델 끝 단에 ReLU를 붙였던 것에 의심을 하지 못했습니다.

 

대부분 모델 끝단에는 분류 문제를 해결하기 위해 시그모이드, 소프트맥스, tanh를 적용하는 데 생성자에 렐루를 적용하였고 모델 학습이 전혀 되지 않는 현상이 발생했습니다. 물론 이번 기회로 기초를 다잡는 시간이 되었지만, 모델 구현 시 더욱 심도 있는 고민을 해야 할 것 같습니다.

 

- 이미지와 텍스트 간의 유사도

지금까지 머신러닝 공부를 하면서 word2vec으로 텍스트 간 유사도를 구한 경험은 있어도 이미지와 텍스트 간 유사도를 구한 경험은 없었습니다. word2vec은 정적 임베더로 유사한 의미의 단어는 가까운 거리로 임베딩할 수 있었고 이것은 이는 말뭉치의 vocab을 모두 확인해서 나온 결과였기에 단어 간 유사성은 충분히 구할 수 있다고 판단되었습니다.

 

[CLIP 논문 PDF]

하지만 이미지와 텍스트 간 유사성은 아예 관점이 다른 문제인 것 같습니다. 처음 보는 임의의 이미지와 텍스트 사이의 유사도를 측정하여 고양이 사진과 고양이가 가까운 거리에 공간에 배치된다는 것이 너무 놀랍습니다. Joint Embedding 학습 방법을 활용하면 가능하다고 하는데 이 부분에 대해 더욱 깊게 공부하고 싶습니다.

Comments