일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 자바스크립트
- 가끔은_말로
- back propagation
- 이분 탐색
- BFS
- 플로이드 와샬
- 분할 정복
- DP
- 알고리즘
- dropout
- object detection
- 회고록
- 크루스칼
- lazy propagation
- 백트래킹
- c++
- 문자열
- 우선 순위 큐
- 가끔은 말로
- Overfitting
- 다익스트라
- 너비 우선 탐색
- 미래는_현재와_과거로
- 2023
- tensorflow
- lca
- pytorch
- 세그먼트 트리
- 조합론
- dfs
- Today
- Total
목록전체 글 (545)
Doby's Lab
🤔 Problem문득 예전에 ViT를 구현해 놓은 코드를 보다가 그런 생각을 했습니다. '내가 저기서 nn.Parameter()를 왜 썼더라?' 지금 생각해 보면, 그냥 tensor를 써도 똑같은 코드일 텐데 말입니다. 이때 당시에 Attention을 구현하면서 Query, Key, Value를 만들어내기 위한 목적으로 Weight Matrix가 필요했었고, 여러 오픈 소스를 참고하면서 구현하다가 무심하게 썼었던 기억이 납니다.class ScaledDotProductAttention(nn.Module): def __init__(self, embedding_length, qkv_vec_length): ''' embedding_length : embedding 하..
🤔 Problem파이토치 내에 클래스 내에 궁금한 메서드가 있어서 소스 코드를 보다가 문득 이런 문법을 보게 됩니다.def func(self, var1, var2): ... ... return self제가 임의로 만들어본 메서드입니다. 저기서 self를 리턴하고 있는데 '왜 self를 리턴하고 있는 것인가?'가 궁금했습니다.그래서 이번 포스팅에서는 이 것에 대해서 이야기해 봅니다. self가 의미하는 바가 인스턴스 본인을 참조하고 있다는 것은 이제는 너무나 명확하고, 당연한 관습입니다.헷갈리실 수 있겠지만, 문법이 아니라 관습입니다. self가 아닌 다른 걸로 해도 작동합니다. 거의 문법처럼 써서 그렇습니다. 아래의 코드도 정상적으로 작동하거든요 :)(물론, 현실에서..
🤔 Problem이번에 ResNet을 PyTorch로 직접 구현해 보면서 약간의 의구심(?)이 들었던 부분이 있습니다. Residual Connection을 구현할 때 크게 2가지 방법으로 구현을 하는데, '두 코드 모두 Residual Connection을 수행하는가?'가 의문이자 이번 포스팅에서 알아내고 싶은 문제점입니다. + 코드에 대해서만 다룰 것이니 Residual Connection에 대한 개념의 언급은 따로 없습니다. 첫 번째 코드는 torchvision 라이브러리 내에 ResNet을 구현해 둔 소스코드입니다.해당 코드에서는 identity = x와 같은 방법으로 복사를 합니다.( https://github.com/pytorch/vision/blob/main/torchvisio..
✅ Intro 오랜만에 블로그 글을 적는 거 같습니다. 이 프로젝트가 끝난 건 거의 한 달이 다 되어가지만, 지금도 하고 있는 프로젝트가 있고, 중간고사도 얼마 남지 않았습니다. 그래서, 이번 프로젝트를 통해 겪었던 경험들과 떠오른 생각들이 잊힐 수도 있을 거 같아 시간을 내어 적어보고자 합니다. 또한, 앞으로의 프로젝트를 블로그에 적는 것에 대해서는 방향을 바꿔야 한다고 생각했습니다. 지금까지는 프로젝트의 내용들을 전부 시작부터 끝까지 적어왔습니다. 하지만, 앞으로 제가 할 프로젝트들은 깃허브나 논문으로 다 아카이브가 될 것이기 때문에 다시 한번 블로그에 처음부터 끝까지 적는 건 부담스럽기 때문입니다. 결론적으로, 이런 유형의 프로젝트 관련 글들에는 깃허브나 논문의 링크를 걸어서 순수한 회고의 특성을 ..
✅ Intro 기존 Layer Normalization을 통해서 internal covariate shift 현상(레이어를 통과함에 따라 데이터의 분포가 달라지는 현상)을 해결하며, 이를 통해 심층 신경망 구조의 네트워크는 학습을 더 안정화시키고, 최적의 loss까지 빠르게 수렴하도록 도와줍니다. 하지만, Layer Normalization은 computational overhead(연산 자원)을 많이 필요로 하며, 결과적으로 이것은 학습의 속도를 낮추게 됩니다. 이러한 문제점에 기반하여 'Root Mean Square Layer Normalization'이라는 논문에서는 RMS Normalization을 제안합니다. 개념에 대해서는 아래에서 다루지만, 이 연구의 결과는 학습의 속도적인 문제점을 해결하는..
✅ Intro 2월 말에 가까워지면서 개강일도 서서히 가까워지고 있다. 이렇게 회고록이 늦게까지 미뤄질 거라 예상은 못 했다. 개강을 하기 전에는 써두어야 2023년에 대한 기록들이 그 당시의 뉘앙스를 살릴 수 있을 거 같기에 한 해가 끝나고, 2개월이 지나 늦겨울을 맞이하고서야 쓰게 되었다. 그리고, 회고록만큼은 더 잘 기록하기 위해서는 편한 어투로 쓰는 게 맞는 거 같다. 사실 초안을 종강 직후에 쓰고 있었는데 그때는 다소 형식적으로 쓴 느낌이 있었고, 2023년이라는 한 해에 대해서 다소 비관적인 마음으로 쓰고 있었다. 연초 일정들이 시작되고, 바쁜 나날들을 보내고서 끝맺음을 확실하게 해 둘 수 있는 시간이 되었다. 연초 일정들에 대해서는 아직 안 끝난 부분도 있고, 단순히 2023년에 대해서만 기..
✅ Intro 이번 프로젝트의 중심은 LLM이다 보니 CLIP, 데이터 처리 등 다루어야 할 요소들이 많지만, 가장 근본적으로 공부해야 할 부분은 NLP(자연어 처리)입니다. NLP 관련 모델을 더 깊게 공부하기 앞서 '자연어를 어떻게 모델에 넣지?'라는 질문에 대해서 답을 찾아보았습니다. ✅ Tokenization 단편적으로, 자연어를 모델에 학습시킨다고 생각했을 때, 문장 자체를 넣어버리면 좋겠지만 세상에는 엄청나게 많은 조합들의 단어가 있고, 그 단어들의 조합으로 셀 수도 없는 문장을 만들어낼 수가 있습니다. 각 문장에 대해 숫자를 부여한다면 엄청나게 많은 숫자들로 구성이 되겠지만, 이건 관리 차원에서도 어렵고, 데이터가 숫자 하나로 정리되기에는 너무 간결하여 Representation이 떨어집니다..
✅ Intro LLaVA-Med를 공부하면서 Visual Encoder로 CLIP(Contrastive Language-Image Pre-training)이 사용되어 이번 기회에 공부를 해보았습니다. CLIP은 기존 Classification 방식에서 새로운 메커니즘을 제안했습니다. Classification은 수많은 데이터셋에서 라벨링 된 클래스로 분류하는 것이 일반적인 특징입니다. 하지만, 세상에는 여러 가지 사물이 존재하며, 이 사물 또한 어떠한 상태에 있냐에 따라 분류를 할 수 있는 범위는 셀 수 없을 정도로 많습니다. 예를 들어, '일반적인 자전거'와 '바퀴가 없는 자전거'라는 Task로 수많은 사물들이 더 디테일한 description을 원할 때, 단순한 Classification Task만으..