모던 컨볼루션 뉴럴 네트워크
모던이란 말은 좀 어폐가 있다.
2018년도까지이기 때문에 상대적으로 가장 기본적인 CNN보단 모던하지만,
완전 모던한 것은 아니다.
우리는 총 5개의 네트워크를 볼 것이다.
ImageNet Large-Scale Visula Recognition Challenge
이런 이미지 분류 성능을 보게되면
박사 한명이 자기자신이 1000개의 데이터를 트레이닝셋 해보고 자기가 체크 해보니 약 5.1%정도가 나왔다.
2015년도가 되면서 Error가 사람보다 더 성능이 좋아졌던 년도이다.
네트워크가 2개가 나뉘어져있다.GPU가 부족했기 때문
파라미터 숫자 관점에서 봤을때 11x11는 좋은 선택이 아니다.
총 5+3 = 8단짜리 뉴럴 네트워크이다.
뉴런중에서 몇개를 0으로 바꿔버림.
-> 무조껀 활용.지금이야 당연하지만, 이때당시는 잘 활용하지 않았다. 기준을 잡아줬다.
경사하강
을 최적화하기 좋다.Vanising gradient problem
활성화 함수를 사용할때, 입력의 크기가 크거나 작으면 해당 값에서 미분값이 매우작아 0이 되어버린다. 그래서 gradient가 사라져 버리는 문제가 발생한다.
신경망이 깊어질수록 0이되는 문제는 차후 뒤에 네트워크에 영향을 미칠 가능성이 있다. 이를 ReLU를 활성화함수로 사용하여 주로 완화한다.
2014년도에 ICLR에서 1등한 논문.
가장 대표적인건 3x3 컨볼루션 필터만 사용했다.
리셉티브 필드 차원에서는
3x3 두개랑 5x5 한개가 같다.
값을 계산하면 약 1.5배의 차이가 나는데,
레이어를 2개를 쌓아서 파라미터 set이 두배로 늘어나서 앞에있는게 더 파라미터를 크게 활용할 것같지만,
3x3x2 = 18
5x5 = 25
라서 같은 리셉티브 필드를 얻는것보단 5x5한개보단 3x3 2개를 활용하는게 더 효과적이다.
이후 왠만하면 3x3, 5x5, 7x7까지정도만 사용한다. 11x11는 잘사용하지않음.
VGGNet : 3x3 convolution을 이용하여 Receptive field는 유지하면서 더 깊은 네트워크를 구성한다.
1x1 컨볼루션은 디멘션 리덕션 효과가잇다고했다.(디멘션은 채널.)
Tensor의 뎁스방향의 채널을 줄인다고 했다.
네트워크를 딥하게 쌓고, 1x1 컨볼루션을 잘 사용하면 파라미터 숫자를 줄일 수 있다.
인풋단의 3x3을 여러번 활용하는게 좋다 라는걸 알게됐고,
여기 구글에서는 1x1 컨볼루션을 잘 사용해서 어떡하면 전체적인 파라미터를 줄일 수 있나를 활용해본다.
NiN(network in network) - 네트워크안에 네트워크 모양이 있다.
이렇게 3x3 컨볼루션 하기전에 1x1컨볼루션이 들어가는데 이게 중요하다.
입력과 출력만 보면 똑같다.
앞서 배운건 3x3 컨볼루션을 사용하면 5x5나 7x7보다 좋았다.
채널방향으로 dimension reduction이 일어남으로써
receptive field도 똑같은데
파라미터 숫자를 줄여준다.
Receptive Field
뉴런이 얼마나 넓은 영역을 보고 있는지 보는 척도.
가장 파라미터의 숫자가 작은 CNN 아키텍쳐는?
정답은 GoogLeNet
제너럴라이즈 펄포먼스 : 트레이닝 에러가 줄어듦에도 불구하고, test에러와 트레이닝 에러와 차이가 많이 나는걸 의미했다.
트레이닝 에러가 줄어드는데, 테스트에러가 올라가는 현상이 발생했다.
트레이닝 에러가 더 작은데도 불구하고, 테스트에러가 너무 커서 학습이 안되는 것이다.
오버피팅은 아니지만,56레이어가 더 학습능력이 떨어져 학습이 안된다.
트레이닝 에러도 같이 새츄레이팅(포화 = 출력이 한계에 다달라서 값이 더이상 증감 하지 않는 상태)
됐기 때문에 오버피팅은아님.
아무리 학습해봐도 56레이어가 20레이어 보다 학습능력이 떨어진다.
현재 층의 입력을 다음 층의 출력에 직접 더하는 구조
1x1컨볼루션으로 채널을 줄이고 3x3, 5x5을 써서 receptive field를 키우고 다시 1x1컨볼루션으로 채널을 맞춰주고.
이런식으로 파라미터 수를 줄이고 네트워크를 깊게 쌓아서 receptive field를 키우는게 많은 전략이다.
concatenation
을 하면안되냐?concatenate : 연결 (차원을 연결한다)
VGG : repeated 3x3 block ( 파라미터 줄이기 )
GoogLeNet : 1x1 Conv (채널 줄이기 )
RestNet : Skip-connection(+ 더하는것 )
DenseNet : concatenation ( 연결 )