안녕하세요? 이번 강은 벡터미분입니다. 그냥 미분도 골 아픈데 벡터 미분까지 해야되나라는 생각이 절로 듭니다. 샬로우 러닝 단계에서는 썸네일에 소개한거 처럼 스칼라를 벡터로 미분하는 정도만 이해하면 되지만, 딥러닝에서의 최적화를 이해하기 위해서는 벡터를 벡터로 미분하는 것 까지 이해해야 합니다. (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을 배우기 전이니 이 정도만 하고 넘어가겠습니다.  

 

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

 

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

 

이번 강의는 어떻게 다뤄야 할까 고민이 많았습니다.

 

MA book에서 처럼 그냥 인공지능의 역사를 다룰까? 아니면 기술사 서브노트에 나온데로 인공신경망의 역사를 할까 고민을 많이 했습니다. 또 한가지 고민은 그냥 빼버릴까 였습니다. 빼버리고 싶었던 이유는 유트브에 인공지능 역사에 대한 너무 좋은 콘텐츠가 많기 때문입니다. 저처럼 어설프게 글씨와 설명이 전부인게 아니라 화려한 비디오에 귀에 박히는 목소리로 설명해주는 좋은 자료가 많습니다. 

 

고민끝에 최초 강의를 시작했던 이유를 생각하며 기술사 서브노트를 바탕으로 설명하기로 했습니다. 제가 강의를 시작한 이유 중 하나는 기술사 공부할때 AI토픽에서 느낀 답답한 마음때문이였습니다. 서브노트를 읽어도 이해가 안가고, 이해가 안가서 관련내용을 찾아보면 "그냥 이래" 또는 모르는 부분을 이해하기 위한 수학적 원리를 파고파고 들어가야 하는 경우가 많았습니다. 그러다가 토픽 한개를 공부하느라 몇번 밤을 지세웠습니다. 

 

저의 전문성을 키우는 것과 많은 예비 기술사 분들이 서브노트를 보시면서 의문이 없었으면 하는 마음이 제가 강의를 시작한 기본 이유이므로 서브노트 내용을 기준으로 설명하기로 했습니다. 그리고 수학적 내용은 각 토픽에서 필요할때 바로 강의하는 방식으로 진행할 겁니다. 최대한 거꾸로 안 찾아가도록 말이죠. 

 

인공신경망의 역사

 

기술사 관점으로 말씀드리면 문제가 "인공지능의 역사"를 물어본 것과 "인공신경망"의 역사를 물어봤을때 다르게 써야 한다는 겁니다. 서브노트에서 처럼 "인공신경망의 역사"를 묻는다면 "딥러닝의 역사"라고 생각하고 답안을 작성하는 것이 좋습니다. 따라서, 강의에서도 Perceptron과 Back Propagation을 중심으로 설명드렸습니다. 그 중에서도 아직까지는 Perceptron에 대해서만 더 집중적으로 설명드렸는데 이유는 아직 우리는 Shallow Learning을 배우는 단계라서 그 편이 더 좋을 것 같다고 생각했습니다. 

 

중요하게 생각하셔야 할 내용은 Perceptron은 Shallow Learning에서 배우지만, 이 Percpetron으로 Connected Layer를 만들어 인공신경망을 형성한다는 것입니다. 그리고 Perceptron이 여러개 연결되면 왜 Deep한 Learning이 될 수 있는지 직관적으로 이해하시는 부분입니다. 지금 이 직관을 가지신다면 나중에 Deep Learning 공부할 때 훨씬 쉽게 이해하실 수 있을겁니다.

 

강의에서 제가 y = Wx + b에서 W를 계속 오메가라고 읽는데, 그냥 w가 맞는 같습니다. Weight의 약자인 w로 생각해 주세요. 소문자이면 벡터이고 대문자이면 행렬을 의미합니다. 제가 배울때 누군가에게 계속 ω(오메가)라고 들어서 저도 아무생각 없이 ω(오메가)라고 읽었습니다. 혼란을 드려 죄송합니다.

 

감사합니다.

 

+ Recent posts