반응형 Digital Hardware Design/Deep learning10 [Paper review] Eyeriss: An Energy-Efficient ReconfigurableAccelerator for Deep 해당 paper에 대해서 공부한 내용을 정리해보려고 합니다. Ⅰ. Problem & Purpose ⅰ. Problem - CNN Model은 Throughput과 Energy 관점에서 문제점이 존재 - 많은 데이터를 요구하는데, 이를 위해서 on-chip과 off-chip 사이 data 이동이 상당히 많음 - Off-chip memory에서 data(filter, input, partial sum)값을 읽어서, MAC 연산 후 다시 Memory write + 많은 에너지 소모를 발생 시킴 (※ 핵심은 data의 이동을 최소화 시킨다면, 에너지 소모를 줄일 수 있다는 것입니다. ) - Paper에서는 Alexnet 경우에는 724M MAC 연산과 2896M DRAM 접근이 필요하다고 합니다. + 많은 연산.. 2022. 11. 27. CNN - Image2col / reshape 제가 공부를 하고 있는 책에서는 두 개의 함수를 통해서, 연산을 수행하고 있습니다. 하지만 이 책에서만 그렇게 하는 것이 아니라 인터넷에서 정보를 찾아보니 대부분의 딥러닝 프레임워크에서도 해당 개념을 도입해서 연산을 수행하고 있었습니다. 그래서 해당 내용을 공부하게 되었습니다. Ⅰ. CNN 계산 - 실제 Input feature map 3차원(C, H, W)데이터를 그대로 계산 바로 연산하지 않습니다. + 실제 연산은 3차원 입력 데이터를 필터링(=가중치 계산)하기 좋게 전개하여 연산을 수행합니다. → “im2col”을 이용 - fliter의 경우에도 1열로 전개하여 연산을 수행합니다. + "T"의 의미는 행렬의 Transpose입니다. Ⅱ. im2col - 해당 함수의 동작을 코드로 이해하는 것도 좋지.. 2022. 11. 23. CNN 연산량 줄이는 scheme 이전 포스팅에서 CNN을 다루었는데, 직감적으로 아시겠지만 영상이 커지거나 필터의 수가 무수히 많거나 Layer가 매우 깊다면 연산량은 매우매우 많아지게 됩니다. 그래서 연산량을 조금이라도 줄이기 위해서 사용하는 scheme에 대해서 알아보겠습니다. Ⅰ. Depthwise Separable Convolution - 연산량을 줄이기 위한 convolution기법 중 하나로 Depthwise Convolution과 Pointwise Convolution을 혼합하여 사용합니다. (※ mobilenet 에서 처음 제안되었습니다.) - 논문에 나온 그림을 보시겠습니다. + Standard convolution cal. > 총 대략적인 연산량 H * W * K * K * M * N + Depthwise convol.. 2022. 11. 23. CNN(Convolution Neural Network ) 이제 영상처리 뿐만 아니라 다른 분야에서도 막대한 영향을 끼친 CNN에 대해서 정리해보고자 합니다. Ⅰ. CNN(Convolution Neural Network) - CNN(Convolution Neural Network)는 이미지 인식 분야에서 많이 활용되고 있습니다. - 이전 포스팅과 달리, 합성곱 계층(Convolution layer)와 풀링 게층(Pooling layer)가 존재합니다. + 입력된 영상의 정보가 소실되지 않고 전달되는 것이 특징이며, 이는 매우 중요한 특징이니 반드시 기억하세요! - 이전에 Fully Connected Layer의 문제점은 입력된 영상의 정보가 무시된다는 것입니다. + 이미지의 정보를 무시하고, 모든 입력 데이터를 동등한 뉴런(=같은 차원의 뉴런)으로 취급합니다. .. 2022. 11. 23. Batch normalization Ⅰ. Batch 단위 학습의 문제점 - SGD의 경우, Batch 단위로 학습을 진행하게 됩니다. 이때 발생하는 문제가 ‘internal covariant shift’이며, 이를 해결하기 위한 방법이 "Batch normalization" 입니다. + internal covariant shift : learning 과정에서 layer 별로 입력의 데이터 분포가 달라지는 현상을 말합니다. - Batch 단위로 학습을 하게 되면 Batch 단위 간에 데이터 분포의 차이가 발생하는데, 학습 과정에서 각 배치 단위 별로 데이터가 다양한 분포를 가지더라도 각 배치별로 평균과 분산을 이용해 정규화하는 것입니다. + 분포를 zero mean gaussian 형태로 만듭니다. - 아래의 그림을 보시면 바로 이해가 되실.. 2022. 11. 23. weight 설정 이때까지 우리는 많은 내용을 다루었습니다. 하지만 이런 생각을 할 수 있습니다. + "weight의 초기값은 어떻게 설정 하는 거지?" + 이런 생각을 다들 해보셨을것 같습니다. + 이제부터 이 그 내용을 다루어 보겠습니다. Ⅰ. weight - 신경망에서 weight 초기값을 무엇으로 설정하느냐는 매우 중요한 문제입니다. - 초기값 설정에 따라서, learning의 결과는 크게 달라질 수도 있습니다. + 아래 그림을 보면, Sigmoid의 출력이 0과 1에 몰려 있습니다. 이는 Backpropagation 시에 gradient vanishing 문제 발생 가능성이 있다는 것입니다. + 아래의 그림을 다시 보시겠습니다. 전과 달리 Sigmoid의 출력이 0.5 부근에 몰려 있습니다. 이는 모든 neura.. 2022. 11. 23. Weight optimization weight(가중치) 매개변수의 gradient를 계산하는 방법은 1가지만 존재할까요? 대답은 "아닙니다!" 이제부터 몇가지를 알아 보겠습니다. Ⅰ. weight optimization - Backpropagation의 목적은 loss function의 값을 가능한 최소로 하는 weight 값을 찾는 것이라고 이전에 말씀드렸습니다. + 다른 말로는 weight optimization(가중차 최적화)라고 한다는 것이지요. - 그러면 이를 위한 방법에는 어떤 방법이 있는지 알아 보겠습니다. + 이를 위한 알고리즘은 다양하게 있습니다. - Stochastic Gradient Descent(SGD, 확률적 경사 하강법) - Momentum(모멘텀) - AdaGrad(Adaptive gradient, 아다그라드).. 2022. 11. 23. 학습(Learning) & 손실함수(Loss function) & 역전파(Backpropagation) Ⅰ. 학습(Learning)이란? - Training data로부터 weight 매개변수의 최적값을 자동으로 획득하는 것을 의미합니다. - 신경망이 학습할 수 있도록 해주는 지표가 손실 함수(Loss function)이며, 손실 함수의 출력이 최소가 되도록 하는 weight 매개변수를 찾는 것이 학습의 목표이고요. + 손실 함수에 대해서는 아래에서 설명합니다. Ⅱ. 손실 함수(Loss function)이란? - 신경망 성능의 좋고, 나쁨을 나타내는 성능 지표입니다. + 손실 함수의 값을 가능한 최소화하는 매개변수를 찾기 위해, 매개변수의 미분(=기울기, gradient)을 계산하고, 미분 값을 근거로 하여 매개변수의 값을 서서히 갱신하는 과정을 반복하게 됩니다. + “Weight 매개변수의 손실 함수의 .. 2022. 11. 22. 이전 1 2 다음 반응형