티스토리 뷰

우리는 이제 기본적인 network를 구성할 수 있다.

지금까지 했던 network는 forward또는 fully connected network라고 한다.

이런 형태 말고도 입력을 여러개로 나누고 이것을 하나로 합쳐 결과를 내는 방식이 있는데 convnet의 기본적인 아이디어이다.

 

Convolutional Neural Networks

convnet의 기본적인 아이디어는 고양이 실험에서 시작되었다. 고양이에게 어떤 형태의 그림을 보여줬더니, 그림을 읽어들이는 뉴런들이 동시에 동작하는게 아니라 그림의 부분마다 다른 뉴런들이 활성화 된다는 것을 알게 되었다.

 

하나의 이미지가 있으면 그 이미지를 잘라내어 각각의 입력으로 넘기게 되는데 이 층을 convolutional layer라고 한다. 그래서 이 network를 convolutional neural networks라고 부른다.

Conv, RELU, Pooling 과정을 여러번 반복하고 최종적으로는 우리에게 익숙한 Fully connected neural network 과정을 거쳐 레이블링 한다.

그러면 한개의 layer가 단계적으로 어떻게 진행되는지 알아보자.

처음에 이미지를 입력으로 받게 되면 필터링 과정을 통해 정의된 크기의 사이즈를 읽어내어 하나의 값을 만들어낸다. 그런데 어떻게 한개의 값으로 만들어 지는 것일까? 그 전부터 사용했었던 Wx+b라는 값을 사용한다. 

 

같은 필터에 대해서 w값은 모두 같다. 모든 작은 그림에 대해서 필터링을 하여 모든 값들을 구한다. 이러한 과정을 거치게 되면 몇 개의 값을 모을수 있을까? 이것을 알아야 weight 값도 구할 수 있고, 그 다음 과정으로 어떻게 넘길 것인지를 설계할 수 있다.

 

전체크기가 7x7이고 filter의 크기가 3x3일때 옆으로 1칸씩 움직이면서 이미지 전체를 확인하면 출력의 개수는 5x5=25가지가 나온다. 1칸씩 움직인다는 말을 stride가 1이라고 한다.

그러면 stride가 2이면 어떻게 될까? 그렇다 총 3x3=9개의 출력의 output이 나오게 된다. 

 

그리고 stride가 커질수록 outputsize(그림)이 작아지는데 이것은 우리가 정보를 잃어버리는 양이 커진다는 것을 의미한다. 

그래서 convnet을 사용할 때는 pad라는 개념을 사용한다. idea는 테두리에 0을 두른 하나의 입력이 있다고 가정한다. 이것을 하는 이유는 2가지가 있는데, 하나는 그림이 급격하게 작아지는 것을 방지하기 위함이고 다른 하나는 모서리 부분을 network에 알려주고 싶음이다. 

7x7에서 1픽셀씩 padding을 하게 되면 9x9가 된다. 그런다음 똑같은 방법으로 output을 구해보면 7x7이 된다. 그림 사이즈가 유지된다는 것을 알 수 있다.

 

Swiping the entire image

필터의 개수에 따라 conv layer를 거치게 되면 이미지의 개수가 다르게 출력이 된다. 각각의 필터는 weight이 다르기 때문에 output은 조금씩 다를것이다. 필터를 6개를 사용하게 되면 값의 깊이는 6이 될것이고 패딩을 사용하지 않는다고 가정하면 28x28x6이 나오게 될것이다. 

 그런데 이것을 한 번만이 아니라 conv layer를 여러번 적용할 수 있다.

 

그러면 weight variable은 몇 개나 될까?!

5x5x3x6개, 5x5x6x10이 weight의 개수가 된다.

 

그러면 이 값들은 어떻게 정해지는 것일까?

처음에는 랜덤하거나 initialize하는 방법으로 초기화 한 다음 우리가 가진 방법으로 학습을 시작한다.

 

출처: https://www.inflearn.com/course/%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9D%B8-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EA%B0%95%EC%A2%8C/lecture/3417

'beginner > 파이썬 딥러닝 기초' 카테고리의 다른 글

ConvNet의 활용  (0) 2019.05.12
ConvNet Max Pooling  (0) 2019.05.12
딥러닝으로 MNIST 98%이상 해보기  (1) 2019.05.09
레고처럼 넷트워크 모듈을 마음껏 쌓아 보자  (0) 2019.05.08
Dropout과 앙상블  (0) 2019.05.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31
글 보관함