본문 바로가기

반응형

AI & Big Data/AI

(15)
[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의 ..
[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..
[딥러닝] 합성곱 신경망, CNN(Convolutional Neural Network) - 이론편 배 경 우리는 AI 시대에 살고 있다. 거의 모든 제품에는 어떤 인공지능이 들어가 있고 어떤 기능을 해서 어떻게 삶을 윤택하게 하는지에 대해 논하고 있다. 그 중 가장 대표적인 인공지능 알고리즘이라고 한다면 CNN과 RNN, DNN을 꼽기도 한다. 그 중에서도 딥러닝의 선구자라고 할 수 있는 CNN은 어디서 나왔고 어디에 활용될 수 있을까? 우선 CNN을 비롯한 딥러닝 알고리즘들이 크게 주목을 받기 시작하게 된 계기는 컴퓨터 비전 분야의 올림픽이라 할 수 있는 2012년 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)에서 제프리 힌튼 교수팀의 AlexNet이 Top 5 Test Error 기준 15.4%를 기록하여 2위(26.4%)를 큰 폭으로 따돌..
[개념/이론] 주요 딥러닝 프레임워크 비교 1. 서 론 Machine Learning, Deep Learning에서는 매우 많은 종류의 프레임워크끼리 전국시대를 맞이했고, 그 중 승자라고 한다면 가장 많은 컨트리뷰터와 Star, Fork 수를 지닌 Google의 Tensorflow가 압도적 1위일 것이다. 하지만 CS 세계에서 가장 많은 사람들이 Python, 혹은 Java, 혹은 C++을 사용한다고 해서 그 언어가 타이틀을 가져갈 수는 있을지언정 타이틀을 가져갈 수는 없을 것이다. 딥러닝 프레임워크도 크게 다를 것은 없다. 그렇다면 대표적인 4가지의 딥러닝 프레임워크의 비교를 해보도록 하겠다. (이것은 지극히 개인적이며 주관적인 견해가 포함되어 있다.) 2. 프레임워크 2-1. 텐서플로우 - 구글이 만들었고, 사용자가 효율적인 구현을 위해 C+..

반응형