본문 바로가기
Computer Science/AL, ML

[CNN] Local Connectivity & Weight Sharing

by Gofo 2022. 6. 6.

CNN의 주요 특징 : Local Connectivity, Weight Sharing

Connectivity와 parameter sharing을 통해 파라미터의 수를 굉장히 줄일 수 있다.

따라서 같은 수의 파라미터를 사용함에도 더 깊은 네트워크를 구성할 수 있다.

 

더 깊은 네트워크의 구성은 더 많은 non-linear을 만날 수 있음을 의미한다.

이를 통해 더 복잡한 기능을 구현할 수 있다.

 

CNN을 사용하는 주된 이유이기도 하다.

 

Local Connectivity

모든 데이터에 대해 input으로 받아들이지 않고 인접한 데이터에 대해서만 input으로 받아들인다.

이를 통해 각 output은 모든 input을 고려하지 않고 적은 수의 input에 의해서만 결정될 수 있다.

 

아래 상황에서 global connectivity로 구현할 경우 hidden layer의 각 unit의 dimensionality가 7이다.

따라서 총 3 * 7개의 파라미터(weight)이 필요하다.

 

그러나 local connectivity로 구현하면 hidden layer의 각 unit의 dimensionality가 3이 된다.

따라서 총 3 * 3개의 파라미터(weight)만 필요하다.

 

 

Weight Sharing

Weight을 hidden unit마다 다르게 가져가지 않고 공유할 수 있다.

이를 통해 pixel마다 같은 필터를 사용함으로써 파라미터를 줄일 수 있다.

 

왼쪽 그림은 weight sharing을 사용하지 않는 모델로 모든 unit이 다른 파라미터를 사용한다.

따라서 총 3 * 3개의 파라미터가 필요하다.

 

오른쪽 그림은 weight sharing을 사용하는 모델로 각 unit에서 파라미터를 공유한다.

이를 통해 3 * 1개의 파라미터만 필요해진다.

 

Vertical edge detector과 같은 feature detector은 이미지 처리에서 유용하다.

Weight sharing을 사용하면 feature detector를 이미지의 다른 부분에 대해서도 동일하게 적용할 수 있다.

 

 


Multiple Channel CNN

Multiple Input Channel

Multiple channel의 데이터를 input으로 받을 수 있다.

Channel 마다의 weight을 share해도 되기 때문에 자유도가 높다.

 

 

각 channel을 처리하기 위해 filter가 필요하다.

따라서 input channel의 수가 증가할 수록 filter의 수가 증가해야 한다.

 

결과물은 각 channel의 같은 위치의 element를 더해주면 된다.(element-wise sum)

 

 

Multiple Output Channel

Single channel을 받아서 multiple channel을 낼 수 있다.

이를 통해 흑백사진을 컬러 이미지로 바꾸는 등의 작업이 가능하다.

 

 

다만 output channel의 수가 늘어날 수록 hidden unit의 수가 증가해야 한다.

모델의 complexity가 증가하는 셈이다.

 

 

'Computer Science > AL, ML' 카테고리의 다른 글

[CNN] Pooling  (0) 2022.06.07
[CNN] CNN의 구조와 Notation  (0) 2022.06.06
CNN (Convolution Neural Network)  (0) 2022.06.06
[Convolution] 2D Convolution, 1D Convolution  (0) 2022.06.06
[Convolution] Padding  (0) 2022.04.21

댓글