CS 230 - 딥러닝


합성곱 신경망 치트시트
Star

아프신 아미디셰르빈 아미디
Soyoung Lee에 의해 번역됨

개요

전통적인 CNN의 구조 ― CNN이라고도 하는 합성곱 신경망(convolution neural network)은 일반적으로 다음과 같은 계층으로 구성된 뉴럴네트워크의 특정 유형입니다.


컨볼루션(convolution) 계층과 풀링(pooling) 계층은 다음 섹션에서 설명하는 하이퍼파라미터와 관련하여 세부 조정할 수 있습니다.


계층 유형

합성곱 계층 (CONV) ― 합성곱 계층 (CONV)는 차원에 따라 입력값 I를 스캔할 때 합성곱(convolution) 연산을 수행하는 필터를 사용합니다. 그 하이퍼파라미터는 필터크기 F와 스트라이드(stride) S를 포함합니다. 그 결과 출력 O는 피쳐맵(feature map) 또는 활성화맵(activation map)이라고 합니다.


비고: 합성곱(convolution) 단계는 1D와 3D인 경우까지 잘 일반화 될 수 있습니다.


풀링 (POOL) ― 풀링 계층 (POOL)은 일반적으로 몇가지 공간불변량을 수행하는 합성곱 계층 다음에 적용되는 다운샘플링(downsampling) 작업입니다. 특히, 최대풀링(max pooling)과 평균풀링(average pooling)은 최대값이나 평균값을 취하는 특별한 종류의 풀링(pooling)입니다.

유형 최대 풀링 평균 풀링
목적 각 풀링 작업은 현재 뷰(view)에서 최대값을 선택합니다. 각 풀링 작업은 현재 뷰(view)의 값들의 평균을 취합니다.
그림
코멘트 • 탐지된 특징을 보존
• 가장 보편적으로 사용
• 피쳐맵의 다운샘플링
• LeNet에 사용

풀리 커넥티드 (FC) ― 풀리 커넥티드 계층 (FC)은 각 입력이 모든 뉴런에 연결된 평평한 입력에서 작동합니다. 존재한다면, FC 계층은 일반적으로 CNN구조의 끝부분에서 발견되며, 클래스 점수와 같은 목표를 최적화하는데 사용될 수 있습니다.


필터 하이퍼파라미터

합성곱 계층은 필터의 하이퍼파라미터의 의미를 아는 것이 중요합니다.

필터의 차원 ― $C$개의 채널을 포함하는 입력(input)에 적용되는 $F\times F$ 사이즈 필터(filter)는 $I \times I \times C$ 크기의 입력(input)에 합성곱을 수행하고 $O \times O \times 1$ 크기의 피쳐맵 (또는 활성화 맵)을 출력으로 생성하는 $F \times F \times C$크기의 볼륨입니다.


비고: $F\times F$ 크기의 필터 $K$개를 적용하면 $O \times O \times K$ 크기의 피처맵(feature map)이 출력으로 나온다.

스트라이드(stride) ― 합성곱(convolution)이나 풀링(pooling) 작업의 경우, 스트라이드(stride) $S$는 각 작업 후에 윈도우(window)가 이동하는 픽셀 수를 나타냅니다.



제로-패딩(zero-padding) ― 제로패딩은 입력(input)의 각 경계면에 $P$개의 제로(zero)를 더하는 과정을 말합니다. 이 값은 수동으로 지정하거나 아래에 설명된 세가지 모드 중 하나를 통해 자동으로 설정할 수 있습니다.

모드 유효한 동일한 전체
$P = 0$ $P_\text{start} = \Bigl\lfloor\frac{S \lceil\frac{I}{S}\rceil - I + F - S}{2}\Bigr\rfloor$
$P_\text{end} = \Bigl\lceil\frac{S \lceil\frac{I}{S}\rceil - I + F - S}{2}\Bigr\rceil$
$P_\text{start}\in[\![0,F-1]\!]$

