본문 바로가기

반응형

Machine Learning Models

(56)
MobileNet (2) 이전 포스트 [Machine Learning/Architecture] - MobileNet (1) Model architecture MobileNet V2의 전체 구조는 Table 와 같습니다. 첫 번째 layer 에서는 32 사이즈 필터의 convolution 을 수행하고 19개의 residual bottlenect 구조로 이루어집니다. 또한, 계산속도를 바르게 하기 위해 연산에 소요되는 bit 수를 줄인 low-precision 을 위해 ReLU6을 사용했고 expansion factor $t$는 6을 사용했다고 합니다. ShuffleNet, MobileNet V1 등의 다른 경량화 모델과의 비교는 Figure 4와 같습니다. ShuffleNet 은 point-wise group convolution..
MobileNet (1) MobileNet 은 저전력/저용량 디바이스인 모바일에 deep neural networks 를 디플로이하기 위해 설계된 대표적인 lightweight model 중 하나입니다. MobileNet V1, V2가 2018년도에 제안되었고 최근에는 NAS와 (Neural Architecture Search) 결합된 MobileNet V3까지 발표되었습니다. 이번 포스트에서는 MobileNet V1, V2 에서 사용된 모델의 경량화를 달성하기 위한 설계 기법들에 대해 살펴보도록 하겠습니다. MobileNet V1 MobileNet V1 은 기존 convolution 을 depth-wise separable convolution 으로 치환한 것으로 요약할 수 있습니다. Depth-wise separable co..
Transformer 구현 지난 포스트 [Machine Learning/Architecture] - Transformer 이번 포스트에서는 Transformer Pytorch 구현에 대해 알아보도록 하겠습니다. 먼저, 이번 포스트에서 다룰 코드는 고현웅님의 Transformer github 레파지토리에서 발췌한 것임을 미리 밝힙니다. (Transformer 의 각 구성 요소별로 코드 정리가 잘 되어있습니다.) Scaled dot product attention Figure 1을 구현하는 블락입니다. 이때, multi-head attention 을 위해 $Q, K, V$가 head 개수만큼 분리되어 [batch size, head, length (입력 길이), d (차원)] 의 4차원 텐서입니다. 코드에서 "@" 은 pytorch ..
Convolution 의 종류 이번 포스트에서는 convolution 의 기능을 유지하면서 소요되는 파라미터 수와 연산량을 줄이기 위한 다양한 convolution 기법들에 대해 살펴보도록 하겠습니다. 먼저 $W, H, C, K, M$을 각각 입력의 너비, 높이, 채널, 커널 사이즈, 출력 채널 수로 정의하고 stride가 1인 일반적인 상황을 가정하여 입력, 출력 사이즈가 동일하다고 전제합니다. Standard convolution 일반적인 convolution 수행을 위해 몇 개의 파라미터가 필요할까요? 먼저 커널의 사이즈가 $K$이고 입력 채널 수가 $C$이므로 하나의 커널이 가지는 파라미터 수는 $K^2\cdot C$가 됩니다. 이 하나의 커널이 출력의 하나의 채널을 형성하므로 총 $K^2\cdot C\cdot M$개의 파라미..
Transformer 2017년 NIPS 에서 발표된 구글의 Transformer 구조는 language modeling, neural machine translator 등의 NLP 계에 혁신을 불어일으킨 논문으로 BERT, GPT 등의 구조의 기반이 되었고 다양한 분야로의 접목이 활발히 연구되고 있는 매우 중요한 neural networks 구조 중 하나입니다. Transformer 가 등장하기 전에는 RNN (LSTM / GRU), Convolution 등으로 sequence 모델링을 수행했었는데요, Transformer 는 recurrence, convolution 의 개념을 아예 배제하고 순수히 attention 으로 구성되어 기존 RNN, CNN 계열에 비해 속도와 성능이 모두 우월한 모델입니다. Overview M..
Dimension Reduction - t-SNE (2) Dimension Reduction - t-SNE (1) t-SNE 는 고차원 데이터를 효율적으로 저차원으로 매핑하는 차원축소 방법으로 머신러닝의 다양한 분야에서 2/3 차원으로 데이터를 시각화할 떄 많이 사용하는 방법입니다. Scikit-learn 에도 구현되어 있어 쉽게 사용할 수 있습니다만, t-SNE 를 훈련시킬 때의 파라미터와 데이터 구조에 따라 그 결과가 데이터 분석 상의 잘못된 오해를 불러일으킬 수 있습니다. 특히, t-SNE 에는 데이터의 지역적 (local) / 전역적 (global) 구조를 고려하는 "perplexity" 라는 파라미터가 있습니다. Perplexity 는 $2^{entropy}$로 정의되는 파라미터로 분포가 uniform 분포에 가까워 불확실해 entropy가 높다면 p..
XGBOOST 동작 원리 XGBOOST는 "Extreme Gradient Boosting" 으로 기존 Gradient Boosting 알고리즘에 CART 모델을 사용하고 병렬 처리를 가능하게 함으로써 다양한 데이터 경진대회, kaggle 대회에서 거의 항상 사용되는 모델입니다. 저 또한 XGBOOST 를 많이 사용했지만 그 내부가 어떻게 돌아가는지 정확하가 파악하지는 못했었는데요., 이번 포스트에서는 XGBOOST 공식 홈페이지에 나와있는 알고리즘 소개를 간단히 살펴보려 합니다. Decision tree ensembles Ensemble 이란 여러 개의 약한 모델들을 결합하여 최종적인 좋은 모델을 만드는 머신러닝 모델 학습 알고리즘 중 하나입니다. 여러 개의 모델을 병렬적으로 결합한 bagging 방식과 순차적으로 이전 모델이 ..
Pytorch - backward(retain_graph=True) (1) Pytorch 에서는 계산된 목적함수의 loss 값에 backward() 함수를 계산하면 모델을 구성하는 파라미터에 대한 gradient (기울기)를 계산합니다. backward() 메소드는 암묵적으로 loss 값이 벡터가 아닌 scalar 라고 가정하여 최종 loss 값에 대한 평균이나 합을 통해 벡터를 하나의 scalar 값으로 만들어 주어야 하는데요, backward(torch.tensor([1], dtype=torch.float) 이 디폴트로 설정되어 있습니다. backward() 메소드를 수행할 때 또다른 유용한 파라미터는 retain_graph 라는 매개변수입니다. ratain 이라는 말에서 알 수 있듯이 텐서들의 연속된 연산으로 구성되는 graph 를 유지한다는 것인데 한 번 살펴보도록 하겠..

반응형