728x90

저스틴 존슨 교수님 강의 정리

8강 합성곱 신경망 아키텍처 3 - GoogLeNet

 

 

 

 

Lec8_Convolution_Networks_Arcitecture3_GoogLeNet.pdf
0.91MB

 

 

 

 

 

이번 자료에서 핵심 주제로 아래의 5가지를 꼽았다.

- GoogLeNet 개요

- 집중적 다운 샘플링 줄기

- 인샙션 모듈

- 전역적 평균 풀링

- 부속 분류기

 

 

1) GoogLeNet 개요

- 2014년 이미지넷 분류 대회에서 구글이 VGG 모델을 이기고 대회를 우승하였습니다. 이 구글이 만든 모델 이름은 GoogLeNet으로 초창기 합성곱 신경망을 만든 LeNet을 딴 이름으로 이전에 본 다른모델과 차이점은 효율성을 목표로 한 모델이었습니다. AlexNet부터 ZFNet, VGG까지 점점 더 큰 신경망을 만들면서 더 좋은 성능을 얻을수 있었지만 계산 비용이 너무 큰 문제점이 있었습니다. 그래서 구글에선 복잡도를 줄여 휴대폰에서 돌릴수 있는 신경망 모델을 만들기 위해 고안되었습니다.

 

 

2) 집중적 다운샘플링 줄기

- GoogLeNet에서 사용된 대표적인 기법으로 집중적 다운샘플링 줄기가 있는데, 이전에 VGG나 AlexNet에서는 큰 이미지를 가지고 컨볼루션을 하다보니 계산량이 매우 큰 문제가 있다보니 입력 데이터를 맨 처음 특징 지도를 빠르게 줄이도록 하이퍼 파라미터를 조정시킨 줄기 신경망을 거침으로서 빨리 줄일 수 있었습니다. 입력의 크기가 224에서 28까지 줄을떄까지 메모리 사용량과 학습 가능 파라미터 개수, 소수점 연산량을 VGG-16과 비교해보면 구글넷이 5배 이상 가벼운걸 확인할 수 있었습니다.

 

 

 

3) 인샙션 모듈

- 다음 GoogLeNet의 대표적인 기법으로 인셉션 모듈이 있는데, 이전에 VGG는 단순히 커널 크기를 조정하는것 없이 3x3 합성곱-합성곱-풀링을 쌓아서 만들었다면, 인샙션 모듈은 4개의 평행한 가지를 만들어 다양한 커널 사이즈의 연산을 쌓아서 하이퍼 파라미터 커널 크기를 조정할 필요없는 장점이 있습니다. 이 뿐만이 아니라 큰 합성곱 연산을 하기전에 1 x 1 합성곱 연산 그러니까 병목 계층을 사용하여 미리 차원 수를 줄여 연산량을 크게 줄여내었습니다. 

 

 

 

4) 전역적 평균 풀링

- 다른 구글넷의 기법으로 전역적 평균 풀링이 있씁니다. 이전까지 본 신경망들은 마지막 출력 값들을 구하기 위해 펼침연산을 수행 후 완전 연결 계층을 여러번 연산을 하는데, 이렇게 하면 학습해야하는 파라미터 수가 매우 증가하는 문제가 있었습니다. GoogLeNet의 맨 끝에서 출력 텐서의 채널이 1024이고, 특징 지도의 크기가 7이다보니 입력과 동일한 크기를 커널 사이즈를 잡고 평균 풀링을 함으로서 펼침 연산 없이 1024 크기의 벡터를 구할수 있는 장점이 있었습니다.

 

 

5) 부속 분류기들

- 하지만 GoogLeNet은 더 깊은 신경망을 만들 수 있도록 도와주는 배치 정규화 기법이 나오기 전에 만들어진 모델이다 보니 신경망을 깊게 만들 수록 그라디언트가 사라지는 문제가 있었습니다. 이 문제를 해결하기 위해 신경망 모델 중간 지점에서 부속 분류기를 부착하여 신경망 모델 중간에서 예측 결과를 출력 하도록 만들었는데, 이렇게 한 덕분에 아주 멀리 있는 비용 그라디언트가 역전파 과정에서 사라지더라도 부속 분류기로부터도 비용 그라디언트를 받아 신경망을 전체적으로 학습시킬수 있는 기법이었습니다.

 

 

