논문 리뷰(https://aclanthology.org/P19-1580.pdf)를 하며, LRP와 BackPropagation의 차이가 뭔지 너무 궁금하여 작성하게되었다.
LRP도 뒤로 전파하고, Backpropagation도 뒤로 전파하는데
도대체 뭐가 다른 걸까?
결론부터 말하면,
같은 "역방향 계산"처럼 보이지만, 목적과 수학적 의미가 완전히 다르다.
Backpropagation의 목적은 단 하나다.
"가중치를 얼마나 바꿔야 손실이 줄어드는가?"
즉, 최적화(optimization)를 위한 알고리즘이다.
Backpropagation은 다음을 계산한다.
[
\frac{\partial L}{\partial w}
]
이 값은 기울기(gradient)이며,
의미는 다음과 같다.
"이 가중치를 아주 조금 바꾸면, 손실이 얼마나 변하는가?"
즉, 민감도(sensitivity)를 구하는 것이다.
출력이 다음과 같다고 해보자.
[
y = x_1 w_1 + x_2 w_2
]
Backpropagation은 다음을 계산한다.
[
\frac{\partial y}{\partial x_1} = w_1
]
이는 말 그대로:
"x₁을 조금 바꾸면 출력이 얼마나 변하는가?"
현재 x₁이 실제로 얼마나 기여했는지는 직접적으로 보지 않는다.
오직 변화율만 본다.
LRP의 목적은 전혀 다르다.
"이 예측이 나오는데, 각 뉴런이 얼마나 기여했는가?"
즉, 설명(Explainability)을 위한 알고리즘이다.
LRP는 출력에서 시작한다.
예를 들어 어떤 클래스의 점수가 10이라면,
그 10이라는 값을 아래 층으로 분배해 내려간다.
그리고 이 분배는 다음 성질을 유지한다.
[
\sum R^{(l+1)} = \sum R^{(l)}
]
즉,
Relevance의 총합은 항상 보존된다.
이를 Conservation Property(보존 성질)라고 한다.
LRP의 기본 아이디어는 다음과 같다.
[
Ri = \sum_j \frac{a_i w{ij}}{\sumk a_k w{kj}} R_j
]
여기서:
의미는 단순하다.
출력에 기여한 비율만큼 relevance를 나눠준다.
즉, 실제 계산된 출력의 구성비를 따라 기여도를 분해하는 방식이다.
| 구분 | Backpropagation | LRP |
|---|---|---|
| 목적 | 학습 | 설명 |
| 계산 대상 | Gradient | Relevance |
| 의미 | 변화율(민감도) | 공로(기여도) |
| 총합 보존 | 없음 | 있음 |
Gradient가 크다는 것은
"조금 바꾸면 결과가 크게 변한다"
는 뜻이다.
하지만 이것은
"현재 결과를 많이 만들었다"
는 뜻이 아니다.
예를 들어:
이 경우 gradient는 크지만 실제 기여는 작다.
실제 신경망에서는 0으로 나누는 문제, 음수 기여, 불안정성 문제가 발생한다.
그래서 LRP는 여러 분배 규칙을 사용한다.
[
\frac{ai w{ij}}{\sumk a_k w{kj} + \epsilon}
]
작은 ε를 더해 분모가 0에 가까워지는 것을 방지한다.
양수 기여를 더 강조하도록 가중치를 조정한다.
분류 문제에서 “이 클래스를 지지한 증거”를 더 잘 드러내는 효과가 있다.
예를 들어,
설명 목적이라면 LRP가 더 직관적인 결과를 제공한다.
Backpropagation은
→ “얼마나 바꿔야 하는가?”를 계산하는 알고리즘
LRP는
→ “누가 얼마나 만들었는가?”를 계산하는 알고리즘
같은 역방향 계산처럼 보이지만,
이라는 점에서 본질적으로 다르다는 것을 알게되었다.
해당 알고리즘을 바탕으로 어떻게 적용하여 현업 및 실무에 적용할지 고민하게 되었다.