CNN
해당 내용은 Stanford cs231 강의를 듣고 내용을 정리한 것입니다.
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 map을 MxN의 크기로 잘라낸 후 그 안에서 가장 큰 값을 뽑아내는 방법.
특징의 큰 값이 다른 특징들을 대표한다는 개념
(pooling은 activation 함수마다 매번 적용하는 것이 아니라, 데이터의 크기를 줄이고 싶을 때 선택적으로 사용하는 것)
Sampling을 할 경우 전체 데이터의 사이즈가 줄어들기 때문에 연산에 들어가는 컴퓨팅 리소스가 적어지고, 데이터의
크기를 줄이면서 소실이 발생하기 때문에 오버피팅을 방지 할 수 있다.
Convolutional Layer
Convolutional filter와 Activation function(Relu), Pooling Layer를 반복적으로 조합하여 특징 추출
Fully Connected Layer
Convolutional Layer에서 특징이 추출 되었으면, 이 추출된 특징 값을 기존의 뉴럴 네트워크(인공 신경 지능망)에 넣어서 분류를 한다.
Softmax Function
Softmax는 activation function의 일종.
Sigmoid 함수가 이산 분류(결과값에 따라 참 또는 거짓을 나타내는) 함수라면, Softmax는 여러 개의 분류를 가질 수 있는 함수. P1+P2+…+Pn = 1로 확률로 나오게 됨.
Dropout Layer
Fully connected Layer과 Softmax 함수 중간에 Dropout layer라는 계층이 있음
Dropout은 오버피팅을 막기 위한 방법으로 뉴럴 네트워크가 학습 중일 때, 랜덤하게 뉴런을 꺼서 학습을 방해함으로써, 학습이 학습용 데이터에 치우치는 현상을 막아줌. 일반적으로 CNN에서 dropout layer를 Fully connected network 뒤에 놓지만, 상황에 따라서는 max pooling 계층 뒤에 놓기도 한다.