네이버 부스트캠프 AI tech 3기

5. CNN과 RNN

zooyeonii 2022. 1. 25. 23:52

CNN

고정된 Weight matrix (커널, kernel)을 사용한 선형변환 + 활성화 함수의 구조이다.

Input 은 주로 이미지, 픽셀로 이루어진 행렬이다. Kernel은 filter라고도 하며, weight matrix를 의미한다. CNN은 Kernel을 Input matrix 위에서 elementwise 곱연산을 진행하는 conv layer를 가진다. 이 때 Kernel은 stride 값 만큼 움직인다.

CNN의 장점

1) parameter축소가 가능하다

CNN이 아니라 기존 ANN연산이었다면, 각 픽셀들이 FC를 이루며 학습해야할 weight (parameter)는 한 layer에 픽셀값만큼이었을 것이다. 하지만 weight matrix로 weight를 공유하기 때문에 weight matrix의 크기만큼 (3x3이라면 9개. + bias) 으로 줄어들게 된다.

2) weight sharing을 통한 공간감을 이룰 수 있다

이미지는 픽셀 기준 그 주변 픽셀값들이 해당 픽셀값에 영향을 제일 많이 줄것인데, ANN으로 구현이 되면 바로 앞, 뒤 값의 영향을 제일 많이 받을 것이다. 한마디로 모든 값이 flatten 되기 때문에 이 이미지가 어떤 형태인지, 각 픽셀값이 무엇을 의미하는지 feature를 추출하기 어려워진다. 이러한 특징으로 인해, weight matrix를 사용하게되면 각기 다른 weight matrix로 각각 다른 feature값, 즉 풍부한 feature를 추출할 수 있다.

Convloution 연산의 수학적 의미

커널을 이용해 국소적으로 증폭 또는 감소시켜서 정보를 추출하는 것이다. CNN에서 사용하는 연산은 cross-correlation이다.

Padding

Padding 이 필요한 이유 : 이미지에서 weight matrix를 옮겨가며 계산하면, 각 레이어마다 이미지의 가장자리 데이터는 유실되고만다. 이러한 문제점 때문에 가장자리에 0값을 둘러서 기존의 이미지 데이터의 유실을 막는 것이 패딩의 목적이다.

보통 이미지는 RGB, 3개의 channel을 가진다. 이때 filter의 수에 따라 output의 channel수가 결정된다. 

Convolution 연산의 역전파 이해하기 (추가)

Convolution 연산은 커널이 모든 입력데이터에 공통으로 적용되기 때문에 역전파를 계산할 때도 convolution 연산이 나오게 된다.

 

RNN

시퀀스 데이터는 독립동등분포(i.i.d.) 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.

시퀀스 데이터를 다루기 위해선 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다.

바로 이전 정보를 제외한 나머지를 $H_t$ (잠재 변수)로 인코딩하여 사용하게 되면 길이는 고정된다.

RNN의 역전파 (BPTT; Backpropagation Through Time) (추가)

잠재변수의 연결그래프에 따라 순차적으로 계산한다.

모든 t시점에 가중치 미분값이 모두 곱해지면, 불안정해질 수 있다. (굉장히 커지거나, 작아지거나) 따라서 적당한 길이의 그라디언트를 가져오는 것이 중요하다. 

reference : https://wikidocs.net/37406 

 

04-3) 역전파(BackPropagation) 이해하기

인공 신경망이 순전파 과정을 진행하여 예측값과 실제값의 오차를 계산하였을 때 어떻게 역전파 과정에서 경사 하강법을 사용하여 가중치를 업데이트하는지 직접 계산을 통해 이해해봅 ...

wikidocs.net

 

 

 

 

 

'네이버 부스트캠프 AI tech 3기' 카테고리의 다른 글

7. PyTorch DataLoader  (0) 2022.02.02
6. PyTorch nn.Module  (0) 2022.02.02
4. 확률론, 베이즈  (0) 2022.01.25
3. 딥러닝 학습방법 이해하기  (0) 2022.01.24
2. 경사하강법 (Gradient Descent)  (0) 2022.01.23