A convolutional neural network consists of an input layer, hidden layers and an output layer. In any feed-forward neural network, any middle layers are called hidden because their inputs and outputs are masked by the activation function and final convolution. In a convolutional neural network, the hidden layers include layers that perform convolutions. Typically this includes a layer that performs a dot product of the convolution kernel with the layer's input matrix. This product is usually the Frobenius inner product, and its activation function is commonly ReLU. As the convolution kernel slides along the input matrix for the layer, the convolution operation generates a feature map, which in turn contributes to the input of the next layer. This is followed by other layers such as pooling layers, fully connected layers, and normalization layers.

Convolutional layers

Convolutional layers convolve the input and pass its result to the next layer. This is similar to the response of a neuron in the visual cortex to a specific stimulus. Each convolutional neuron processes data only for its receptive field. Although fully connected feedforward neural networks can be used to learn features and classify data, this architecture is generally impractical for larger inputs (e.g., high-resolution images), which would require massive numbers of neurons because each pixel is a relevant input feature. A fully connected layer for an image of size 100 × 100 has 10,000 weights for each neuron in the second layer. Convolution reduces the number of free parameters, allowing the network to be deeper. For example, using a 5 × 5 tiling region, each with the same shared weights, requires only 25 neurons. Using regularized weights over fewer parameters avoids the vanishing gradients and exploding gradients problems seen during backpropagation in earlier neural networks.

To speed processing, standard convolutional layers can be replaced by depthwise separable convolutional layers, which are based on a depthwise convolution followed by a pointwise convolution. The depthwise convolution is a spatial convolution applied independently over each channel of the input tensor, while the pointwise convolution is a standard convolution restricted to the use of 

Pooling layers
Convolutional networks may include local and/or global pooling layers along with traditional convolutional layers. Pooling layers reduce the dimensions of data by combining the outputs of neuron clusters at one layer into a single neuron in the next layer. Local pooling combines small clusters, tiling sizes such as 2 × 2 are commonly used. Global pooling acts on all the neurons of the feature map. There are two common types of pooling in popular use: max and average. Max pooling uses the maximum value of each local cluster of neurons in the feature map, while average pooling takes the average value.

Fully connected layers
Fully connected layers connect every neuron in one layer to every neuron in another layer. It is the same as a traditional multilayer perceptron neural network (MLP). The flattened matrix goes through a fully connected layer to classify the images.

Receptive field
In neural networks, each neuron receives input from some number of locations in the previous layer. In a convolutional layer, each neuron receives input from only a restricted area of the previous layer called the neuron's receptive field. Typically the area is a square (e.g. 5 by 5 neurons). Whereas, in a fully connected layer, the receptive field is the entire previous layer. Thus, in each convolutional layer, each neuron takes input from a larger area in the input than previous layers. This is due to applying the convolution over and over, which takes into account the value of a pixel, as well as its surrounding pixels. When using dilated layers, the number of pixels in the receptive field remains constant, but the field is more sparsely populated as its dimensions grow when combining the effect of several layers.

To manipulate the receptive field size as desired, there are some alternatives to the standard convolutional layer. For example, atrous or dilated convolution expands the receptive field size without increasing the number of parameters by interleaving visible and blind regions. Moreover, a single dilated convolutional layer can comprise filters with multiple dilation ratios, thus having a variable receptive field size.

Weights
Each neuron in a neural network computes an output value by applying a specific function to the input values received from the receptive field in the previous layer. The function that is applied to the input values is determined by a vector of weights and a bias (typically real numbers). Learning consists of iteratively adjusting these biases and weights.

The vectors of weights and biases are called filters and represent particular features of the input (e.g., a particular shape). A distinguishing feature of CNNs is that many neurons can share the same filter. This reduces the memory footprint because a single bias and a single vector of weights are used across all receptive fields that share that filter, as opposed to each receptive field having its own bias and vector weighting.
컨볼루션 신경망은 입력 레이어, 숨겨진 레이어, 출력 레이어로 구성됩니다. 모든 피드 포워드 신경망에서 중간 레이어는 활성화 함수와 최종 컨볼루션에 의해 입력과 출력이 가려지기 때문에 숨겨진 레이어라고 합니다. 컨볼루션 신경망에서 숨겨진 레이어에는 컨볼루션을 수행하는 레이어가 포함됩니다. 일반적으로 여기에는 컨볼루션 커널과 레이어의 입력 행렬의 도트 곱을 수행하는 레이어가 포함됩니다. 이 곱은 일반적으로 프로베니우스 내적 곱이며, 활성화 함수는 일반적으로 ReLU입니다. 컨볼루션 커널이 레이어의 입력 행렬을 따라 미끄러지면서 컨볼루션 연산은 특징 맵을 생성하고, 이 특징 맵은 다음 레이어의 입력에 기여합니다. 그 다음에는 풀링 레이어, 완전 연결 레이어, 정규화 레이어와 같은 다른 레이어가 이어집니다.

컨볼루션 레이어

