[n412]경사하강법과 역전파 알고리즘
■ Key words
ㆍ경사하강법과 역전파(Backpropagation) 알고리즘
ㆍKeras Framework
ㆍ비용(cost) / 손실(Loss) / 오차(error) 함수
ㆍEpoch / Batch / Iteration
■ 주요내용
ㆍ신경망 학습 알고리즘 :
- 학습할 신경망 구조 선택
· 입력층 유닛의 수 = 특징 수
· 출력층 유닛의 수 = 타겟 클래스 수
· 은닉층 수, 각 은닉층의 노드 수
- 가중치 랜덤 초기화
- 순방향 전파를 통해 출력층 y값을 모든 입력값에 대해 계산
- 비용함수 계산
- 역방향 전파를 통해 편미분 값들 계산
- 경사하강법(or 다른 최적화 알고리즘)을 역전파와 함께 사용하여 비용함수 최소화
- 어떤 중지(stop) 기준을 충족하거나 비용함수를 최소화 할 때까지 2 ~ 5 단계 반복 /
2 ~ 5단계를 한 번 진행하는 것을 epoch 또는 iteration이라 지칭
ㆍ비용(cost) / 손실(Loss) / 오차(error) 함수와 metric
- 오차(error) : 실제값 - 예측값
- 손실함수(loss) : 한 데이터 포인트에서의 손실. 훈련시키는 모델의 목적에 따라 MSE(mean squared error),
MAE(mean absolute error), hinge, categorical crossentropy, sparse categorical crossentropy,
binary crossentropy 등 사용 가능
- metric : 손실함수의 과적합 혹은 과소적합을 평가하기 위한 지표. MAE 등 사용 가능.
- 비용함수(cost) : 전체 데이터셋의 손실함수 합(sum)
ㆍ역전파(Backpropagation; Backwards Propagation of errors)
: 신경망의 가중치(weight)와 편향(bias)을 비용함수를 편미분하여 구하는 과정 /
input과 output은 고정된 상수이므로, 변수인 weight과 bias를 변화시키며 학습함(경사하강법)
⇒ 복잡한 신경망은 오목함수(convex; 2차 함수 등)가 아니기 때문에 경사하강법이 최소값이 아닐 수도 있음;
변곡점(극소값)일 수 있음
⇒ 신경망은 최소 2개의 함수를 가지므로(hidden layer n개 + output layer의 activation function),
합성함수 미분의 연쇄법칙(chain rule) 적용
ㆍEpoch / Batch / Iteration
- Epoch : 전체 dataset을 학습한 횟수
- Batch : 전체 dataset이 클 경우 한 번에 학습하는 것이 어려우므로 일반적으로 분할하여 학습하는데,
이때 1회 학습에 사용되는 표본 수.
- Iteration : Batch를 1회 학습하는 단위. iteration = roundup(epoch ÷ batch)
ㆍ확률적 경사하강법(Stochastic Gradient Descent, SGD)
: 무작위로 뽑은 하나의 관측값 마다 기울기 계산 후 가중치에 반영. batch를 사용한 경사하강법 보다 빠르게
학습하나, 손실함수의 변동이 심한 단점이 있어 이 둘을 합친 Mini-batch 경사하강법 사용 가능.
- batch 경사하강법 : 모든 관측치를 가지고 기울기를 계산한 후 가중치에 반영(업데이트)
⇒ SGD / 변형인 Momentum, RMSProp, Adam / 2차 최적화 알고리즘 기반 방법인 Newton's method, BFGS 등
ㆍKeras : python deep learning framework. 거의 모든 종류의 딥러닝 모델을 간편하게 제작 및 학습 가능.
■ Session note
ㅁ 오전 session
ㆍ역전파 : 예측결과값과 실제값의 차이(에러)의 최소값을 찾아내는 과정 / 가중치와 bias 모두 학습
- 결과값을 바탕으로 가중치와 bias의 최적값을 추론해나가는 과정이므로 역전파라고 함
ㆍ가중치 학습 : 입력치는 고정되어 있으므로, 조정할 수 있는 것은 가중치 밖에 없음
ㆍrandom.seed : 결과물을 재현하기 위함 ; random 추출 시 그 추출값을 고정함
- 고정해주지 않으면 매번 결과값이 다르게 나옴
ㆍ7850 parameters(10 bias) : 784*10(dense) + 10(bias)
ㆍ역전파는 수식 써보면서 이해하기
ㆍbias : 학습을 통해 계산하게 됨
ㆍdense : layer를 만들기 위한 tensorflow의 도구
ㆍfully connected layers는 threshold를 넘지 않아 결과값이 넘어가는 것과 상관 없이 연결된 것 자체만 의미있음
ㆍ순전파 / 역전파 및 (편)미분 실습
ㆍ비지도학습에서의 deep learning
ㅁ 오후 session
ㆍbias는 input layer가 1인 것과 같다(1 × b₁, 1 × b₂ 등)
- hidden layer가 추가되면 그 hidden layer에도 1이라는 bias node가 추가됨
ㆍbatch와 iteration을 하는 이유 : data 크기가 너무 크면 연산에 무리가 가므로, 쪼개서 연산을 더 빠르게 함
ㆍ역전파 : 실제값과 예측값 간의 차이인 오차의 함수를 통해 가중치를 구하는 것
ㆍ가중치 규제 : 과적합을 피하기 위함
* loss = error
■ 주요함수
ㆍ
■ Reference
ㆍ신경망의 학습과정 : https://youtu.be/Ei_md7n40mA
ㆍ역전파 미적분, 딥러닝 : https://youtu.be/tIeHLnjs5U8
ㆍ학습과정을 잘 모식화한 영상 - 역전파 : https://youtu.be/GlcnxUlrtek
ㆍkeras 다중분류문제에서의 손실함수(loss) : https://crazyj.tistory.com/153
[keras] categorical_crossentropy vs sparse_categorical_crossentropy
keras 손실함수 중에 아래 두 개가 비슷하지만 사용할 때는 완전히 다르다. 주의가 필요하다. + categorical_crossentropy ; 다중 분류 손실함수. one-hot encoding 클래스 출력값이 one-hot encoding 된 결과로..
crazyj.tistory.com
ㆍ손실, 비용, 목적함수의 차이 : https://youtu.be/KoC99FDHQpQ
ㆍ손실, 비용, 목적함수의 차이 : https://keepdev.tistory.com/48
머신러닝 Loss Function 이해하기
1. Loss function, Cost function, Objective function의 차이 사실 위의 세 가지 function은 거의 같은 맥락으로 쓰인다고 보면 된다. 하지만 굳이 차이를 나눠보자면 다음과 같다고 한다. 모델을 학습할 때는 비.
keepdev.tistory.com
ㆍ손실함수(loss)와 평가지표(metric) : https://bskyvision.com/740
손실함수(loss)와 평가지표(metric)란? 그 차이는?
텐서플로(tensorflow)를 사용해서 딥러닝 모델을 컴파일(학습 과정을 설정)할 때 우리는 "loss"와 "metrics"라는 것을 만나게 됩니다. 보통 다음과 같은 형태로 말이죠. 여기서 loss는 손실함수를 의미합
bskyvision.com