lec11-1 ConvNet의 Conv 레이어 만들기, lec11-2: ConvNet Max pooling 과 Full Network, lec11-3 ConvNet의 활용예
어떤 그림을 고양이가 보면 그림의 각 부분에 따라 뇌가 부분적으로 작용한다는 것을 알게 됨.
이에 착안하여 이미지를 잘라 각각의 입력으로 넘기게 된다. 이 창을 convolution이라고 부른다.
RELU 함수와 POOL을 반복 적용하고 Fully Connected Neural Network를 구성하여 레이블링까지 하게 된다.
filter라는 개념으로 전체 그림의 일부분을 처리한다고 한다. filter는 궁극적으로 한 값을 만들어낸다.
색깔은 맨마지막에 X3으로 처리한다.
Wx+b 식 앞에 Relu를 붙여 Relu 창을 구현할수도 있다.
그렇다면 이런 방식으로 몇 개의 값을 얻을 수 있을까?
출력은 5X5가 나오게 된다.
움직이는 것을 Stride라고 한다면 Stride: 1일 때 이러한 결과인 것이다.
Stride: 2일 때, 즉 2칸씩 움직이게 되면 3X3개의 output이 나오게 된다.
이를 통해 Output size: (N -F) / stride + 1이라는 식을 얻을 수 있다.
filter를 적용할수록 output 이미지가 작아진다. 이렇게 되면 손실되는 이미지가 생길 수 있다.
이를 막기 위해 padding을 적용한다. padding은 이미지 손실 방지 목적에 더해 각 모서리를 네트워크에 알리는 목적도 있다.
<Convolution layer를 만드는 과정>
한 이미지에 filter1를 적용하고 다른 weight의 filter2를 적용한다. 이런 방식으로 총 6개의 filter를 사용하면 깊이는 6이 된다. (전체 이미지, 필터 사이즈, 필터 개수)
convolution을 적용한 Activation map에 convolution을 더 적용할 수 있다.
그렇다면 weight에 사용되는 variable 개수는 몇 개가 되는가?
5X5X3X6이 개수이다.
weight은 처음에 random하게 또는 정해진 초기화 방식으로 초기화를 한다.
이후 데이터를 가지고 학습을 하게 된다.
<Max Pooling>
pooling: sampling과 비슷하다.
conv layer에서 한 layer만 뽑아내어 resize를 통해 원래보다 작게 만드는 것이 sampling다.
sampling한 layer들을 모아 넘기는 것을 pooling이라고 한다.
Max Pooling이란 filter에서 가장 큰 값들을 골라 output을 내는 것이다.
Convolution 후 Relu라는 함수에 입력을 할 수도 있고 Pooling을 할 수도 있다.
이를 통해 나온 3x3x10의 값이 나왔다고 하면 원하는 깊이 또는 fully connected network에 넣어 softmax 처리 후 레이블 중 하나에 넣는 형태로 neural network를 구성하게 된다.
conv network: LeCun 교수님이 가장 처음 구상
AlexNet: ImageNet 경진대회에서 1등을 함.
첫 번째 layer: 96개 필터를 사용 11x11x3, stride: 4 / 35K 변수 필요
* normalization layer: 값들을 normalization; 요즘엔 잘 사용하지 않는다.
Fully Connected Layer: 4096 neurons 입력과 4096 출력.
이러한 네트워크를 7개 시행한 후 합쳤다.
GoogLeNet
병렬적으로 3개를 쓴 후 pooling을 한 후 convolution을 수행한 후 따로 convolution 처리만 한 것과 합친다.
Inception module
ResNet
사람의 에러율보다 더 적은 에러를 만들어 냄.
AlexNet은 총 8개 layer를 쓴 것에 비해 ResNet은 152개의 layer를 쓴다.
layer가 깊어지면서 학습하기 어려워지는 문제점을 fast forward를 통해 해결했다.
중간의 값들을 뛰어넘어 더해진다.
이미지 처리만이 아니라 text도 convolution 처리에 성공했다.
알파고 바둑 대전에서도 convolution network가 쓰였다.
출처: https://youtu.be/Em63mknbtWo