🚩 CNN
- Convolution 연산: 커널(kernel)을 입력벡터 상에서 움직여가면서 선형모델과 합성함수가 적용되는 구조
🍏 2차원 Convolution 연산
- 출력 크기 계산 가능
why 26x26?
→ 28 - 3 + 1 = 26
- 채널이 여러개인 2차원 입력의 경우, 2차원 Convolution을 채널 개수만큼 적용한다
- 커널의 채널 수와 입력의 채널 수가 같아야 한다
🍏 3차원 Convolution 연산
- 커널 개수를 OC개로 늘리면 출력값이 텐서가 된다
🍏 Convolution 연산의 역전파
- 입력 5개 - 커널 3개 + 1 = 출력 3개
- 입력 X3을 기준으로, W3∗X3를 통해 O1이 나오고, O2에서는 W2∗X3, O3에서는 W1∗X3이다.
- 그러므로 역전파에서 미분이 저 순서대로 들어가는 것이다
🚩 RNN
🍏 시퀀스 데이터란?
- 소리, 문자열, 주가 등의 데이터를 시퀀스(sequence) 데이터로 분류합니다
- 시퀀스 데이터는 독립동등분포(i.i.d) 가정을 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.
- 과거 정보 or 앞뒤 맥락 없이 미래를 예측하거나 문장을 완성하는 건 불가능하다
🍏 조건부확률 (for 데이터의 확률분포)
- 이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포를 다루기 위해 조건부 확률을 이용
- 조건부확률은 과거의 모든 정보를 사용하지만, 시퀀스 데이터를 분석할 때 모든 과거 정보들 필요 x
🟨 자기회귀모델 (Autoregressive Model)
- 시퀀스 데이터를 다루기 위해서는 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다
- 고정된 길이 τ만큼의 시퀀스만 사용하는 경우
🟨 잠재 AR 모델
- 현재 바로 이전 정보를 제외한 나머지 (과거)정보들은 Ht라는 잠재변수로 인코딩해서 활용
- 현재 정보와 직전 정보만 가지고 예측하기 때문에, 고정된 길이의 데이터를 가지고 모델링 가능
- 나머지 과거 정보들을 어떻게 잠재변수 Ht로 인코딩 하는데?
✔️ 순환신경망 RNN
(Ht를 신경망을 통해 반복해 사용하여 시퀀스 데이터의 패턴을 학습)
🍏 RNN (Recurrent Neural Network)
🟨 기본적인 RNN 모형
- 기본적인 RNN 모형은 MLP(Multi Layer Perceptron) 와 유사한 모양이다.
- 하지만, 아래 모델은 과거의 정보를 다룰 수 없다
- 왜? : 입력 행렬로 딱 t번째 (현재) 행렬이 주어지기 때문에
- W1,W2는 시퀀스와 상관없이 불변의 행렬
🟨 현재 RNN 모형
- 이전의 잠재변수와 현재의 입력을 활용하여 모델링
- 현재 잠재벡터 Ht는 현재 입력벡터 Xt와 이전 시점의 잠재벡터 Ht−1를 받아서 생성
- Ht를 받아서 현재 출력벡터 Ot를 만들어낸 것
🍏 RNN의 역전파
- RNN의 역전파는 잠재변수의 연결 그래프에 따라 순차적으로 계산한다.
- Backpropagation Through Time (BPTT) : RNN의 역전파 방법
빨간색: gradient 전달 경로
- 현재 잠재벡터 Ht+1의 gradient를 현재 입력벡터 Xt+1와 이전 잠재벡터 Ht로 전달한다.
🟨 truncated BPTT
- Sequence 길이가 길어지는 경우 기울기(미분값)가 0으로 죽을 수도 있다. (기울기 소실)
- BPTT 알고리즘 계산이 불안정해지므로 길이를 끊는 것이 필요
🟨 기울기 소실의 해결책 (LSTM, GRU)