[10주차 - Day3] Deep Learning 최적화

[10주차 - Day3] Deep Learning 최적화

Deep Learning: 신경망의 기초 - 심층학습 최적화

신경망의 가장 기본적인 연산의 단위

1. 들어오는 입력에 대해 각각의 곱셈을 통해 신호를 증감

2. 하나의 신호로 합침(내적)

*여기까지만 하면 선형적 연산만 있는 것

선형적 연산만 있으면 공간의 변화를 일으키기는 있지만 의미를 두드러지게 하는 건 힘듦

...다음층의 가중치*(가중치*입력)...->단순 행렬의 곱

3. 비선형 활성함수 통과

2.5. 활성함수

활성함수 변천사 : 선형->계단->tanh(시그모이드)->ReLU

시그모이드 함수는 활성값이 커지면(양 끝단 값이 되면) 포화상태가 되고 경사도가 0에 가까운 값을 출력함, output gradient*local gradient(upstream gradient)를 통해 input gradient(downstream gradient)를 구하는 오류 역전파 과정 중에서 upstream gradient가 0에 가까워져서 output gradient가 전달되지 못 하는 gradient vanishing문제 발생->매개변수 갱신(학습)이 느려짐

ReLU(Rectified Linear Unit)활성함수

경사도 포화(gradient saturation)문제 해소

ReLU

0을 기점으로 아래는 0으로 위는 linear, 자기 자신을 내보내는 함수

한 번 활성화되지 못하면 이후로부터는 탐색이 일어나지 않는 dead ReLU문제 발생

->Leaky ReLU라는 ReLU의 변형이 등장

0을 기점으로 아래는 작은 기울기라도 줘서 작게라도 탐색을 하도록 만듦

다양한 활성함수

최근 활성 함수들은 다음의 문제들을 해결하고자 함

포화된 영역이 경사도가 작아짐(sigmoid->ReLU가 나오게 된 이유)

출력 값이 0 중심이 아님(sigmoid->tanh, ReLU->LeakyReLU, ELU)

다소 높은 연산량(ELU의 Exp()함수)

2.6. 배치 정규화

더보기 정규화는 이전에 데이터 전처리 부분에서 다뤘음 규모의 문제

부호가 한쪽으로 치우쳐진 문제(+/-)

공변량 변화(covariate shift)현상

훈련 집합과 테스트 집합의 분포가 다름

내부의 공변량 변화(internal covariate shift)->데이터의 분포가 수시로 바뀌는 셈이라 학습을 방해하는 요인이 됨

->정규화를 층 단위로 적용하는 배치 정규화(batch normalization)를 통해 공변량 변화 현상을 누그러뜨림

분포가 정규분포로 바뀜

정규화는 입력이 선형연산을 거치고 나서(z) 적용하는 것이 좋음(활성함수(y)들어가기 이전)

분포를 활성함수의 0에 맞춰서 적용하는 게 학습이 잘될것(활성함수의 양 끝단에 분포가 가면 당연히 잘 안됨)

배치 정규화의 장점

신경망의 경사도 흐름 개선 : 분포가 왔다갔다하면서 활성함수의 양극단으로 가는 일이 감소하기 때문

높은 학습률 허용

초기화에 대한 의존성 감소 : 곱셈을 해서 나온 분포가 이상해져서 초기화해서 맞춰두고 갔는데 정규화를 통해 후보정을 해주기 때문

의도하지 않았지만 규제와 유사한 행동을 하며 드롭아웃의 필요성을 감소

+CNN에서는 노드 단위가 아니라 특징 맵 단위로 적용

다양한 정규화 방법들

3. 규제의 필요성과 원리

from http://zzangyeah.tistory.com/57 by ccl(A) rewrite - 2021-07-28 20:26:24