[Boostcamp 1주차] AI Math - 4

yoonene·2022년 1월 21일
0

Boostcamp AI Tech

목록 보기
5/27

CNN


Convolution 연산

  • MLP


    각 잠재변수에 대응하는 가중치 행이 필요함.
    i가 바뀌면 가중치도 바뀜.
  • Convolution 연산 MPL와 달리 고정된 커널을 사용하여 parameter 수를 확 줄임.
  • 고정된 커널을 입력벡터 상에서 움직여가며 연산
  • 따라서 i가 바뀌어도 가중치 행렬이 변하지 않음 (translation invariant)
  • 선형변환
  • 신호를 커널을 이용해 국소적(local)으로 증폭 또는 감소시켜 정보를 추출 또는 필터링.
  • Convolution이라고 사용되고 있지만 사실 cross-correlation을 사용하여 연산.
  • 다양한 차원에서 계산 가능
    ex) 1D - 음성, 텍스트 / 2D - 흑백 영상 / 3D - 컬러 영상

2차원 Convolution 연산

  • 1차원 Convolution에서 커널을 입력벡터에서 한 칸씩 이동하던 것과 달리,
  • 입력행렬에 해당하는 데이터에서 x,y 방향으로 한 칸씩 이동하며 연산
  • i, j가 고정된 상황에서 컨볼루션의 위치에 해당하는 p, q를 각각 움직여가며 계산.
  • p, q -> (1,1), (1,2), (2,1), (2,2) : 커널의 위치 좌표
  • 입력 크기(H,W)와 커널 크기(Kh,Kw)를 알면 출력 크기(Oh,Ow)를 예측할 수 있음.

    ex) 입력 크기: 28x28, 커널 크기 : 3x3 => 출력 크기 : 26x26

3차원

  • 컬러 이미지처럼 여러개의 채널로 이루어진 2타원 입력의 경우, 2차원 Convolution을 채널 개수만큼 적용.
  • 입력의 채널 수 == 커널의 채널 수
  • 3차원부터는 '행렬'이 아니라 'Tensor'
  • 커널 텐서와 입력 텐서의 수가 같으면 출력의 채널은 1임
  • 여러 채널의 출력 텐서를 출력하고 싶다면 커널 텐서를 여러개 쓰면 됨.
    C 채널의 출력 텐서를 원해 --> 커널 텐서 C개
  • 즉, 커널의 개수로 출력의 채널 조절한다

Convolution 연산의 역전파

  • Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파 계산 시에도 똑같이 Convolution 연산이 나옴
  • 즉 Convolution 연산에 미분해도 Convolution 연산이 나온다.

  • 그레디언트에 대한 컨볼루션 연산으로 똑같이 나오게 됨.
  • 각 커널값에 대해 위와 같이 역전파가 계산됨.

RNN


Sequence data

  • 소리, 문자열, 주가 등의 데이터
  • 시계열 데이터는 시간 순서에 따라 나열된 데이터로 시퀀스 데이터에 속함.
  • 독립동등분포(i.i.d) 가정을 잘 위배하므로 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 변함.
    ex) 개가 사람을 물었다 --> 사람이 개를 물었다. : 의미 변질

Sequence data 다루는 법

  • 이전 시퀀스까지의 정보를 가지고 발생할 데이터의 확률분포를 다루기 위해 조건부확률을 이용하는게 기본적
  • 과거의 모든 정보가 필요한 것은 X
  • 길이가 가변적인 데이터를 다룰 수 있는 모델 필요
  • 그런데 고정된 길이만큼의 시퀀스만 사용하는 경우 자기회귀모델(AR)라고 함.
    고정된 길이를 뭘로 할지, 과거의 정보를 얼마나 쓸지 등 사전에 결정할 것이 많은 문제
    => 잠재자기회귀모델
  • 잠재자기회귀모델 (잠재 AR 모델)
    • Ht : 잠재변수
    • 고정된 길이의 데이터로 모델링 가능, 과거의 모든 데이터 활용 가능 등..
    • 과거의 잠재변수를 어떻게 인코딩할지 선택하는 문제가 있음.
      => Recurrent Neural Network (순환신경망)

Recurrent Neural Network

순전파

  • 가중치 행렬 3개
    • 입력데이터를 선형모델을 통해 잠재변수로 인코딩한 Wx(1)
    • 이전 시점의 잠재변수로부터 정보를 받아서 현재 시점의 잠재변수로 인코딩해주는 Wh(1)
    • 이렇게 만든 잠재변수 Ht를 출력으로 만들어주는 W(2)
      => t에 따라 변하지 않음!
    • t에 따라 변하는 것: 잠재변수 H와 입력 데이터 x 뿐
    • 이 가중치 행렬들은 각각의 t시점에서 동일하게 활용되어 모델링

역전파

  • Backpropagation Trough Time (BPTT)
    : 잠재변수의 연결그래프에 따라 순차적으로 계산
  • 잠재변수에 들어오는 그레디언트는 2개
    • 다음 시점에서의 잠재변수에서 들어오는 그레디언트 벡터
    • 출력에서 들어는 그레디언트 벡터
  • 이 그레디언트 벡터를 이전 시점의 잠재변수와 입력 데이터에 전달, 반복하여 학습
  • 시퀀스 길이가 길어지는 경우 BPTT를 모든 t 시점에 대해서 적용하면 그레디언트가 0으로 줄어드는 기울기 소실의 문제가 생김.
    즉 과거로 갈수록 그레디언트가 0에 가까워지면 과거 정보를 유실하게 되는 문제 발생
    => 해결법 : truncated BPTT
  • truncated BPTT
    모든 t 시점에서 그레디언트를 전달하지 않고 특정 블럭에서 끊고 나눠서 전달하는 방식으로 Gradient Vanishing 해결
  • 하지만 오늘날엔 이러한 긴 시퀀스의 그레디언트 소실 문제를 해결하기 위해 기본적인 RNN 모델을 사용하지 않고 LSTM, GRU를 사용함.
profile
NLP Researcher / Information Retrieval / Search

0개의 댓글