[인공지능 프로그래밍 수업] CNN

이은비·2023년 12월 15일

10) CNN
——————————preview——————————————————————————————
합성곱 신경망(Convolutional Neural Network,CNN)은 합성곱층(convolution layer)과 풀링층(pooling layer)을 포함하는 이미지 처리 성능이 좋은 인공 신경망 알고리즘 입니다.
영상 및 사진이 포함된 이미지 데이터에서 객체를 탐색하거나 객체 위치를 찾아내는 데 유용한 신경망입니다.
대표적인 합성곱 신경망으로 LeNet-5와 AlexNet이 있으며 층을 더 깊게 쌓은 신경망으로는 VGG,GoogleNet,ResNet등이 있습니다.
기존 신경망과 비교하여 차별되는 특징을 보면 다음과 같습니다.
1. 각 층의 입출력 형상을 유지합니다.
2. 이미지의 공간 정보를 유지하면서 인접 이미지와 차이가 있는 특징을 효과적으로 인식합니다.
3. 복수 필터로 이미지의 특징을 추출하고 학습합니다.
4. 추출한 이미지의 특징을 모으고 강화하는 풀링층이 있습니다.
5. 필터를 공유 파라미터로 사용하기 때문에 일반 인공 신경망과 비교하여 학습 파라미터가 매우 적습니다.
——————————————————————————————————————————————
Convolution Neural Network
-> Fully Connected Neural Network (FCN)
한 층의 모든 뉴런을 다른 층의 모든 뉴런에 연결하는 완전히 연결된 일련의 층으로 구성됩니다.
FCN의 장점과 단점은 다음과 같습니다.
장점은 '구조에 구애받지 않는다.'는 것이고, 단점은 네트워크의 매개변수, 저장공간, 계산량이 엄청나다는 것과 그로인해서 종종 네트워크 과적합이 일어날 수 있다는 것입니다. 또한 파라미터수가 너무 많으면 비효율적이고 학습에도 비효율적입니다. 그리고,입력 데이터의 공간 정보로는 추상적인 특징을 자동으로 발견하기 어렵고, 오히려 데이터에서 특정 패턴을 찾기가 어렵다는 특징이 있습니다.
-> Convolution Neural Network (CNN)
CNN은 적어도 계층 중 하나에서 일반 행렬 곱셈 대신 컨볼루션을 사용하는 특수 유형의 신경망입니다.
CNN 아키텍처는 입력이 이미지 또는 사운드와 같은 구조화되어 특정 속성을 모델 아키텍처로 인코딩할 수 있다고 명시적으로 가정합니다.
일반적인 CNN에서는 Convolutional Layer, Pooling (Subsampling) Layer, and Fully-Connected Layer의 세 가지 주요 유형의 레이어가 사용됩니다.

The Advantage of CNN
CNN의 장점은 영상에서 대부분의 특징은 가까운 픽셀의 군집된 영역(수평 또는 수직)에서 찾을 수 있습니다. 그러나 2-D 영상 데이터를 1-D 데이터로 직렬화하면 수직 고주파 정보가 저주파 영역으로 재배치되므로 부피가 큰 FCN이 필요한것을 알 수 있습니다. 즉, 더 적은 가중치를 갖고도 학습이 가능합니다.
(1가지의 feature를 볼 때, 단일 기능의 경우, 512x512 이미지의 FCN 계층은 262144개의 가중치를 갖는 반면, 2D CNN의 11x11 필터 계층은 121개의 가중치만 필요합니다.)
심장박동 신호와 같은 시변 신호의 특징도 특정 데이터 윈도우 내에서 분석할 수 있습니다. 이 경우 1D CNN 모델이 잘 작동합니다.(1D CNN과 함께하는 애플리케이션은 인간 활동 인식, 자연어 처리, 이름부터 이름까지입니다.)

