컨볼루션 신경망 아키텍처: 알아야 할 사항
게시 됨: 2020-12-01ConvNets 또는 CNN과 같은 이름으로 일반적으로 불리는 Convolutional Neural Networks는 가장 일반적으로 사용되는 Neural Network Architecture 중 하나입니다. CNN은 일반적으로 이미지 기반 데이터에 사용됩니다. 이미지 인식, 이미지 분류, 객체 감지 등은 CNN이 널리 사용되는 영역 중 일부입니다.
특히 이미지 데이터에 대한 Applied AI의 분기를 Computer Vision이라고 합니다. CNN이 도입된 이후로 Computer Vision은 기념비적인 성장을 이루었습니다. CNN의 첫 번째 부분은 정규화를 위한 컨볼루션 및 활성화 함수를 사용하여 이미지에서 특징을 추출합니다.
마지막 블록은 신경망과 함께 이러한 기능을 사용하여 특정 문제를 해결합니다. 예를 들어 분류 문제는 분류를 위해 존재하는 클래스 수에 따라 'n'개의 출력 뉴런을 갖게 됩니다. CNN의 아키텍처와 작동을 이해하려고 노력합시다.
목차
회선
컨볼루션은 가중치 커널(정사각 행렬)을 사용하여 이미지를 회전하고 커널 요소를 이미지 픽셀과 곱하고 추가하는 이미지 처리 기술입니다. 이 방법은 아래 그림과 같이 쉽게 시각화할 수 있습니다.
이미지 제공: 펠타리온
컨볼루션 필터 및 출력

3×3 convolution kennel을 사용할 때 알 수 있듯이 이미지의 3×3 부분이 연산되고 곱셈과 덧셈이 끝나면 하나의 값이 출력됩니다. 따라서 4×4 이미지에서 커널 크기가 3×3인 경우 2×2 복잡한 행렬 출력을 얻을 수 있습니다.
컨볼루션 출력은 컨볼루션에 사용되는 커널의 크기에 따라 다를 수 있습니다. 이것은 CNN의 일반적인 시작 레이어입니다. 복잡한 출력은 이미지에서 찾은 기능입니다. 이것은 사용 중인 커널 크기와 직접적인 관련이 있습니다.
이미지의 특성이 이미지의 작은 차이라도 다른 출력 범주에 속하는 것과 같은 경우에는 특징 추출에 작은 커널 크기가 사용됩니다. 그렇지 않으면 더 큰 커널을 사용할 수 있습니다. 커널에서 사용되는 값은 종종 컨볼루션 가중치라고 합니다. 이들은 초기화된 다음 경사하강법을 사용하여 역전파 시 업데이트됩니다.
읽기: 초보자를 위한 TensorFlow 객체 감지 튜토리얼
풀링
풀링 레이어는 컨볼루션 레이어 사이에 배치됩니다. 컨볼루션 레이어에서 보낸 피쳐 맵에서 풀링 작업을 수행하는 역할을 합니다. 풀링 작업은 차원 축소라고도 하는 기능의 공간 크기를 줄입니다.
풀링의 주요 이유 중 하나는 데이터를 처리하는 데 필요한 계산 능력을 줄이는 것입니다. 풀링 레이어는 이미지의 크기를 줄여주지만 중요한 특성을 유지합니다. 작업은 CNN 필터와 유사합니다. 커널은 기능을 살펴보고 필터에 포함된 값을 집계합니다.
이미지에서 다양한 집계 기능이 있을 수 있음을 분명히 알 수 있습니다. 평균 및 최대 풀링은 가장 일반적으로 사용되는 풀링 작업입니다. 풀링은 기능의 차원을 줄이지만 특성은 그대로 유지합니다.
매개변수의 수를 줄임으로써 네트워크에서 계산도 줄어듭니다. 이것은 과잉 학습을 줄이고 네트워크의 효율성을 높입니다. max-pool은 convolution의 맵과 비교하여 pooled 맵에서 max 값이 덜 정확하게 발견되기 때문에 주로 사용됩니다.
이것은 많은 경우에 좋습니다. 개를 알아보려면 귀가 거의 머리 옆에 있다는 것을 알고 있으면 귀가 가능한 한 정확하게 위치할 필요가 없다고 가정해 보겠습니다.
Max Pooling은 소음 억제 기능도 수행합니다. 노이즈 활성화를 완전히 버리고 차원 축소와 함께 노이즈 제거도 수행합니다. 반면에 Average Pooling은 단순히 노이즈 억제 메커니즘으로 차원 축소를 수행합니다. 따라서 Max Pooling이 Average Pooling보다 성능이 훨씬 우수하다고 말할 수 있습니다.
활성화 기능
ReLU(Rectified Linear Units)는 가장 일반적으로 사용되는 활성화 함수 계층입니다.
동일한 방정식은 다음과 같습니다. ReLU(x)=max(0,x)
그리고 그래픽 표현은 아래와 같습니다.
출처: 매체
ReLU 표현
ReLU는 음수 값을 0으로 매핑하고 양수를 그대로 유지합니다.
완전 연결 계층
완전 연결 계층은 일반적으로 모든 신경망의 마지막 계층입니다. 이 계층은 입력 벡터를 수신하고 새 출력 계층을 생성합니다. 이 출력 레이어에는 n개의 뉴런이 있습니다. 여기서 n은 이미지 분류의 클래스 수입니다. 벡터의 각 요소는 이미지가 특정 클래스에 속할 확률을 제공합니다. 따라서 출력 레이어의 모든 벡터의 합은 항상 1입니다.

