Thief of Wealth
article thumbnail

http://aikorea.org/cs231n/convolutional-networks/


요약. To summarize, the Conv Layer:

  • W1×H1×D1 크기의 볼륨을 입력받는다.
  • 4개의 hyperparameter가 필요하다:
    • 필터 개수 K,
    • 필터의 가로/세로 Spatial 크기 F,
    • Stride S,
    • 제로 패딩 P.
  • W2×H2×D2 크기의 출력 볼륨을 생성한다:
    • W2=(W1F+2P)/S+1
    • H2=(H1F+2P)/S+1 (i.e. 가로/세로는 같은 방식으로 계산됨)
    • D2=K
  • 파라미터 sharing로 인해 필터 당 FFD1개의 가중치를 가져서 총 (FFD1)K개의 가중치와 K개의 바이어스를 갖게 된다.
  • 출력 볼륨에서 d번째 depth slice (W2×H2 크기)는 입력 볼륨에 d번째 필터를 stride S만큼 옮겨가며 컨볼루션 한 뒤 d번째 바이어스를 더한 결과이다.

흔한 Hyperparameter기본 세팅은 F=3,S=1,P=1이다. 뒤에서 다룰 ConvNet 구조에서 hyperparameter 세팅과 관련된 법칙이나 방식 등을 확인할 수 있다.


.

#### 풀링 레이어 (Pooling Layer)

ConvNet 구조 내에 컨볼루션 레이어들 중간중간에 주기적으로 풀링 레이어를 넣는 것이 일반적이다. 풀링 레이어가 하는 일은 네트워크의 파라미터의 개수나 연산량을 줄이기 위해 representation의 spatial한 사이즈를 줄이는 것이다. 이는 오버피팅을 조절하는 효과도 가지고 있다. 풀링 레이어는 MAX 연산을 각 depth slice에 대해 독립적으로 적용하여 spatial한 크기를 줄인다. 사이즈 2x2와 stride 2가 가장 많이 사용되는 풀링 레이어이다. 각 depth slice를 가로/세로축을 따라 1/2로 downsampling해 75%의 액티베이션은 버리게 된다. 이 경우 MAX 연산은 4개 숫자 중 최대값을 선택하게 된다 (같은 depth slice 내의 2x2 영역). Depth 차원은 변하지 않는다. 풀링 레이어의 특징들은 일반적으로 아래와 같다:

  • W1×H1×D1 사이즈의 입력을 받는다
  • 3가지 hyperparameter를 필요로 한다.
    • Spatial extent F
    • Stride S
  • W2×H2×D2 사이즈의 볼륨을 만든다
    • W2=(W1F)/S+1
    • H2=(H1F)/S+1
    • D2=D1
  • 입력에 대해 항상 같은 연산을 하므로 파라미터는 따로 존재하지 않는다
  • 풀링 레이어에는 보통 제로 패딩을 하지 않는다

일반적으로 실전에서는 두 종류의 max 풀링 레이어만 널리 쓰인다. 하나는 overlapping 풀링이라고도 불리는 F=3,S=2 이고 하나는 더 자주 쓰이는 F=2,S=2 이다. 큰 리셉티브 필드에 대해서 풀링을 하면 보통 너무 많은 정보를 버리게 된다










profile on loading

Loading...