개발자의 스터디 노트
CNN의 추가 개념 본문
1. 풀링
풀링(pooling)은 고차원 특성 맵을 저차원 특성 맵으로 요약하는 연산입니다. 합성곱의 출력은 특성 맵입니다. 특성 맵의 값은 입력의 일부 영역을 요약합니다. 합성곱 연산의 중첩되는 특징 때문에 많은 특성이 중복될 수 있습니다. 풀링은 고차원이고 중복 가능성이 높은 특성 맵을 저차원으로 요약하는 방법입니다. 풀링은 특성 맵의 국부적인 영역에 적용하는 합, 평균, 최댓값과 같은 산술 연산입니다. 이런 풀링 연산을 각각 합 풀링(sum pooling), 평균 풀링(average pooling), 최대 풀링(max pooling)이라 합니다. 풀링은 통계적으로 약하고 크기가 큰 특성 맵을 강하고 작은 특성 맵으로 개선할 수 있습니다.
2. 배치 정규화
배치 정규화(batch normalization)는 CNN을 만들 때 자주 사용되는 층입니다. 배치 정규화는 CNN의 출력에 적용되어 활성화값의 평균이 0이고 단위 분산이 되도록 만듭니다. 비슷하게 Z점수 변환에 사용하는 평균과 분산은 배치마다 업데이트하여 한 배치에서 변경 폭이 너무 크지 않도록 합니다. 배치 정규화는 모델이 파라미터 초기화에 덜 민감하게 만들고 학습률 튜닝을 단순화합니다.
배치 정규화와 Conv1D층 사용하기(예제 코드)
self.conv1 = nn.Conv1d(in_channels=1, out_channels=10, kernel_size=5, stride=1)
self.conv1_bn = nn.BatchNorm1d(num_features=10)
def forward(self, x):
x = F.relu(self.conv1(x))
self.conv1_bn(x)
3. NiN 연결 (1x1합성곱)
NiN(network-in-network) 연결은 kernel_size=1인 합성곱 커널을 사용하며 몇 가지 흥미로운 성질이 있습니다. 특히 1x1 합성곱은 채널에 걸쳐 동작하는 완전 연결 층과 비슷합니다. 이는 채널이 많은 특성 맵을 얕은 특성 맵으로 매핑하는 데 유용합니다.
채널이 2개인 입력 텐서와 NiN 합성곱 채널
4. 잔차 연결 / 잔차 블록
잔차 연결(residual connection)은 (층이 100개 이상인) 진짜 깊은 신경망을 가능하게 한 CNN의 중요한 트렌드입니다. 이를 스킵 연결(skip connection)이라고도 부릅니다. 합성곱 함수를 conv로 표현하면 잔차 블록(residual block)의 출력은 다음과 같습니다.
출력 = conv(입력) + 입력
'파이썬 > 파이토치 자연어처리' 카테고리의 다른 글
CBOW 임베딩 학습하기 (0) | 2022.03.05 |
---|---|
임베딩 (0) | 2022.03.03 |
CNN을 사용한 성씨 분류(3) - 평가, 추론, 분석 하기 (0) | 2022.02.23 |
CNN을 사용한 성씨 분류(2) - 학습 하기 (0) | 2022.02.23 |
CNN을 사용한 성씨 분류(1) - 학습 준비하기 (0) | 2022.02.23 |