[N312] 역전파, 손실함수

정진우·2023년 4월 19일
0

Codestates_AIB

목록 보기
4/8

  • 위 그림에서 설명하고 있는 과정은 다음과 같습니다.
  1. 데이터가 입력되면 신경망 각 층에서 가중치 및 활성화 함수 연산을 반복적으로 수행합니다.
  2. 1의 과정을 모든 층에서 반복한 후에 출력층에서 계산된 값을 출력합니다.
  3. 손실 함수를 사용하여 예측값(Prediction)과 실제값(Target)의 차이를 계산합니다.
  4. 경사하강법과 역전파를 통해서 각 가중치를 갱신합니다.
  5. 학습 중지 기준을 만족할 때까지 1-4의 과정을 반복합니다.

순전파, Forward Propagation

입력층에서 입력된 신호가 은닉층의 연산을 거쳐 출력층에서 값을 내보내는 과정
1. 입력층(혹은 이전 은닉층)으로부터 신호를 전달받음
2. 입력된 데이터에 가중치-편향 연산을 수행
3. 가중합을 통해 구해진 값은 활성화 함수를 통해 다음 층으로 전달

손실 함수, Loss Function

예측값과 실제값의 관계를 나타내기 위한 함수
회귀의 손실 함수 : MSE, MAE
이진 분류의 손실 함수 : binary_crossentropy
다중 분류의 손실 함수 : categorical_crossentropy와 sparse_categorical_corssentropy
이 때 연산된 차이를 Loss 혹은 Error라고 함

역전파, Back Propagation

반대방향(출력층 > 은닉층 > 입력층)으로 Loss를 전달하며 가중치를 갱신하는 과정
역전파는 경사 하강법(Gradient Descent)을 통해 이루어짐

경사 하강법, Gradient Descent

경사 하강법은 손실 함수에 미분을 적용한 값(기울기)를 이용해 진행됨

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

전체 데이터 중 한 개의 데이터에 대한 손실을 이용해 가중치 업데이트

배치 사이즈(batch size) : Gradient를 만들 데이터의 개수
이터레이션(iteration) : 순전파-역전파 과정을 거쳐 가중치 업데이트가 일어나는 횟수, Step
에포크(epoch) : 훈련 데이터셋 전체가 신경망을 통과하는 횟수

model.compile(optimizer='sgd',
				loss='binary_crossentropy',
                metrics=['accuracy'])
model.fit(X, y, batch_size=64, epochs=10)


#batch_size=64 는 100정도가 무난하다는 교수님의 의견

정보) tf의 결과값은 .numpy로 변환하여 print한다

참고 사이트
https://evan-moon.github.io/2018/07/19/deep-learning-backpropagation/

profile
ㅋㄷ

0개의 댓글