Convolution vs Cross-Correlation
Convolution은 모든 linear time-invariant를 나타내는 연산입니다. 그것은 하나가 reversed되고 shift된 후 두 함수의 곱의 적분으로 정의됩니다.
아래 식과 같이 표현 할 수 있습니다.

또한 컨볼루션은 LTI 시스템의 입력과 출력 사이의 관계를 표현하기 위해 사용되는 수학적 연산입니다.
컨볼루션은 원하지 않는 신호 성분을 제거하여 신호에 우리가 보고 있는 신호 성분이 있는지 확인할 수 있습니다.
Cross-Correlation은 한 급수의 다른 급수에 대한 변위의 함수로서 두 급수의 유사성을 측정하는 것입니다. 이것은 sliding dot product 또는 sliding inner-product으로도 알려져 있습니다. 이것은 더 짧고 알려진 특징을 찾기 위해 긴 신호를 검색하는 데 사용됩니다.
아래 식과 같이 표현할 수 있습니다.


교차 상관은 서로 다른 두 신호 간의 유사성을 측정하는 척도입니다.
교차 상관 = 0이 의미하는 경우 두 신호는 직교, 즉 유사성이 없다고 합니다.
Convolution과 Cross correlation은 CNN에서 자동으로 생성되는 가중치의 순서만 다르기 때문에 CNN 연산은 Convolution 또는 Cross correlation이라고 할 수 있습니다.
2D Operations in Convolution Layers

im2col
im2col은 크기가 𝑚 단위로 𝑛인 입력 이산 영상 블록을 열로 재배열하고 연결된 열을 행렬로 반환합니다.

Image Format Conversion
input image = (samples, i_height, i_width, i_channel)
위의 포맷을 따르는 변수가 im2cool과 matmul을 통과해서 output image = (samples, o_height, o_width, o_channel)의 형태로 출력되는 것을 의미합니다.

Subsampling (Pooling Layer)
컨볼루션 네트워크들은 컨볼루션 계층들과 함께 local 또는 global pooling layers들을 포함할 수 있습니다. 이는 출력 클러스터를 다음 계층에서 단일 뉴런으로 결합함으로써 데이터의 크기를 줄입니다.
local pooling의 경우 주로 2x2와 같은 타일 크기가 일반적으로 사용됩니다.
또한 global average pooling 은 피쳐맵의 모든 뉴런에 적용됩니다.
일반적으로 사용되는 풀링의 두 가지 일반적인 유형은 max 혹은 average이며 Max pooling은 특징 맵의 각 로컬 뉴런 클러스터의 최대값을 사용하는 반면, average pooling은 평균값을 취합니다.
권장되지는 않지만 경우에 따라 컨볼루션 레이어의 필터 스트라이드를 사용할 수 있습니다.
Backpropagation of Pooling Layer
평균 풀링의 기울기는 다음과 같이 나타낼 수 있습니다.


최대 풀링은 다음과 같이 나타낼 수 있습니다.


Backpropagation of Convolution Layer

Batch Normalization in CNNs
완전 연결 레이어와 컨볼루션 레이어에 대한 배치 정규화 구현은 이미지 크기로 인해 약간 다릅니다. 컨볼루션에 여러 개의 출력 채널이 있는 경우 이러한 채널의 출력 각각에 대해 배치 정규화를 수행해야 합니다.
미니배치들이 m개의 예들을 포함하고, 각각의 채널에 대해, 컨볼루션의 출력이 높이 p 및 폭 q를 갖는다고 가정합니다. 컨볼루션 계층의 경우 출력 채널당 mxpxq 요소에 대해 각 배치 정규화를 동시에 수행합니다.

Flatten Layer
데이터를 1D 배열로 변환하여 하나의 특징 벡터를 만드는 데 사용됩니다. 데이터를 평면화한 후 최종 분류를 위해 완전히 연결된 계층으로 전달합니다.레이어는 역전파 프로세스에서 적절한 요소에 그래디언트를 전달하기 위한 입력 모양을 유지합니다.

profile
cs/ce 전공 재학생입니다.

0개의 댓글