$P_\text{end} = F-1$
그림 Padding valid Padding same Padding full
목적 • 패딩 없음
• 차원이 맞지 않으면 마지막 합성곱(convolution)을 버림
• 피처맵(feature map) 크기같은 패딩은 $\Bigl\lceil\frac{I}{S}\Bigr\rceil$ 크기를 갖음
• 출력 크기는 수학적으로 편리함
• 반쪽 패딩이라고도 부름
• 마지막 합성곱이 입력(input)의 한계에 적용되도록 하는 최대패딩(maximum padding)
• 필터는 입력을 종단간(end-to-end)으로 확인합니다

하이퍼파라미터 튜닝

합성곱 계층의 파리미터 호환성 ― 입력 볼륨 크기의 길이 $I$, 필터의 길이 $F$, 제로패딩(zero-padding)의 양 $P$, 스트라이드 $S$에 대하여, 피처맵의 출력크기 $O$는 다음과 같이 주어진다.

\[\boxed{O=\frac{I-F+P_\text{start} + P_\text{end}}{S}+1}\]

비고: 빈번히, $P_\text{start} = P_\text{end} \triangleq P$를 만족하는 경우 위의 수식에서 $P_\text{start} + P_\text{end}$를 $2P$로 바꿀 수 있습니다.


모델의 복잡성 이해 ― 모델의 복잡성을 평가하기 위해, 그 구조의 파라미터 수를 결정하는 것이 유용합니다. 합성곱 신경망의 주어진 층에서, 그것은 다음과 같이 행해집니다.

CONV POOL FC
그림
입력 크기 $I \times I \times C$ $I \times I \times C$ $N_{\text{in}}$
출력 크기 $O \times O \times K$ $O \times O \times C$ $N_{\text{out}}$
파라미터 수 $(F \times F \times C + 1) \cdot K$ $0$ $(N_{\text{in}} + 1 ) \times N_{\text{out}}$
비고 • 필터 당 하나의 바이어스(bias) 파라미터
• 대부분의 경우 $S < F$
• $K$에 대핸 일반적인 선택은 $2C$
• 풀링 작업은 채널별로 수행
• 대부분의 경우 $S = F$
• 입력은 1차원
• 뉴런 당 하나의 바이어스(bias) 파라미터
• FC뉴런의 갯수는 구조적 제약이 없음

수용 영역(receptive field) ― $k$층에서 수용 영역은 $k$번째 활성화맵(activation map)의 각 픽셀이 볼 수 있는 입력의 $R_k \times R_k$로 표시된 영역입니다. $j$층의 필터(filter)크기 $F_j$와 $S_0 = 1$인 $i$층의 스트라이드(stride) 값 $S_i$를 호출함으로써 $k$층의 수용영역은 다음 식으로 계산될 수 있습니다.

\[\boxed{R_k = 1 + \sum_{j=1}^{k} (F_j - 1) \prod_{i=0}^{j-1} S_i}\]

아래 예제에서, $F_1 = F_2 = 3$이고 $S_1 = S_2 = 1$이므로 $R_2 = 1 + 2\cdot 1 + 2\cdot 1 = 5$이 됩니다.


일반적으로 사용되는 활성화함수(activation functions)

수정된 선형 유닛 ― rectified linear unit(ReLU) 레이어는 볼륨의 모든 요소에서 사용되는 활성화함수(activation function) g입니다. ReLU는 비선형성을 네트워크에 도입하는 것을 목표로 합니다. 그 변종은 아래 표에 요약되어 있습니다.

ReLU Leaky ReLU ELU
$g(z)=\max(0,z)$ $g(z)=\max(\epsilon z,z)$
와 $\epsilon\ll1$
$g(z)=\max(\alpha(e^z-1),z)$
와 $\alpha\ll1$
ReLU Leaky ReLU ELU
• 생물학적으로 해석가능한 비선형 복잡성 • 음수일 때 ReLU가 죽는 문제 • 모든점에서 미분가능

