반응형

심층 신경망

 

8.1 더 깊게

8.1.1 더 깊은 신경망으로 

손글씨 숫자를 인식하는 심층 cnn

채널 수 : 16, 16, 32, 32, 64, 64

가줓이 초깃값: He 초깃값

가중치 매개변수 갱신 : Adam

 

3x3 의 작은 필터를 사용한 합성곱 계층

활성화 함수는 ReLU

완전연결 계층 뒤에 드롭아웃 계층 사용

Adam을 사용해 최적화

가중치 초기값은 'He의 초깃값'

 

8.1.2 정확도를 더 높이려면

data augmentation: 입력 이미지(훈련 이미지)를 알고리즘을 동원해 '인위적'으로 확장합니다.

미세한 변화를 주어 이미지의 개수를 늘리는 것

crop이미지 일부를 잘라내는

flip*좌우를 뒤집는

밝기 등의 외형 변화

확대  축소 등의 스케일 변화

 

8.1.3 깊게 하는 이유

이론적인 근거는 아직 많이 부족한 것이 사실이다.

연구와 실험 결과를 바탕으로 설명할 수 있는 것이 몇가지 있다.

 

1. ILSVRC로 대표되는 대규모 이미지 인식 대회의 결과에서 파악 할 수 있다.

층의 깊이에 비례해 정확도가 좋아진다.

깊게 하는 이점:

 신경망의 매개변수 수가 줄어든다는 것입ㄴ디ㅏ.

 층을 깊게 한 신경망은 깊지 않은 경우보다 적은 매개변수로 같은(혹은 그 이상)수준의 표현력을 달성 할 수 있다.

 5x5 -> 연산 1회   (5x5) => 25개

 3x3 -> 2회 반복하여 5x5 대체 가능 (2x3x3) => 18개

 3x3 3회  => 7x7

 

receptive field:

작은 필터를 겹쳐 신경망을 깊게 할 때의 장점은 매개변수 수를 줄여 넓은 수용 영역을 소화할 수 있다는 데 있다.

(수용 영역은 뉴런에 변화를 일으키는 국소적인 공간 영역)

게다가 층을 거듭하면서 ReLU 등의 활성화 함수를 합성곱 계층 사이에 끼움으로써 신경망의 표현력이 개선됩니다.

이는 활성화 함수가 신경망에 '비선형' 힘을 가하고 , 비선형 함수가 겹치면서 더 복잡한 것도 표현할 수 있기 떄문ㅇ

 

2. 학습의 효율성

학습 데이터의 양을 줄여 학습을 고속으로 수행할수 있다는 뜻

 

합성곱 계층에서는 에지 등의 단순한 패턴에 뉴런이 반응하고 층이 깊어지면서 텍스처와 사물의 일부와 같이 점차 더 복잡한 것에 반응한다.

 

3. 신경망을 깊게 하면 학습해야 할 문제를 계층적으로 분해 할 수 있습니다.

각 층이 학습해야 할 문제를 더 단순한 문제로 대체할 수 있는 것이죠 .

 

4. 정보를 계층적으로 전달 할 수 있다는 점도 중요

예: 에지를 추출한 층의 다음 층은 에지 정보를 쓸 수 있고 , 더 고도의 패턴을 효과적으로 학습하리라 기대할 수 있습니다.

즉 , 층을 깊게 함으로써 각 층이 학습해야 할 문제를 '풀기 쉬운 단순한 문제'로 분해할 수 있어 효율적으로 학습하리라 기대할 수 있습니다.

 

 

8.2 딥러닝의 초기 역사

이미지 인식 기술을 겨루는 장인 ilsvrc imageNet Large scale visual recognition challenge 2012년 대회

AlexNet

 

8.2.1 이미지넷 

이미지넷 은 100만 장이 넘는 이미지를 담고 있는 데이터셋

ILSVRC대회:

분류 classification 

톱-5 top-5 error  확률이 가장 높다고  생각하는 후보 클래스 5개 안에 정답이 포함되지 않는 , 즉 5개 모두가 틀린 비율

 

 

2012년 AlexNet

2015년 ResNet 

 

8.2.2 VGG

합성곱 계층과 풀링 계층으로 구성되는 '기본적'인 CNN입니다.

비중있는 층(합성곱 계층, 완전 연결 계층)을 모두 16층(혹은 19층)으로 심화한게 특징입니다.( layer에 따라서 VGG16, VGG19 )