300x250
728x90

저스틴 존슨 교수님 강의 정리

ZFNet과 VGG-16

 

 

 

 

 

 

 

 

Lec8_Convolution_Networks_Arcitecture2_ZFNet_VGG16.pdf
0.84MB

 

 

 

 

 

이번 자료에서 핵심 주제로 아래의 5가지를 꼽았다.

- ZFNet

- 2013, 2014년 이미지넷 분류대회
- VGG 신경망 설계 규정
- VGG 신경망 설계 규정 2

- AlexNet과 VGG-16비교

 

 

 

1) ZFNet

- 이전에 본 AlexNet의 하이퍼 파라미터들은 수많은 시행착오를 거쳐 만들었는데, 2013년도 이미지넷 분류 대회에서 우승한 ZFNet은 알렉스넷과 기본적인 구조는 같으며 다만 하이퍼 파라미터를 더 많이 조정하여 만들어진 신경망입니다. 기존의 AlexNet의 첫번째 합성곱 계층의 커널 크기와 스트라이드를 줄여 다운샘플링을 더 자주 시키고, 3~5번째 합성곱 계층의 필터 개수를 전보다 크게 늘림으로서 성능 개선을 할수 있었다고 합니다. 하이퍼 파라미터들을 이렇게 조정 시킨 덕분에 필요한 메모리 공간과 학습 파라미터 개수, 소수점연산 횟수도 크게 증가하였구요. 그래서 AlexNet을 확대시킨 신경망이라고 할수 있을거같아요.

 

 

 

2) 2013, 2014년 이미지넷 분류대회

- 2013년 기존의 AlexNet보다 크기를 키운 ZFNet이 2012년 알렉스넷이 16.4 오류율에서 11.7로 크게 줄였습니다. 하지만 두 방법은 시행착오를 여러번 겪어 만든 신경망이라 여전히 신경망을 설계하기는 어려웠습니다. 그러다가 2014년 최초로 신경망 설계 규칙/원칙을 정하여 만든 모델인 VGG가 나왔는데, 이 규칙을 따라 신경망을 더 깊이 만들수 있게 되면서 VGG-19가 7.3의 오류율로 2014년 이미지넷 분류 대회를 우승하였습니다.

 



3) VGG 신경망 설계 규정

- VGG 모델은 3가지 신경망 설계 규칙을 가진 모델로 첫 번째는 모든 합성곱 계층은 3 x 3 필터에 스트라이드 1, 패딩이 1이며, 두번째 규칙은 모든 최대 풀링 계층은 2 x 2 필터에 스트라이드 2, 세번째 규칙은 풀링 이후에 채널의 개수를 두배로 늘리는 것으로 정해져 있었습니다. VGG-16은 AlexNet이 5개의 합성곱 계층을 가졌던것 처럼 5개의 단계를 가지고 있으며, 뒤의 4,5번째 계층에는 합성곱 계층이 추가가 되긴한데 각 단계별로 2개의 합성곱 계층과 1개의 풀링 계층으로 이루어져 있습니다. 

 

 우선 첫번째 설계 규칙 모든 합성곱 계층은 3 x 3 필터, 스트라이드 1, 패딩 1 덕분에 이 계층 2개를 쌓은게 기존의 5 x 5 크기의 합성곱 계층과 비교해보면 수용장의 범위는 작지만, 학습할 파라미터의 수와 소수점 연산 횟수가 크게 줄일수 있는 장점이 있었습니다.

 

 

 


4) VGG 신경망 설계 규정 2

- 다음으로 두번째 설계 규칙은 모든 최대 풀링은 2 x 2 필터, 스트라이드는 2 그리고 세번째 설계규칙은 풀링 후에 채널을 2배로 한다가 있었는데, 이 두 규칙 덕분에 풀링 전의 연산량과 풀링 이후 다음 단계에서도 연산량이 동일하게 유지시킬수가 있는걸 볼수 있었습니다. 그래서 채널 수가 급격히 증가하더라도 소수점 연산량이 커지지 않고 이전과 똑같이 효율적으로 계산할 수 있습니다.

 

 

5) AlexNet과 VGG-16비교

