CS231n Lecture5-길쌈 신경망 연구 노트

一, 건축 개요

  • 정기 신경망길쌈 신경망 (插图)

빌드 ConvNets에 사용 1. 레이어

  • 일반적으로 회선 층, 풀링 층은 완전히 층을 연결.
  • 그러나, 층 및 세포층의 컨벌루션은 일반적으로 활성 기능 층을 갖는
  • 각 층은 입체 매개 변수가 입력되어 수신하면서 다른 기능에 의해 삼차원 데이터의 출력
  • 완전히 계층 파라미터를 접속 회선 층 활성화 전지 층과 기능 층이 매개 변수를 갖지 않는다.
  • 완전히 연결된 레이어 및 레이어를 추가 하이퍼 파라미터를 가질 수있다 풀 컨벌루션 층 있지만 활성화 기능 층.
  • 그림 설명

二, 길쌈 층

  1. 지역 연결 : 우리는 사용 회선 커널 (또는 호출 수용 필드 수용 필드) 연결,이 부분은, 당신은 많은 자원을 저장하기 전에이 섹션의 일반 신경 네트워크 매개 변수가 공유 사이의 차이입니다.

  2. 공간 배열 : 세 매우 중요한 파라미터, 깊이 (깊이), 단계 (보폭), 0 (제로 패딩)을 충전한다. 즉, 출력 채널의 수의 깊이, 컨벌루션 커널의 수는 훨씬 깊이와 컨벌루션 단계는 이미지 사이즈에 슬라이딩 0은 모두 0의 데이터에 기입되는 입력 데이터를 주위 채워진다.

  3. 출력의 크기를 산출하는 의 입력 크기의 크기 W, 컨벌루션 커널의 크기는 F스텝 크기 S, 크기 0 가득 P, 출력 사이즈가된다 (W-F+2*P)/S+1(그림)

  4. 0 이유 가득 : 이고, 같은 크기의 입력 및 사이즈의 출력 크기를 유지하며 충전제를 사용하지 않는 경우도 가끔 설정 단계, 출력 소수가 될 경우는, 다음 무효이므로 충전 될 필요가있다.

  5. 매개 변수 공유 : 컨볼 루션 커널의 매개 변수에 대한 이야기가 공유됩니다.

  6. 컨볼 루션 커널과 방법 근거리 작업을 : 우리가 알고있는 일반적인 형태는 컨볼 루션 커널은 5x5x3, 3즉, 채널 수, 우리가 연습 A의 컨볼 루션 커널에 그려진 원래의 입력 데이터의 깊이를 나타냅니다 중첩 부분으로도 연신하면서 차원 벡터 컨벌루션 커널은 5x5x3=75일차원 벡터의 두 부분은 내적 연산 할 수있다. 마지막으로, 새로 생성 된 회선 핵 픽셀 숫자를 얻을. 예를 들어, 원래의 크기로 227x227x3, 컨벌루션 커널의 사이즈 11x11x3=363, 스텝 사이즈 4는 식에 따라 산출 된, 충전제를 사용하지 않고 (227-11)/4+1=55, 사용되는 컨벌루션 커널의 수는 96출력 크기의 채널 번호를 의미 하나 96, 출력 사이즈가된다 55x55x96더불어 전술 한 설명은 부분적으로 컨벌루션 커널 차원 벡터로서 그려, 이는 컨볼 루션 커널로 볼 수 96x363와 입력 363x3025내적의 최종 결과 행렬 곱셈96x3025=55x55x96

  7. 역 전파 : (중량 및 중량 데이터) 컨볼 루션 연산은 컨볼 루션에 송신 (그러나 플립 공간 필터를 사용하여)되고

  8. × 1 회선 :

  9. 동공 회선 :

  10. 케이스 :

三 풀링 층 정규화 층과 완전히 연결된 층

  • 간단한 용어는 크기 제어 overfitting을 줄이기 위해, 다운 샘플링되어, 깊이를 변화시키지 않고, 즉 채널의 수를 유지한다.
  1. 크기 조정 : 그림

  2. 일반 풀링 : 일반 최대, 평균 풀링을 풀링, L2 패러다임 풀링.

  3. 역 전파 :

  4. 일부 네트워크 구조 층은 또한 풀 폐기 될 수있다

  5. 정규화 층은 다수의 실험은 결과의 기여 부분이 매우 작은 것으로 판명되었지만, 네트워크 구조의 숫자에 실패했습니다.

  6. 완전 레이어 접속 , 마지막 층을 생성 점수의 종류마다, 일차원 벡터 데이터, 후속 동작으로 인출된다.

四, CONV 층에 FC 변환 층

  1. 나는 몰랐다

五, ConvNet 아키텍처

  1. INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC
  2. 일반적으로 위와 같이 길쌈 네트워크 구조, N은 반복 횟수가 모듈보다 더 일반적이다 0미만 3, 다른 파라미터의 수와 동일한 방법.
  3. 나는 같은 크기의 크기를 달성하기 위해 큰 컨볼 루션 커널 층보다는 여러 개의 작은 컨볼 루션 커널 레벨을 사용하는 것을 선호합니다. 이유는 다음 : (1) 그들이 더 표현되는 것을 특징으로하는 선형 컨벌루션 다층막 층 포함한다; 2. 적은 파라미터의 사용은 더 강력 입력 특성을 표현한다. 단점 : 우리는 확산을 반대하는 경우, 모든 중간 회선 층의 결과를 수용 할 수 있도록 더 많은 메모리를 필요로 할 수 있습니다.
  4. 일반적인 변수, 보통, 입력의 크기 32, 64, 96, 224, 384, 512, 컨볼 루션 컨벌루션 커널 계층 F과 스텝 사이즈 S및 작성 P스텝 사이즈 S = 1 가정의 관계, 원래의 크기를 유지하고 싶은 경우에,P = (F - 1)/2
  5. 왜 CONV 1의 사용 보폭? 레이어에 우리에게 더 많은 공간 풀링 표본을 허용하면서 동시에 변환 채널의 번호로.
  6. 왜 사용 패딩? 과도한 유용한 정보를 많이 손실 축소 때문에 앞서 언급 한 같은 공간을 유지뿐만 아니라, 또한, 성능, 기능 정보를보다 효율적으로 추출을 향상시킬 수 있습니다.

