매직코드
article thumbnail

신경망학습은 데이터로부터 매개변수의 값을 정하는 방법

손실함수는 신경망이 학습할 수 있도록 해주는 지표로 손실함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는게 중요함

 

- 훈련 데이터 : 훈련 데이터만 사용하여 학습하면서 최적의 매개변수 탐색

- 시험 데이터 : 앞서 훈련한 모델의 실력 평가

- 훈련, 시험 데이터 분리 이유 : 범용적으로 사용할 수 있는 모델 구현을 위해

- 오버피팅 : 한 데이터 셋에만 지나치게 최적화된 상태

 

> 신경망 특징

데이터를 보고 학습 가능 = 가중치 매개면수 값을 데이터를 보고 자동 결정한다

사람의 개입을 최소화하고 수집한 데이터로부터 답과 패턴을 찾으려는 시도

신경망은 기존 기계학습보다 사람의 개입을 더 배제할 수 있게함

 

> 미니배치 학습 (mini-batch)

모든 훈련 데이터를 대상으로 손실 함수의 합을 구하려면 많은 시간이 걸리고 현실적이지 않아 훈련 데이터 중 일부(미니배치)만 골라 학습 수행, 미니배치의 손실 함수 계측을 통해 전체 훈련 데이터의 근사치로 이용

 

> 경사 하강법

신경망에서 학습할 때 최적의 매개변수를 찾아야하는데 최적의 매개변수란 손실 함수가 최소값이 될 때

기울기를 잘 이용해 함수의 최소값을 찾으려는 것이 경사 하강법


학습 알고리즘 구현

> 확률적 경사 하강법

데이터를 미니배치로 무작위 선정하여 경사 하강법으로 매개변수를 갱신하는 방법

 

- 전제 : 학습

가중치와 편향을 훈련 데이터에 적응하도록 조정

 

- 1단계 : 미니배치

훈련 데이터 중 일부를 무작위로 가져와 손실 함수 값을 줄임

 

- 2단계 : 기울기 산출

미니배치의 손실 함수값을 줄이기 위해 각 가중치 매개변수의 기울기 측정

기울기는 손실 함수의 값을 가장 작게 하는 방향 제시

 

- 3단계 : 매개변수 갱신

가중치 매개변수를 기울기 방향으로 아주 조금 갱신

 

- 4단계 : 반복

1~3단계를 반복


오차역전파법

가중치 매개변수의 기울기를 효율적으로 계산하는 방법

기울기를 계산하는 방법은 수식으로도 가능하지만 너무 어려움

결과값부터 미분을 이용해 거꾸로 거슬러 올라옴


SGD 단점의 개선책 - 모멘텀

다양한 형태의 손실함수에 대한 값이 적용되어지면서 그래프도 다양한 형태로 나타남

 

> AdaGrad

신경망 학습에서는 학습률 값이 중요

학습률이 너무 작으면 학습 시간이 길어지고 너무 크면 발산하여 학습이 제대로 이뤄지지 않음

AdaGrad는 각각의 매개변수에 맞춤형 값을 만들어주는 방식

 

- 학습률 감소

학습률을 정하는 효과적 기술

처음엔 크게 학습하다가 학습률을 점차 줄여가면서 조금씩 작게 학습시키는 방법

학습률을 서서히 낮추는 가장 간단한 방법은 매개변수 전체의 학습률 값을 일괄적으로 낮추는것

 

Adam

모멘텀 + adagrad : 속도방향성 + 학습률

 

profile

매직코드

@개발법사

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!