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 |
댓글