- Published on
CNN
- Authors

- Name
- valery
1. CNN(Convolutional Neural Network)
- 전반부: 컨볼루션 연산을 수행하여 특징 추출
- 후반부: 특징을 이용해 분류
구조
- 특징 추출을 위한 컨볼루션 부분
- Conv층 (Convolution연산)
- ReLU층 (ReLU연산)
- Pool층(선택) (Pooling연산)
- 분류 또는 회귀를 수행하는 다층 퍼셉트론 부분
- FC(Fully Connected)층
- 추출된 특징값들을 펼친 뒤, 각 뉴런이 앞층의 모든 값을 보도록 연결하고, 그런 층을 여러 번 거쳐 최종 분류 점수를 만든다.
- SM(SoftMax연산)층: 마지막 층
- softmax연산: FC에서 가져온 값을 확률 형태로 만들어준다
- e^점수를 다 더한다음에 각각의 e^점수로 나눠서 확률형태로 표현
- softmax연산: FC에서 가져온 값을 확률 형태로 만들어준다
- FC(Fully Connected)층
대표 예시: Conv - ReLU - Pool - Conv - ReLU - Pool - FC - SM
2. Convolution
일정영역의 값들에 대해 가중치를 적용하여 하나의 값을 만드는 연산
- stride(보폭): 필터 W가 X 위에서 이동하는 간격
- padding: 입력 배열의 둘레를 확장하고 0으로 채우는 연산
- 특징지도: 컨볼루션 결과 Y이고, 특징지도 안의 각 y값은 특정 위치에서 필터가 찾는 특징의 반응 정도
- 변수:
- x: 입력값,
- w: 필터,
- y: 결과값(특징지도)
예시:
X(입력) =
1 1 1 0 0
0 1 1 1 0
0 0 1 1 1
0 0 1 1 0
0 1 1 0 0
W =
1 0 1
0 1 0
1 0 1
입력의 왼쪽 위 3×3 영역 =
1 1 1
0 1 1
0 0 1
입력 영역 필터 곱한 결과
1 1 1 1 0 1 1 0 1
0 1 1 × 0 1 0 = 0 1 0
0 0 1 1 0 1 0 0 1
1 + 0 + 1
+ 0 + 1 + 0
+ 0 + 0 + 1
= 4
따라서 y11은 4가 된다.
필터 가중치 w를 어떻게 학습하냐?
- 처음에는 랜덤값 > 이후 예측이 틀리면 손실을 보고 가중치를 조금씩 수정
미분으로 가중치 수정하기
수치적 미분
f(x)를 계산함 x를 아주 조금 h만큼 바꿔서 f(x+h)를 계산함 두 값의 차이를 보고 기울기를 추정함
기호적 미분
수학 시간에 했던 그거
신경망은 너무 크고 복잡해서 수치, 기호적 미분으론 안된다.
자동 미분
- 복잡한 신경망 전체를 작은 연산 그래프로 쪼갠 뒤,
- 각 연산의 미분을 연쇄법칙으로 이어서,
- 각 가중치를 얼마나 수정해야 하는지 계산한다.
3. 풀링(pooling)
일정 크기의 블록의 통합하여 하나의 대푯값으로 대체하는 연산
- 역할:
- 중간 연산 과정에서 만들어지는 특징지도들의 크기 축소
다음 단계에서 만들어질 메모리 크기와 계산량 감소
- 가까운 위치들의 특징 반응을 하나의 대표값으로 압축한다.
- 특징이 조금 옆으로 움직여도 비슷한 출력이 나오게 만든다.
- 중간 연산 과정에서 만들어지는 특징지도들의 크기 축소
최댓값 풀링
최댓값을 대푯값으로 사용
평균값 풀링
평균값을 대푯값으로 사용
확률적 풀링
블록 내에 원소 값에 비례하는 확률을 부여하고 이 확률에 따라 대푯값을 랜덤 선택
| 학습시 | 추론시 |
|---|---|
| 확률에 따라 원소 하나를 랜덤 선택 | 확률적 가중합(기댓값)사용 |
예시
s = 0.1×1 + 0.2×2 + 0.3×3 + 0.4×4
= 0.1 + 0.4 + 0.9 + 1.6
= 3.0