Data/머신러닝 & 딥러닝

CNN 추가 개념/ 풀링, 배치정규화, NiN 연결, 잔차연결

빛날희- 2021. 7. 27. 01:31

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다.

참고 강의- BatchNormalization

참고 자료- 1x1 convolution / 잔차연결


CNN의 추가 개념에 대해서 간단하게 정리해보고자한다. CNN에 대한 개념과 기본설명은 다음 포스팅을 참고하자.

https://westshine-data-analysis.tistory.com/73?category=873079 

 

자연어 처리를 위한 피드포워드 신경망(2)/ 합성곱 신경망, 파이토치 구현

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의 ▶ 합성곱 신경망이란 합성곱 신경망은 공간상의 부분 구조를 감지하는 데 적합하기 때문에 이미지 처리에서 많이 사

westshine-data-analysis.tistory.com

 

▶ 풀링 (Pooling)

풀링은 고차원 특성 맵을 저차원 특성 맵으로 요약하는 연산이다. 이전에 고차원에서 저차원으로 출력 행렬을 줄일 때엔 커널과 특성의 행렬곱을 했다면 풀링은 커널이 스캔하는 부분의 요소들을 모아 함수 G를 적용한다. 함수 G는 합이 될수도, 최댓값, 평균이 될 수 도 있다.

 

최대값을 사용해 입력벡터들을 풀링한다고 해보자. 

그림1. 최대값 풀링

3 x 3 입력 벡터에 대해 2 크기의 커널을 사용해 최대값 풀링을 하면 합성곱 연산을 하며 중복될 수 있던 특성들을 중복문제를 완화하여 저차원으로 요약할 수 있다. 이렇게 풀링은 통계적으로 약하고 크기가 큰 특성맵들을 요약된 작은 특성 맵으로 개선시킬 수 있다. 

 

 

 

▶ 배치 정규화 (batch normalization)

배치 정규화는 CNN에서 좋은 성능을 낼 수 있도록 도와준다. CNN의 출력에 적용되어 활성화 함수를 거쳐나온 값의 평균이 0이고 단위 분산이 되도록 정규화시켜준다. 정규화하는데 사용되는 평균과 분산은 배치마다 업데이트하여 한 배치에서 변경 폭이 너무 커지지 않도록 조정한다.

그렇다면 배치정규화를 모델에 적용함으로써 기대할 수 있는 장점은 어떤 것들이 있을까?

 

첫번째, 

배치 정규화를 수행함으로써 학습속도를 빠르게 만들 수 있다. 배치 정규화를 하지 않았을 때와 했을 때의 학습속도는 크게는 10배 가까이의 속도 차이가 날 수 있다고 한다. 

두번째, 

배치 정규화를 하면 하이퍼파라미터 세팅이 덜 정교하더라도 모델이 잘 수렴될 수 있도록 하기 때문에 파라미터 초기화에 덜 민감하다는 장점이 있다. 이에 비롯해 학습율 튜닝을 단순화시킬수 있다. 

세번째, 

모델을 일반화하는 효과가 있어 테스트 데이터를 예측하거나 추론하는 과정에서의 정확도가 높아질 가능성이 있다.

 

위와 같이 배치 정규화를 적용해줌으로써 모델의 성능 뿐만 아니라 속도를 업그레이드 시킬 수 있기 때문에 CNN을 만들 때 자주 사용되는 층이다. 

 

 

▷ 파이토치 구현

파이토치를 활용해 어떤 식으로 모델에 배치정규화 층이 들어가는지 간략히 보고 가자. 

위와 같이 nn 모듈에서 BatchNorm1d로 층을 생성하고 활성화 함수 뒤에 추가하여 벡터를 정규화할 수 있다. 

 

 

 

▶ NiN 연결 (Network-in-Network)

NiN연결은 커널 사이즈가 1인 kernel을 사용하여 채널channel이 많은 특성맵에서 채널을 줄여 얕은 특성 맵으로 매핑하는데 유용하게 사용되는 기술이다. 

파이토치로 배우는 자연어처리 p.147

위와 같이 채널이 2인 입력행렬에 kerner_size가 1인 커널로 특성맵을 스캔한다. 각 채널에 대해 적용한 후 채널의 각 요소들을 더해서 출력 행렬로 도출하면 채널이 1인 출력 행렬이 나온다. 즉 1x1 커널을 통해 채널이 2개에서 1개로 줄어든 것이다.

 

이 같은 NiN연결을 사용하면 장점

첫번째, 

chaneel 수를 조절할 수 있다. 학습하는 과정에서 channel수가 너무 커지게 되면 파라미터수가 그만큼 급격히 증가하면서 비효율적인 모델이 될 수 있다. NiN은 채널 수를 조절하게 도와줌으로써 학습이 효율적으로 진행될 수 있도록 한다. 

두번째,

계산량이 감소한다. 위 장점으로 인해 channel 수를 줄이면 파라미터수가 줄어들고 결과적으론 계산량 감소로 이어지기 때문에 더욱 좋은 성능의 모델을 구축할 수 있다. 

세번째, 

비선형성 층을 추가로 주입할 수 있도록 한다. 1x1 커널을 사용하면서 파라미터 수가 감소하기 때문에 모델을 더 깊게 구성할 수 있다. 즉 기존보다 더 많은 비선형 활성화 함수를 추가함으로써 복잡한 데이터 셋일지라도 이전보다 더 데이터를 잘 인식할 수 있도록 해준다. 

 

 

 

 

▶잔차연결/ 잔차 블록

층이 100개 이상인 깊은 신경망을 가능케 해준 CNN의 중요 개념으로 스킵연결이라고 부르기도 한다. 이는 conv에서 출력으로 나온 출력텐서에 입력 텐서를 더해 잔차연결의 출력으로 사용하는 방식으로 하위층의 출력텐서와 상위층의 출력텐서를 연결해준다. 

합성곱 출력과 입력텐서를 더하려면 두 텐서의 크기가 같아야하기 때문에 보통 합성곱하기 전 입력텐서에 패딩을 추가해 출력 텐서의 크기가 입력텐서와 동일하도록 맞춰준다. 

 

해당 방법을 사용하면, 

아래층의 표현이 신경망 네트워크 위쪽으로 흘러갈 수 있도록 해주기 때문에 아래층에서 학습된 정보가 데이터 처리 과정에서 손실되는 것을 방지한다. 이러한 장점 덕분에 잔차연결은 깊은 신경망의 구축을 가능케 해주었다.