[AI Math] CNN & RNN

Jeonghyun·2022년 9월 23일
0

AI Math

목록 보기
7/7

Convolution Neural Network & Recurrent Neural Network

CNN

지금까지 배운 다층신경망은 각 뉴런들이 선형모델과 활성함수로 모두 연결된 구조였다

  • 각 성분 hih_i에 대응하는 가중치 WiW_i가 필요하고 ii가 바뀌면 사용되는 가중치도 바뀜

이와 다르게, convolution 연산커널(kernel)(고정된 가중치 행렬)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조이다.

👉 ii의 개수의 상관 없이 공통된 사이즈의 커널을 사용하여 연산에 활용하기 때문에 parameter 사이즈를 많이 줄일 수 있다.

  • 정의역이 연속인 공간에서 적분을 사용해서 정의
  • discrete한 공간상에서는 적분이 안되므로 급수로 표현
  • convolution 연산의 수학적인 의미는 신호를 커널을 이용하여 국소적으로 증폭 또는 감소시켜서 정보를 추출, 필터링하는 것
  • 차원이 바뀌어도 커널의 값은 바뀌지 않음

2차원 Convolution 연산

입력 크기를 (H,W)(H,W), 커널 크기를 (KH,KW)(K_H,K_W), 출력 크기를 (OH,OW)(O_H,O_W)라 할 때 출력크기는 다음과 같다.
OH=HKH+1O_H = H - K_H + 1
OW=WKW+1O_W = W - K_W + 1

  • 채널이 여러개인 2차원 입력의 경우는 각각의 2차원 convolution을 채널의 개수만큼 적용하여 더함
  • 커널의 채널 수와 입력의 채널 수가 같아야 함

(KK,KW,C)(H,W,C)>(OH,OW,1)(K_K, K_W, C) * (H, W,C) -> (O_H,O_W,1)
: 채널이 여러개인 커널과 3차원 입력 텐서를 convolution 연산을 수행하면 채널이 1개인 출력이 나옴 -> 커널과 입력의 채널이 같아서 각각 연산 후 더해지기 때문

  • 출력을 여러 채널로 나오게 하려면 커널의 개수를 여러개 만들면 됨

convolution 연산의 역전파

  • 역전파 단계에서 다시 커널을 통해 그레디언트 전달
  • 커널에는 δ\delta에 입력값 x3x_3을 곱해서 전달
  • 각 커널에 들어오는 모든 그레디언트를 더하면 convolution 연산과 같음

RNN

시퀀스 데이터

  • 시퀀스 데이터는 독립동등분포 가정을 잘 위해하기 때문에 순서를 바꾸나 손실이 발생하면 데이터의 확률분포도가 바뀜
  • 이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부확률을 이용
  • 현재 정보인 Xt P(XtXt1,...,X1)X_t ~ P(X_t \mid X_{t-1},...,X_1)를 모델링하는 것이 시퀀스 데이터를 다루는 기본적인 방법
  • 시퀀스 데이터를 분석할 때 모든 과거의 정보들이 필요한 것은 아님
  • 조건부에 들어가는 데이터 길이는 가변적
    고정된 길이τ\tau만큼의 시퀀스만 사용하는 경우 AR(τ)AR(\tau) 자기회귀모델이라 부름
  • 바로 이전 정보를 제외한 나머지 정보들을 HtH_t라는 잠재변수로 인코딩해서 활용하는 잠재 AR모델 이용
    • 잠재변수 HtH_t를 신경망을 통해 반복해서 사용하여 시퀀스 데이터의 패턴을 학습하는 모델이 RNN

RNN 이해

  • 가장 기본적인 RNN모형은 MLP와 유사
  • 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링

  • RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산
    이를 Backpropagation Through TIme(BPTT)라 하며 RNN의 역전파 방법임

  • 시퀀스 길이가 길어지는 경우엔 BPTT를 통한 역전파 계산이 불안정해지므로 길이를 끊는 것이 필요(truncated BPTT)




출처 - 부스트캠프 AI tech 교육자료


[부스트캠프 AI Tech] Week 1 - Day 5

0개의 댓글