안녕하세요? 이번 강은 벡터미분입니다. 그냥 미분도 골 아픈데 벡터 미분까지 해야되나라는 생각이 절로 듭니다. 샬로우 러닝 단계에서는 썸네일에 소개한거 처럼 스칼라를 벡터로 미분하는 정도만 이해하면 되지만, 딥러닝에서의 최적화를 이해하기 위해서는 벡터를 벡터로 미분하는 것 까지 이해해야 합니다. (Jacobian과 Hessian 이해죠)

강의보고오기: https://www.youtube.com/watch?v=u19p1eJsvB0&t=89s

 

 

무조건 이해해야 되냐고요? 세상에 무조건은 거의 없습니다. 이해 못해도 됩니다. 그래도 알면 조금 더 재미있어 집니다.

강의에서 제가 간단하게 미분을 설명했습니다. 머신러닝을 공부할때 꼭 알아야 되는 부분이라 간단하게 설명했습니다. 더 자세히 알기 위해 강추드리는 아래 강의 영상을 보시는 겁니다. 

 

미분의 이해 참고 동영상

 

1. 뉴턴 vs 라이프니치의 미적분 이야기: https://www.youtube.com/watch?v=GJO-52Xm6JU

 

2. 수학은 다르마: https://www.youtube.com/watch?v=glW0ugwYvnA&t=1864s

 

영상 보시고 오셨나요? 저는 재미있게 봤습니다. ^^

 

벡터미분

 

벡터미분을 이해하기 위해서 3가지 개념 먼저 소개해 드리겠습니다. 바로 Scalar, Vector, Matrix 입니다.

                        출처: [https://www.linkedin.com/pulse/machine-learning-basics-scalars-vectors-matrices-tensors-prasad/](https://www.linkedin.com/pulse/machine-learning-basics-scalars-vectors-matrices-tensors-prasad/)

출처 링크를 읽으시면 좋지만, 대부분 알고 계실거 같습니다.

 

우선 규칙을 말씀드리면 벡터는 특별한 언급이 없으면 열벡터를 의미합니다.(그냥 관례입니다)

 

벡터를 스칼라로 미분

벡터는 열벡터를 의미한다고 했죠? 어느 한 벡터를 스칼라로 미분한다는 건, 벡터 각 성분의 값을 스칼라 값으로 미분해준다는 걸 의미합니다.

원래 있던 열벡터의 각 성분에 하나의 스칼라로 미분하고 그대로 쓰는 거니까 어렵지 않으실 겁니다.

 

스칼라를 벡터로 미분

스칼라를 벡터로 어떻게 미분할까요? 우리가 가장 익숙한 건 스칼라를 스칼라로 미분하는 거였죠? 네 늘 해오던 그냥 미분입니다. 그런데 이걸 벡터로 미분하려면 어떻게 해야 할까요?

 

스칼라는 양 밖에 없고, 벡터는 방향과 양이 있습니다. 우리가 미분하고 싶은 스칼라 값이 원래 벡터의 연산이였다고 생각하면 됩니다. 같은 성분을 가진 벡터끼리의 내적은 스칼라가 되기 때문입니다. 또는 방향이 없는 스칼라를 미분해야 하니까, 스칼라 값을 미분하고 싶은 벡터 공간으로 데리고 온다고 생각하면 됩니다. 벡터 공간으로 데리고 오니까 성분이 생길 수 있는 거죠?

자세히 보면, 그라디언트의 정의와 같습니다.(그라디언트는 아직 공부 안했습니다.)

  • "스칼라 값으로 나오는 벡터의 연산이 있었다" 우리 계속 봐온거죠?

$ \hat{y} = w^{T} x $를 x벡터로 미분하면 $w^{T}$만 남습니다. 각 성분으로 편미분한 결과입니다. 그리고 $w^{T} x $는 같은 성분을 가진 벡터의 내적이니까 스칼라 값입니다. 

  • 직관적으로 생각해 봅시다. 양만 있는 스칼라를 벡터로 미분하려면, 스칼라를 벡터공간으로 데리고 와야되고 벡터 공간으로 데리고 오면 각 성분이 생기니까, 각 성분으로 미분해 주면 된다 라는 인사이트가 있으시면 됩니다.

스칼라를 벡터로 미분한 결과는 행벡터로 씁니다. 이거는 기억해 주세요. 벡터를 스칼라로 미분하면 열벡터로 쓰고, 스칼라를 벡터로 미분하면 행벡터로 쓴다는거는 외우시는게 좋습니다. 

 

벡터벡터미분에 대한 Insight

 

강의에서는 추가로 벡터를 벡터로 미분, 스칼라를 벡터로 두번 미분 / 즉 Jacobian과 Hessian을 설명합니다. 우리는 아직 Shallow Learning을 공부하는 단계라 꼭 알 필요는 없지만 추가 설명했습니다. 

 

딥러닝에서 중요한 개념이기 때문에 아래 내용을 느낌적으로 가져가 주셨으면 좋겠습니다. 

 

스칼라를 벡터로 미분하는거 까지가 Shallow Learning입니다. 즉 하나의 스칼라 $y$ 값에 대해 여러 $x$ 값이 있는거 입니다. 어떤 데이터의 특성이 결국 "선형" 이라는 말입니다. 

 

그런데 벡터를 벡터로 미분한다고 생각해보세요. 여러 스칼라 $y$ 값에 대해 여러 $x$ 값이 있다는 거라고 생각할 수 있는거죠. 데이터의 구간에 따라서 식도 변할 수 있고, 같은 구간에서도 여러 y값을 가질 수 있다는 의미죠? 굉장히 복잡하기는 하지만 어떤 관계를 있다라고는 생각할 수 있는거 입니다. 

 

네 바로 딥러닝 설명을 드린겁니다. 굉장히 복잡하지만 수학식으로 표현되면 그 관계를 학습해서 유의미한 결과를 얻을 수 있는거죠? 

 

벡터를 벡터로 미분한 걸 Jacobain이라고 하는데 결국 우리의 데이터가 가지는 기울기의 집합이라고도 이해할 수도 있는거고. 스칼라를 벡터로 2번 미분한건 Hessain이고 딥러닝 옵티마이제이션 문제를 푸는데 활용할 수 있는 값입니다. 

 

강의를 보시면 더 직관적으로 상상하실 수 있을 겁니다. 하지만, 아직 Deep Learning을 배우기 전이니 이 정도만 하고 넘어가겠습니다.  

 

다음강에서 뵙도록 하겠습니다. 

 

+ Recent posts