CNN vs FNN(Fully-Connected NN)
FNN : 데이터가 주어지면 하나의 피처를 뽑기위해서(하나의 히든 노드를 정의하기위해서) 모든 연결을 다 사용함.
- 우리가 배워야하는 파라미터가 기하급수적으로 커짐. 조금만 변경되어도 파라미터 값이 많이 달라짐.
LNN(Locally-Connected NN) : CNN 전단계, 국소적인 부분만 뉴럴 네트워크를 정의. 해당부분으로만 연결이 되어서 하나의 히든 노드를 도출.
- 배워야하는 파라미터의 수가 줄어듦.
이렇게 하는 이유는 영상의 경우 전체를 보지 않고 부분적인 부분만 봐도 무엇인지 파악할 수 있기 때문.
# 해당 영역의 파라미터를 다른 영역에서도 사용가능. 즉, 파라미터를 공유(이는 LNN에서 CNN으로 변환되는 과정)
- 적은 파라미터로 재활용함으로써 효율적, 패치단위가 데이터기 때문에 더 많은 데이터를 활용할 수 있다는 것을 의미.
CNN(Convolutional Neural Networks)
CNN의 keyword
- convolution layer
- pooling layer
- activation function
Convolution
내적을 통한 값 도출.
Convolution layer
W(너비) * H(높이) * D(깊이, 채널)
conv.layer에서는 일반적으로 input과 conv.filter의 채널은 같다.
Filter로 이미지(input)를 훑으면서 내적을 계산함(계산값은 activation값).
여러 필터를 사용하여 activation을 여러개 구한다(채널을 늘린다).
filter의 크기와 stride(뛰어넘는 크기)에 따라 결과의 크기가 정해진다.
출력 size : (N - F) / stride + 1 (N : input크기, F : filter크기)
만약 소수점이 나오는 경우(정확히 맞지 않고 필터가 벗어나는 경우) 를 해결하기 위해
Zero padding을 사용. (zero 뿐만 아니라 다양한 padding을 쓰긴하지만 일반적으로)
input 크기 보존하는 공식 : stride = 1일때, filter size가 F라면 zero padding의 크기를 (F-1)/2로 하면 된다.
즉, convolution layer에서는 input을 filter를 통해 actvation map(중간 출력값을 만드는 곳). 이때 filter를 여러개 적용하여 activation map을 여러개 생성할 수 도있다.
Pooling layer
convolution layer의 필터 사이즈의 제한을 조금 더 쉽게 많은 범위를 보기위해 사용.
특정 부분에서 어떠한 특징을 가지는지 판단하고자하는 곳.
즉, 여러 값을 하나의 값으로 바꾸어주는 곳.
다양한 pooling이 존재함. 대표적으로 Max pooling
(여러 값 중 큰 값만 뽑아내는 Max, 평균값 average 등이 있음)
Activation function
이전까지 convolution layer는 matrix의 multiplication(선형) 이라고 볼 수 있음.
비선형성을 넣어서 어떤 값이 나왔을 때 큰 값을 더 크게, 작은 값은 작거나 무시하게 이런 기능을 넣어주는 것.
만약 activation function이 없다면, 결국 하나의 큰 선형 모델로 변하게 되기때문에 좋은 성능을 기대할 수 없음.
그래서 비선형적인 activation function을 사용하여 layer을 쌓았을 때 모델이 감당하는 양이 커지고 다양한 func을 학습할 수 있음.
종류
Identity - 선형 f(x) = x
Binary step, Logistic, ReLu 등등
이 과정을 다 거친 후 Fully Connected layer을 사용하여 하나의 값으로 만들어준다.
영상인식이 아니라면 이 layer가 없거나 다르게 활용되는 경우도 있음.
FC layer(Fully Connected layer)
input 32x32x3 이미지 -> 3072x1로 늘림
이를 Wx ( W(FC layer) : 출력 채널 사이즈 x input 채널 사이즈)
를 사용하여 activation 이 1 x 출력 채널 사이즈 로 나옴.
즉, FC layer의 경우 모든 input에 대해 고려한 결과라고 볼 수 있음.
CNN은 어떤 지식을 학습하는가?
계층적인 특징 표현
'@@@ 인공지능 > 이론' 카테고리의 다른 글
Attention (0) | 2022.02.22 |
---|---|
Multi-Model Learning (0) | 2022.02.22 |
기계학습 (0) | 2022.02.21 |