일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준 2193
- 딥러닝
- 경제 요약
- 2003 error
- Convolutional Neural Networks
- but how?
- 코딩테스트
- 뤼이드
- 웹 독학
- 110 옮기기
- 오픈소스
- 리멤버나우
- 리멤버나우 요약
- C++
- 알고리즘
- aws rds
- 2003 에러
- pytorch-tutorial
- 장영준
- 이베이 매각
- git password
- 프로그래머스 여행경로
- git-lfs
- flaks
- cs231
- multi-task learning
- 프로그래머스
- 스무고개 Metric
- flask
- 미국 이란 전쟁
- Today
- Total
Nam's
[딥러닝] cs231n-05 Convolutional Neural Networks 본문
*본문 내용은 스탠포드 대학교 CS231n 강의를 개인적인 학습 목적으로 요약한 내용입니다.
Lecture: Convolutional Neural Networks
Slide: http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture5.pdf
1. CNN의 활용







2. Convolutional Neural Networks
Fully Connected Layers
Input 이미지를 1차원 행렬로 stretch 시킨 후 Wx를 내적한다. (길게 쭉 피는 느낌)
밑에 사진의 경우 Output이 10개 class인 경우 이므로 Wx의 사이즈는 10 x 3072 이다.
그 결과 10개의 Output이 나온다.

Convolution Layer
Convolutional Layer와 FC Layer의 가장 큰 차이점은 Convolutional Layer는 기존의 구조를 보존시킨다는 점이다.
이제부터 낯선 용어들이 나오기 시작한다. Filter, Stride, Padding, Activation Map, Pooling 등등.
용어에 대한 정리는 나중에 기회가 되면 하고 지금은 정리되어 있는 링크만 남긴다. CNN 용어정리

Input 이미지에 Filter를 Sliding 시키며 내적한 값으로 Activation Map을 만든다.
각 Filter는 내가 잡아내고 싶은 특징을 가중치로 표현하고 있다.
이때, Filter를 여러 개 사용할 수 있고, Filter 개수만큼 activaton map이 만들어진다.

그런데, activation map의 size가 32 -> 28로 줄어든 것을 볼 수 있다. Filter의 크기가 5이기 때문이다.

이런 식의 Convolution작업을 한 후 ReLU로 부각시켜주고, 반복한다.

처음에는 Filter 들이 단순한 특징들을 나타내고, 뒤로 갈수록 복잡한 특징들을 나타내는 Filter를 사용할 수 있다.
이후에 더 자세하게 배우도록 하고, Activation Map의 크기가 왜 줄어들었는지 알아보자.

7x7 input 이미지에 3x3 filter가 좌상단 부터 내적과 슬라이딩을 시작한다.
내적한 값 activation map에 저장한다.
stride라고 불리는 간격 만큼 이동을 한다. stride가 1일 경우 1칸 이동한다.

한 칸 한 칸 슬라이딩 하다가 우상단에 도착해보면 5번 움직였다.

밑에 방향도 마찬가지로 5번 움직일 수 있으므로 activation map 에는 5x5 크기의 output이 나온다.
이때, 원래의 크기 7x7을 유지시키기 위한 다양한 방법이 있다. 가장 흔한 방법은 zero-padding 이다.

사이즈를 키우고 0으로 채우는 방법이다.

Q: 이 레이어에 parameter가 몇개일까?
A: 5x5 (사이즈) x3 (Depth) +1 (bias) = 76
x10 (filter 개수) = 760

지금까지의 내용 요약

Receptive Field 라는 용어가 앞으로 자주 나올 수 있으니 기억해두라고 한다.
filter가 5x5이니 한 뉴런이 수용할 수 있는 영역은 5x5이고 이걸 Receptive Field 라고 한다.
3. MAX Pooling
Pooling Layer는 Represntation (특징들?)을 더 작고 다루기 쉽게 만들어준다. 작아지면 parameter 수도 줄어들고, 일종의 공간적인 불변성을 얻을 수도 있다고 한다. (?)
간단히, Downsample을 하는 것인데, 이때, 공간면적은 줄어들지만 depth는 변하지 않는다.

마찬가지로 filter의 Size와 Stride를 정해줄 수 있다. 일반적으로 필터가 지나가는 영역을 겹치지 않게 한다.
Q: Max Pooling이 Average Pooling 보다 더 좋은가?
A: 얼마나 더 활성화 되어 있는지가 중요하기 때문에 Max Pooling을 더 많이 사용한다.
Q: 위에서 다룬 filter의 stride와 다를 바 없지 않나?
A: 맞다. 위에서 했던 stride도 downsampling이 되고, 심지어 성능도 더 좋을 때가 많다. 요즘에는 max pooling 보다 stride를 많이 사용하는 추세이다.
Summary

CNN은 CONV, RELU, POOL, FC Layers 를 쌓는 과정을 반복한다.
필터는 작아지고 구조는 더 깊어지는 추세이다.
POOL과 FC layer 들은 없애는 추세이다. CONV만으로 해결
전통적인 구조는 다음과 같다.

( N is usually up to ~5, M is large, 0 <= K <= 2 )
'개발 > Machine Learning' 카테고리의 다른 글
[딥러닝] cs231n-04 Backpropagation & Neural Networks Intro (0) | 2020.03.02 |
---|---|
[딥러닝] cs231n-03 Loss Function & Optimization (0) | 2020.02.28 |
[딥러닝] CS231n-02 이미지 인식의 어려움, kNN, Linear Classfier (0) | 2020.02.27 |