-
Extended Jacobians | 패스트캠퍼스 챌린지 16일차딥러닝 2022. 2. 8. 18:50
노트에도 적혀있듯, 해당 내용은 일반적 수학 원리가 아닌 강의자가 개인적으로 일반화한 내용임.
지금까지 Jacobian matrix를 통해 함수나 입력값(혹은 둘 다)가 벡터일 때의 편미분 방법을 할 수 있었다. 여기서는 이를 확장하여 입력값이 행렬 및 그 이상의 텐서일 때 편미분을 생각해 본다. 사실 어제 전미분에서 다루었듯 전미분 과정을 통하면 모든 텐서 입력에 대하여 미분을 진행할 수 있다. 하지만 이 내용처럼 Jacobian Matrix를 확장하여 보다 더 간단하게 ∂J/∂W와 같은 행렬에 대한 손실값의 미분을 구할 수 있게 된다.
(∂ 기호를 입력하는게 힘들었는데 방법을 찾았다. 맥OS계통에서 알파벳 입력 모드일 때 option(alt)을 누르고 문자를 누르면 alternative character가 입력되는데, d의 alternative character가 ∂이다. 즉, opt + d로 ∂를 간단히 입력할 수 있다. 윈도우라면 아마 자음 + 한자 조합으로 입력하는 방법이 있을 것이다.)
딥러닝에서 상당수의 편미분이 손실값 J에 대해 이루어지므로, 본 강의에서는 ∂J/∂M을 dM으로 표기하기로 한다. 이 때, 이 행렬의 각 원소는 J를 각 원소에 대해 편미분한 결과이다.
지금까지의 연산이 적용하지 않는 이유는 MLP, 즉 MultiLayer Perceptron 구조를 보면 쉽게 알 수 있다. MultiLayer Perceptron은 이름 그대로 퍼셉트론이 여러 층위로 쌓인 것이다. 퍼셉트론은 강의에서는 '인공 뉴런의 옛날 이름'정도로 소개한다. '퍼셉트론'이라는 용어가 처음 등장한 건 여러 문헌에서 Rosenblatt(1958)이라고 하는데, 이는 McCulloch & Pitts(1943)에 기반한 보고서였다. McCulloch & Pitts는 동물 뉴런이 이전 뉴런의 신호를 받아 이를 기반으로 다음 뉴런으로 신호를 보내거나 보내지 않는, 즉 다수의 입력을 받아 이를 판단해 all-or-nothing한 방식으로 하나의 신호를 전달한다는 점을 주목한다. Rosenblatt은 이러한 개념을 전자화 하여 이에 perceptron이라는 이름을 붙인다. 다만, 단순히 이러한 퍼셉트론이 쌓인 것 만으로 신경망이라고 볼 수 있는지는 논의할 여지가 있는데, 이는 특히 activation function의 형태에 따라 갈린다. 전산언어학의 성서라 할 수 있는 Jurafsky & Martin이 2021년 작성한 3e draft에 따르면, MLP가 비선형 activation function을 가진 것 만이 요즘 딥러닝이라고 불릴 만한 것이라 한다.
For historical reasons multilayer networks, especially feedforward networks, are sometimes called multi-layer perceptrons (or MLPs); this is a technical misnomer, since the units in modern multilayer networks aren’t perceptrons (perceptrons are purely linear, but modern networks are made up of units with non-linearities like sigmoids), but at some point the name stuck. [p. 7]
역사적인 이유로 다층 네트워크, 특히 FNN은 다층퍼셉트론(MLP)라고 불린다. 이는 기술적으로는 틀린 말인데, 현대 다층 네트워크를 구성하는 요소들은 퍼셉트론이 아니기 때문이지만(퍼셉트론은 순수하게 선형적이지만, 현대에 이르러서는 시그모이드와 같이 비선형 유닛으로 구성된다), 어느때인가 부터 이러한 명칭이 굳어지게 되었다.이 강의에서도 이러한 논의들을 감안하여 '인공 뉴런'이라는 이름을 사용하여 설명하고, 퍼셉트론을 '인공 뉴런의 역사적 이름'정도로 간단하게 소개하고 넘어간 듯 하다.
여하튼 MLP의 퍼셉트론들은 텐서를 다룬다. 이 텐서가 벡터나 스칼라인 부장이 없다. 이 입력 텐서에 따라 가중치의 모양도 결정될 것이며, 따라서 우리는 가중치의 업데이트를 위해 J를 텐서에 대해 편미분할 필요가 있다.
여기서 '확장된 Jacobian'이라고 부르는 것은 지난 글에서 다룬 multipath function에 착안한다. 즉, 두번쨰 노트 상단에 있는 것과 같이 \vec{y}가 하나의 x_i만 관여한다면, ∂J/∂x_i는 ∂J/∂y_i와 ∂y_i/∂x_i에만 관계가 있지, 그 외의 편미분과는 관계가 없다. 이러한 점을 기반으로 하여 1번과 같은 간단한 예시를 구할 수 있다. 이러한 예시를 일반화하면 2번과 같이 dX = dY ∘ ∂Y/∂X 공식이 나온다. 이 떄, ∘는 '아다마르곱Hadamard Product'으로, 쉽게 생각해서 모양이 같은 두 행렬에 대해 똑같은 위치의 요소마다 곱해주는 연산이다. 이러한 과정을 거치면 낼 수 있는 일반화는 dX = ∂J/∂Y ∂Y/∂X이지만, ∂J/∂Y와 ∂Y/∂X 사이의 연산은 Jacobian matrix들처럼 행렬곱이 아닌 아마다르곱과 같은 다양한 연산일 수 있음을 알 수 있고, 이 연산은 일반화되지 않는다고 한다(다만, 강의의 모든 예시들에서는 아마다르곱이 사용되었다. 아마다르곱이 아닌 경우에 대해서는 차후에 나오지 않을까 싶다).
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXi
'딥러닝' 카테고리의 다른 글
딥러닝에서의 Extended Jacobian의 활용 (2) | 패스트캠퍼스 챌린지 18일차 (0) 2022.02.10 딥러닝에서의 Extended Jacobian의 활용 (1) | 패스트캠퍼스 챌린지 17일차 (0) 2022.02.09 전미분 total derivative | 패스트캠퍼스 챌린지 15일차 (0) 2022.02.07 Linear and Logistic Regression with Minibatching | 패스트캠퍼스 챌린지 14일차 (0) 2022.02.06 Element-wise Operations | 패스트캠퍼스 챌린지 13일차 (0) 2022.02.05