[AI Math] 9강 CNN 첫걸음

지구인 ㅣ 2022. 1. 23. 19:17

728x90

1. 컨볼루션 연산

- 기존 다층신경망(MLP) : 선형모델 + 활성함수로 모두 연결된(fully connected) 구조

- 컨볼루션 연산 : 입력벡터 상에서 일정 크기를 가진 커널이 움직여가며 선형모델과 활성함수가 적용되는 구조

- (활성함수 제외한)컨볼루션 연산도 선형변환임

- 수학적 의미 : 신호를 커널을 통해 국소적으로 증폭, 감소시켜 정보를 추출, 필터링

데이터 자료형에 따른 컨볼루션 연산식

- +기호 : CNN에서 사용하는 연산은 사실 convolution이 아니라 cross-correlation이라 부름

- 커널의 적용 : 정의역 내에서 움직여도 변하지 않고(translation invariant) 주어진 신호에 국소적(local)으로 적용

- 1차원 포함 다양한 차원에서 계산 가능 -> 데이터의 성격에 따라 사용하는 커널이 달라짐

1D-conv     $[f*g](i) = \sum_{p=1}^{d}f(p)g(i+p)$
2D-conv     $[f*g](i,j) = \sum_{p,g}f(p,g)g(i+p,j+q)$
3D-conv     $[f*g](i,j,k) = \sum_{p,g,r}f(p,g,r)g(i+p,j+q,k+r)$

* i,j,k가 바뀌어도 커널 f의 값은 불변함

 

2. 2차원 컨볼루션 연산 이해하기

- 입력 크기를 $(H, W)$, 커널 크기를 $(K_{H}, K_{W})$, 출력 크기를 $(O_{H}, O_{W})$라 하면 출력 크기는 다음과 같이 계산

- 예시 : 28*28 입력을 3*3커널로 2D-Conv 연산 시 26*26 출력

- 채널이 여러 개인 2차원 입력 -> 2차원 컨볼루션을 채널 수만큼 적용 / 커널의 채널 수와 입력의 채널 수가 같아야 함

$$O_{H} = H - K_{H} + 1$$

$$O_{W} = W - K_{W} + 1$$

- 커널을 1개 사용하면 출력이 2차원, 여러 개 사용하면 텐서(3차원 이상부턴 행렬이 아닌 텐서라 함)가 된다.

 

3. 컨볼루션 연산의 역전파 이해하기

컨볼루션 연산에서의 역전파 계산

- 역전파를 계산할 때도 컨볼루션 연산이 나옴(이산형일 때도 마찬가지)

컨볼루션 연산에서의 역전파 계산

* 위 그림에서의 출력블록을 위에서부터 각각 $O_{1}, O_{2}, O_{3}$ 라고 하자.

 

1. 출력

  • $O_{1} = w_{1}x_{1} + w_{2}x_{2} + w_{3}x_{3}$
  • $O_{2} = w_{1}x_{2} + w_{2}x_{3} + w_{3}x_{4}$
  • $O_{3} = w_{1}x_{3} + w_{2}x_{4} + w_{3}x_{5}$

2. 입력

* 컨볼루션 연산 후 손실함수를 이용해 손실값을 계산, 연전파 알고리즘을 이용하여 그레디언트 벡터를 전달, 출력 벡터의 위치에는 $\delta_{1}, \delta_{2}, \delta_{3}$이라는 미분값이 각각 전달되었다고 하자.

  • $x_{1} = \delta_{1}w_{1}$
  • $x_{2} = \delta_{1}w_{2} + \delta_{2}w_{1}$
  • $x_{3} = \delta_{1}w_{3} + \delta_{2}w_{2} + \delta_{3}w_{1}$
  • $x_{4} = \delta_{2}w_{3} +\delta_{3}w_{2}$
  • $x_{5} = \delta_{3}w_{3}$

- 역전파 단계에서 다시 커널을 통해 그레디언트가 전달됨

3. 커널

  • 예를 들어 손실함수를 $W_{1}$로 미분하면 $\frac{\partial L}{\partial w_{1}} = \delta_{1}x_{1} + \delta_{2}x_{2} + \delta_{3}x_{3}$
  • 수식은 다음과 같다. 각 커널에 들어오는 모든 그레디언트를 더하면 결국 컨볼루션 연산과 같다.

$$\frac{\partial L}{\partial w_{i}} = \sum_{j}\delta_{j}x_{i+j-1}$$

 

 

 

728x90

'AI > AITech 3기' 카테고리의 다른 글

[PyTorch] 1강 Introduction to PyTorch  (2) 2022.01.24
[AI Math] 10강 RNN 첫걸음  (0) 2022.01.23
[AI Math] 8강 베이즈 통계학 맛보기  (0) 2022.01.23
[AI Math] 7강 통계학 맛보기  (0) 2022.01.22
[AI Math] 6강 확률론 맛보기  (0) 2022.01.22