본문 바로가기

반응형

AI & Big Data

(26)
[AI 이론] Layer, 레이어의 종류와 역할, 그리고 그 이론 - 4 (Pooling Layer) Pooling Layer의 개념과 용례 Tensorflow와 PyTorch에서는 여러 종류의 Pooling Layer 함수를 지원하지만, 이미지 분류 모델에 있어 그 중 가장 많이 활용되는 것은 MaxPooling2D 쪽이다. 그렇다면 Pooling Layer들은 어떤 역할을 하는가? 풀링은 차례로 처리되는 데이터의 크기를 줄인다. 이 과정으로 모델의 전체 매개별수의 수를 크게 줄일 수 있다. 풀링에는 MaxPooling과 AveragePooling이 존재하는데, MaxPooling은 해당 영역에서 최댓값을 찾는 방법이고, (위 그림이 MaxPooling의 예시이다.) AveragePooling은 해당 영역의 평균값을 계산하는 방법이다. 그렇다면 이러한 과정(Pooling)을 왜 거쳐야 하는가? 더 높은..
[AI 이론] Layer, 레이어의 종류와 역할, 그리고 그 이론 - 3 (Conv2D 내부 구조 및 시간복잡도) Conv2D 내부 구조 및 시간복잡도 지난 1편 때, Conv2D에 대한 개념적인 설명은 충분히 했지만, 이미지 분류의 주류를 이루는, 그리고 그것 중 핵심이라고 할 수 있는 Convolution Layer를 설명하면서, 실제 내부 구조가 어떻게 이루어져 있는지에 대한 설명은 빠진 것 같았다. 그래서 이번에는 매우 복잡하지만,그 내부가 어떻게 이루어져 있는지 알아볼 예정이다. Tensorflow 2.X # Tensorflow 2.X Conv2D # https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/keras/layers/convolutional.py @keras_export('keras.layers.Conv2D', 'keras...
[AI 이론] Layer, 레이어의 종류와 역할, 그리고 그 이론 - 2 (BatchNormalization) BatchNormalization 딥러닝 모델을 만들다보면, 딥러닝 네트워크에 있는 n개의 히든 레이어에서, n개의 미분값이 서로 곱해지게된다. 만약 미분값이 크다면 Gradient는 지수함수적으로 증가할 것이고, 모델 밑바닥으로 이를 전파할수록 Gradient는 결국 폭발하게된다. 이것을 Exploding Gradient 문제라고 부른다. Exploding Gradient 문제가 발생한다면, 딥러닝 모델에서 매우 큰 미분결과값의 적층으로 인해 모델 자체가 굉장히 불안정(unstable)해지고, 효과적인 학습이 불가능해진다. 모델의 가중치는 불안정(unstable)한 네트워크를 형성하고, 가중치 자체가 너무 거대해지다 못해 오버플로우(Overflow) 현상이 일어나기까지 한다. 이렇게 되면 더 이상 학습..
[AI 이론] Layer, 레이어의 종류와 역할, 그리고 그 이론 - 1 (Conv2D) 서 론 Tensorflow 2.X 버전이 발표되면서, 기존의 난립하고 있던 Frozen Graph나 여러 저장 방식이 통일되고, 개발자들의 불만이 많았던 Session이 사라지며, 무엇보다 Keras를 통합하며 tf.keras라는 새로운 방식이 나타났다. 실제로 EfficientNet 등의 최신 SOTA(State-of-the-Art) 모델의 소스코드를 보면,TF2.X대로 짜여진 소스 코드는 PyTorch의 코드와 매우 유사하다. # PyTorch Source Code class SomeLayer(torch.nn.Module): def __init__(self): super.__init__() # Some algorithm def forward(self): # Some algorithm PyTorch의 ..
[AI 경량화] tfmot 패키지에 대해 알아보자 (tensorflow-model-optimization) 서 론 tfmot 패키지는 TF Team에서 공식으로 배포하고 있는 AI 모델 최적화 패키지이다. 아직 버전이 0.3.0 밖에 안 되는 beta 버전이지만, 이거라도 없으면 직접 AI 경량화를 진행해야 하는 만큼, 상당히 유용하다. 사실 AI경량화 혹은 최적화 부문은 시장도 너무 작고, 원하는 기업도 별로 없다. 국내에선 대표적으로 매스프레소의 콴다 앱, AI 경량화 전문 노타 등을 제외하고는, 대기업에서조차 AI 경량화 인재에 국한하여 채용을 진행하지는 않는다. (2020.06.20 기준) 사실 생각해보면 CVPR2020 1,467건의 Accepted Paper 중 고작 23건만이 AI Optimization에 관한 것이었으니… 당연할지도 모른다. 하지만 작년 CVPR2019에서 10건밖에 AI Opt..
[AI 경량화] AI 경량화, 혹은 AI Optimization이란 무엇인가? 서 론 학계가 매년 수도 없이 많은 AI 논문을 출판한다. 그리고 대부분의 석박들은 더 높은 정확도와, 더 낮은 손실도, 더 복잡한 AI 학습 알고리즘을 연구하는 데에 몰입하고 있다. 그러다보니, 현업에서는 더 정확도 높은 이미지 분류, 음성인식 모델을 얻게 되었지만, 동시에 모델 사이즈가 너무 커지고 임베디드 기기에는 도저히 온보딩할 수 없는 지경에 이르렀다. 참고로, 모델 사이즈와 정확도가 모두 만족된다는 최신 SOTA(state-of-the-art) 모델인 EfficientNet의 경우도, (심지어 가장 모델 사이즈가 작은 b0 모델의 경우조차) 라즈베리파이의 칩셋인 ARM Cortex-A53에 온보딩할 경우 Inference Time Period가 0.10 [Hz] 정도밖에 나오지 않는다. 10초..
[Keras] SqueezeNet Model (CNN) 이란? - 2 (실전편, 소스코드 첨부) 모델 및 환경 지난 포스트 마지막 부분에 첨부했던 모델 알고리즘 흐름도이다. CVPR SqueezeNet 논문에 첨부된 알고리즘 흐름도이며, 해당 흐름도를 기준으로 코드를 작성하였다. 딥러닝 모델 설계를 위해 tensorflow backend를 사용하는 Keras를 활용했다. 아래 코드를 돌리기 위해 필요한 사진 데이터셋은 아래 링크에서 "catsAndDogsSmall" 폴더를 통째로 다운받아 활용할 수 있다. underflow101/MLDL Machine Learning & Deep Learning Source Code. Contribute to underflow101/MLDL development by creating an account on GitHub. github.com 해당 코드를 실행하기 위..
[Keras] SqueezeNet Model (CNN) 이란? - 1 (이론편) 서 론 머신러닝, 혹은 딥러닝을 공부하다 보면 '모델'이라는 개념이 등장한다. 주로 석/박사를 졸업하고 현업으로 AI직군을 들어가면 모델 설계 업무를 주로하게 된다. 요즘 모델의 트렌드는 주로 Accuracy, 즉 예측 정확성을 올리는 데에 집중되어 있다. 그렇기에 요즘 핫한 YOLOv3, Darknet, VGGNet 등등 예측 정확성은 매우 뛰어나다. 하지만 그 모델의 사이즈는 굉장히 무겁다. 가장 간단한 CNN 모델 중 하나인 AlexNet 같은 것조차, 사실 라즈베리파이나 스마트폰 등에 올리기 버거울 정도의 무게이다. 그래서 2016년 11월에 등장한 SqueezeNet은 임베디드 현장에서는 매우 큰 호평을 받게 되었다. (SqueezeNet: AlexNet-level accuracy with 50..

반응형