반응형

📝 경사 하강법

배치는 가중치 등의 매개 변수의 값을 조정하기 위해 사용하는 데이터의 양을 말합니다. 전체 데이터를 가지고 매개 변수의 값을 조정할 수도 있고, 정해준 양의 데이터만 가지고도 매개 변수의 값을 조정할 수 있습니다.

 

📝 배치 경사 하강법

배치 경사 하강법(Batch Gradient Descent)은 가장 기본적인 경사 하강법입니다. 딥 러닝에서는 전체 데이터에 대한 한 번의 훈련 횟수1에포크라고 하는데, 배치 경사 하강법은 한 번의 에포크에 모든 매개변수 업데이트를 단 한 번 수행합니다. 

  • 1000개 데이터가 있으면 1000개 데이터의 순전파 → 손실 평균 계산 → 역전파 → 업데이트 1회

 

 

📝 배치 크기가 1인 확률적 경사 하강법(Stochastic Gradient Descent, SGD)

기존의 배치 경사 하강법은 전체 데이터에 대해서 계산을 하다보니 시간이 너무 오래걸린다는 단점이 있습니다. 배치 크기가 1인 확률적 경사 하강법은 매개변수 값을 조정 시 전체 데이터가 아니라 랜덤으로 선택한 하나의 데이터에 대해서만 계산하는 방법입니다. 더 적은 데이터를 사용하므로 더 빠르게 계산할 수 있습니다.

  • 1000개 데이터가 있으면 1개 데이터의 순전파 → 손실 계산 → 역전파 → 업데이트 이러한 행위를 1000번 반복

 

 

📝 미니 배치 경사 하강법(Mini-Batch Gradient Descent)

model.fit(X_train, y_train, batch_size=128)

전체 데이터도, 1개의 데이터도 아닐 때, 배치 크기를 지정하여 해당 데이터 개수만큼에 대해서 계산하여 매개 변수의 값을 조정하는 경사 하강법을 미니 배치 경사 하강법이라고 합니다. 미니 배치 경사 하강법은 전체 데이터를 계산하는 것보다 빠르며, SGD보다 안정적이라는 장점이 있습니다. 가장 많이 사용되는 경사 하강법입니다

  • 1000개 데이터가 있으면 정해둔 배치 사이즈 데이터의 순전파 → 손실 평균 계산 → 역전파 → 업데이트 배치 사이즈 만큼 업데이트 후 1000개 데이터 다 처리할 때까지 반복

 

📝에포크

에포크란 인공 신경망에서 전체 데이터에 대해서 순전파와 역전파가 끝난 상태를 말합니다. 전체 데이터를 하나의 문제지에 비유한다면 문제지의 모든 문제를 끝까지 다 풀고, 정답지로 채점을 하여 문제지에 대한 공부를 한 번 끝낸 상태를 말합니다. 에포크가 50이라고 하면, 전체 데이터 단위로는 총 50번 학습합니다. 문제지에 비유하면 문제지를 50번 푼 셈입니다. 이 에포크 횟수가 지나치거나 너무 적으면 앞서 배운 과적합과 과소적합이 발생할 수 있습니다.

 

📝배치 크기(Batch size)

배치 크기는 몇 개의 데이터 단위로 매개변수를 업데이트 하는지를 말합니다. 현실에 비유하면 문제지에서 몇 개씩 문제를 풀고나서 정답지를 확인하느냐의 문제입니다. 사람은 문제를 풀고 정답을 보는 순간 부족했던 점을 깨달으며 지식이 업데이트 된다고 하였습니다. 기계 입장에서는 실제값과 예측값으로부터 오차를 계산하고 옵티마이저가 매개변수를 업데이트합니다. 여기서 중요한 포인트는 업데이트가 시작되는 시점이 정답지/실제값을 확인하는 시점이라는 겁니다.

 

 

📝이터레이션(Iteration) 또는 스텝(Step)

이터레이션이란 한 번의 에포크를 끝내기 위해서 필요한 배치의 수를 말합니다. 또는 한 번의 에포크 내에서 이루어지는 매개변수의 업데이트 횟수이기도 합니다. 전체 데이터가 2,000일 때 배치 크기를 200으로 한다면 이터레이션의 수는 총 10입니다. 이는 한 번의 에포크 당 매개변수 업데이트가 10번 이루어진다는 것을 의미합니다. 배치 크기가 1인 확률적 경사 하강법을 이 개념을 가지고 다시 설명하면 배치 크기가 1이므로 모든 이터레이션마다 하나의 데이터를 선택하여 경사 하강법을 수행합니다. 이터레이션은 스텝(Step)이라고 부르기도 하므로 두 용어 모두 기억해둡시다.

 

 

📝 옵티마이저 (모멘텀)

손실함수를 통해 가장 최적의 가중치를 구하기 위해 반복합니다. 가중치를 변화시켜가며 손실값이 가장 적은 값을 구하는 것입니다. 손실값이 가장 적다는 건 가장 이상적인 것이라 판단합니다.

 

글로벌 미니멈이 가장 최적의 값이지만 로컬 미니멈의 경우 도달했을 때 이게 최적의 값인줄 알고 탈출하지 못하는 상황에서 관성(모멘텀)을 이용해 로컬 미니멈을 탈출해 더 낮은 미니멈을 찾을 수 있는 효과를 얻을 수 있습니다.

 

 

📝 옵티마이저 (아다그라드)

서로 다른 매개변수에 서로 다른 학습률을 적용시킵니다. 변화가 많은 매개변수는 학습률이 작게 설정되며 변화가 적은 매개변수는 학습률을 높게 설정시킵니다.

 

 

📝 옵티마이저 (알엠에스프롭)

아다그라드의 경우 학습을 계속 진행한 경우에는 나중에 가서 학습률이 지나치게 떨어지는 단점이 있는데 이를 대체하여 단점을 개선했습니다.

 

 

📝 옵티마이저 (아담)

알엠에스프롭과 모멘텀 두가지를 합친 방법으로 방향과 학습률 두 가지를 모두 잡기 위한 방법으로 가장 많이 쓰인다.

 

 

 

🔗 참고 및 출처

https://wikidocs.net/36033

 

 

 

 

 

 

반응형