六, 사례 연구

  1. LeNet : 1990 년대에 성공적으로 적용 회선 네트워크, 우편 번호를 식별하는 데 사용됩니다. 종이

  2. AlexNet : 두 번째보다 훨씬 높은 2012 ImageNet ILSVRC 도전 게임 점수에서 컴퓨터 비전의 첫 번째 인기있는 작품. 구조와 LeNet 지인하지만, 네트워크 더 깊고 더 큰. 종이

  3. ZF 넷 : 이것은 특히 콘볼 루션 중간층의 크기, 제 1 필터층 작은 보폭의 사이즈를 확대하여, 구조 위에 파라미터를 조정함으로써 개선 AlexNet이다. 종이

  4. GoogLeNet : 2014 니안 ILSVRC 수상자 Szegedy, 구글에서 회선 네트워크입니다. 주요 기여 모듈의 개발을 시작하는 것입니다, 모듈은 극적으로 (단지 60M를 4M 및 AlexNet) 네트워크의 매개 변수의 수를 줄일 수 있습니다. 본원에서 사용 된 바와 같이 또한, 평균 ConvNet의 상단에 풀보다는 층이 완전히 덜 중요한 매개 변수를 보인다 많이 제거, 연결되어 있습니다. 종이

  5. VGGNet : 2014 니안 ILSVRC 러너 업 카렌 Simonyan와 앤드류 지서 맨이 VGGNet 설립이다. 주요 기여는 네트워크의 깊이가 좋은 성능의 핵심 구성 요소입니다 보여주는 것입니다. 그들의 궁극적 인 최고의 네트워크는 16 CONV / FC 층을 포함하며, 관심은 처음부터 회선 풀 3 × 3과 2 × 2의 실행을 종료,하는 매우 균일 한 구조를 가지고있다. 그들은 훈련 사전 모델은 플러그 앤 플레이의 CAFFE에서 할 수 있습니다. 하나의 단점은 그것이 VGGNet 계산 오버 헤드 및 사용 메모리 및 파라미터들 (140,000,000) 이상이다. 이러한 매개 변수의 대부분은 완전히 연결 층에 위치하고 있으며, 그 이후로, 우리는 FC 따라서 크게 필요한 매개 변수의 수를 줄이고, 성능 저하없이 이러한 층을 제거 할 수 있음을 발견한다. 종이

  6. ResNet는 : 잔류 네트워크를 개발 ILSVRC 그는 Kaiming에 의해 2015 년 우승을 차지했다. 그것은 특별한 커넥터 및 배치의 표준화를 사용하여 건너가 많이 있습니다. 이 아키텍처는 또한 완전히 연결 네트워크 계층 끝이 없다. 독자는 KAIM 데모 (비디오, 슬라이드)를 참조 할 수 있으며, 최근의 실험은 토치에서 이러한 네트워크의 복사합니다. ResNets 현재 가장 진보 된 회선 신경망 모델, 기본 선택은 (5 월 10 일 끝난 2016) 실제로 회선 신경 네트워크를 사용하는 것입니다. 특히 주목할 것은이 최근이 있었다 더 변화이다. 종이

  7. VGGNet 세부 사항 :

INPUT: [224x224x3]        memory:  224*224*3=150K   weights: 0
CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*3)*64 = 1,728
CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*64)*64 = 36,864
POOL2: [112x112x64]  memory:  112*112*64=800K   weights: 0
CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*64)*128 = 73,728
CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*128)*128 = 147,456
POOL2: [56x56x128]  memory:  56*56*128=400K   weights: 0
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*128)*256 = 294,912
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
POOL2: [28x28x256]  memory:  28*28*256=200K   weights: 0
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*256)*512 = 1,179,648
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
POOL2: [14x14x512]  memory:  14*14*512=100K   weights: 0
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
POOL2: [7x7x512]  memory:  7*7*512=25K  weights: 0
FC: [1x1x4096]  memory:  4096  weights: 7*7*512*4096 = 102,760,448
FC: [1x1x4096]  memory:  4096  weights: 4096*4096 = 16,777,216
FC: [1x1x1000]  memory:  1000 weights: 4096*1000 = 4,096,000

TOTAL memory: 24M * 4 bytes ~= 93MB / image (only forward! ~*2 for bwd)
TOTAL params: 138M parameters

七, 전산 고려 사항

  • 추적하기 위해 메모리의 세 가지 주요 소스가 있습니다 :
  1. 중간 데이터 저장
  2. 매개 변수의 크기, 기울기
  3. 당신은 너무에 같은 이미지 데이터 조각, 아마 그들은이 향상된 버전과 메모리의 다양한를 유지해야합니다.

추천

출처www.cnblogs.com/tsruixi/p/12616889.html