- 마지막으로 AlexNet과 VGG-16을 비교해보면, AlexNet은 5개의 합성곱 계층과 3개의 완전 연결 계층을 가지고 있고, VGG-16의 경우 5개의 완전 연결 단계와 3개의 완전 연결 계층을 가지고 있습니다. 이 두 모델을 각 계층/단계 별 메모리 사용량, 학습 가능한 파라미터, 소수점 연산 횟수를 그래프로 보았을때, AlexNet보다 전체적으로 훨씬 커진 신경망 모델인걸 알 수 있었습니다.

 

300x250
728x90

저스틴 존슨 교수님 강의 정리

알렉스넷 전반

 

 

 

 

 

 

Lec8_Convolution_Networks_Arcitecture1_AlexNet.pdf
1.84MB

 

 

 

 

 

 

 

 

 

이번 자료에서 핵심 주제로 아래의 5가지를 꼽았다.

- 이미지넷 분류 대회

- 알렉스넷의 구조

- 알렉스넷의 역사적 의의
- 메모리 사용량, 파라미터 개수, 소수점 연산 횟수

- 데이터 추이




 

1) 이미지넷 분류 대회

- 이전에 이미지 분류에 사용되는 대표적인 데이터셋으로 이미지넷 데이터셋이 있다고 배웠었는데, 이 데이터를 활용한 이미지 분류 대회가 매년 열리고 있습니다. 딥러닝이 활용되기 이전에 이미지넷에서 우승한 방법들은 이미지로부터 추출한 특징들을 조합하여 분류하는 방식이었는데 오류율이 25%대로 아주 높았었습니다. 하지만 2012년 인공신경망 기반 방법인 알렉스넷이 나오면서 오류율을 25%에서 16%대로 크게 줄일수 있었고, 이후 이미지넷 분류 대회에서 신경망 방법이 널리 사용되게된 시작점이었습니다.

 

 

 

 

2) 알렉스넷의 구조

- 알렉스넷은 227 x 227 입력을 받고, 5개의 합성곱 계층과 최대 풀링, 3개의 완전 연결 계층과 ReLU 함수를 활성화 함수로 사용하고 있어요. 알렉스넷의 특이한 점이 2가지가 있는데 하나는 알렉스넷이 나온 2012년 당시에는 GPU 메모리가 작아 2개의 GTX580로 아예 신경망을 나누어 두 GPU에서 학습시켰었고, 다른 하나는 배치 정규화가 나오기 이전에 다른 종류의 정규화를 사용했는데 지역 반응 정규화라는 방식을 사용하였다고 합니다.

 

 

 

 

3) 알렉스넷의 역사적 의의

 또 알렉스넷이 컴퓨터 비전 연구에 있어서 얼마나 중요한지 인용 횟수를 보면서 살펴보았는데, 2019/9까지 46,000번 인용되었으며 찰스 다윈의 종의 기원이 50,000번, 이나 셰논의 정보 이론에 관한 논문이 69,351번 인용되었던것 만큼 인용 횟수 만으로 비교할 수는 없지만 아주 영향력이 큰 논문이라고 할수 있었습니다.

 

 

 

 

 

4) 메모리 사용량, 파라미터 개수, 소수점 연산 횟수

 다음으로 알렉스넷의 각 계층별 메모리 사용량과 학습 가능한 파라미터의 개수, 그리고 소수점 연산 횟수 등에 대해서 정리하였습니다. 우선 메모리 크기의 경우 출력 값 하나당 4바이트를 차지할 경우 4 x 채널 개수 x 가로 x 세로로 구할수 있었습니다. 다음 학습 가능한 파라미터 개수는 합성곱 계층의 가중치 개수 = 출력 채널의 개수 x 입력 채널 개수 x 커널 크기 x 커널 크기 + 편향 개수(출력 채널 개수)로 구하였으며, 마지막으로 소수점 연산 횟수 = 출력 원소 개수 x 출력 원소 하나당 연산 횟수로 구할 수 있었고, 이를 모든 층에다가 계산하여 알렉스넷에서 전체 필요한 메모리 공간과 학습 파라미터 개수, 연산 횟수를 정리할 수 있겠습니다.

 

 

5. 데이터 추이

