[Deep Learning] Training Neural Network

2022. 4. 28. 22:27AI/Codestates

728x90
반응형

신경망 학습이 이뤄지는 과정

이미지 출처 :  machinelearningknowledge.ai

① 가중치 및 활성화 함수 연산을 반복적으로 수행    → 순전파

② ①의 과정을 모든 층에서 반봇 후 출력층에서 계산된 값을 출력    → 순전파

③ 손실함수를 사용하여 예측 값과 실제 값의 차이를 계산    → 손실 계산

④ 경사하강법과 역전파를 통해 각 가중치를 갱신    → 역전파

⑤ 학습 중지 기준을 만족할 때 까지 ① ~ ④의 과정 반복

▶ 이 과정을 현재 하고 있는 코딩으로 비유하자면 코딩 ( 순전파 ), 디버깅 ( 손실 계산 ), 오류수정 ( 역전파 )

순전파 ( Forward Propagation ) 란?

입력층에서 입력된 신호가 은닉층의 연산을 거쳐 출력층에서 값을 내보내는 과정
입력 신호 정보를 입력층으로 부터 출력층까지 전달하여 값을 출력하는 알고리즘

① 입력층 ( 혹은 이전 은닉층 ) 으로부터 신호를 전달받음

② 입력된 데이터에 가중치-편향 연산을 수행

③ 가중합을 통해 구해진 값은 활성화 함수를 통해 다음 층으로 전달

손실함수 ( Loss Function ) 란?

 순전파를 거쳐 출력된 값과 그 데이터의 타겟값을 손실 함수에 넣어 손실 ( Loss or Error )를 계산

→ 예를 들어 MSE ( Mean-Squared Error ), CEE ( Cross-Entropy Error ), 이진 분류 ( binary_crossentropy ),

다중분류 ( categorical_crossentropy, sparse_categorical_crossentropy ) 등

역전파 ( Backward Propagation ) 란?

 순전파와는 반대 방향으로 손실 ( Loss or Error ) 정보를 전달 해주는 과정
 구해진 손실 정보를 출력층으로부터 입력층까지 전달하여 각 가중치를 얼마나 업데이트 해야할 지를 구하는 알고리즘

신경망은 매 반복마다 손실을 줄이는 방향으로 가중치를 업데이트하는데 이 때 가중치 수정 방향을 결정하는 것을 경사하강법이라고 함

→ 가중치를 갱신하기 위해 편미분과 연쇄 법칙 ( Chain Rule )이 사용됨

▶ 경사하강법 ( Gradient Descent, GD )

 손실 함수의 경사가 작아지는 방향으로 업데이트를 하면 손실 함수의 값을 줄일 수 있음

 매 Iteration 마다 해당 가중치에서의 비용 함수의 도함수 ( = 비용 함수를 미분한 함수 ) 를 계산 하여 경사가 작아질 수 있도록 가중치를 변경  

■ 옵티마이저 ( Optimizer )

경사를 내려가는 방법을 결정

▶ 확률적 경사 하강법 ( Stochastic Gradient Desent, SGD )

전체 데이터에서 하나의 데이터를 뽑아서 신경망에 입력 후 손실 계산을 한 다음 역전파하여 가중치를 업데이트함
다시 말하면, Iteration 마다 1개의 데이터만 사용하게 됨 그렇기 때문에 가중치를 빠르게 업데이트 할 수 있다는 장점을 가짐

하지만 1개의 데이터만 보기 때문에 학습과정에서 불안정한 경사 하강을 보이게 되는 단점을 가짐 

▶ 미니 배치 경사 하강법 ( Mini-Batch Gradient Desent )

위에 두 방법을 적절히 융화한 방법이 등장하게 되었음

N개의 데이터로 미니 배치를 구성하여 해당 미니 배치를 신경망에 입력한 후 가중치를 업데이트함

즉, Iteration 마다 N개 ( = Batch Size )의 데이터를 사용하게 됨 

■ 배치 사이즈 ( Batch Size )

일반적으로 배치 사이즈는 2의 배수로 설정하며, 메모리 크기가 허락한다면 큰 배치 사이즈를 쓰는 것이 학습을 안정적으로 진행 할 수 있음

데이터셋을 이루는 데이터의 수 ( # of Data ), Epoch, Batch Size, Iteration의 관계

데이터셋 전체를 몇 번이나 반복하여 학습할 지를 결정하는 Epochs

순전파-역전파 1회, 즉 가중치를 한 번 수정하는 단위를 Iteration

# of Data = Batch Size x Iteration

728x90
반응형