소프트맥스(softmax) ― 소프트맥스 단계는 점수벡터 $x\in\mathbb{R}^n$를 입력(input)으로 취하고, 구조 끝의 소프트맥스(softmax) 함수를 통한 확률벡터 $p\in\mathbb{R}^n$를 출력으로 취하는 일반화된 로지스틱(logistic) 함수로 볼 수 있습니다. 소프트맥스는 다음과 같이 정의됩니다.

\[\boxed{p=\begin{pmatrix}p_1\\\vdots\\p_n\end{pmatrix}}\quad\textrm{여기서}\quad\boxed{p_i=\frac{e^{x_i}}{\displaystyle\sum_{j=1}^ne^{x_j}}}\]

객체 탐지

모델 유형 ― 예측 대상의 특성이 다른 3가지 유형의 객체 인지 알고리즘이 아래 표에 설명되어 있습니다.

이미지 분류 분류 w. 지역화 탐지
• 그림 분류
• 객체 가능성 예측
• 사진에서 객체 탐지
• 객체의 가능성 예측 및 위치 파악
• 사진에서 여러개의 객체 탐지
• 객체의 가능성 예측 및 위치 파악
전통적인 CNN 단순화된 YOLO, R-CNN YOLO, R-CNN

탐지 ― 물체 감지의 맥락에서, 물체의 위치를 찾고싶은지, 이미지의 더 복잡한 모양을 탐지하고 싶은지에 따라 다른 방법이 사용됩니다. 두가지 주요 방법이 아래 표에 요약되어 있습니다.

바운딩 박스 탐지 랜드마크 감지
• 객체가 위치한 이미지의 부분을 탐지 • 객채의 모양이나 특징(예: 눈)을 탐지
• 더 세분화 됨
박스의 센터 $(b_x,b_y)$, 높이 $b_h$와 너비 $b_w$ 참조포인트 $(l_{1x},l_{1y}),$ $...,$ $(l_{nx},l_{ny})$

합집합 분의 교집합 ― $\textrm{IoU}$라고도 하는 합집합 분의 교집합은 예측된 바운딩박스(bounding box)가 실제 바운딩박스(bounding box)에 얼마나 정확하게 위치하는지를 정량화하는 함수로, 다음과 같이 정의됩니다.

\[\boxed{\textrm{IoU}(B_p,B_a)=\frac{B_p\cap B_a}{B_p\cup B_a}}\]

비고: $\textrm{IoU}\in[0,1]$를 항상 만족합니다. 관습적으로, $\textrm{IoU}(B_p,B_a)\geqslant0.5$이면 예측 바운딩박스(bounding box) $B_p$는가 합리적으로 양호한 것으로 간주합니다.


앵커박스(Anchor box) ― 앵커박싱(Anchor boxing)은 중첩 바운딩박스(bounding box)를 예측하는데 사용되는 기술입니다. 실제로, 네트워크는 하나 이상의 박스를 동시에 예측할 수 있으며, 각각의 박스 예측은 주어진 기하학적인 특정 세트를 갖도록 제한됩니다. 예를들어, 첫번째 예측은 주어진 양식의 직사각형 박스(box)일 수 있으며, 두번째는 다른 모양의 직사각형 박스(box)가 될 수 있습니다.


비최대 억제 ― 비최대 억제(non-max suppression) 기술은 가장 대표적인 것을 선택함으로써 동일한 객체에 대한 중복된 중첩바운딩박스(overlapping bounding box)를 제거하는 것을 목표로 한다. 확률 예측값이 0.6보다 작은 모든 박스를 제거한 후에, 박스가 남아있는 동안 다음 단계를 반복합니다.

• 1단계 : 예측 확률이 가장 큰 박스를 선택합니다.
• 2단계 : 이전 상자에서 IoU⩾0.5를 만족하는 상자를 모두 버립니다.


