[딥러닝] 딥러닝 기초(4) 교차연결
업데이트:
딥러닝 기초(4) 교차연결
참고링크
교차연결
우리가 지금까지 다루었던 신경망은 아래와 같은 형태를 띕니다.
위 그림처럼 두 개의 입력값과 두 개의 출력이 있으면 성능함수에도 두 개의 숫자(두개의 목표값과 두개의 출력값을 이용)가 있을 것 입니다. 그렇다면 아래 그림 처럼 뉴런을 교차연결하면 어떨까요?
위 그림은 단지 두개의 뉴런을 교차연결했을 뿐인데도 인풋에서 아웃풋으로 가는 경로가 기하급수적으로 늘어났네요ㅜㅜ 그럼 학습을 위해 얼마나 많은 양의 편미분을 해야하는 것일까요ㅜㅜ
그런데 희소식이 있습니다. 위 식을 보시면 서로다른 편미분인데도 공통되는 부분이 발견됩니다. 즉 $w_1$에 대한 편미분을 위해 필요한 부분이 $w_2$에 대해 편미분할 때 이미 해 놓은 것입니다.
편미분 지옥?
그럼 이 관점에서 각 경우에 대해 미분을 계속하면 어떤 일이 생길까요? 생각해봅시다. 성능함수 $\mathcal{p} = -\frac{1}{2}(\vec{d}-\vec{z})^{2}$에 영향을 끼치려면 $p_2$를 반드시 거쳐야합니다. 이것은 네트워크의 깊이가 아닌 너비와 연관되어 있습니다. 즉, $p_2$와 아주 멀리 떨어진 변수 관련 값은 여러가지 연산 및 시그모이드 함수, 그리고 $p_2$를 거치면서 끝나게 됩니다. 그런데 위 단원에서 보시면 우리가 계산해야할 많은 부분이 이미 앞에서 많이 계산되었습니다. 따라서 생각만큼 계산량이 기하급수적으로 늘어나진 않습니다. 참고로 푸리에급수 또한 이렇게 기하급수적인 계산을 막기위해 앞서 계산한 결과를 다시 사용합니다.
계산량 요약
- 깊이가 늘어나면 계산량은 선형적으로 많아진다.(linear in depth)
- 너비에 대해선 연결의 갯수와 비례함(with respect to width, $w^2$)
경로별로 실제로 미분해 봅시다
신경망에서 주목해야할 것은 행뿐만이 아니라 ‘열’도 중요합니다. 어떻게 출력값이 가중치에 영향을 받을까요. 경로1, 경로2에서 각각 $w_1$이 성능에 미치는 영향을 계산해보았습니다.
역시 위에서 언급했던데로 중복되는 계산이 존재하네요 ^^