역전파 알고리즘 Backpropagation은
기본적으로 매개변수(가중치,편향)의 오차함수(error function)의 도함수를 계산하기 위한것.
즉 쉽게 요약하자면 신경망에서 학습과정에서 손실을 최소화하기 위해서 쓰임.
여기서 Neural Netwrok의 어려운 점은 필요한 모든 양에 직접 액세스 할 수 없음.
입력 레이어(Input Layer)에서 출력 레이어(OutPut Layer)에서 또 출력 레이어에서 입력 레이어로 직접 액세스할 수 없음.
그때문에 숨겨진 레이어(Hiddle Layer)에서 전환하여서 그 값을 계산하여야하는데, 이러한 레이어간 전환은 수학적인 미분 연쇄 법칙에 의존함.
이를 역전파 알고리즘이라고함
다르게 말해서, 역전파는 숨겨진 레이어를 통해 error를 전파하면서 각 레이어의 가중치를 조정하는 것이라고 이해할 수 있음.
혹자는 역전파 알고리즘 자체 multilayer nerual network의 학습 알고리즘 전반을 말하기도 하지만, 이는 사실이 아니라,
역전파는 도함수, 즉 기울기를 구하기 구하는데 쓰이는 것임
이는 경사하강법(Gradient Descent)과 같은 최적화 알고리즘과 결합되서 신경망 가중치를 업데이트하는데 사용됨
(경사 하강법은 1차 도함수를 이용하여 손실 함수(Loss function)를 최소화하는 함수)
아래는 회귀(regression)문제에 역전파와 최적화 알고리즘을 적용해서 학습 시키는 법을 다룸.
(여기서 회귀는 입력 변수와 연속적 출력 변수간의 관계를 모델링하는 문제임)
여기서 En은 평균 제곱오차임.
모델의 예측값 y_n과
실제값 t_n간의 차이를 측정함.
여기서 도함수를 구하면
(오차함수E_n에 대한 가중 wij의 기울기)
편미분 방정식의 연쇄법칙에 의거해서
b_n은 출력 뉴런의 활성화 함수(Activation)의 출력값
p_j는 히든 레이어의 뉴런의 출력값
이다.
활성화함수?->입력 신호의 총합을 출력신호로 변환하는 함수
(선형 결합의 도입-> 모델 출력 b_n을 입력 z_j와 p_j의 선형 결합으로 정의함)
여기서 σ(시그마)는 출력 뉴런의 오차, z_j는 입력 뉴런의 값이다.
여기까지가 주어진 데이터 포인트에 대한 오차함수의 기울기를 계산하는 방법이다.
즉
1.오차함수를 정의
2.개별 오차의 정의-> 예측값과 실제값 차이의 제곱
3. 오차함수의 기울기 계산
4. 선형 결합의 도입
5. 각 파라미터에 대한 기울기(y_n-t_n)z_j가 된 것이다.
여기까지가 '단일 레이어 또는 simple model에서의 기울기다. 여기서 역전파 알고리즘은 이를 '다층(Multilayer)' 신경망으로 확장한다.
각층의 파라미터에 대한 기울기를 효율적으로 계산하는 방법이 역전파 알고리즘인 것이다.
다층 신경망의 구조는
여러개의 hidden layer가 존재하는데 입력 레이어->Hidden Layer1->Hidden Layer2->....>Out Layer 순서다
뉴런 j의 입력 a_j에 대한 편미분
히든 레이어 j의 뉴런 입력 aij를 정의함
x_i는 입력 레이어의 뉴런 i 출력값임.
여기서
b는 출력 레이어 뉴런의 입력값임.
σ시그마는 결국
출력층에서 모델의 최종 출력과 실제 값과의 차이를 계산함.
그리고 이것을
hiddlayer에서 계산된 오류를 바탕으로 각 hiddlayer안에 있는 노드가 얼마나 오류에 기여했는지 체크하는것이
라고 할 수 있음
따라서
σ_j는 Hidden Layer의 각 노드가 OutLayer의 오류에 얼마나 기여했는지를 나타냄.
따라서
이 식의 의미도 자명해짐.
출력층의 가중치에 대한 오차함수의 편미분->즉 가중치 p_ij가 변할때 오차E_n이 어떻게 변하는지를 나타내는 기울기
여기에서 이제 경사 하강법을 사용해서, 가중치를 업데이트하면
이 된다.
η: 학습률(learning rate)은 학습률
학습률이 너무 작을 경우-> 학습이 매우 느리게 진행됨
학습률이 너무 클 경우->발산할 위험이 있음.
전체 과정을 요약하면 다음과 같다.
1. 순전파(Forward Pass)->입력 데이터를 통해서 예측값을 계산
2. 오차 계산
3. 역전파(Backward Pass)->Out Layer에서 Hidden Layer로 오차 전파, 매개변수 기울기 계산
4. 경사 하강법을 사용하여 가중치 업데이트
5. 반복
그래서 뭘 생각해봄?
이것저것 생각해봄
너의 생각은 쓸모없음 - dc App
쎾쓰
교과서 내용 복붙이고 니 생각은 없는데?
교과서 내용 복붙은 아니지 ㅡㅡ 저 식이 왜 나온것에 대해서 설명을 덧붙인거니까. 뉴런 j의 입력 a_j에 대한 편미분히든 레이어 j의 뉴런 입력 aij를 정의함x_i는 입력 레이어의 뉴런 i 출력값임.여기서b는 출력 레이어 뉴런의 입력값임.이런식으로 있는건 원래 책에 없고 생략된 내용 더 자세하게 쓴거니까 내 생각을 덧붙인게 맞지
대부분 딥러닝 책이 어떤지는 모르겠고 일단 내가 본 딥러닝 책에서는 저 기호가 뭘 뜻하는지 생략해서 다른 책 뒤적이고 요약한거라 내 생각 덧붙인건 맞음. 책 내용 3개를 혼합한거니까
니 댓글 설명을 봐도 니 생각이 아니라 교과서 수식 정의 그대로 복붙한건데
그것도 어느정도 맞는데, 당연히 그게 당연할 수 밖에 없음. 내 공부 정리한거니까. 그리고 기본적으로 논문 보면서 교과서 책에 있는 내용에 생략된 부분들을 내가 추가한거임. 그러니까 보통 수식 전개할때 이정도는 당연히 알거~ 라고 생각해서 뺀 부분을 주석 첨가한거고, 그부분은 내 생각이라 어느정도 오류가 있는거임. 그리고 또한----이를 역전파 알고리즘이라고함다르게 말해서, 역전파는 숨겨진 레이어를 통해 error를 전파하면서 각 레이어의 가중치를 조정하는 것이라고 이해할 수 있음.혹자는 역전파 알고리즘 자체 multilayer nerual network의 학습 알고리즘 전반을 말하기도 하지만, 이는 사실이 아니라,역전파는 도함수, 즉 기울기를 구하기 구하는데 쓰이는 것임---
이런식의 요약은 내 생각을 요약한거임. 저렇게 요약된 교과서가 대체 어딨는데?
내 생각 요약->수식 정리(책 3개에서 각각 뽑아와서 서로 부족한부분 채워놓음). 즉 공부한거 내용 요약->수식이 어떤 것인가 설명 자체가 내 생각인거임..
.혹자는 역전파 알고리즘 자체 multilayer nerual network의 학습 알고리즘 전반을 말하기도 하지만, 이는 사실이 아니라,역전파는 도함수, 즉 기울기를 구하기 구하는데 쓰이는 것임 라는게 내 사족인거지
애초에 역전파 알고리즘이라는 수학적 모델링은 이미 구해져있기때문에 내가 더 수정할것도 없음. 내가 할 수 있는건 교과서에 생략된 수식들이 '어떤' 의미를 가지느냐 추가 설명 붙이는거고. 이건 교과서에 없는거임. 당장 MSE 관련 내용도 그냥 생략되있는거 내가 추가한거고 그리고 앞서 정리한 역전파 알고리즘 자체 multilayer nerual network의 학습 알고리즘 전반을 말하기도 하지만, 이는 사실이 아니라,역전파는 도함수, 즉 기울기를 구하기 구하는데 쓰이는 것임 같은 요약 내용 자체가 내 생각임. 즉 전반적으로 인터넷에서 이렇게 알려져있다-> 근데 그게 아니라 이거다.라는게 내 생각인거지
수식을 아예 다른 식으로 풀이하길 바라는게 새로운 생각이라고 하는거라면 나는 그정도 수준이 안됨. 단지 내가 아는 건 이 수식이 이뜻을 가지고 이렇게 모델링 되었다 정도로 설명할 수 있는거고.1. 순전파(Forward Pass)->입력 데이터를 통해서 예측값을 계산2. 오차 계산3. 역전파(Backward Pass)->Out Layer에서 Hidden Layer로 오차 전파, 매개변수 기울기 계산4. 경사 하강법을 사용하여 가중치 업데이트5. 반복이런식의 요약도 내 생각임 원래 이렇게 단순하게 요약되지 않음
근데 이건 그냥 설명이지 ㅋㅋ 니 생각이 있다고 하긴 어려운데
1학년땐가 2학년때 저거 c로 구현하는 과제 했던 거 생각나네
요약 자체가 결국 생각 정리인거지. 사실 요약 자체가 전체적인 내용을 필자가 정리하는거니까. 서울대는 1~2학년때 이걸 C로 구현하나? 대단하네. 역전파 알고리즘 배우기위한 편미분 자체가 2학년 과목 아닌가? 편미분 배우고 3~4학년때도 아니고 1~2학년때면 선행학습 기준으로 학습하나
근데 애들이 “역전파를 왜 쓰는건데?”에 대해서는 자세하게 후술되진 않은게 아쉽네 애초에 왜 쓰게 되었는지를 기울기 소실에 대해서 설명하면서 스토리텔링을 했으면 조금은 이해가 더 쉽지 않았을까 하는 생각임 - dc App
다음에 쓰게되면 그렇게하겠음
그래 시험 공부 열심히 하고
대학생 끝난지 애저녁이다
그래서 뭔생각한거임? 저녁 뭐 먹을지 생각하다가 알고리즘 복붙해온거?
요약자체가 생각이지 친구야. 요약은 개인의 사견이 들어갈수밖에없다
어디서부터 지적해야되나 고민하다가 조금만 읽다가 포기했다... 그냥 다시 공부해
이게 머야 읽어도 모르겟다 어려워