일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 하둡
- ML
- Ai
- Eda
- cnn
- 에이블스쿨
- 에이블러
- 하계인턴
- KT 에이블스쿨
- ggplot2
- dx
- hadoop
- 에트리 인턴
- KT AIVLE
- SQL
- ETRI
- r
- 빅분기
- arima
- 시계열
- 한국전자통신연구원 인턴
- 가나다영
- 머신러닝
- SQLD
- kt aivle school
- 한국전자통신연구원
- 다변량분석
- 시각화
- 기계학습
- httr
- 서평
- 소셜네트워크분석
- 프로그래머스
- 웹크롤링
- python
- 빅데이터분석기사
- 지도학습
- kaggle
- matplot
- 딥러닝
- Today
- Total
소품집
[ML/DL] ANN 학습: Back-propagation (역전파 알고리즘 ) 본문
2020/05/11 - [Data mining] - Artificial Neural Network (인공신경망)
이전 내용과 이어집니다.
ANN 학습 : Back-propagation (역전파 알고리즘)
Back-propagation
- 전체에 대한 편미분을 곧바로 구하지 않고, 마지막에 위치한 Output layer에서 발생한 loss를 '역방향'으로 전파해나가면서, 관련 weight, bias들을 업데이트하는 방법 (지금부턴, bias는 편의상 생략)
- 역방향 전파: Loss를 줄이는 것이 목표!
- Output layer의 Loss로 부터, W에 대한 파라메터 업데이트 수식 얻음
- Output layer의 Loss와 W 파라메터를 기반으로 V에 대한 파라메터 업데이트 수식 얻음
- Loss? 정답과 예측값의 차이 많이 틀리면 많이 바꾸고, 많이 맞추면 조금만 바꿔 역전파의 세기를 조절할 수 있다.
Cost function에서 자주 쓰이는 것들
교차 엔트로피 오차 = Cross Entropy Error
하지만 층을 너무 깊게 쌓으면 역전파시 1이하의 값들이 곱해져 Gradient Descent 값의 입력이 미미해 지는데, 이러한 현상을 Gradient vanish라 합니다.
ANN 학습 : Cost Function
두 개의 network의 output layer 값이 아래와 같다고 가정해보면, 일단 딱 봐도 오른쪽 network가 좀 더 나은 결과를 보여주는 것을 확인할 수 있다.
Cost Function비교
- 가장 단순한 방법 : Classification Error (CE)
- → 둘 다 에러 수치는 1/3
- MSE→ 왼쪽 network의 전체 cost = (0.54+0.54+1.34)/3=0.81
- → 오른쪽 network의 전체 cost=(0.14+0.14+0.74)/3 =0.34
- → 왼쪽 network의 첫 번째 데이터에 대한 loss = (0.3-0)^2+(0.3-0)^2+(0.4-1)^2=0.54
- Cross-Entropy (정답만 쳐다봄)→ 왼쪽 network의 전체 cost = -(ln(0.4) + ln(0.4) + ln(0.1)) / 3 = 1.38
- → 오른쪽 network의 전체 cost = -(ln(0.7) + ln(0.7) + ln(0.3)) / 3 = 0.64
- → 왼쪽 network의 첫 번째 데이터에 대한 loss =-(
(ln(0.3)*0) + (ln(0.3)*0)+ (ln(0.4)*1) ) = -ln(0.4) = 0.92
수식으로 보는 ANN 학습
d: 정답
O(j) :활성함수 sigmoid를 거쳐 나온 실제 값 (정답!)
Oj의 결과값은 sigmoid를 거쳐 0~1 사이의 값을 갖게 되는데, 0.5에 가까워질 수록 값의 의미가 떨어지게 됨
(수정중)
(공부중)
ANN 학습 : Optimization
Backpropagation 알고리즘 기반으로 편미분하여 얻은 수식들을 사용하여 실제로 업데이트를 수행하는 '최적화 알고리즘' 필요 → Iterative learning 시행
- 파라메터 업데이트 수식들을 적용할 때는 '반대방향'으로 적용 (즉, 뺄셈)
- Cost를 최소화하는 것이 목표이므로, 알고리즘들
- Gradient Descent (GD)로 보통 시작하게 됨
- Batch GD, Stochastic GD, Mini-batch GD,...
- 객관식) Training 데이터, Test 데이터, Validation 데이터
- 힌트) Cost 값을 계산하는 것은 언제 하는 것인가?
참고: https://sonseungha.tistory.com/401
대표적인 Optimizer 'Gradient Descent'
Gradient: 경사도, Descent: 하강
Gradient Descent
- Cost function에 대한 편미분으로써 파라메터 업데이터 수식들을 '반대방향'으로 적용
- Iterative(epoch) 방식: 한 걸음씩 내리막길 내려가기
- 언제까지? 변화가 충분히 적어지고, 일정한 횟수 만큼!
- 수식(기울어진 방향으로 임의 거리만큼 이동
- Batch GD: 학습 Data가 N개 있을 때, N개 전체에 대한 gradient를 적용하는 것
- Stochastic GD: 학습Data N개 각각에 대한 gradient를 적용하는 것
- Mini-batch GD: 학습 Data N개를 작은 mini-batch들로 쪼개서 Gradient를 적용하는 것
- BGD와 조금 다른 결과를 낼 수 있지만, 비교적 빠른 속도로 학습되며, 여러 interaton을 거ㅣ면 BGD와 유사한 결과를 낸다고 알려짐
예를들어, 전체 데이터가 1000개인데 batch size 를 10으로 하면 100개의 mini-batch 가 생성되는 것으로
이 경우 100 iteration 동안 모델이 업데이트 되며 1 epoch로 종료됩니다.
그래서 BDG와 비슷한 결과를 반환합니다.
정리: 역전파 (Backpropagation) 알고리즘
위 과정을 반복하여 네트워크를 반복하여 갱신시키는 과정을 Interative learning이라고 합니다.
이 때 갱신하는데 사용될 최적화 알고리즘은 보통 GD로 시작을 함!
실전 ANN: 전처리 (초기값)
'AI' 카테고리의 다른 글
[ML] Semi-Supervised Learning, K-means clustering (0) | 2020.06.13 |
---|---|
[ML/DL] SVM (Support Vector Machine) (0) | 2020.05.28 |
[ML/DL] Artificial Neural Network (인공신경망) (0) | 2020.05.11 |
[ML/DL] Perceptron (퍼셉트론) (0) | 2020.05.11 |
[ML/DL] MLE, MAP (최대우도법, 최대사후법) (0) | 2020.05.06 |