YOLO ― You Only Look Once (YOLO) 는 다음 단계를 수행하는 객체 탐지 알고리즘입니다.

• 1단계: 입력 이미지를 $G\times G$ 그리드(grid)로 분할합니다.
• 2단계: 각 그리드 셀(grid cell)에 대해 다음 형태의 $y$를 예측하는 CNN을 실행합니다.

\[\boxed{y=\big[\underbrace{p_c,b_x,b_y,b_h,b_w,c_1,c_2,...,c_p}_{\textrm{번 반복 }k\textrm{ times}},...\big]^T\in\mathbb{R}^{G\times G\times k\times(5+p)}}\]
여기서 $p_c$는 객체를 탐지할 확률이고, $b_x,b_y,b_h,b_w$는 탐지된 바운딩박스(bounding box)의 속성이고, $c_1,...,c_p$는 $p$ 클래스 중 어느것이 탐지되었는지를 나타내는 원핫(one-hot) 표현입니다. 그리고 $k$는 앵커박스(anchor box)의 갯수입니다.
• 3단계: 중복되는 중첩바운딩박스(overlapping bounding box)를 제거하기 위해 논맥스 수프레션 알고리즘을 실행합니다.


비고: $p_c=0$일 때, 네트워크는 어떠한 객체도 탐지하지 않습니다. 이 경우, 예측값 $b_x, ..., c_p$는 무시되어야 합니다.


R-CNN ― Region with Convolutional Neural Networks (R-CNN)은 잠재적으로 연관된 바운딩박스(bounding box)를 찾기 위해 이미지를 먼저 분할한 다음, 해당 바운딩박스(bounding box)에서 가장 가능성이 높은 객체를 찾기 위해 탐지(detection) 알고리즘을 실행하는 객체 탐지 알고리즘입니다.


비고: 기존 알고리즘은 계산 비용이 많이 들고 느리지만, Fast R-CNN과 Faster R-CNN 같은 새로운 구조를 사용하면 알고리즘 실행 속도가 빨라집니다.


얼굴 확인 및 인식

모델 유형 ― 두가지 주요 모델 유형이 아래 표에 요약되어 있습니다.

얼굴 확인 얼굴 인식
• 이사람이 맞습니까?
• 일대일 조회
• 데이터 베이스에 있는 $K$명의 사람 중 한명입니까?
• 일대다 조회

원 샷 학습 ― 원 샷 학습은 제한된 훈련 셋(training set)을 사용하여 주어진 두 이미지가 얼마나 다른지를 정량화하는 유사도 함수를 학습시키는 얼굴 확인 알고리즘(face verification algorithm)입니다. 두 이미지에 적용된 유사도 함수는 $d(\textrm{image 1}, \textrm{image 2})$로 씁니다.


샴 네트워크 ― 샴 네트워크는 두 이미지가 얼마나 다른지를 정량화하기 위해 이미지를 인코딩 하는 방법을 학습하는 것을 목표로 합니다. 주어진 입력 이미지 $x^{(i)}$에 대해 인코딩된 출력은 $f(x^{(i)})$라고 표현합니다.


삼중항 손실Triplet loss $\ell$는 이미지 $A$ (anchor), $P$ (positive), $N$ (negative)의 삼중합의 임베딩 표현을 계산한 손실함수입니다. anchor와 positive는 같은 클래스에 속하며, negative와는 다른 클래스에 속합니다. $\alpha\in\mathbb{R}^+$라고 부르는 마진(margin) 파라미터에 의해 이 손실은 다음과 같이 정의됩니다.

\[\boxed{\ell(A,P,N)=\max\left(d(A,P)-d(A,N)+\alpha,0\right)}\]

뉴럴 스타일 전달

동기 ― 뉴럴 스타일 전달의 목표는 주어진 내용 $C$와 주어진 스타일 $S$에 기반하여 이미지 $G$를 생성하는 것입니다.


