목차
학습 정리 & 배운점
# 231120 계획을 모두 달성한 활기찬 월요일!
학습 정리 🤭
- 딥러닝에서 데이터, 모델, 목적 함수, 학습 알고리즘 이 네 가지 요소가 매우 중요하고, 당연하게 적용하는 것은 절대적으로 없다는 사실을 항상 유념해야 함. 내 목적을 달성하기 위해 적합한 방법인지 자꾸만 다시 묻는 습관이 필요할 듯
- Denny Britz의 white paper 한 번은 읽어보는 것이 좋겠다. Residual connection은 "딥"러닝을 가능케한 방법론으로 깊은 층을 쌓아도 일반화 성능이 떨어지지 않고, 모델이 더 복잡하고 중요한 표현을 학습할 수 있게 함. GAN에서 언급된 캐나다의 술집에 꼭 가봐야지 🍻 혹시 나도 획기적인 아이디어가 떠오를지 몰라.. Transformer는 ChatGPT 시대에 무조건 이해하고 넘어가야겠다. Self-supervised learning을 통해서 라벨링 없는 데이터로 지도학습 모델의 학습을 도울 수 있다고....!
- L2 norm은 일반적으로 사용되나(MSE), 매우 큰 오차에 대해서는 MAE보다 영향을 크게 받을 수 있음. 필요에 따라서는 L1 norm을 사용할 줄 알아야 함. 마찬가지로 CELoss의 경우에도, 목적 자체는 다른 클래스 대비 목적 클래스의 로짓이 "상대적"으로 더 크면 되는데, CELoss는 다른 클래스는 상관없고, 목적 클래스의 로짓을 최대화 함. 하지만 상대적인 것을 수학적으로 표현하거나 학습하기 어려워 사용하는 것. 이와 같이 framework에서는 한 줄이라도, 어떤 것을 의미하는지 그 개념을 확실히 알고 사용할 필요가 있음.
- 딥러닝 모델에서 목적 함수는 항상 convex 하지만은 않으므로, 편미분값이 global 최소화 방향이 아니라 locally 최소화 방향이며, 이 때문에 lr을 잘 조정해줘야 loss를 최소화하는 방향으로 학습이 가능하다.
- weight을 모두 같은 값, 0으로 초기화하면, 한 레이어 내 노드 간 차이가 없어져 학습을 거듭해도 똑같은 값으로 학습될 가능성이 큼. 괜히 초기화 연구를 했던 게 아니다.
배운점 📚
- 현업하면서 "여기서 썼으니까, 우리도 써야지"라는 말도 안되는 결정을 내렸던 적이 많았고 항상 guilty가 있었는데, 그래도 하나씩 알아가고 있다는 생각에 뿌듯하다.
- 다음날 피어세션에서 발표를 하는 날이었고, 마침 저녁 운동을 캔슬해서 multi-GPU 학습 방법과 메서드에 대해 공부하고 정리하였는데, 어 이거 모르겠다 -> PyTorch 공홈 탐색 -> 아티클 읽기 -> Stackoverflow ... 돌아다녀보면서 파이토치로 MultiGPU 학습을 해보고 싶다는 마음이 굴뚝 같았다.. 재미있었고 !!
# 231121
학습 정리 🤭
[ 시각화 ]
- 시각화에는 정답이 없지만, 모범 선례는 있다.
- 시각화는 점,선,면에서 시작하고 이를 mark라함. mark에 대해 변경 가능한 요소를 channel이라 하며 주로 색, 기울기 등이 있다.
- 데이터 시각화의 관점에는 데이터 전체의 경향을 보는 global한 관점과 개별 데이터를 보는 local 관점이 있다.
- fig.suptitle()에서 sup은 super의 줄임말이었다...!
[ DL Basics ]
- 최적화 방법에는 GD, SGD도 있지만 이들은 잘 동작하지 않는 경우가 많으며 momentum과 함께 다양한 최적화 방법론들이 등장함. Adam은 모멘텀과 RMSProp의 장점을 결합한 알고리즘으로, LR 외 다른 파라미터들의 조정도 매우 중요함.
- 주로 비전에서 사용되는 Label Smoothing은 데이터를 흐리게 섞거나, 일부를 대체하는 등의 방식으로, 데이터의 결정 경계를 모호하게 만들어줘 모델의 성능을 크게 향상함.
- 논란이 많은 Batch Normalization은 internal covariate shift를 줄여, 모델이 깊은 경우 일반적으로 성능을 향상 시킨다고 함.
- 컨볼루션 연산은 CNN 첫 등장 아니고 신호처리에서 두 함수를 섞어주는 오퍼레이터였음. 컨볼루션 레이어 보자마자 파라미터 규모 파악할 줄 알아야 하며, 1x1 컨볼루션은 주로 depth(채널)를 줄여 파라미터 수를 줄이는 역할을 한다고 함.
- AlexNet에서 사용한 11x11 컨볼루션은 이후 거의 사용하지 않고 작은 크기의 필터를 여러 개 쓰는 방법으로 대체됨. ResNet에서 층이 급격히 늘었고 ,DenseNet에서 1x1 컨볼루션을 3x3 앞뒤로 붙여서 파라미터 수를 줄여 연산하고 다시 늘리는 방법을 사용함.
배운점 📚
- 새롭게 배운 것들을 기반으로 from scratch로 모델 학습 스크립트를 구성해보자는 결심을 하였고, 학습하는데 너무 안됐다. 알고보니 CELoss의 입력 순서가 매우 중요했고 감격의 눈물을 흘렸다. 그래도 하나 알아가서 다행이라는 생각이다.
- 추천할거야! 라면서 나머지 분야에 대해서는 아..선택과 집중을 위해 내가 못하는 분야.. 라고 생각했는데, 생각보다 점점 재미있어졌고, 목표와는 별개로 궁금하면 시도해봐야겠다고 다짐했다.
- 피어세션 때 DP, DDP 에 관련하여 공부한 것을 팀원들에게 공유했다. 강의 자료의 흐름을 약간 제거하고 좀 더 다듬어서 포스팅 올려봐야지.
# 231122
학습 정리 🤭
- transformer는 시퀀스 데이터 처리를 위한 모델. 특히, Neural Machine Translation(NMT) 즉 기계 번역 task를 처리하기 위한 목적으로 구상됨. 현재는 대부분의 모델을 대체하고 있음
- 셀프어텐션을 통해 얻은 벡터는 각 문장의 다른 요소와의 관계를 고려하여 인코딩된 것이라고 할 수 있다. 특히 multi-head 어텐션은 이러한 어텐션 연산을 다른 linear layer를 거친 kqv를 사용하여 여러 번 병렬적으로 연/산하는 것으로, 여러 특징을 캡처할 수 있다는 장점이 있다. 단, 실제 구현 과정에서는 임베딩의 차원을 헤드 개수로 나누어 임베딩 차원 서브셋을 멀티 헤드들에 분배하여 연산을 하였기에, 그 의미가 약간을 다르다고 할 수도 있겠다.
- 학습 과정의 디코더가 아니라, inference 시에는 어떻게 되는 건지 잘 이해가 안됐다. 이 부분은 꼭 다시 짚고 넘어가야 될 듯 하다.
- 전 회사에서 세미나를 통해 DALLE, ViT의 원리에 대해 간단하게는 알아봤었는데, ViT의 원리는 트랜스포머에서 인코딩만 빼면 거의 달라진 게 없어 이해가 쉬웠으나, DALLE(?)의 원리는 아직도 잘.....
- Generative model .... (이어서 작성 예정)..
배운점 📚
- 트랜스포머의 디코더, 학습 과정에서 masked를 쓴다는 것은 알겠는데, 실제 번역의 과정에서 어떻게 다른 언어의 단어가 나오는 것인지? 아 output이 다른 언어의 적합한 단어 임베딩에 대해 가장 높은 값으로 예측하게 되어 그런건가? 하여간 생성부에 대해서 좀 더 알아볼 필요가 있겠다.
# 231123
학습 정리 🤭 & 배운점 📚
- 음.. VAE의 목적 함수에 대해서 이해가 안가서 하루 온종일 math부터 찬찬히 살펴 봤는데 아직도 이해가 안됐다. 종이에만 적었더니 남은 것도 별로 없네..언젠가 정복하리라..
# 231124
학습 정리 🤭
- barplot 을 여러 그룹에 대해서 matplotlib을 통해 그릴 때에는 0-n/2, 0+n/2 ...와 같이 xtick을 까다롭게 주어야 하는 것... 내가 무식하게 하는 건가 싶었는데 원래 그랬던 거였다..
- df.head() 보다는 df.sample() 사용해보라고 하셨는데, 핵꿀팁 🍯
배운점 📚
- DL 공부하느라 많이 못한 시각화 강의를 수강하였다. matplotlib 정말 지겹도록 써왔는데, 확실히 시각화는 디자인적 감각과 요소도 매우 중요하다는 걸 느꼈다..
- 비전 분야에서 트랜스포머의 단점은 inductive bias가 부족하다는 것, 설명해주셨는데 무슨 말인지 잘 모르겠어서 다시 공부해보아야 함.
- AE와 VAE의 차이는 latent space에 제약 조건이 없느냐, 있느냐(주로 정규분포 미분을 위해)이다. 하지만, 수학적 배경은 매우 다르다.
3주차 총평 🤔
아직까지 아침에 운동도 하고, 나름 일찍 일어나서 하루를 계획하며 열심히 살아가고 있다. 생성 모델 쪽은 이론 자체가 많이 어려웠는데, 다는 이해하지 못했지만 노력한 것에 대해서는 칭찬하고 싶다. 이와 별개로, 주어진 코드 보고, 조금씩 채우는 게 아니라, 직접 써보는 게 좋을 거 같다는 생각에 from scratch로 구현하기를 해보고 있다. 생각보다 데이터 feeding 하는 것부터 수렴시키는 것까지 익숙하지 않은 툴이라 느리지만, 익숙해져 가고 있고 한줄한줄 내 자식같이 넘나 소중하다 👶🏻👶🏻 (응애) 앞으로도 천천히라도 하나씩 짜보고, 너무 모르겠으면 클론 코딩이라도 하면서 흡수해보자 !!! 한 주간 고생했다 !!! (앗 그리고 이번 주에는 3주간 비대면으로만 본 우리 팀원들을 만나기로 했다 좀 떨리네? 애드라 내일봐 🫣)
'회고 🤔 > 네부캠 AI Tech' 카테고리의 다른 글
[네부캠 AI Tech] 5주차 학습 정리 🤓 (1) | 2023.12.08 |
---|---|
[네부캠 AI Tech] 4주차 학습 정리 🤓 (0) | 2023.12.01 |
[네부캠 AI Tech] 2주차 학습 정리 🤓 (0) | 2023.11.17 |
[네부캠 AI Tech] 1주차 회고 🤓 (1) | 2023.11.10 |
네이버 부스트캠프 AI Tech 6기 합격 후기 (현업종사자, 프리코스 수강, KDT 전형) (6) | 2023.10.30 |