BPTT(backpropagation through time)
RNN과 DMLP의 유사성
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F952bea44-476a-4f43-8551-f857f3491af1%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.30.50.png)
- 둘 다 입력층, 은닉층, 출력층을 가짐
- 왼쪽 그림은 노드를 DMLP와 비교하기 쉽게하기 위해 수직으로 배치한것!
RNN과 DMLP의 차별성
- RNN은 샘플마다 은닉층의 수가 다름
- DMLP는 왼쪽에 입력, 오른쪽에 출력이 있지만, RNN은 매 순간 입력과 출력이 있음
- RNN은 가중치를 공유함
- DMLP의 가중치는 각 은닉층별 벡터 W^1, W^2, W^3
- RNN은 행렬 W로 표기
목적함수 선정
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fe2a1095f-ad5c-4880-9f36-51bfd1096f04%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.40.31.png)
- 평균제곱 오차, 교차 엔트로피, 로그우도 중에 선택해서 사용
경사도 계산
V값으로 미분
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F7bcd1711-597b-4cdb-9d92-84da2f12e9e0%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.45.40.png)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F9dbb5f20-6257-48cc-81bc-b16458d1bb28%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.46.08.png)
- 그 중에서 V값에 대한 경사도 계산이 제일 간단함
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fd7999df6-d42e-41cc-a22e-a7c5cb5161f6%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.47.42.png)
- J에 대한 V의 편미분값은 행렬 형태를 띄고 있음
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fe2519bc3-8420-4f69-a93f-5edc46b62438%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.51.01.png)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fc99083f7-98c1-4c6c-b247-45d3009720b8%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.52.06.png)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fb11c0c0f-6c6b-415b-bbdc-94e816bbca8b%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.52.29.png)
- 로그우도를 사용하기로 하고 v_12로 미분하기 위해 연쇄법칙을 적용
- o1은 3가지의 은닉층*가중치 결과를 종합한 결과므로 v_12항만 남기고 사라지는 편미분
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F279c3f47-febe-408a-b47d-89c2fabba865%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.08.11.png)
- 로그우도를 사용하기에 y = (1,0), y = (0,1)인 경우로 나눠서 생각해야하는데
- 위 식은 (1,0)인 상황
- 로그 우도를 사용해서 계산해보면 -1+y 결과가 나옴
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F88ba6eea-a504-48ea-ba23-a81a13753bf0%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.09.45.png)
- 두 가지 유도를 합쳐보면 위처럼 식이 정리가 됨
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F34500f94-350a-477e-9dd4-802c15228081%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.10.52.png)
- v_12를 v_ji로 일반화하고, 2부류를 q개 부류로 일반화 한 위 식
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F3504d0ae-9cd4-4587-95f8-0a83fe48e810%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.11.35.png)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F611d233b-ca48-4d05-bc4e-47d467cb4c1f%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.11.46.png)
-
모든 예측값에 대한 식으로 정리
-
이 식을 v 행렬 전체를 위한 식으로 확장하고 목적함수에 대한U, W, b, c 미분까지 유도하면 BPTT가 완성!
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fc5f8c634-6fd9-4967-97a3-cc84dcc91e50%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.13.35.png)
-
매개변수에 대한 작업에 필요한 식을 벡터 형태로 일반화
은닉층에서의 미분
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fe8c0bf7e-d14c-4b3d-aa3e-6dfdec83a939%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.16.02.png)
- 은닉층값의 미분은 이후 은닉층과 출력층에 영향을 주므로 V로 미분하는 것보다 복잡함
- 위 식은 추가 은닉층이 없는 마지막 순간에 대한 미분식
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fe5e7e9cf-e3b7-4f47-ab6f-67d1530087d6%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.20.10.png)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F6894f28d-a34c-4bbc-9e99-b4e68762aec4%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.20.34.png)
- t 순간으로 일반화 하면, 경사도를 역전파하는 위 순환식을 얻음
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fc351909f-741c-4b46-ad91-224e580f8f6e%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.20.59.png)
-t를 포함해 이후 목적함수의 값을 모두 더한 값 정의
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Faccd5d9c-873e-4a7f-aefa-845bab13cc93%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.21.42.png)
- 목적함수 값을 다 더한값에서 t 은닉층값에 대한 미분식은 위처럼 정리
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Feea94738-3802-4f37-abc4-2b9428482297%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.22.48.png)
- RNN 가중치 갱신은 직접적인 결과로부터 오는 미분값+넘겨준 h에 의한 W로 발생한 결과값으로부터 오는 미분값도 고려해야함
- 시간 순서로 영향을 받음
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F4e0f4dc0-e67c-4e35-b33c-f2f2c61acf1f%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.24.00.png)
- 각 매개변수별 경사도 식을 정리하면 위처럼 정리가 됨
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fc4f2a6ac-d6e5-4913-bea1-2758841d132d%2Fezgif.com-gif-maker%20(7).gif)