활성화 ― 주어진 층 $l$에서, 활성화는 $a^{[l]}$로 쓰며, $n_H\times n_w\times n_c$의 차원을 갖는다.


콘텐츠 비용 함수 ― 콘텐츠 비용 함수 $J_{\textrm{content}}(C,G)$는 생성된 이미지 $G$가 원본 콘텐츠 이미지 $C$와 얼마자 다른지를 결정하는데 사용됩니다. 이 함수는 다음과 같이 정의됩니다.

\[\boxed{J_{\textrm{content}}(C,G)=\frac{1}{2}||a^{[l](C)}-a^{[l](G)}||^2}\]

스타일 행렬 ― 주어진 층 $l$의 스타일 행렬 $G^{[l]}$은 그램행렬(Gram matrix)이며 각 요소 $G_{kk'}^{[l]}$는 채널 $k$와 채널 $k'$가 얼마나 상관되어 있는지를 정량화합니다.

\[\boxed{G_{kk'}^{[l]}=\sum_{i=1}^{n_H^{[l]}}\sum_{j=1}^{n_w^{[l]}}a_{ijk}^{[l]}a_{ijk'}^{[l]}}\]

비고: 스타일 이미지에 대하 스타일 행렬과 생성된 이미지는 각각 $G^{[l](S)}$와 $G^{[l](G)}$로 표시합니다.


스타일 비용 함수 ― 스타일 비용 함수 $J_{\textrm{style}}(S,G)$는 생성된 이미지 $G$가 스타일 $S$와 얼마나 다른지를 결정하는데 사용됩니다. 스타일 비용 함수는 다음과 같이 정의합니다.

\[\boxed{J_{\textrm{style}}^{[l]}(S,G)=\frac{1}{(2n_Hn_wn_c)^2}||G^{[l](S)}-G^{[l](G)}||_F^2=\frac{1}{(2n_Hn_wn_c)^2}\sum_{k,k'=1}^{n_c}\Big(G_{kk'}^{[l](S)}-G_{kk'}^{[l](G)}\Big)^2}\]

전체 비용 함수 ― 전체 비용 함수는 다음과 같이 파라미터 $\alpha,\beta$로 가중치를 부여한 콘텐츠와 스타일 비용 함수의 조합으로서 정의됩니다.

\[\boxed{J(G)=\alpha J_{\textrm{content}}(C,G)+\beta J_{\textrm{style}}(S,G)}\]

비고: $\alpha$ 값이 높을수록 모델에 대한 관심이 높아지며, $\beta$ 값이 높을수록 스타일에 대한 관심이 높아집니다.


계산 트릭을 사용하는 구조

Generative Adversarial Network ― GANs라고도 불리는 Generative Adversarial Network는 생성모델(generative model)과 구분모델(discriminative model)로 구성된다. 생성모델은 구분모델에 투입될 가장 사실적인 결과물을 생성하는 것을 목표로 하며, 구분모델은 생성된 이미지와 실제 이미지를 구분짓는 것을 목표로 한다.


비고: GAN으로 생성된 변형이미지를 사용하는 유스케이스(use case)에는 텍스트, 이미지, 음악 생성자, 합성 등이 있다.


레스넷(ResNet) ― ResNet이라고도 불리는 Residual Network architecture는 훈련 오차를 줄이기 위해 많은 레이어가 있는 잔여 블록(residual block)을 사용합니다. 잔여블록은 다음과같은 특성화 방정식을 만족합니다.

\[\boxed{a^{[l+2]}=g(a^{[l]}+z^{[l+2]})}\]

인셉션 네트워크(Inception Network) ― 이 구조는 인셉션(inception) 모듈을 사용하며 기능 다양화로 성능을 향상시키기 위해 다른 합성곱(convolution)을 시도합니다. 특히 계산 부담을 줄이기 위해 $1\times1$ 합성곱(convolution) 트릭을 사용합니다.