반응형

Receptive Field:

같은 크기의 필터여도 , 풀링에 의해 작아진 특징 맵에 적용되면 원본 영상에서 차지하는 범위가 넓다. 

이 범위를 Receptive Field 라고 한다.

영상이 있을 때  -> 3x3 kernel -> 풀링 -> 상대적으로 3x3 크지면서 영상 원래 에서 보면 6x6으로

pooling하면서 적은 것에서 -> 넓은 영역으로 

 

반응형

'Deep learning > 개념' 카테고리의 다른 글

logit 의 뜻  (0) 2021.07.02
loss function  (0) 2021.03.27
Optimizer  (0) 2021.03.27
Activation Function  (0) 2021.03.27
DBN  (0) 2021.03.27
반응형

심층 신경망

 

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
반응형

본 내용은  fastcampus 딥러닝/인공지능 올인원 패키지 online을 정리한 것이다.

 

의존성이 있는 함수의 계산:

서로 서로 계산에 관계가 있다.

단점은 : 중복되는 연산이 있을 수 있다.

 

동적 계획법 : Dynamic Programming -> 알고리즘

첫 계산시 값을 저장하므로 중복 계산이 발생하지 않는다. 

나중에 사용할 것을 미리 저장하고 나중에 사용한다.

피보나치 계산 등 동벅 계획법을 사용하였다.

Recursion(재귀)  

 

연쇄 법칙 Chain Rule:

연속된 두 함수의 미분은, 각 함수의 미분을 연쇄적으로 곱한 것과 같다. 

 

심층 신경망의 미분: 연쇄 법칙을 이용하려면 손실 함수의 미분이 필요하다.

저장해 두었다가 중복 연산을 피할 수 있다.

 

앞쪽으로 미분을 계산하는 것이 역전파 학습 법 : Back-Propagation

 

블랙박스 모델의 학습:

학습 목표 : 손실 함수를 최소화 하는 매개변수를 찾는다.

수치적 기울기:  각 스칼라 변수를 각각 조금씩 바꾸어 대입해 보면서 수치적 기울기를 구한다.

 

fully connect layer:

sigmoid 함수의 미분: 

역전파 알고리즘: BP

 

 

수치미분

 

 

 

 

 

 

python 환경설정

anaconda 로 설치 -window

www.anaconda.com/products/individual#windows

 

Anaconda | Individual Edition

Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

 

 

설치 

 

 

jupyter notebook Launch 한다.

New => Python로 해서 새로운 파일 생성한다.

 

파일이 녹색으로 되여있으면 실행중 이다.

 

 

합성공 연산과 이미지 필터

아날로그 신호처리

LTI 시스템은 선형적이고 시간의 영향을 받지 않는다.

사람은 LTI시스템이 아니다.

 

 

Dirac 델타 함수 

 

 

임펄스 응답 : -> filter

 

Convolution  

함수 두개를 합성해서 곱한다.

두 함수의 곱을 적분하여 계산

겹치는 부분에 적분을 한다.

 

잡음 제거 필터

 

2차원 신호 

흑백 영상은 각 픽셀이 0~1 사이의 실수로 된 2-D 신호로 표현할 수 있다.

컬러 영상은 RGB 3채널로 구성된 2-D 신호로 표현할 수있다.

 

합성곱 계산

양상과 겹치는 부분을 곱한다.

 

 

잡음 제거 필터 :

가우시안 

미분 필터 

 

뉴런: Nureon

input 

weight

bias 

 

Convolutional layer

의미: '특징' 이 나타나는 위치를 찾아내는 것이 다.

특정 위치의 값을 크게 해주는 것이다.

 

 

pooling layer: 영상의 크기가 줄어들고 , 정보가 종합된다.

average, max

flatten  : 아무런 연산도 안일어난다고 생각하면 된다.

fully connected layer: 추출한 특징을 얕은 신경망을 사용하는 것과 동일하다.

 

Receptive Field: input 영상이 있을 경우 얼마만큼 차지하는 범위

 

 

LeNet - 5 : 98년도 

VGG-16: 2014년도 

 

 

Convolutional layer

Feature map

 

padding

zero-padding

 

stride 하나씩 거너뛰여서 한다. 출력의 크기가 줄어든다.

pooling

 

 

배치 정규화 

vanilla gradient descent 

 

stochastic gradient descent SGD: 

gradeint 를 한번 업데이트 하기 위해 일부의 데이터만을 사용한다.

 

 

mini batch 학습법

학습데이터 전체를 한번 학습하는 것을 epoch

한번 gradient를 구하는 단위를 batch라고 한다.

 

Internal Covariate shift

 

 

Batch Normalization : 정규분포 

 

Training Phase:

학습 단계에서 들어갔을 경우 , 정규화를 한다. 

각 배치별로 계산 

 

Batch Normalization -> Relu하면 0아래 다 날라서  그래서 결정 해주는 것이 있다. 

Batch Normalization로 인해 , 모든 계층의 Feature 가 동일한 Scale이 되어 학습를 경쟁에 유리하다.

 

 

추론 단계 Inference Phase:

 

training 으로 아니면 test로 하는지 

 

합성공 신경망 역사 

 

GoogLeNet(Inception) -> 복잡하다.

Inception 모듈

 다양한 feature를 나누어서 학습한다.

 Bolleneck구조 : 연산량을 줄이기 위해 1x1 합성곱 계층. 이러한 구조  줄어든 개수의 영역 

   연산량을 줄인다.

 Receptive field를 유지하면서 파라미터의 수와 연산량을 줄였다.

파라미터 수 줄이는것은 연산량을 줄이는 것과 같다.

추가적으로 분류기 달아서 기울기 소실 문제 해결한다.

 

Residual Network

Facebook에서 딥러닝 네트워크

152 layer

skip-connectin :  Feature 를 추출하기 전후 더한다.

Identity Mapping: 

Pre-activation

 

Densely Connected ConvNets DenseNet

중간중간에 Dense를 하나 추가한다.

ResNet의 아이디어를 계승하여 

Dense Block 

Growth Rate  = 4 => 4만큼의 feature를 만든다.

Bottleneck구조 :  급격하기 증가하는 것을 막기 이해 , 연산량을 줄인다.

 

 

반응형

'교육동영상 > 01. 딥러닝인공지능' 카테고리의 다른 글

11 . 순환 신경망  (0) 2020.12.07
10. 합성곱 신경망 구현  (0) 2020.12.04
08. 딥러닝 기초  (0) 2020.12.02
07. 이미지 분석 pytorch  (0) 2020.12.01
06. 이미지 분석 tensorflow 2.0  (0) 2020.11.25

+ Recent posts