- 마지막으로 각 계층별 메모리 공간과 학습 가능한 파라미터 개수, 소수점 연산 횟수의 추의를 보면서 어떻게 신경망의 설계해 나갈지에 대한 방향을 살펴보았습니다. 우선 합성곱 계층의 경우 필터의 개수가 많다보니 메모리 사용량이 크며 맨 처음에 해상도가 큰 탓에 가장 컸다가 점점 줄어드는 분포를 보였습니다. 그다음 완전 연결 계층은 벡터가 되다보니 필요한 데이터 공간이 크게 줄었습니다.

 

 다음으로 학습 가능한 파라미터 개수는 합성곱 연산의 경우 채널과 커널 크기가 작다보니 대체적으로 작지만 완전 연결 계층에서는 전체 데이터가 펼쳐지는 탓에 학습 파라미터가 급격히 증가했다가 점점 줄어드는 추세를 보입니다. 마지막으로 소수점 연산 횟수의 경우 필터의 갯수와 데이터가 클때 가장 연산횟수가 많았습니다. 이와 같이 알렉스넷의 출력에대해 세가지 추이를 정리할 수 있었습니다.

 

300x250
728x90

 

저스틴 존슨 교수님 강의 정리

다양한 합성곱 연산과 풀링 연산, LeNet-5, 정규화 기법 등

 


https://www.youtube.com/watch?v=ANyxBVxmdZ0&list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&index=7

 

 

 

 

Lec7_Convolution_Networks2.pdf
2.10MB

 

 

 

 

 

이번 자료에서 핵심 주제로 아래의 5가지를 꼽았다.

-  1 x 1 합성곱 연산

- 1D, 3D 합성곱 연산
- 풀링 연산
- LeNet
- 정규화 기법들

 

 

1) 1 x 1 합성곱 연산

 지난번 합성곱 신경망 1에서는 벡터를 처리하는 완전 연결 계층을 확장하여 공간적 정보들을 처리할수 있는 합성곱 연산에 대해서 대략적으로 알아봤었다. 합성곱 연산은 특정 크기의 필터들이 주어지고, 이 필터들을 슬라이딩 시키면서 출력 텐서를 만드는 연산이었는데, 합성곱 연산의 특수한 경우로 1 x 1 컨볼루션이 있었다.

 

 합성곱 연산의 출력 결과는 두가지 관점으로 볼수 있었는데, 필터 하나당 특징 지도/활성 지도가 하나씩 만들어지다보니 특징 지도 단위로 관점과 채널 단위가 아닌 이미지 픽셀 그리드 단위로 보면서 한 픽셀이 채널 길이 만큼의 차원을 갖는 벡터 단위의 관점이 있었다. 1 x 1 컨볼루션 연산은 벡터 단위로 출력 텐서를 보는 관점으로 특이한 점이라면 이미지의 크기/공간적 차원을 줄이지는 않지만 채널의 크기를 바꿔주더라. 아래의 그림의 경우 64 x 56 x 56의 텐서가 32 x 1 x 1 합성곱 연산으로 32 x 56 x 56으로 채널로 변환되었다.

 

 

 

2) 1D, 3D 합성곱 연산

 이전에 본 2D 합성곱 연산은 3차원 텐서 데이터 채널 x 가로 x 높이 형태의 데이터를 2차원 합성곱 필터를 이용하여 처리하였습니다. 이 외에도 1차원, 3차원 합성곱 필터를 이용한 연산도 있는데, 1차원 합성곱 연산은 텍스트나 음성 같은 순서 있는 데이터를 처리하는 경우에 사용하고, 3차원 합성곱 연산은 3차원 데이터 예를들면 점구름 point cloud같은 데이터를 가지고 합성곱 연산을 할때 사용하고 있습니다. 또 이런 다양한 합성곱 연산들이 텐서플로우와 파이토치 같은 딥러닝 프레임워크들에서 API로 제공되고 있습니다.

 

 

 

 

 

 

 

 

 

 

3) 풀링 계층

 풀링 연산은 입력 텐서의 이미지 크기/공간적 차원을 줄이기 위해 사용되는 연산으로 하이퍼 파라미터로 커널 사이즈와 스트라이드 그리고 풀링 함수를 가지고 있었습니다. 커널 사이즈는 풀링 연산을 할 수용장 범위고, 스트라이드는 일반적으로 커널 사이즈 만큼 주면서 수용장 범위가 겹치지 않도록 해주었습니다. 풀링 함수로 맥스 함수를 사용하는 경우 수용장 영역에서 가장 큰 입력 값을 출력으로 설정해주면서 입력 크기를 크게 줄일수가 있었습니다.

 

 풀링 계층의 중요한 특징은 합성곱 계층에서도 스트라이드를 크게 주어 다운 샘플링이 가능하였지만 합성곱 필터의 파라미터들을 학습시켜주어야 되었습니다. 하지만 풀링 계층은 풀링 함수를 사용함으로서 학습할 파라미터 없이 빠르게 처리할수 있는 장점을 가지고 있었습니다.

 

 

 