컨볼루션 레이어는 입력을 컨볼루션하여 그 결과를 다음 레이어로 전달합니다. 이는 시각 피질의 뉴런이 특정 자극에 반응하는 것과 유사합니다. 각 컨볼루션 뉴런은 해당 수용 영역에 대한 데이터만 처리합니다. 완전히 연결된 피드포워드 신경망을 사용하여 특징을 학습하고 데이터를 분류할 수 있지만, 이 아키텍처는 일반적으로 각 픽셀이 관련 입력 특징이기 때문에 엄청난 수의 뉴런이 필요한 대규모 입력(예: 고해상도 이미지)에는 비실용적입니다. 100×100 크기의 이미지에 대해 완전히 연결된 레이어는 두 번째 레이어의 각 뉴런에 대해 10,000개의 가중치를 갖습니다. 컨볼루션은 자유 파라미터의 수를 줄여 네트워크를 더 깊게 만들 수 있습니다. 예를 들어, 각각 동일한 공유 가중치를 가진 5×5 타일링 영역을 사용하면 뉴런이 25개만 필요합니다. 더 적은 수의 파라미터에 정규화된 가중치를 사용하면 이전 신경망에서 역전파 중에 나타나는 소실 그라데이션과 폭발적인 그라데이션 문제를 피할 수 있습니다.

처리 속도를 높이기 위해 표준 컨볼루션 레이어를 깊이 방향 컨볼루션과 점 방향 컨볼루션을 기반으로 하는 깊이 방향 분리 가능 컨볼루션 레이어로 대체할 수 있습니다. 깊이 방향 컨볼루션은 입력 텐서의 각 채널에 독립적으로 적용되는 공간 컨볼루션이며, 포인트 방향 컨볼루션은 다음과 같은 사용으로 제한된 표준 컨볼루션입니다.

풀링 레이어
컨볼루션 네트워크에는 기존 컨볼루션 레이어와 함께 로컬 및/또는 글로벌 풀링 레이어가 포함될 수 있습니다. 풀링 레이어는 한 레이어의 뉴런 클러스터의 출력을 다음 레이어의 단일 뉴런으로 결합하여 데이터의 크기를 줄입니다. 로컬 풀링은 작은 클러스터를 결합하며, 일반적으로 2×2와 같은 타일링 크기가 사용됩니다. 글로벌 풀링은 피처 맵의 모든 뉴런에 적용됩니다. 풀링에는 최대 풀링과 평균 풀링의 두 가지 일반적인 유형이 널리 사용됩니다. 최대 풀링은 피처 맵의 각 로컬 뉴런 클러스터의 최대값을 사용하는 반면, 평균 풀링은 평균값을 사용합니다.

완전 연결 레이어
완전 연결 레이어는 한 레이어의 모든 뉴런을 다른 레이어의 모든 뉴런에 연결합니다. 이는 기존의 다층 퍼셉트론 신경망(MLP)과 동일합니다. 평평한 행렬은 완전히 연결된 레이어를 통과하여 이미지를 분류합니다.

수용 필드
신경망에서 각 뉴런은 이전 레이어의 특정 위치에서 입력을 받습니다. 컨볼루션 계층에서 각 뉴런은 뉴런의 수용 필드라고 하는 이전 계층의 제한된 영역에서만 입력을 받습니다. 일반적으로 이 영역은 정사각형입니다(예: 5×5 뉴런). 반면, 완전히 연결된 레이어에서 수용 영역은 이전 레이어 전체입니다. 따라서 각 컨볼루션 계층에서 각 뉴런은 이전 계층보다 더 넓은 영역의 입력으로부터 입력을 받습니다. 이는 픽셀의 값과 주변 픽셀을 고려하는 컨볼루션을 반복해서 적용하기 때문입니다. 확장된 레이어를 사용하면 수용 필드의 픽셀 수는 일정하게 유지되지만 여러 레이어의 효과를 결합할 때 크기가 커짐에 따라 필드가 더 드문드문 채워집니다.

수용 필드 크기를 원하는 대로 조작하려면 표준 컨볼루션 레이어 대신 몇 가지 대안이 있습니다. 예를 들어, 비활성 또는 확장 컨볼루션은 가시 영역과 블라인드 영역을 인터리빙하여 매개변수 수를 늘리지 않고도 수용 필드 크기를 확장할 수 있습니다. 또한 단일 확장 컨볼루션 레이어는 여러 확장 비율을 가진 필터로 구성될 수 있으므로 가변적인 수용 필드 크기를 가질 수 있습니다.

가중치
신경망의 각 뉴런은 이전 레이어의 수용 필드에서 받은 입력값에 특정 함수를 적용하여 출력값을 계산합니다. 입력 값에 적용되는 함수는 가중치 벡터와 바이어스(일반적으로 실수)에 의해 결정됩니다. 학습은 이러한 편향과 가중치를 반복적으로 조정하는 것으로 구성됩니다.

가중치와 바이어스 벡터를 필터라고 하며 입력의 특정 특징(예: 특정 모양)을 나타냅니다. CNN의 특징은 많은 뉴런이 동일한 필터를 공유할 수 있다는 것입니다. 이렇게 하면 각 수용 필드에 고유한 바이어스와 벡터 가중치가 있는 것과 달리 해당 필터를 공유하는 모든 수용 필드에 단일 바이어스와 단일 가중치 벡터가 사용되므로 메모리 공간을 줄일 수 있습니다.