- 역전파는 **계산 그래프의 루트 노드 (비용 함수 output)**에서 시작된다.
- 해당 값은 최종 loss 값이며, ∂L/∂L = 1 이므로 upstream_gradient = 1.0으로 시작된다.
- 역전파는 노드들의 연산자 종류에 따라 각 노드의 입력값과 가중치에 대해 미분 값을 계산한다.
- 대부분의 노드는 가중치를 가지지 않기 때문에, grad_weight_total = 0.0 그대로 유지된다.
- 오직 입력값과 가중치의 곱(예: multiply)이 있는 노드들만 grad_weight가 실제로 의미 있게 존재하고, 학습 가능한 파라미터로 작용한다.
대부분의 노드들은 학습 대상이 아닌 단지 gradient 전달자,
역전파는 계산 그래프 전체를 따라 체이닝된 연쇄 미분법을 수행하지만, 학습 대상이 되는 건 multiply 연산자 등 파라미터가 있는 노드들 뿐
다시,
모든 노드에서 grad_input ( 입력값 변화에 대한 비용 함수 변화량 ) 은 자식 노드에게 전달되지만
grad_weight 는 Node 의 operation 이 실제로 가중치를 사용하는 연산일 때만 의미 있음
아이디어
각 노드 별 grad_input 이 update 되는 것, 이러한 계산 그래프의 자식을 탐방하고 방문, 연산자 종류에 따라 연산을 수행, 이러한 과정들이 n 차원 공간을 탐색하는, 번거롭고 복잡한 과정이라고 생각됨,
복잡한 형태의 계산 그래프를 행렬로 바꿔 표현할 수 있을 거라 생각됨,
또한 update 되는 grad 값이 오히려 컴퓨터 연산에서 얻을 수 있는 이득이 있을 것, 다른 값을 가지는 grad 값의 위치를 새로 탐색하는 것이 아닌, update 되는, 고정되어 있는 자리에 있는 데이터를 그대로 사용하여 메모리 이동 비용 절약 가능하지 않을까
'dev_AI_framework' 카테고리의 다른 글
JAX - 함수의 수학적 객체 관찰, 분석 및 최적화 (0) | 2025.04.30 |
---|---|
역전파 아이디어 계산 그래프 단축? (0) | 2025.04.30 |
backpropagate() 각 연산 별 미분 값 ( delta 연산을 위한 입력값의 변화량에 대한 비용 함수 변화량, 가중치 갱신을 위한 가중치 변화량에 대한 비용함수 (0) | 2025.04.30 |
계산 그래프의 노드 정보를 어디까지 저장할지 (0) | 2025.04.27 |
비용 함수 계산 그래프 부분 문제 해결 (0) | 2025.04.26 |