딥 러닝을 이용한 자연어 처리 입문
07. 딥 러닝(Deep Learning) 개요
04-3) 역전파(Back Propagation) 이해하기
내용을 바탕으로 정리한 글
기반이 되는 개념
딥 러닝을 이용한 자연어 처리 입문 - 7.1. 퍼셉트론(Perceptron)
1957년 제안된 초기 형태의 인공 신경망인 퍼셉트론
다수의 입력으로부터 하나의 결과를 내보내는 알고리즘
가중치와 편향을 이용하여 결과를 조정해나감
입력층과 출력층 밖에 없는 단층 퍼셉트론으로는
AND, NAND, OR 게이트는 구현 가능 / XOR 게이트를 구현하지 못해 외면받음
그래서 은닉층을 추가한 다층 퍼셉트론 등장하여 XOR 게이트까지 구현
딥 러닝을 이용한 자연어 처리 입문 - 7.2. 인공 신경망(Artificial Neural Network) 훑어보기
피드 포워드 신경망 개념
순환 신경망 개념
전결합층, 밀집층 개념
활성화 함수 개념과 종류
딥 러닝을 이용한 자연어 처리 입문 - 7.3. 행렬곱으로 이해하는 신경망
주어진 입력이 입력층으로 들어가서 은닉층을 지나 출력층에서 예측값을 얻는 과정이 순전파
4. 행렬곱으로 다층 퍼셉트론의 순전파 이해하기
행렬곱, 행렬의 크기 추정으로 이해
순전파 → 예측값
예측값과 실제값으로부터 오차를 계산, 가중치와 편향을 업데이트 → 역전파
순전파와 역전파 계산
딥 러닝을 이용한 자연어 처리 입문 - 7.4-3. 역전파 이해하기
예제, 2개의 입력, 2개의 은닉층 뉴런, 2개의 출력층 뉴런, 은닉층과 출력층의 활성화함수는 시그모이드 함수
여기서는 가중치 $w$만 고려하고, 편향 $b$는 고려하지 않음
은닉층과 출력층의 $z$ : 이전층의 모든 입력이 각각의 가중치와 곱해진 값들이 모두 더해진 가중합;
아직 시그모이드 함수 거치지 않음 → 활성화 함수의 입력
| 오른쪽 $h$, $o$ : 시그모이드 함수를 지난 각 뉴런의 출력값
순전파
입력값($x_{1,2}$)과 가중치($w_{1,2,3,4}$)를 곱
구한 $z_{1,2}$를 활성화 함수(시그모이드 함수)에
다시 입력값($h_{1,2}$)과 가중치($w_{5,6,7,8}$)를 곱
구한 $z_{3,4}$를 활성화 함수(시그모이드 함수)에
이렇게 나온 $o_{1,2}$가 예측값
예제에서 실제값은 $0.4$, $0.6$
예측값과 실제값의 오차를 계산하기 위한 손실 함수로 평균 제곱 오차, MSE 사용
역전파 1단계
우선 업데이트해야 할 가중치는 $w_{5,6,7,8}$
일단 $w_{5}$부터 업데이트 하려면 경사 하강법을 위해서
전체 오차를 $w_{5}$로 편미분 한 값을 계산해야 함
미분의 연쇄 법칙(Chain rule)에 따라
역전파 1단계 - 첫번째 항
편미분 하기 전에 전체 오차 $E_{total}$의 식은
전체 오차 $E_{total}$을 예측값(출력값)인 output $o_{1}$으로 편미분하면
역전파 1단계 - 두번째 항
$o_{1}$이라는 값은 시그모이드 함수의 출력값, 시그모이드 함수의 미분은
그러므로 두번째 항의 미분 결과는
역전파 1단계 - 세번째 항
세번째 항은 $h_{1}$의 값과 동일함
역전파 1단계 - 세 항의 곱
우변의 모든 항을 계산했으므로, 모두 곱해주면
역전파 1단계 - 경사 하강법을 통해 가중치를 업데이트
학습률(learning rate) α는 $0.5$라고 가정
같은 방식으로 나머지 가중치 $w_{6,7,8}^{+}$ 계산
역전파 2단계
역전파 1단계와 마찬가지로, 업데이트해야 할 가중치는 $w_{1,2,3,4}$
일단 $w_{1}$부터 업데이트 하려면 경사 하강법을 위해서
전체 오차를 $w_{1}$로 편미분 한 값을 계산해야 함
미분의 연쇄 법칙(Chain rule)에 따라
역전파 2단계 - 첫번째 항
첫번째 항을 풀어서 쓰면
첫번째 항 안에 1번 항
여기서, $w_{5}^{+}$가 아닌 $w_{5}$를 이용하여 역전파 진행
첫번째 항 안에 2번 항
첫번째 항은
은닉층이 늘어날수록 항 안에 항 안에 항 안에 항 ... 처럼 늘어날 것
역전파 2단계 - 두번째 항
$h_{1}$이라는 값은 시그모이드 함수의 출력값, 시그모이드 함수의 미분은
그러므로 두번째 항의 미분 결과는
역전파 2단계 - 세번째 항
세번째 항은 $x_{1}$의 값과 동일함
역전파 2단계 - 세 항의 곱
역전파 2단계 - 경사 하강법을 통해 가중치를 업데이트
학습률(learning rate) α는 $0.5$라고 가정
같은 방식으로 나머지 가중치 $w_{2,3,4}^{+}$ 계산
결과 확인
업데이트 된 가중치에 대해서 다시 한 번 순전파를 진행하여 오차가 감소했는지 확인
기존의 전체 오차 $E_{total}$이 $0.02397190$였으므로, 역전파를 통해 오차가 감소한 것을 확인할 수 있음
인공 신경망의 학습 : 오차를 최소화하는 가중치를 찾는 목적으로 순전파와 역전파를 반복하는 것
📝 출처
https://wikidocs.net/book/2155
'Programming > ML, Machine Learning' 카테고리의 다른 글
[scikit-learn] fit_transform()과 transform() (0) | 2022.05.04 |
---|---|
PCA, Principal Component Analysis (0) | 2022.04.12 |