-
다변수함수 | 편미분 | 패스트캠퍼스 챌린지 09일차딥러닝 2022. 2. 1. 22:59
다변수함수(Multivariate Function)는 여러개의 입력을 받아 하나의 값을 출력하는 함수이다. 즉, 기존의 함수가 x라는 하나의 값을 받아 연산을 진행해 y라는 하나의 값을 내보냈다면, 다변수함수 z=f(x, y)는 x, y 두 값을 받아 z를 출력한다. 가령, z = f(x, y) = x+ y를 생각해 볼 수 있는데, 이 함수는 x, y를 받아 그 두 변수의 합을 출력으로 내보내는 다변수함수이다. 이 때, 여러개의 스칼라 입력을 입력값의 벡터로 생각할 수 있다. 가령, x의 벡터를 LaTeX 표기법에 따라 \vec{x}라고 표기한다면, z = f(\vec{x}) = 1/n \sum{x_i}를 생각해 볼 수 있는데(이 떄, n은 \vec{x}의 길이), 이 식을 잘 생각해 보면 매우 자주쓰이는 식이다. 입력값을 받아 이를 모두 더한 뒤 길이로 나누는 평균을 구하는 식인데, 이런식으로 평균을 계산하는 것도 다변수함수의 일종이라 할 수 있다.
다변수함수가 딥러닝에서 중요하게 다뤄지는 것은 인공뉴런 또한 입력벡터와 가중치벡터, 그리고 편향 스칼라를 가지는 다변수함수이기 때문이다.
기존의 함수에서는 입력값이 하나이기 때문에 미분하는데 고민이 없었지만, 다변수함수에서는 변수 중 하나에 대해 미분을 하게 되는데, 이를 편미분이라 한다. 즉, 편미분은 다변수함수에서 다른 변수들은 변하지 않는다는 가정 하에, 특정 변수에 대한 순간변화율을 일반화한 함수를 구하는 것이다. 미분 dy/dx와 구분하기 위해 ∂ 기호를 써서 ∂z/∂x, ∂z/∂y와 같이 표기한다. 즉, ∂z/∂y는 x가 변하지 않는다는 가정 항에 y만 변할 때의 순간변화율을 일반화한 함수이다. 이 기호는 round라고 강의에서 불렀는데, curly d, rounded d 등으로 부르며, LaTeX에서는 \partial로 입력한다.
이 때 중요한 점은 ∂z/∂x가 양수일 때 x값에 이를 더해주느냐 빼주느냐에 따라서 x값이 증가할지 감소할지가 결정된다. 이는 x := x+dy/dx의 방향성과 동일하다. n개의 x_i가 있는 f(\vec{x})에 대해 모든 x_i에 대해 ∂z/∂x_i가 양수라면, x_i := x_i + ∂z/∂x_i인 경우 최대한으로 증가, x_i := x_i - ∂z/∂x_i인 경우 최대한으로 감소하며, 덧샘연산이 일정하지 않을 경우에는 편미분계수 사이의 연산에 따르기 때문에 증가할지 감소할지 계산하기 전에 알 수 없다. 이 때 눈에 띄는 것은 이러한 x_i들이 서로 독립적으로 값에 영향을 준다는 점이다.
이러한 편미분들을 행벡터로 모은 것을 gradient라 한다. 기호로는 ∇(뒤집힌 Delta; del, nabla, \nabla)를 사용한다. 노트필기 두 번째 장에 예시가 1-5번까지 있는데, 차근차근 하나의 변수에 대해 편미분을 진행해서 벡터로 합쳐주면 된다. 편미분은 하나의 변수 이외의 다른 변수들을 상수로 취급해 진행하면 된다. 즉, f(x, y) = x+y를 x에 대해 편미분한다면, x + y에서 y가 상수로 취급되어 미분하면 0이 되고, x는 x에 대해 미분하면 1이 되어 결과적으로 1 + 0 = 1이 된다. 이는 y에 대해 편미분할 때도 마찬가지이다. f(x, y) = xy의 경우, x에 대해 편미분할 경우 y가 상수취급되 y * d/dx [x]가 되고, 이는 즉 y * 1 = y이다. 5번 예시의 경우 chain rule을 적용하여 함수를 두 단계로 나누어 이 도함수를 곱하여 전체의 도함수를 구하는 모습을 볼 수 있다. 이 때, ∂z/∂u_i = 1/3은 4번 예제를 보면 알 수 있다.
이제 나름 미지의 영역으로 넘어왔다. 학부 때 수학 수업을 듣지 않았기 떄문에, 편미분 관련 내용은 처음 접했다. 하지만 생각보다 쉽게 연산이 되어서 다행이었다. 물론 단순히 '상수로 취급하고 미분한다'라는 heuristics를 정의하기 까지는 상상하고 싶지 않은 과정이 있겠지만. 그래도 딥러닝은 이런 비교적 단순한 연산에 기반하고 있어서 다행이다. 통계기반 머신러닝의 경우 통계적 개념이 활발히 사용되다 보니 애로사항이 많았다. LDA(Latent Dirichlet Allocation; 토픽모델링을 하는데 가장 널리 쓰이는 기계학습 알고리즘)를 논문을 읽으면서 공부한 적이 있는데, Dirichlet 분포를 이해하는데 한참을 쏟아 부은 기억이 난다. 이러한 기계학습보다 수학적으로 훨씬 간단한 연산으로 성능은 훨씬 높일 수 있었다니, 참 묘한 일이라고 해야 하려나.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXi
'딥러닝' 카테고리의 다른 글
선형회귀 | 로지스틱 회귀 | 패스트캠퍼스 챌린지 11일차 (0) 2022.02.03 편미분과 인공뉴런 | 손실함수의 편미분 | 패스트캠퍼스 챌린지 10일차 (0) 2022.02.02 미분 | 패스트캠퍼스 챌린지 08일차 (0) 2022.01.31 역방향전파(Backpropagation) | 패스트캠퍼스 챌린지 07일차 (0) 2022.01.30 Convolutional Neural Networks | 패스트캠퍼스 챌린지 06일차 (0) 2022.01.29