밑바닥부터 시작하는 딥러닝
밑바닥부터 시작하는 딥러닝
- 활성화 함수는 입력 신호의 총합이 활성화를 일으키는지를 정하는 역할을 한다.
- 신경망에서는 활성화 함수로 비선형 함수를 사용해야함. 선형 함수를 이용하면 신경망의 층을 깊게하는 의미가 없어지기 때문.
- 딥러닝을 종단간 기계학습(end-to-end machine learning)이라고도 한다. 여기서 종단간은 '처음부터 끝까지'라는 의미로 데이터(입력)에서 목표한 결과(출력)를 사람의 개입없이 얻는다는 뜻을 담고있다.
-
?
왜 손실 함수를 설정하는가?신경망을 학습할 때 정확도를 지표로 삼아서는 안된다. 정확도를 지표로 하면 매개변수의 미분이 대부분의 장소에서 0이 되기 때문이다. --> 손실함수 사용!
- 하이퍼파라미터 : 사람이 직접 설정해야 하는 매개변수. 그냥 매개변수와는 다르다.
- 교차 엔트로피 오차 : $ E = -\sum_k t_k logy_k $ 정답일 때의 출력이 전체 값을 정하게 된다. $t_k$가 정답에 해당하는 인덱스의 원소만 1이고 나머지는 0
- 연쇄법칙
- Affine 계층 : 신경망의 순전파 때 수행하는 행렬의 곱을 기하학에서는 어파인 변환 이라고 한다. 어파인 변환을 수행하는 처리를 'Affine 계층'이라는 이름으로 구현
-
Softmax-with-Loss 계층 :
입력 값을 정규화(출력의 합이 1이 되도록 변형)하여 출력
- 확률적 경사 하강법(SGD)
기울어진 방향으로 일정 거리만 가겠다는 단순한 방법
- 모멘텀(Momentum)
'운동량'을 뜻하는 단어로 물리와 관계가 있다. 기울기 방향으로 힘을 받아 물체가 가속된다. SGD와 비교하여 지그재그가 덜하다. 공이 그릇 바닥을 구르는듯한 움직임을 보인다.
- AdaGrad
신경망 학습에서는 학습률이 중요하다. 이 값이 너무 작으면 학습시간이 너무 길어지고, 반대로 너무 크면 발산하여 학습이 제대로 이뤄지지 않는다. 이 학습률을 정하는 효과적 기술로 학습률 감소가 있다. 이는 학습을 진행하면서 학습률을 점차 줄여나가는 방법이다. 이를 더욱 발전시킨 것이 AdaGrad이다.
AdaGrad는 '각각의' 매개변수에 '맞춤형' 값을 만들어준다. 개별 매개변수에 적응적으로 학습률을 조정하면서 학습을 진행한다. 매개변수의 원소중에서 많이 움직인(크게 갱신된) 원소는 학습률이 낮아지며 학습률 감소가 매개변수의 원소마다 다르게 적용된다.
- Adam
모멘텀 + AdaGrad을 융합한 듯한 방법
많은 연구에서 SGD를 사용하고 있으며 요즘에는 많은 분들이 Adam을 만족해하며 쓰는 중
- 초깃값을 0으로 했을 때
학습이 올바르게 진행되지 않음. 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문. 가중치를 여러 개 갖는 의미를 사라지게 한다. -> 초깃값을 무작위로 설정해야 함!
- Xavier 초깃값
앞 계층의 노드가 n개라면 표준편차가 $\frac{1}{\sqrt{n}}$ 인 분포를 사용
활성화 함수가 선형일 때 사용 (sigmoid와 tanh는 좌우 대칭이라 중앙 부근이 선형인 함수라 볼 수 있음)
- He 초깃값
ReLU에 특화된 초깃값
앞 계층의 노드가 n개일 때, 표준편차가 $\sqrt\frac{2}{n}$ 인 정규분포를 사용. ReLU는 음의 영역이 0이라서 더 넓게 분포시키기 위해 2배의 계수가 필요하다고 (직감적으로) 해석 가능
-
가중치의 초깃값을 적절히 설정하면 각 층의 활성화값 분포가 적당히 퍼지면서 학습이 원활하게 수행.
배치 정규화는 각 층이 활성화를 적당히 퍼뜨리도록 '강제'해보는 방법
미니배치의 평균과 분산을 구한 뒤 평균이 0, 분산이 1이 되게 정규화 -> 데이터 분포가 덜 치우침
장점
- 학습을 빨리 진행 가능
- 초깃값에 크게 의존 X
- 오버피팅 억제(드롭아웃 등의 필요성 감소)
- 가중치 감소
학습 과정에서 큰 가중치에 대해서는 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제.
- 드롭아웃
훈련 때는 데이터를 흘릴 때마다 삭제할 뉴런을 무작위로 선택하고, 시험 때는 모든 뉴런에 신호를 전달
- 하이퍼파라미터의 성능을 평가할 때는 시험 데이터를 사용해서는 안된다. 따라서 하이퍼파라미터를 조정할 때는 하이퍼파라미터 전용 확인 데이터가 필요한데 이를 일반적으로 검증 데이터(validation data)라고 부른다.
- 하이퍼 파라미터 값 탐색은 최적 값이 존재할 법한 범위를 점차 좁히면서 하는 것이 효과적
-
완전연결 계층(Affine 계층)의 문제점 : '데이터의 형상이 무시됨'
입력이 이미지일 경우를 예로 들면, 이미지는 통상 세로 가로 채널(색상)으로 구성된 3차원 데이터인데 완전연결 계층에 입력할 때는 3차원 데이터를 1차원의 데이터로 평탄화 해주어야함. (1, 28, 28)인 이미지 -> 1줄로 세운 784개의 데이터를 입력
-
But 합성곱 계층은 형상을 유지. 이미지도 3차원 데이터로 입력받으며 마찬가지로 다음 계층에도 3차원 데이터로 전달.
- 합성곱 연산
- 패딩 : 입력 데이터 주변을 특정 값(예컨대 0)으로 채우기도 한다.
- 스트라이드 : 필터를 적용하는 위치의 간격
- 3차원의 합성곱 연산에서 주의할 점은 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다는 점
- 풀링 : 가로·세로 방향의 공간을 줄이는 연산
- 최대 풀링(max pooling) : 해당 영역의 최댓값을 구하는 연산. 이미지 인식 분야에서는 주로 최대 풀링을 사용
- 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 보통. 예를 들어 윈도우가 3x3이면 스트라이드는 3으로.
-
풀링 계층의 특징 :
학습해야 할 매개변수가 없다.
채널 수가 변하지 않는다
입력의 변화에 영향을 적게 받는다(강건하다)
-
im2col : 입력 데이터를 필터링(가중치 계산)하기 좋게 전개하는 함수
3차원 입력 데이터에 im2col을 적용하면 2차원 행렬로 바뀐다.
- 에지 : 색상이 바뀐 경계선
- 블롭 : 국소적으로 덩어리진 영역
?
optimizer(손실함수 가중치 최적화)가 사용되는 시점은 언제?
-
데이터 확장(data augmentation)은 입력 이미지(훈련 이미지)를 알고리즘을 동원해 '인위적'으로 확장.
미세한 변화를 주어 이미지의 개수를 늘리는 것. 데이터가 몇 개 없을 때 특히 효과적
-
층을 깊게 할 때의 이점 :
-
신경망의 매개변수 수가 줄어든다. (5x5의 합성곱 연산 1회는 3x3 합성곱 연산을 2회 수행하여 대체가능)
전자의 매개변수 수가 25개(5x5)인 반면 후자는 총 18개 (2x3x3)이며, 매개변수 수는 층을 반복할수록 적어진다.
-
학습의 효율성 : 층을 깊게 함으로써 학습 데이터의 양을 줄여 학습을 고속으로 수행 가능.
-
정보를 계층적으로 전달할 수 있다. : 층을 깊이 함으로써 각 층이 학습해야 할 문제를 '풀기 쉬운 단순한 문제'로 분해할 수 있어 효율적으로 학습 가능
-
- VGG
- GoogLeNet
- ResNet
층이 지나치게 깊으면 학습이 잘 되지 않고, 오히려 성능이 떨어지기도함. ResNet에서는 그런 문제를 해결하기 위해서 스킵 연결(skip connection)을 도입
스킵 연결이란 입력 데이터를 합성곱 계층을 건너뛰어 출력에 바로 더하는 구조
층의 깊이에 비례해 성능을 향상시킬 수 있게 한 핵심
-
사물 검출
이미지 속에 담긴 사물의 위치와 종류(클래스)를 알아내는 기술
R-CNN
입력 이미지 -> 후보영역 추출 -> CNN 특징 계산 -> 영역분류
-
분할(Segmentation)
이미지를 픽셀 수준에서 분류하는 문제
가장 단순한 방법 : 모든 픽셀을 각각 추론(긴 시간이 걸림) -> FCN(Fully Convolutional Network)가 고안 : 단 한번의 forward 처리로 모든 픽셀의 클래스를 분류해주는 기법
일반적인 CNN이 완전연결 계층(Fully connected layer)을 이용하는 반면 FCN은 이 완전연결 계층을 '같은 기능을 하는 합성곱 계층'으로 바꾼다.
-
사진 캡션 생성
사진을 주면 그 사진을 설명하는 글(사진 캡션)을 자동으로 생성하는 연구
컴퓨터 비전과 자연어를 융합
- 멀티모달 처리 : 사진이나 자연어와 같은 여러 종류의 정보를 조합하고 처리하는 것
- 이미지 스타일(화풍) 변환
-
이미지 생성
GAN
- 자율 주행
-
Deep Q-Netwrok(강화학습)
사람이 시행착오를 겪으며 배우듯 컴퓨터도 시행착오 과정에서 스스로 학습하게 하려는 분야
'가르침'에 의존하는 '지도 학습'과는 다른 분야