출력 레이어에서 발생하는 계산은 다음과 같습니다.
- 요소에 뉴런의 가중치를 곱한 값
- 레이어에 활성화 함수 적용(n=2일 때 로지스틱, n>2일 때 시그모이드)
이제 출력은 특정 클래스에 속하는 이미지의 확률이 됩니다. 레이어의 가중치는 그라디언트의 역전파에 의해 훈련 중에 학습됩니다.
더 읽어보기: 신경망 모델 소개
드롭아웃 레이어
드롭아웃 계층은 과적합을 줄이고 일반화 오류를 개선하는 정규화 계층으로 작동합니다. 과적합은 신경망을 사용하는 동안 주요 관심사입니다. 드롭아웃은 이름에서 알 수 있듯이 레이어에서 일정 비율의 뉴런을 드롭아웃한 후 사용합니다.
dropout이 사용하는 정규화 방법은 병렬 아키텍처가 다른 많은 수의 신경망을 훈련하는 것과 유사합니다. 훈련 기간 동안 일부 계층 출력은 무작위로 삭제되거나 무시됩니다. 이렇게 하면 레이어가 노드 수와 일부 뉴런이 꺼져 있는 레이어처럼 보입니다. 따라서 연결도 이전 계층에 따라 변경됩니다.
초매개변수
처리되는 이미지 데이터에 따라 제어할 수 있는 특정 매개변수가 있습니다. CNN의 각 레이어는 컨볼루션 레이어든 풀링 레이어든 매개변수화할 수 있습니다. 매개변수는 해당 특정 레이어의 출력인 기능 맵의 크기에 영향을 줍니다.
각 이미지(입력) 또는 기능 맵(레이어의 후속 출력)은 다음과 같은 치수를 갖습니다. W x H x D 여기서 W x H는 너비 x 높이, 즉 맵 또는 이미지의 크기입니다. D는 색상 세그먼트를 기준으로 치수를 나타냅니다. 흑백 이미지는 D=1이고 RGB 즉, 컬러 이미지는 D=3입니다.
컨볼루션 레이어 하이퍼파라미터
- 필터 수(K)
- 치수 FxFxD의 필터 크기(F)
- Strides: 커널이 이미지 위로 이동하기 위해 취한 단계 수입니다. S=1은 커널이 단계로 1픽셀 이동한다는 것을 의미합니다.
- 제로 패딩: 컨볼루션 및 최대 풀 레이어가 모든 반복에서 피쳐 맵의 크기를 줄이기 때문에 크기가 더 작은 이미지에 대해 제로 패딩이 수행됩니다.
출처: XRDS
제로 패딩은 입력 이미지의 크기를 늘렸습니다.
W×H×D 크기의 각 입력 이미지에 대해 풀링 레이어는 Wc×Hc×Dc 차원의 행렬을 반환합니다. 어디에
Wc= (W-F+2P)/S+1
Hc= (H-F+2P)/S+1
DC = K
Padding(P)=F-1/2 및 Stride(S)=1의 값을 찾기 위해 방정식 풀기
일반적으로 F=3,P=1,S=1 또는 F=5,P=2,S=1을 선택합니다.
풀링 레이어 하이퍼파라미터
- 셀 크기(F): 풀링을 위해 맵을 분할할 정사각형 셀 크기입니다. FXF
- 단계 크기(S): 셀이 S 픽셀로 구분됩니다.
크기가 W×H×D인 각 입력 이미지에 대해 풀링 레이어는 Wp×Hp×Dp 차원의 행렬을 반환합니다. 여기서
Wp= (WF)/S+1

HP= (HF)/S+1
Dp=D
풀링 계층의 경우 F=2 및 S=2가 널리 선택됩니다. 입력 픽셀의 75%가 제거됩니다. F=3 및 S=2를 선택할 수도 있습니다. 셀 크기가 클수록 정보 손실이 크므로 매우 큰 크기의 입력 이미지에만 적합합니다.
일반 하이퍼파라미터
- 학습률: 학습률을 최적화하기 위해 SGD, AdaGrad 또는 RMSProp과 같은 옵티마이저를 선택할 수 있습니다.
- Epoch: 교육 및 검증 오류의 간격이 나타날 때까지 Epoch 수를 늘려야 합니다.
- 배치 크기: 16 ~ 128을 선택할 수 있습니다. 처리 능력의 양에 따라 다릅니다.
- 활성화 기능: 모델에 비선형성을 도입합니다. ReLu는 일반적으로 Conv Net에 사용됩니다. 다른 옵션은 Sigmoid, tanh입니다.
- Dropout: 0.1의 dropout 값은 뉴런의 10%를 떨어뜨립니다. 0.5는 좋은 시작점입니다. 0.25는 좋은 최종 옵션입니다.
- 가중치 초기화: 죽은 뉴런의 가능성을 피하기 위해 작은 임의 가중치를 초기화할 수 있습니다. 그러나 경사하강법에는 너무 작지 않습니다. 균일 분포가 적합합니다.
- 숨겨진 레이어: 숨겨진 레이어는 테스트 오류가 줄어들 때까지 증가할 수 있습니다. 은닉층을 늘리면 계산이 증가하고 정규화가 필요합니다.
결론
CNN을 처음부터 만들기 위한 기본 정보가 있습니다. 기본 수준의 모든 것을 다루는 포괄적인 문서이지만 각 매개변수 또는 계층에 대해 더 자세히 알아볼 수 있습니다. 모든 개념 뒤에 있는 수학은 모델 개선을 위해 이해할 수 있는 것이기도 합니다.
기계 학습에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT- B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.