1. Convolutional layer (ConvNet, CNN)란?
dense(fully connected) layer로만 이루어진 뉴럴넷, MLP의 한계를 극복한 layer
MLP의 한계?
MLP를 통해 효과적으로 비선형 함수를 모사할 수 있었고, 이 단순한 비선형 함수는 선형 함수 모형보다 성능이 좋았다.
하지만, 복잡한 구조가 필요할 경우에는 다음과 같은 한계가 존재했었다.
1. MLP에서는 별도의 feature enginnering 없이 raw feature를 곧바로 입력층에 넣었다. ->이미지의 경우 앞서 말한대로 데이터의 차원이 너무 높아진다. 이는 컴퓨팅 속도 뿐만 아니라 오버피팅으로 부정확한 모델을 만들 위험이 있다.
2. MLP에서는 각 샘플이 등장한 맥락을 고려하지 않았다 -> 샘플의 순서(맥락)가 중요하지 않았다. 하지만 복잡한 모델에서는 이 맥락도 중요한 요소가 될 수 있다.
정통적인 dense layer 외에 이미지 등 데이터를 처리하기 위해 고안된 뉴럴넷의 레이어가 CNN(convolutional neural network, CNN; ConvNet)이 등장했다.
2. 그래서 CONV Layer가 뭐고 어떻게 MLP의 한계를 극복했는데?
MLP에서 각 픽셀을 그대로 feature로 사용하는 것의 한계를 명시했었는데, 이를 해결하기 위해 각 이미지로 부터 독특한 특성만을 뽑아내어 feature로 사용한다 -> feature extraction.
이 feature extractor로 동작하는 레이어가 바로 convolutional layer이다.
3. CONV Layer의 가정 및 결과
1. Local connectivity : 이전 모든 뉴런과 연결 X, 일부만 연결
2. Spartial invariance : 이미지의 분포적인 특성은 어느 부위에서든 동일하다
1차원 layer X, 3차원 layer O
Convolutional layer가 하는 일? (feature extractor)
1. feature extraction을 통해 이미지를 다 사용하지 않는다 -> 어떻게 필터링 할지 정의된 필터(커널)이 정의된다.
2. 필터는 input image를 순회한다, 이때 얼마나 상세하게 순회할지를 결정하는 stride를 설정
3. 순회중인 픽셀 집합의 값에 필터 값을 곱한 합을 전달
하나의 필터가 input(image)을 feature로 번화시켜주는 과정을 살펴보자.
input image(5x5)에서 stride=2인 필터를 통해 3x3를 하나의 feature로 변화시켜줌을 확인할 수 있다.
이와 같은 필터가 n개 있다고 할 때, 전체 input layer와 convolutional layer의 변화는 다음과 같다.
4. 후처리
기본 구조 : CONV -> ReLU ->POOL
% 수학에서의 convolution연산과 다르다? 오히려 수학에서의 cross-correlation과 같다.
왜냐하면 결국 우리가 image에서 filter를 거쳐 형성된 하나의 값이 크면 유사성이 높다는 것이고 작다면 유사성이 적은것이다. 다음은 image에서 convolution filter를 거친 feature map의 출력 예시이다
이미지와 feature map의 크기가 같음에 의아할 수 있는데, zero padding을 filter에 적용하여 feature map과 image의 차원을 일치시켜 줌으로써 convolution layer를 깊게 쌓을 수 있다.
이후 ReLU함수를 활용하는 ReLU layer를 거치면서 양의 값만 도드라지게 표현하고,
메모리 감소를 위해 특징을 유지하면서 가장 큰 값만 저장함으로써 다운샘플링을하는 pooling을 담당하는 POOL layer를 거쳐야 한다.
5. 오버뷰
일반적으로 ConvNet의 구조는 다음과같이 표현할 수 있다.
CONV + RELU + POOL -> feature extractor
Dense layer -> classifier or regressor
input에 가까운 얕은 레이어 일수록 단순한 특성(윤곽선, 음영)을 추출하고 깊은 레이어일 수록 복잡한 특성(동물 모양, 특정 색상 조합)을 추출한다.
위의 사진은 하나의 예시이다. 5개 CONV layer + 3개의 dense layer -> 1000개의 카테고리에 대한 softmax
6. ConvNet 개선?
1x1 convolution
CONV layer로 표현한 dense layer
특수 Convolution
7. 레퍼런스
'ML' 카테고리의 다른 글
TensoFlow를 활용한 DQN 실습 Breakout 적용 - 2 (0) | 2021.04.03 |
---|---|
TensoFlow를 활용한 DQN 실습 Breakout 적용 - 1 (0) | 2021.04.03 |
DQN 논문 해석, 분석 (0) | 2021.04.02 |
DQN 2013 vs DQN 2015 방식 (0) | 2021.03.31 |
프로젝트 1 : 대출 가능 여부 예측 문제 / 스텝 5 : 데이터 처리 (0) | 2021.03.24 |