본문 바로가기
Computer Science/Deep Learning

[비전공자용] 딥러닝이 몇 년 전부터 뜨고 있는 이유 (feat. AlexNet) VGG, GoogLeNet, ResNet은 무엇?

by 롱일스 2020. 7. 30.
반응형

 

이번 포스트에서는 딥러닝이 어떻게 주목받게 되었고 왜 많은 사람들이 딥러닝에 열중하는 지 그 이유에 대해서 알아보려고 합니다. 


추가로 핫한 딥러닝 기법에 대해서도 맛보기로 소개하겠습니다.

 


 

딥러닝이 처음으로 큰 주목을 받게 된 계기는 2012년에 열린 ILSVRC 대회였습니다. 

ILSVRC - ImageNet Large Scale Recognition Challenge

이 대회는 이미지 인식 기술을 겨루는 대회입니다. 
(누구_기술이_더_이미지_인식을_잘_하나_대회)

2012년에 이 대회에서 AlexNet이 압도적으로 우승하게 됩니다.

 

AlexNet은 딥러닝에 기초한 기법으로
이전까지 이미지 인식을 접근했던 방식과는 차별점이 있는
아주 획기적인 기법으로 이슈가 됩니다.

 

2012년을 기점으로 이 대회에서는 항상 
딥러닝이 주목을 받고 주인공이 되었습니다.


그런데 이미지넷 ImageNet이 뭘까요?

이미지넷은 100만 장이 넘는 이미지를 담고 있는 데이터셋으로 
다양한 종류의 이미지를 포함하고 있고, 
각 이미지에는 레이블이 붙어 있습니다.

사진이 약간 구토유발해서 작게 넣었습니다...

http://www.image-net.org/이미지넷 사이트에 들어가보면
2020년 7월 30일 기준 14,197,122개의 이미지가 있다고 하네요...
(사진이 많아서 그런지 사이트 로딩 속도가 겁나 느리다..)

여기 사이트 구경해보면 별별 희한한 사진들이 다 있습니다.
세상을 탐험해보고자 하시는 분들은 저 사이트만 들어가도 충분할 정도..
거의 인스타그램 급인듯요..

다시 ILSVRC 대회 얘기로 돌아와 보겠습니다.
이 대회에는 시험 항목이 있는데, 
그 중에 분류 classification 항목이 있습니다.

분류 부문에서는 1,000개의 클래스를 제대로 분류하는지를 봅니다.
이 분류 부문에서 2012년 이후에 항상 1등은 딥러닝 방식이 차지했습니다.
2015년에는 150층이 넘는 심층 신경망인 ResNet이 오류율을 3.5%까지 낮췄습니다.
참고로 이 오류율은 인간보다 우수한 결과라고 합니다.
(예언)-기계가 이 세상을 지배할 날 얼마 남지 않았습니다. by. 앙팡디

최근에는 많은 분들이 알고 계신 
VGG, GoogLeNet, ResNet이 좋은 성적으로
딥러닝 업계에서 활약하고 있습니다.

그럼 지금부터 웃음기 쫙 빼고 VGG, GoogLeNet, ResNet에 대해
알아보도록 하겠씁니다.


1. VGG

먼저 VGG는 합성곱 계층과 풀링 계층으로 구성되는 '기본적'인 CNN입니다. 
차이점이라면 16 또는 19층으로 계층을 깊게 만든 게 특징입니다.
층의 깊이에 따라 VGG16, VGG19라고 부릅니다.

VGG16 출처: https://www.geeksforgeeks.org/vgg-16-cnn-model/

VGG는 3X3의 작은 필터를 사용한 합성곱 계층을 연속으로 거친다는 게 특징입니다. 
합성곱 계층에 2 ~ 4회 연속 풀링 계층을 둬서 크기를 절반으로 줄이는 처리를 반복합니다.
그리고 마지막엔 완전연결계층을 통과시키고 결과를 출력합니다.

VGG는 아직도 많이 사용하고 있는 CNN이고
구성이 다른 친구들에 비해 간단해서
많은 분들이 응용해서 사용하는 것 같습니다.
참고로 VGG는 2014년에 대회에서 2위에 올랐습니다.
(구글넷보단 순위가 낮지만 성공한 2위... 아아... 떠오른다.. 누군가가..)


2. GoogLeNet

다음으로 VGG보다 성능이 좋은 GoogLeNet에 대해 알아보겠습니다.

GoogLeNet 논문 (Credit - Going Deeper with Convolutions, Christian Szegedy)

후... 그만 알아보겠습...

위의 그림을 보면 구성이 아주 복잡해 보이는데, 
그래서 자세히 살펴보면 우리가 아는 것들로 구성되어 있습니다.
(그래봤자 너도 CNN이잖아 하하 너따위...)

GoogLeNet의 특징은 세로 방향으로도 깊지만
가로 방향도 깊다는 것이 특징입니다.
(여기서 세로는 우리가 보는 가로이고, 가로는 우리가 보는 세로...
사진을 반시계방향으로 90도 회전시켜서 보세요...)

GoogLeNet은 가로 방향에 '폭'이 있습니다. 
이 구조를 인셉션 구조라 하는데 그 기반 구조를 보면
아래와 같습니다.

Credit - Going Deeper with Convolutions, Christian Szegedy

인셉션 구조는 크기가 다른 필터와 풀링을 여러 개 적용해서 결과를 결합합니다.
이런 인셉션 구조를 하나의 구성요소(빌딩 블록)로 사용하는 게 대표적인 특징입니다.

GoogLeNet은 1 X 1 크기의 필터를 사용하는 합성곱 계층을 많은 부분에서 쓰고 있습니다.
이 1 X 1의 합성곱 연산은 채널 쪽으로 크기를 줄여서 매개변수 제거와 고속 처리에 기여합니다.