VGG : 주목할 점 : 3X3 작은 필터를 사용한 합성곱 계층을 연속으로 거친다는 것입니다.

2~ 4회 연속으로 풀링 계층을 두어 크기를 절반으로 줄이는 처리를 반복합니다. 

그리고 마지막에는 완전연결 계층을 통과시켜 결과를 출력합니다.

VGG는 2014년 2위

성능 면에서는 1위인 GoogLeNet에 뒤지지만 , VGG는 구성이 간단하여 응용하기 좋습니다.

 

8.2.3 GoogLeNet

인센션 구조

GoogLeNet은 세로 방향 깊이뿐 아니라 가로 방향도 깊다는 점이 특징입니다.

GoogLeNet 가로 방향에 '폭'이 있습니다.

이를 인셉션 구조라 하며  , 그 구조는 위의 그림과 같습니다.

인셉션  구조 : 같이 크기가 다른 필터(와 풀링)를 여려 개 적용하여 그 결과를 결합니다.

이 인셉션 구조를 하나의 빌딩 블록(구성요소)으로 사용하는 것이 GoogLeNet의 특징인 것이죠 , 또 GoogLeNet 에서는 1x1 크기의 필터를 사용한 합성곱 계층을 많은 곳 에서 사용합니다. 

이 1x1 의 합성곱 연산은 채널 쪽으로 크기를 줄이는 것으로 , 매개변수 제거와 고속 처리에 기여합니다.

 

8.2.4 ResNet 

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

특징: 지금 까지 보다 층을 더 깊게 할 수 있는 특별한 '장치'에 있습니다.

깊게 하는 것이 성능 향상에 중요하다는 건 알 고 있었지만 그러나 딥러닝의 학습에서는 층이 지나치게 깊으면 학습이 잘 되지 않고 , 오히려 성능이 떨어지는 경우도 많습니다.

ResNet에서는 그런 문제를 해결하기 위해  스킵연결skip connection을 도입합니다.

이 구조가 층의 깊이에 비례해 성능을 향상시킬 수 있게 한 핵심입니다.( 물론 층을 깊게 하는 데는 여전히 한계가 있습니다.)

 

시킵 연결이란 아래 그람와 같이 입력 데이터를 합성곱 계층을 건너뛰어 출력에 바로 더하는 구조를 말합니다.

스킵 연결은 층이 깊어져도 학습을 효율적으로 할 수 있도록 해주는데 , 이 는 역전파 때 스킵 연결이 신호 감쇠를 막아주기 때문입니다.

스킵 연결은 입력 데이터를 '그대로 ' 흘리는 것으로 , 역전파 때도 상류의 기울기를 그대로 하류로 보냅니다.

여기에서의 핵심은 상류의 기울기에 아무런 수정도 가하지 않고 '그대로 '흘린다는 것이죠 . 그래서 스킵 연결로 기울기가 작아지거나 지나치게 커질 걱정 없이 앞 층에 '의미 있는 기울기'가 전해지리라 기대할 수 있습니다.

층을 깊게 할 수록 기울기가 작아지는 소실 문제를 이 스킵 연결이 줄여주는 것입니다.

VGG신경망을 기반으로 스킵 연결을 도입하여 층을 깊게 했습니다.

ResNet은 합성곱 계층을 2개 층마다 건너뛰면서 층을 깊게 합니다

 

전이학습 transfer learning : 학습된 가중치(혹은 그 일부_를 다른 신경망에 복사한 다음, 그 상태로 재학습을 수앵합니다.

예를 들어 vgg와 구성이 같은 신경망을 준비하고 , 미리 학습된 가중치를 초깃값으로 설정한 후 , 새로운 데이터셋을 대상으로 재학습(fine tuning)을 수행합니다.

전이 학습은 보유한 데이터셋이 적을 때 특히 유용한 방법입니다.

 

반응형

' > 밀바닥부터 시작하는 딥러닝' 카테고리의 다른 글

08-3. 딥러닝  (0) 2021.01.06
08-2. 딥러닝  (0) 2021.01.04
07-3 합성곱 신경망(CNN)  (0) 2020.12.18
07-2. 합성곱 신경망(cnn)  (0) 2020.12.09
07-1. 합성곱 신경망(cnn)  (0) 2020.11.19

+ Recent posts