본문 바로가기

딥러닝

cs231n 강의 : CNN 기초 설명!!! ( Stride, padding, activation function, pooling등)

728x90
SMALL

CNN

해당 내용은 Stanford cs231 강의를 듣고 내용을 정리한 것입니다. 

http://cs231n.stanford.edu/

 

Stanford University CS231n: Convolutional Neural Networks for Visual Recognition

Can I audit or sit in? In general we are very open to auditing if you are a member of the Stanford community (registered student, staff, and/or faculty). Out of courtesy, we would appreciate that you first email us or talk to the instructor after the first

cs231n.stanford.edu

Filter -> 특징을 추출하는 기능

 그 특징이 데이터에 있는지 없는지를 검출해주는 것 Filter image를 곱했을 때 입력 받은 image에서 그 특성을 가지고 있으면 결과 값이 큰 값이 나오고, 특성을 가지고 있지 않으면 결과 값이 0에 가까운 값이 나오게 되어 image , data가 그 특성을 가지고 있는지 없는지 여부를 알 수 있게 해준다.

 

다중 필터 적용

 입력 값에는 여러 가지 특징이 있기 때문에 하나의 필터가 아닌 여러 개의 다중 필터를 같이 적용. 각기 다른 특징을 추출하는 필터를 조합하여 네트워크에 적용하면 원본 데이터가 어떤 형태의 특징을 가지고 있는지 없는지를 판단해 낼 수 있음.

 

Stride

 그렇다면 위의 필터를 어떻게 원본 이미지에 적용할까? 큰 사진 전체에 하나의 큰 필터만 적용?

필터를 적용하는 간격 값 = Stride. 필터를 적용해서 얻어낸 결과를 Feature map or activation map이라고 한다.

 

Padding

 앞에서 원본 데이터에 필터를 적용한 것을 보면 필터를 적용한 후의 결과값은 필터 적용 전보다 작아졌다. 그런데 CNN 네트워크는 하나의 필터 레이어가 아니라 여러 단계에 걸쳐서 계속 필터를 연속적으로 적용하여 특징을 추출하는 것을 최적화 해나가는데, 필터 적용 후 결과 값이 작아지게 되면 처음에 비해서 특징이 많이 유실 될 수 있다이를 방지하기 위한 방법으로 padding이라는 기법!

 결과 값이 작아지는 것을 방지 하기 위해서 입력값 주위로 0 값을 넣어서 입력 값의 크기를 인위적으로 키워서 결과 값이 작아지는 것을 방지하는 기법

 패딩은 결과 값 작아지는 것을 막아서 특징이 유실 되는 것을 막는 것 뿐 아니라, 오버피팅도 방지, 원본 데이터에 0값을 넣어서 원래의 특징을 희석 시켜 버리고, 이것을 기반으로 머신러닝 모델이 트레이닝 값에만 정확하게 맞아 들어가는 오버피팅 현상을 방지

 

 

Activation Function -> 필터의 값을 비선형 값으로 바꾸어주는 함수

 필터들을 통해 Feature map이 추출 되었으면, Feature map Activation function을 적용하게 한다.

Activation의 개념 : 특징 값이 들어가 있는지 안들어가 있는지의 필터를 통해서 추출한 값이 들어가 있는 결과는 큰수 혹은 0 으로 나옴. 이 값이 정량적인 값으로 나오기 때문에 그 특징이 있다’ ‘없다의 비선형 값으로 바꿔 주는 과정이 필요한데 이것이 바로 Activation 함수

 이 함수를 사용하는 이유는 뉴럴 네트워크에서 신경망이 깊어질수록 학습이 어렵기 때문에 전체 레이어를 한번 계산한경우 레이어가 깊어지면 Backpropagation이 제대로 작동을 하지 않기 때문에(, 값을 뒤에서 앞으로 전달할 때 희석이 되는 현상. 이를 Gradient Vanishing이라고 함) Relu를 사용.

 

 

Pooling(sub sampling or pooling)

 Convolutional 계층을 통해서 어느정도 특징이 추출 되었으면, 이 모든 특징을 가지고 판단을 할 필요가 없음. (ex, 우리가 고해상도 사진을 보고 물체를 판별할 수 있지만, 작은 사진을 가지고도 그 사진의 내용이 어떤 사진인지 판단 할 수 있는 원리) 그래서 추출된 Activation map을 인위로 줄이는 작업을 하는데 이 작업이 바로 sub sampling(pooling)

Sub sampling – max pooling , average pooling , l2-norm pooling 등이 있고, max pooling이 많이 사용 됨

 Max pooling

  Activation mapMxN의 크기로 잘라낸 후 그 안에서 가장 큰 값을 뽑아내는 방법.

  특징의 큰 값이 다른 특징들을 대표한다는 개념

  (poolingactivation 함수마다 매번 적용하는 것이 아니라, 데이터의 크기를 줄이고 싶을 때 선택적으로 사용하는 것)

  Sampling을 할 경우 전체 데이터의 사이즈가 줄어들기 때문에 연산에 들어가는 컴퓨팅 리소스가 적어지고, 데이터의

  크기를 줄이면서 소실이 발생하기 때문에 오버피팅을 방지 할 수 있다.

 

Convolutional Layer

Convolutional filterActivation function(Relu), Pooling Layer를 반복적으로 조합하여 특징 추출

Fully Connected Layer

Convolutional Layer에서 특징이 추출 되었으면, 이 추출된 특징 값을 기존의 뉴럴 네트워크(인공 신경 지능망)에 넣어서 분류를 한다.

 

Softmax Function

Softmaxactivation function의 일종.

Sigmoid 함수가 이산 분류(결과값에 따라 참 또는 거짓을 나타내는) 함수라면, Softmax는 여러 개의 분류를 가질 수 있는 함수. P1+P2+…+Pn = 1로 확률로 나오게 됨.

 

Dropout Layer

Fully connected LayerSoftmax 함수 중간에 Dropout layer라는 계층이 있음

Dropout은 오버피팅을 막기 위한 방법으로 뉴럴 네트워크가 학습 중일 때, 랜덤하게 뉴런을 꺼서 학습을 방해함으로써, 학습이 학습용 데이터에 치우치는 현상을 막아줌. 일반적으로 CNN에서 dropout layerFully connected network 뒤에 놓지만, 상황에 따라서는 max pooling 계층 뒤에 놓기도 한다.

 

728x90
LIST