일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝손실함수
- Pseudo Label
- mme paper
- Meta Pseudo Labels
- cifar100-c
- ConMatch
- adamatch paper
- remixmatch paper
- CoMatch
- CGAN
- 컴퓨터구조
- 백준 알고리즘
- mocov3
- conjugate pseudo label paper
- 최린컴퓨터구조
- SSL
- Pix2Pix
- shrinkmatch
- shrinkmatch paper
- semi supervised learnin 가정
- UnderstandingDeepLearning
- CycleGAN
- WGAN
- GAN
- dcgan
- simclrv2
- BYOL
- Entropy Minimization
- tent paper
- dann paper
- Today
- Total
목록분류 전체보기 (247)
Hello Computer Vision
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bFdcLx/btrZiPevJsW/DXWj59l57pvKTJgYtbu331/img.png)
참고 영상 : 유튜브영상 지난번 Gradient Boost 에 이은 이번에는 XGBoost이다. XGBoost는 다시 말하면 기본적으로 Gradient Boost이다. 그렇지만 기존 방법과 차별화된 점은 더 많은 데이터 수용 가능하며 이를 빠르게, 병렬처리하는 과정을 나타낸 것이 XGBoost라고 할 수 있다.(여기서 X는 Extreme을 뜻한다) 나온 배경 기존 의사결정나무같이 Exact greedy 알고리즘의 장점이라고 하면 모든 해를 다 탐구하기 때문에 항상 정확한 해를 찾을 수 있다. 단점이라고 한다면 분산처리를 할 수 없으며 모든 데이터가 메모리에 들어가지 않는다면 문제가 생긴다. 이러한 주된 문제점들을 해결하기 위해서 XGBoost는 어떠한 방법을 사용할까? 바로 bucket을 이용하는 것이다..
pytorch를 사용하다 보면은 클래스를 정의할 때 nn.Module을 상속받고 다음 코드에 super().__init__() 사용할 때가 많다. 일단 super() 를 쓰는 이유에 대해서는 상위 클래스를 상속받기 위해서는 먼저 초기화를 해줌으로써 이 상위 클래스의 속성을 sub class가 받아오도록 하는 것이다.(sub class : 현재 내가 정의하는 class) nn.Module같은 경우 우리가 많이 쓰는 Linear, Conv2d 같이 nn.Module의 instance들을 sub class내에서 자유롭게 사용할 수 있는 것이다.
이번에 ViT를 공부하는 와중에 텐서를 조금 더 내 자유자재로 만들 수 있는 라이브러리를 발견했다 그건 바로 einops! terminal 에 pip install einops 하면은 금방 설치할 수 있다. 한번 코드 예시를 통해 알아보겠다. 매우 직관적이므로 쉽게 알 수 있다. from einops import rearrange import torch.nn as nn import torch img = torch.rand(8, 224, 224, 3) print(img.shape) print(rearrange(img, 'b h w c -> b c h w').shape) print(rearrange(img, 'b h w c -> (b c) h w').shape) print(rearrange(img, 'b h..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bNliMD/btrYdhWxgCz/z8NzpecOt76RpQY7klyjB1/img.png)
지난번에는 Boosting이 무엇인지에 대해서 알아보고 Adaptive Boosting 에 대해서도 공부해보았다. 그리고 이번에는 Gradient Boosting 에 대해서 공부해보려고 한다. Gradient Boosting이란? 일단 직관적으로 어떤 기법인지 생각해보았을 때 배경이 되는 것은 역시 Boosting일 것이고(Sequential) 모델들을 부스팅하는 과정에서 하는 업데이트 방식을 Gradient를(경사하강법)사용하는 것이 아닐까 생각이 된다. (Adatpive Boosting에서는 gradient를 사용하는 것이 오차에 대해서 추가적인 가중치를 부과함으로써 모델을 업데이트하였다.) 이를 잘 설명해주는 것이 위 이미지라고 생각한다. Regression모델을 한번 생각해보았을 때 첫번째 ite..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/R1dAZ/btrXqr0ez7v/7i49g4dlVNkOpDkMwVoixK/img.jpg)
출처 : https://www.youtube.com/watch?v=GciPwN2cde4 이전 학교에서 데이터사이언스 과목을 들을 때 XGboost나 Gradient Boosting에 대해 가벼운 내용이 나왔던 걸로 기억한다. Boosting이란? 그리고 이 기법들은 공통으로 Boosting이란 단어가 들어가있다. boost라는 용어의 뜻은 격려, 증가 라는 뜻을 가지고 있다.(카트라이더에서의 부스터 생각하면 편하다) 여러 개의 모델을 순차적으로 구축하여 최종적으로 합친다는 것이 부스팅의 핵심 아이디어이다. 여러개의 모델을 합친다는 점에서 앙상블이고 큰 특징이라면 모델들을 여러개만들고 한번에 합치는 것이 아닌 순차적으로 구축한다는 것이 핵심이다. 순차적으로 구축하는만큼 그 전 단계에서의 모델의 단점을 보완..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CVuAu/btrXnHJFA5k/P76Acx4z9qRKKNAtGLvgm1/img.png)
딥러닝 모델을 훈련시킬 때는 한번도 사용해본적은 없지만 머신러닝에서 자주 쓰이는 교차검증 방법들을 한번 정리해보려고 한다. 잘 정리해놓으면 나중에 딥러닝 모델에서도 충분히 활용할 수 있겠지? KFold란? 데이터가 많으면 문제 없겠지만 데이터가 한정된 상황에서 Test 데이터셋을 어떻게 설정하냐에 따라 정확도가 달라질 수 있다. 이러한 문제와 불확실성을 해결하기 위해 데이터셋을 k개로 쪼개 모든 데이터가 검증 과정을 거치도록 분할하는 것이다. 이를 잘 나타내는 이미지는 다음과 같다. 이미지출처 장점은 알고리즘의 정량적인 성능을 평가할 수 있지만 k번 훈련,검증 과정을 거쳐야하므로 한번 훈련할 때보다 훈련시간이 증가한다. 파이썬 코드 from sklearn.datasets import load_iris f..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2tKqS/btrXo5C2laJ/hyqhDYXCwGCgaucP0QK7a1/img.png)
출처 : https://www.youtube.com/watch?v=lIT5-piVtRw 머신러닝 쪽에서 아주 유명한 앙상블 기법이며 정확도가 아주 높은 기법 중 하나이다. 활용할 데이터가 어떤 분포를 가질 지에 대한 가정이 필요없으며(비모수적 방법) 훈련시간이 적어 다양하게 활용된다. 또한 의사결정나무의 단점들을 보완한 방법이다.(과적합, 이상치민감) 랜덤포레스트의 핵심적인 아이디어는 Diversity, Random을 확보하는 것이다. Diversity는 Bootstrap, Bagging을 이용함으로서 충족시킨다. 이에 대한 설명은 이전 글에 간략하게 설명해놓았다 Diversity에대한 설명 Random을 충족시키기 위해서는 각각의 의사결정나무를 구축시 변수를 무작위로 선택한다. 이를 잘 설명해주는 이미..
이번에 머신러닝의 주요 기법인 랜덤포레스트를 공부하는 도중 부트스트랩, 배깅이란 용어가 나와 정리하고 가려고한다.(나름 핵심용어인 듯 하다) Bootstrap이란? 우선 앙상블을 사용할 때 사용하는 방법이다. 한정된 데이터셋에 대하여 (ex.10개의 변수) 전체 데이터수만큼의 복원추출을 수행한다. ex) 10개의 데이터가 있다면 10개를 복원추출하는 과정을 여러번 거친다. 이러한 과정에서 어떤 데이터셋에는 존재하지 않는 데이터도있을 것이고 여러번 뽑히는 데이터도 존재한다. 중요한 점은 전체 데이터셋보다 적은 데이터를 뽑은 것이 아닌 전체 데이터수만큼의 복원추출을 한다. 이론적으로 복원추출한 데이터셋에서 한개의 데이터가 존재하지 않을 확률은 0.36정도이다. Bagging이란? Bootstrap Aggre..