3. ResNet

마지막으로 ResNet에 대해서 알아보겠습니다.

ResNet - Residual Network

ResNet은 마이크로소프트 팀이 개발한 네트워크입니다.

대표적인 특징은 지금까지의 네트워크들보다 
층을 더더더더더더 깊게 할 수 있는 장치를 가지고 있다는 겁니다.

무조건 층을 깊게 해야 성능이 그에 비례하게 향상되는 것은 아닙니다.
딥러닝 학습에서 층이 투머치하게 깊으면 
오히려 학습이 잘 안되고 성능이 떨어지는 경우도 많이 있습니다.

ResNet은 이런 문제를 해결하기 위한 장치인
스킵 연결 skip connection을 도입했습니다. 
(스킵 연결을 도입했다고 해서 층을 무조건 겁나 깊게 한다고 
성능이 비례하게 계속 좋아지는 건 아닙니다. 그래도 한계가 있습니다.)

스킵 연결이란
입력 데이터를 합성곱 계층을 건너뛰고
출력에 바로 더하는 구조를 말합니다.

ResNet의 구성요소: 'weight layer'는 합성곱 계층을 말한다.

위의 그림을 보면
입력 x를
연속한 두 합성곱 계층을 건너뛰고
출력에 바로 연결합니다.

이렇게 건너뛰지 않으면
출력이 F(x) 이지만
건너뛴 것도 더해서
출력이 F(x) + x 가 됩니다.

이렇게 해서 역전파 때 스킵 연결이 신호 감쇠를 막아줘서
층이 깊어져도 학습을 효율적으로 할 수 있게 해줍니다.

다시 설명하면,
스킵 연결은 입력 데이터를 그대로 흘려서
역전파 때도
상류의 기울기를 그대로 하류로 보내게 합니다.
상류의 기울기에 아무 수정도 가하지 않고 그대로 흘리는 거죠.

그래서 스킵 연결로 기울기가 작아지거나 지나치게 커질 걱정 없이
앞 층의 의미 있는 기울기가 전해지게 하는 것입니다.
층을 깊게 할수록 기울기가 작아지는 소실 문제를
스킵 연결이 다소 완화시켰다고 볼 수 있는 거죠.

(가중치 갱신할라고 미분하면 할수록 상수항만 생기고 상수항도 다음 미분 때 사라지고..
이런걸 극복할라고 이전에 얻은 데이터인 변수 X를 따로 또 집어넣었다고
생각하면 좀 도움이 될 것 같습니다.)

그래서 ResNet은 VGG 신경망을 기반으로 스킵 연결을 도입해서
층을 더 깊게 만들 수 있었습니다.

(이제는 모두 마음의 준비가 되셨으리라 생각합니다.....)

3


2


1

ResNet구조 Credits- Deep Residual Learning for Image Recognition, Kaiming He (2015)

(보면 볼수록 시력이 나빠지는 것 같은 구조네요..ㅎㅎ)

ResNet은 합성곱 계층을 2개 층마다 건너뛰면서 층을 깊게 합니다.
실험 결과 150층 이상으로 해도 정확도가 오르는 모습을 확인할 수 있습니다.

2015년 대회에서 오류율이 3.5%라는
엄청난 결과를 보여주었습니다.
(이 정도 복잡하면 뭐... 3.5% 정도... 가능하겠다.. 대다나다..)

Training on CIFAR-10. 점선- training error, 굵은실선 - denote testing error (Credits- Deep Residual Learning for Image Recognition, Kaiming He (2015))

근데 정말 변태같은 점은
여기 논문에 가보면 알겠지만 얘네들은 1202층까지 테스트 해봤다는 거...

110층보다 에러가 낮게 나와서 뭐 거기까지 갈 필욘 없다는 걸 증명하긴 했지만
1202층까지 테스트하려면 몇 시간이 걸리는걸까요... 흠...

이렇게 대신 수고해주신 분들께 감사한 점은,
이미지넷이 제공하는 거대한 데이터셋으로 학습한
가중치 값들을
다른 신경망에 복사해서
재학습을 수행할 수 있다는 것입니다.

학습시키는 거 나도 해보고 싶은데
데이터도 부족하고 기존에 이미 학습 잘 된 가중치로 
해보고 싶다 하시면
갖다 쓰시면 됩니다 ㅎㅎ
이걸 전이학습 transfer learning이라고 합니다.
(장비가 후달리는 저같은 사람은 감사합니다 하고 넙죽 가져다 쓰면 됩니다...주륵)


오늘은 좀 길게 딥러닝이 왜 핫해졌는지! 
왜 어느 순간 다들 하고 있는지!
그리고 유명한 딥러닝 기술들은 뭔지!
대략적으로 살펴봤습니다.

조금이나마 도움이 되셨기를 바라면서 이번 포스트는 마치도록 하겠습니다~~

 

딥러닝을 적용하면서 획기적인 발전을 이끌어낸 분야들에 대해 공부하실 분들은 아래 포스트를 참고해주세요!

2020/07/30 - [Computer Science/Deep Learning] - [비전공자용] 딥러닝은 대체 어디에 사용하는 걸까? (스크롤 압박 주의)

 

[비전공자용] 딥러닝은 대체 어디에 사용하는 걸까? (스크롤 압박 주의)

많은 분들이 아시다시피 딥러닝은 이미지, 음성, 자연어 등 많은 분야에서 뛰어난 성능을 보여줍니다. 이번 포스트에서는 딥러닝을 활용해서 할 수 있는 일들에 대해서 자세히 알아보려고 합니�

huangdi.tistory.com

 

[출처] Deep Learning from Scratch, ゼロ から作る

728x90
반응형