4) LeNet-5

 

 다음으로 초기 합성곱 신경망 모델인 LeNet-5에 대하여 살펴보았습니다. LeNet-5는 1998년 Yann LeCun이 미국 우편 서비스 우편 번호 손글씨 인식에 활용 할수 있도록 만든 모델로 합성곱-ReLU-풀링, 합성곱-ReLU-풀링, 완전연결, 완전연결계층 등으로 구성되어 있었습니다.

 

 합성곱 연산을 통해서 입력 이미지의 지역적인 특징들을 추출해내고, 다운 샘플링을 거친 뒤 펼침 연산을 통해서 공간적 정보들을 없애 출력을 백터 형태로 만들고, 최종적으로 10개의 숫자 스코어를 출력하되는데 이 신경망의 특징이라면 공간적 크기, 이미지의 크기가 줄어드는 동안 채널의 숫자가 증가하는걸 볼수 있었습니다. 

 

 

 

 

5) 배치 정규화

 

 배치 정규화는 정규화를 이용하여 내부 공분 변동을 제거하는 기법으로 입력 텐서의 데이터가 왜곡된 형태의 분포를 따르는 경우 정규화를 시켜 제거하고, 최적화 성능을 개선시키는 방법이었습니다. 입력 텐서가 배치 데이터 개수 N x 데이터 차원 D의 형태로 들어올 때 각 차원에 대해서 평균과 분산을 구해 정규화를 시키고, 여기다가 학습 가능한 스케일, 변동 파라미터를 이용하여 정규화의 크기와 위치를 조정할수 있도록 구상되었습니다.

 

 하지만 배치 정규화는 훈련 때는 배치 단위로 정규화를 수행하고 테스트 떄는 훈련 데이터 전체로 구한 평균과 분산을 가지고 사용하다보니 훈련때와 시험때가 다르게 동작하는 단점이 있었습니다. 이런 문제점을 극복하고자 완전 연결 신경망의 경우 배치 데이터 단위가 아닌 층 단위로 사용하는 계층 정규화기법이, 합성곱 계층의 경우 인스턴스 단위로 정규화 시키는 인스턴스 정규화가 나왔으며, 더 나아가 계층 전체가 아닌 한 계층의 일부 채널만 그룹으로 묶어 정규화를 수행하는 그룹 정규화 까지나왔다고 합니다.

300x250
728x90

Lec7_Convolution_Network.pdf
1.59MB

 

 

저스틴 존슨 교수님 강의 정리

 

 

 

 

 

 

 

 

 

 

 

300x250
728x90

미시건대 저스틴 존슨 교수님 강의 정리

 

 

Lec6_Backpropagation2.pdf
3.99MB

 

 

 

 

 

300x250
728x90

미시건대 저슨틴 존슨 교수님의 컴퓨터 비전과 딥러닝 강의 6강 역전파에 대하여

www.youtube.com/watch?v=dB-u77Y5a6A&t=1391s

 

 

 

 

Lec6_Backpropagation.pdf
3.77MB

 

 

 

 

 

 

300x250
728x90

미시건대 저스틴 존슨 교수님 강의 정리
https://www.youtube.com/watch?v=g6InpdhUblE&t=2287s

 

 

 

 

Lec5_Neural Network2.pdf
1.04MB

 

 

300x250
728x90

미시건대 저스틴 존슨 교수님 강의 정리
https://www.youtube.com/watch?v=g6InpdhUblE&t=1s

 

 

 

 

Lec5_Neural Network.pdf
2.48MB

 

 

 

 

300x250
728x90

미시건대 저스틴 존슨 교수님 강의 정리
https://www.youtube.com/watch?v=YnQJTfbwBM8&t=2621s

 

 

 

 

Lec4_Optimization.pdf
1.51MB

 

 

300x250

+ Recent posts