Chapter1. 딥러닝을 위한 필수 기초 수학-1

01. 함수와 다변수 함수

함수란 무엇인가?

  • 어떤 집합의 각 원소를 다른 집합의 유일한 원소에 대응시키는 이항 관계.
  • 그럼 다음과 같은 경우는 함수가 아닌가?

$$ z=f(x,y)= \begin{bmatrix} xy^2 \\ x+y \end{bmatrix} $$

  • 출력이 2개이지만 위 경우도 함수이다. 출력의 2개의 값을 하나의 벡터라고 본다면, 결국 유일한 원소에 대응시키는 이항관계로 볼 수 있기 때문이다(벡터 함수..?)
  • 그럼 원의 방정식(\(x^2+y^2=1\))은 함수인가?(링크)

위 정의에 따르면 \(y^2=x\) 는 함수가 아니다. x에 대해서 대응되는 y가 두개이기 때문.
근데 만약 아래처럼 표기하면, 위에서 출력의 2개의 값을 하나의 벡터로 본 경우하고 똑같아지는거 아닌가? 그럼 얘도 함수로 봐야하는데..
$$y= \begin{bmatrix} \sqrt{x} \\ -\sqrt{x} \end{bmatrix}$$
즉, 원을 [위의 반원, 아래 반원]으로 구성된 벡터(원소가 함수인)로 보면 걔도 함수라고 해야 하지 않을까..

02. 로그 함수

  • \(\log_ab\) → \(a\)를 몇 승해야 \(b\)가 되는가?

녹색: \(\log_2x\)

  • 그래프 그리기: \(\log_2x\) vs \(\log_ex\)
  • 중요 정리
    1. \(\log_axy=\log_ax+ \log_ay\)
    2. \(\log_ax^n=n\log_ax\)
    3. \(\log_{a^m}x=\frac{1}{m}\log_ax\)
    4. \(\log_ab=\frac{\log_cb}{\log_ca}\)
    5. \(\log_ab=\frac{1}{\log_ab}\)
    6. \(a^{\log_ab}=b​\)​
    7. \(a^{\log_bc}=c^{\log_ba}\)

03. 벡터와 행렬

  • 벡터와 행렬을 왜 배울까? → 혁펜하임의 설명은 연립일차 방정식을 잘(편하게?) 풀기 위해 행렬을 이용한다고 한다.
  • 다음과 같이 연립 일차 방정식을 행렬로 표현할 수 있다

$$\displaylines{x+y=4 \\ 2x+5y=1 \\ {\space} \to \begin{bmatrix} 1 & 1 \\ 2 & 5 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 4 \\ 1 \end{bmatrix}}$$

  • 두 개의 연립 일차 방정식을 표현할 수도 있다.

$$\displaylines{\begin{cases} x_1+y_1 = 4 \space \space \space \space \space \space \space \space \space \space \space x_2+y_2 = 3 \\ 2x_1+5y_1= 1 \space \space \space \space \space \space \space 2x_2+5y_2= 7 \end{cases} \newline {\space} \newline \begin{bmatrix} 1 & 1 \\ 2 & 5 \end{bmatrix} \begin{bmatrix} x_1 & x_2\\ y_1 & y_2 \end{bmatrix} = \begin{bmatrix} 4 & 3\\ 1 & 7 \end{bmatrix}}$$

위처럼 표현하면, 행렬의 교환법칙이 왜 성립이 안되는지 편하게 설명할 수 있음(근데 계수가 같은 두개의 연립식만 표현 가능하네)

(2 x 2) 행렬과 (3 x 2) 행렬 곱이 왜 안되는지도 설명 가능. 곱해지는 앞의 행렬의 열은 계수를 의미하고 뒤에 곱해지는 행렬의 행은 변수를 의미하게 되므로, 계수와 변수의 갯수가 맞지 않으면 안되기 때문.

  • 벡터는 방향과 크기를 가진다

  • 벡터의 방향: Θ
  • 벡터의 크기: 화살표의 길이(피타고라스 정리)
  • L2-Norm = \(\sqrt{x^2+y^2}\)
  • L1-Norm = \(|x|+|y|\)
  • 크기와 방향이 같으면 시작점이 달라도 같은 벡터일 수 있다.

 

 

04. 전치와 내적

  • 전치(Transpose): i행 j열 → j행 i열
    • \([\textbf{A}^\intercal]_{ij}= [\textbf{A}_{ji}]\)
    • 연습: 양변을 transpose 하면?→

$$(\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix})^\intercal = \begin{bmatrix} b_1 \\ b_2 \end{bmatrix}^\intercal$$

$$\to \begin{bmatrix} x_1 & x_2 \\ \end{bmatrix} \begin{bmatrix} a_{11} & a_{21} \\ a_{12} & a_{22} \end{bmatrix} = \begin{bmatrix} b_1 & b_2 \end{bmatrix}$$

  • 내적(inner product, dot product, 엄밀히는 두개가 똑같지는 않음)
    • 두 벡터의 닮은 정도를 나타냄
    • \(\begin{bmatrix} a_1 \\ a_2 \end{bmatrix} \cdot \begin{bmatrix} b_1 \\ b_2 \end{bmatrix}  = a_1b_1+a_2b_2=\textbf{a}^\intercal \textbf{b}\)
    • \(\textbf{a}^\intercal \textbf{b} = ||\textbf{a}||\cdot ||\textbf{b}||\cos \theta\)
    • || || 는 L2-Norm, Θ는 두 벡터 사이의 각
    • \(\cos\theta\) 는 90도 일 때 0, 180도일 때 -1이므로, 두 벡터가 수직할 때 값이 0이고, 180도로 정반대가 되면 마이너스 최대가 된다. 유사도(내적값)가 0이면 두 벡터가 아예 상관이 없다고 해석하고, 마이너스이면 반대의 관계를 가진다고 보면 될 것 같다.
    • 이것만 보면 벡터간의 관계는 크기보다 방향이 중요하다… 마치 우리 인생같은….

05. 극한과 입실론-델타 논법

이 부분은 혁펜하임 설명보다 이 블로그 설명이 더 이해가 잘 되서 이걸 보고 정리한다.

우선 우리가 알고 있는 쉬운 버전의 극한의 정의는, ‘어떤 함수 \(f(x)\)에서 \(x\)가 \(a\)와 다른 값을 가지면서 한없이 가까워질 때 \(f(x)\) 값이 어떤 일정한 값 \(L\)과 가까워진다’고 말하고 다음과 같이 표시한다.

$$\lim_{x \to a} f(x) = L$$

그러나 여기서 한없이 가까워질때라는 표현이 매우 애매하기 때문에 ε-δ 논법이 생겨났다.

만약 위 정의가 맞다면 \(x\)를 \(a\)가 아니지만 \(a\)와 충분히 비슷한 숫자(\(a\) + 0.000001 같은)로 두면 \(f(x)\)는 \(L\)과 다르지만 충분히 유사한 값이 나올 것이다. 이 두 값의 차이를 \(|f(x)-L|=\epsilon\) (엡실론) 이라 하자.

그리고 위에서 말한 0.000001 처럼 \(x\) 와 \(a\) 와의 차이를 \(|x-a|=\delta\) (델타)라고 하자.

그럼 ε과 δ를 활용한 극한의 정의는 다음과 같다.

임의(그러니까 모든 실수)의 \(ε > 0\) 에 대해서, 정의역 내의 \(0 < |x-a| < δ\) 의 범위에서 \(|f(x) -L| < ε\) 이게 하는 \(δ > 0\) 가 존재하면 \(\lim_{x \to a} f(x) = L\) 라고 정의한다.

위를 증명하면,

우리가 궁금한 것은 임의의 ε > 0에 대하여 0 < \(|x-a|\)< δ 이면 \(|f(x) -L| < ε \) 이게 하는 δ > 0가 있냐는 것이다.

여기서부터 예를 들어서 생각해보면,
\(f(x) = 2x+3, a=1, \to L=5\)

그러면

\(|f(x) - L| = |2x+3 - 5|=|2x-2| =2|x-1| < ε \)

\(\to |x-1| < \frac{1}{2} ε \)

즉, 위를 만족하는 δ > 0가 존재하느냐를 보면 되는데, 애초에 \(|x-a|=|x-1|< δ\)라고 전제하고 시작했으므로 δ를 \(\frac{1}{2} ε \)보다 작은 수로 설정하면 된다. 즉, \(\frac{1}{3} ε , \frac{1}{4} ε , \frac{1}{5} ε\) ... 모두 가능하다는 것.

이미지로 설명하면 다음과 같다.

https://vegatrash.tistory.com/6

왼쪽 그림에서 오른쪽 그림으로 가며 f(x)와 예상값 L의 오차인 ε 이 줄어들고 있는데, 아무리 범위를 줄여도 이 범위 내의 함숫값을 갖게끔 하는 x의 범위 \((a−δ,a+δ)\)가 존재한다.

왼쪽과 같이 끊긴 함수가 극한값이 없는 것은,

\(|f(x) -L| < ε \) 를 만족시키는 δ 가 없기 때문이다(f(x)의 빈 구간에 도달할 수 있는 a-δ 혹은 a+δ가 없음..)

그럼 함수가 이어져 있긴 하지만, f(a) 값만 없는 경우에도 극한 값은 구할 수 있다.

 

  • 혁펜하임 식 설명
    • \(\lim_{x \to a}f(x)=L\) : \(L\)주변 갭으로 어떤 양수 ε을 잡아도 |L-ε| 구간안에 값을 매칭 시킬 수 있는 a 주변의 갭 δ가 존재하면 극한 값은 \(L\)이다.

06. 미분과 도함수

  • 미분: 순간 변화율(그래프에선 순간 기울기)
  • 순간이란? → 극한 필요
  • 모든 x에 대한 미분을 함수로 표현한 것 = 도함수

$$\lim_{\Delta x \to 0}\frac{f(x+\Delta x)-f(x)}{\Delta x} = f(x)'=\frac{dy}{dx}$$

  • dy/dx는 분수처럼 표현하지만 분수는 아님
  • 자주 보이는 도함수
    1. \(x^n \to nx^{n-1}\)
    2. \(e^x \to e^x \)
    3. \(\ln x \to \frac{1}{x}\) & \(\log_2x \to \frac{1}{\ln2}\frac{1}{x} \)
    4. \( f(x)+g(x) \to f(x)'+g(x)' \)
    5. \( af(x) \to af(x)' \)
    6. \( f(x)g(x) \to f(x)'g(x)+f(x)g(x)' \)

07. 연쇄 법칙(샤픈)

  • \((x^2+1)^2\)을 미분해보자.
  • 위 식이 다음의 순서로 완성되었다고 생각해보자.
    • \(x \to x^2 \to x^2+1 \to (x^2+1)^2\)
  • 그럼 미분 또한 쪼개서 생각할 수 있다(거꾸로 미분하면서 돌아오자)

$$\frac{d(x^2+1)^2}{dx}=\frac{d(x^2+1)^2}{d(x^2+1)}\frac{d(x^2+1)}{dx^2}\frac{dx^2}{dx}$$

  • \(z=g(y), y=f(x), dz/dx\)?

08. 편미분과 그라디언트

  • 편미분?
    • \(z=f(x,y)=yx^2\)처럼 여러개 변수로 이루어진 함수를 미분할 때 각각에 대해서 미분하는 것
  • \(x\)에 대한 변화율만 보면 \(x\)에 대한 편미분 = \(\partial f/\partial x\)
  • \(y\)에 대한 변화율만 보면 \(y\)에 대한 편미분 = \(\partial f/\partial y\)
  • 편미분 하는 변수 외에 나머지는 모두 상수 취급
  • 정의

  • 그래디언트?
    그냥 벡터로 묶은 것 \(\begin{bmatrix} \frac{\partial f}{\partial x}\\ \frac{\partial f}{\partial y} \end{bmatrix}\)
    • 단순 기울기가 아니라,  다변수 함수의 모든 입력값에서 모든 방향으로의 순간변화율이다.(구글링)
    • \(f(x,y)=yx^2\)의 그라디언트 =  \(\begin{bmatrix} 2yx \\ x^2 \end{bmatrix}\)
    • 그라디언트 값은 x, y에 값을 입력하면 됨

09. 테일러 급수

  • 어떤 임의의 함수를 다항함수로 나타내는 것
    • 다항함수란? \(3x+xy\) 처럼 다항식으로 표현된 것.
  • \(\cos x\)와 같이 다항식이 아닌 함수를 \(x, x^2, x^3 ...\) 등의 항을 조합해서 표현해보자!
    • 여기서 조합한다는 것은 연이어 더하는 것, 즉 급수라고 한다.
  • 이게 왜 필요한가? 다항함수는 전 구간 미분 가능, 미분도 간단해서 다루기 쉬우므로.
  • 구하는 방법 예시

$$\cos x = c_0 + c_1x + c_2x^2+c_3x^3 ...$$

위 식에서 x=0을 대입하면,

$$1=c_0+c_1*0+c_2*0^2 ....$$

이 되므로 \(c_0 =1\)이다.

이번에는 양변을 미분해보자.

$$(\cos x)'=-\sin x = c_1 + 2c_2x+3c_3x^2+ ....$$

위 식에 다시 \(x=0\)을 대입하면, \(0=c_1\)이 된다 (sin0은 0)

한번 더 미분하면,

$$(\cos x)''=-\cos x = 2c_2 + 3*2c_3x + ...$$

위 식에 다시 x=0을 대입하면, \(-1=2c_2\)가 되어, \(c_2=-1/2\) 이다.

이런 식으로 계속 미분하고 0을 대입하는 식으로 풀면 모든 c_n을 구할 수 있다.

$$\cos x = 1 - \frac{x}{2!}+\frac{x^4}{4!}-\frac{x^6}{6!}...$$

  • 이쯤에서 드는 의문, 그럼 \(\cos x\)를 다항식으로 표현하는 조합은 유일한가?
    • 유일하다. 왜냐면 각 항이 독립이기 때문. 각 항이 각 항 나름대로 각자의 역할을 하기 때문에 다른 형태로 변환할 수 없음
  • 사실 지금까지는 \(x=0\)에서만 잘 맞는다. 지금까지는 Maclaurin 급수였고 진짜 Taylor 급수는 어떤 기준 점 a를 정할 수 있다. 즉, 기준점 a에서 생각하면,

$$\displaylines{f(x)=c_0+c_1(x-a)+c_2(x-a)^2+... \\ \\ c_n=\frac{f^n(a)}{n!} \\ \therefore f(x) = \sum_{n=0}^{\infty }\frac{f^n(a)}{n!}(x-a)^n}$$

  • 특이한 테일러 급수들
    • \(e^x=1+x+\frac{1}{2!}x^2+\frac{1}{3!}x^3+...\)
    • \(\ln x =c_0+c_1(x-a)+c_2(x-a)^2+...\)
      • \(\ln(x)\)는 특이하게 \(x > 2\) 범위에서 수렴하지 못한다(c_n이 점점 커짐)
      • 위에서 한 것처럼 미분을 해서 테일러 급수를 구해보면(x=1로 시도해보자)

  • 뭔가 규칙성이 보인다
    • 그러나 \(x=3\)을 대입해서 \(c_n\)을 구해보면, 2 → 0 → 8/3 → -4/3 → … 발산한다!(c에 규칙성이 없다!).
    • 즉 \(x>2\)에서 테일러 급수를 구할 수 없다.
  • 테일러 급수는 다음의 조건을 만족하는 x의 영역에서만 수렴한다

$$\lim_{n \to \infty}|\frac{p_{n+1}}{p_{n}}|<1$$

  • \(\ln x\) 에 대해서 생각해보면, x=1 일 때 테일러 급수의 일반항이 \(\frac{1}{n}(x-1)^n\) 이므로

$$\displaylines{\lim_{n \to \infty}|\frac{p_{n+1}}{p_{n}}|=\lim_{n \to \infty }|\frac{\frac{1}{n+1}(x-1)^{n+1}}{\frac{1}{n}(x-1)^n}|=\lim_{n \to \infty}|\frac{n}{n+1}(x-1)|=|x-1|<1 \\ \therefore -1<x-1<1, \space \space \space 0<x<2}$$

x=1이 아니라 x=0.5 이렇게 했으면 일반항의 모양이 달라진다. 그러나 결과는 같다)

  • 수렴 반지름(radius of convergence)는 1이다 (0<x<2 는 x=1 을 기준으로 0, 2까지 각 1씩 떨어져 있음)
  • 다른 블로그에서 퍼온 주의점

< 주의 >

우리는 위의 예시에서, f(x) 함수에서 x=a 에 대해서 무한대로(혹은 n번) 미분이 가능한 경우 x=a 근처에서 f(x)에 근사하는 다항함수식을 유도할 수 있다는것을 살펴보았습니다. 주의하셔야 한다고 말씀드리고 싶은 점은, 무한번의 미분이 가능한 f(x) 식을 가지고 테일러 급수를 통해 f(x)에 근사하는 다항함수를 찾아낸다고 하여도, 이는 다항함수가 전체 f(x) 함수값에 대하여 수렴한다는 뜻이 아닌, x=a 근처에서 f(x)에 가까워 진다는 것을 의미합니다.

즉, x=a 근처에서는 미분을 많이 할수록(급수- degree 가 올라갈수록) 테일러 급수가 f(x)에 근사하게 되지만, x=a 의 근처를 벗어난 범위에 대해서는, 우리는 아무런 결과도 장담할 수 없는것이죠. 이점 꼭 기억해 주세요!

링크

10. 스칼라를 벡터로 미분

스칼라 함수란, \(f(x,y)=x_1x_2^2\) 혹은 \(f(\theta, r)=r\cos \theta\)처럼 입력은 여러개(벡터)일지라도 출력은 하나인 경우를 의미한다.

이처럼 출력이 스칼라 하나인 함수를 입력인 벡터로 미분하는 경우를 생각해보자.

사실, 입력 벡터의 원소들에 대해서 각각 편미분 하면 된다.

$$df(x_1, x_2) = \begin{bmatrix} \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2} \end{bmatrix}$$

하지만 변수가 엄청 많은 경우, 일일이 계산하기 귀찮을 수도 있다. 이를 쉽게 풀어보자.

\(f\)의 순간 변화량을 생각해보면,

즉, \(df\)를 구하면 \(d\textbf{x}\) 뒤에 있는 것이 우리가 구하고자 한 스칼라 함수의 벡터 미분 값이 된다.

\(f(\textbf{x})=\textbf{x}\textbf{x}^\intercal\) 를 예로 들어서 생각해보자.

$$\displaylines{df=f(\textbf{x}+d\textbf{x})-f(\textbf{x})=(\textbf{x}+d\textbf{x})(\textbf{x}+d\textbf{x})^\intercal-\textbf{x}\textbf{x}^\intercal \\ = d\textbf{x}\textbf{x}^\intercal+d\textbf{x}^\intercal\textbf{x} +d\textbf{x}d\textbf{x}^\intercal\\}$$

위 식에서 \(d\textbf{x} \textbf{x}^\intercal\) 와 \(d\textbf{x}^\intercal \textbf{x}\) 는 스칼라 값이므로, 스칼라에 Transpose를 취해도 상관없기 때문에 \((d\textbf{x}^\intercal \textbf{x})^\intercal\) 처럼 Transpose를 취해서 정리해주면 (\(d\textbf{x}d\textbf{x}^\intercal\)는 생략 가능),

$$d\textbf{x}\cdot \textbf{x}^\intercal +(d\textbf{x}^\intercal\textbf{x})^\intercal=2d\textbf{x}\textbf{x}^\intercal$$

따라서 \(d\textbf{x}\) 뒤에 있는 \(2\textbf{x}^\intercal\) 이 \(\frac{\partial f}{\partial \textbf{X}^\intercal}\)이다.

11. 왜 그라디언트는 가장 가파른 방향을 향하는가

  • 제목만 읽으면 생략된 말이 많아서 잘 이해가 안되는데, 머신러닝에서 Loss 함수의 Gradient를 구하고 해당 Gradient 방향으로 Weight를 업데이트 하는 것이 왜 Loss 함수의 값을 가장 크게 만드는 것인지 설명하는 챕터이다.
  • 변수 \(w_1, w_2\)로 이루어진 Loss 함수 \(L(\textbf{w})\)를 \(\textbf{w}=\textbf{w}_k\)에서 1차까지만 테일러 급수 전개를 해보자.

$$\displaylines{L(\textbf{w})\backsimeq c_0 + c_1(w_1-w_{k1})+c_2(w_2-w_{k2}) \\ =c_0+ \begin{bmatrix} w_1-w_{k1} , w_2-w_{k2} \end{bmatrix} \begin{bmatrix} c_1 \\ c_2 \end{bmatrix}}$$

\(w_1=w_{k1}, w_2=w_{k2}\)를 대입하면 \(L(\textbf{w}_k)=c_0\) 이다.

그 다음 \(w_1, w_2\)에 대해 각각 편미분 해보면 (\(\partial L/\partial w_1, \partial L/\partial w_2\)),

$$\displaylines{\frac{\partial L}{\partial w_1}=\cancel{c_0}+c_1(1-\cancel{w_{k1}})+c_2(\cancel{w_2}-\cancel{w_{k2}})=c_1 \\ \frac{\partial L}{\partial w_2}=\cancel{c_0}+c_1(\cancel{w_1}-\cancel{w_{k1}})+c_2(1-\cancel{w_{k2}})=c_2}$$

따라서 (\(L(\textbf{w}_k)=c_0\) 이므로),

$$\displaylines{L(\textbf{w}) \backsimeq L(\textbf{w}_k) + \begin{bmatrix} w_1-w_{k1}, w_2-w_{k2} \end{bmatrix} \begin{bmatrix} \frac{\partial L}{\partial w_1} \\ \frac{\partial L}{\partial w_2} \end{bmatrix} \\ = L(\textbf{w}_k)+(\textbf{w}-\textbf{w}_k)\frac{\partial L}{\partial \textbf{w}^\intercal}|_{\textbf{w}=\textbf{w}_k}}$$

  • 위에서 구한 식에, \(\textbf{w}_k\)에서 아주 조금 앞으로 간 \(\textbf{w}_{k+1}=\textbf{w}_{k}+\Delta\)를  \(\textbf{w}\)에대입해보자.

$$\displaylines{L(\textbf{w}_{k+1})=L(\textbf{w}_k)+\Delta \frac{\partial L}{\partial \textbf{w}^\intercal}|_{\textbf{w}=\textbf{w}_{k}} \\ L(\textbf{w}_{k+1})-L(\textbf{w}_k)=\Delta \frac{\partial L}{\partial \textbf{w}^\intercal}|_{\textbf{w}=\textbf{w}_{k}}}$$

우변은 \(\Delta\)와 \(\frac{\partial L}{\partial \textbf{w}^\intercal}|_{\textbf{w}=\textbf{w}_{k}}\)만 남는데, \(\Delta\)는 \([w_{k1}, w_{k2}]\)에서 아주 조금 특정 방향으로 이동한 행벡터이고, \(\frac{\partial L}{\partial \textbf{w}^\intercal}|_{\textbf{w}=\textbf{w}_{k}}\) 는 이미 값이 정해져 있는 그라디언트이다.

그라디언트는 이미 값이 정해져있으므로 바꿀 수 없다. 그럼 남는 것은 \(\Delta\)인데, 벡터간 내적인 \(\Delta \frac{\partial L}{\partial \textbf{w}^\intercal}|_{\textbf{w}=\textbf{w}_{k}}\) 의 값이 가장 크게 되려면 \(\Delta\)는 그라디언트와 동일한 방향으로 이동해야만 값이 최대가 된다(벡터간 내적은 두 벡터의 각이 0일 때 가장 크니까)

즉, 위 그림에서 \(\Delta\)가 여러 방향으로 움직일 수 있지만 gradient와 동일한 방향을 가져야만 \(L(\textbf{w}_{k+1})-L(\textbf{w}_k)\)가 최대가 된다.

다시 말해, \(\textbf{w}_k\)에서의 미분값인 gradient 방향으로 업데이트 하면 \(L(\textbf{w}_{k+1})-L(\textbf{w}_k)\), 즉 Loss의 변화량이 최대가 된다.

따라서 그라디언트는 해당 지점에서 항상 Loss 함수의 가장 가파른 상승 방향을 향하는 벡터임을 알 수 있다.(그렇게 \(\Delta\) 를 조절해야 한다고 말하는게 더 정확한 표현 아닌가?)

  • learning rate가 존재하는 이유? 애초에 위 증명은 1차식까지만 근사한 것이기 때문에, 너무 많이 gradient 방향으로 움직이면 근사가 깨지게 되므로 learning rate를 도입해서 적당한 크기만큼 움직이도록 해야 한다.
중학교 때부터 어떤 함수의 최소, 최대 값을 구하기 위해서는 미분을 하고 해당 방향으로 이동하면 된다고 배웠고 어렵지도 않은 개념이었는데… 왜 이렇게 증명이 필요할까??

내 생각에는 함수를 정확히 알고 있으면 그라디언트 방향으로 이동하는 것이 당연히 최소/최대로 이르는 길임을 알 수 있는데, 여기서는 함수를 근사하고 있기 때문에 그라디언트 방향으로 이동하는 것이 정말 최소 값에 이르는 길인지 확실하지 않기 때문에 증명하는 것 같다고 정리해본다;;;

12. 벡터를 벡터로 미분하는 법

10에서 출력이 스칼라 하나인 함수를 입력인 벡터로 미분하는 경우를 보았다.

이번에는 출력도 벡터인 함수를 입력인 벡터로 미분해보자.

  • 스칼라를 벡터로 미분:

  • 벡터 입력 벡터 출력? \(f([x_1, x_2])=[x_1x_2^2,x1+x2]\)처럼 여러개 들어가서 여러개 나오는 경우
  • 벡터를 벡터로 미분(2열에 \(f_2\)에 대한 미분이 추가 됬다고 보면됨)

$$\displaylines{d\textbf{f}=[df_1,df_2]=[dx_1, dx_2] \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_2}{\partial x_1} \\ \frac{\partial f_1}{\partial x_2} & \frac{\partial f_2}{\partial x_2} \end{bmatrix} = d\textbf{x}\frac{\partial \textbf{f}}{\partial \textbf{x}^\intercal}}$$

  • 예시)
    • \(\textbf{y}=\textbf{f}(\textbf{x})=\textbf{xA}\)를 \(\textbf{x}\)로 미분하면, \(d\textbf{f}=d\textbf{xA}\)이므로, \(d\textbf{x}\) 뒤에 있는 \(\frac{\partial \textbf{f}}{\partial \textbf{x}^\intercal}=\textbf{A}\)로 금방 구할 수 있다.

13. 벡터를 벡터로 미분할 때의 연쇄법칙

  • \(\textbf{y}=\textbf{xA}, \space \textbf{z}=\textbf{yB}\) 일 때, \(\textbf{z}\)를 \(\textbf{x}\)로 미분→ Chain Rule 활용

$$d\textbf{z}=d\textbf{y}\frac{\partial \textbf{z}}{\partial \textbf{y}^\intercal}, \space \space d\textbf{y}=d\textbf{x}\frac{\partial \textbf{y}}{\partial \textbf{x}^\intercal}$$

이므로 \(d\textbf{y}\)를 대입하면,

$$d\textbf{z}=d\textbf{x}\frac{\partial \textbf{y}}{\partial \textbf{x}^\intercal}\frac{\partial \textbf{z}}{\partial \textbf{y}^\intercal}$$

여기서, 행렬은 교환 법칙이 성립하지 않으므로, 반드시 순서대로 곱해야한다

14. 스칼라를 행렬로 미분하는 법

  • 행렬이 입력, 출력은 스칼라인 함수를 미분해보자. ex) \(f(\textbf{X})=tr(\textbf{XA})\)
    • tr(trace) → 행렬의 대각성분의 합
  • 스칼라를 벡터로 미분할 때를 복기해보면,

위와 비슷하게 생각하면, \(\textbf{X}=\begin{bmatrix}x_{11} \space x_{12} \\ x_{21} \space x_{22} \end{bmatrix}\) 일 때, 다음과 같음을 알 수 있다.

결론적으로,

예시로 \(f(\textbf{X})=tr(\textbf{XA})\)를 생각해보면,

$$\displaylines{df = tr((\textbf{X}+d\textbf{X})\textbf{A})-tr(\textbf{XA}) \\ = tr((\textbf{X}+d\textbf{X})\textbf{A})-\textbf{XA}) \\ = d\textbf{XA}}$$

따라서 \(d\textbf{X}\) 뒤에 있는 \(\frac{\partial f}{\partial \textbf{X}^\intercal} = \textbf{A}\) 임을 알 수 있다.

15. 행렬을 행렬로, 벡터를 행렬로 미분

  • 앞에서 배운 방식으로 증명하기에는 한계가 있으므로, 행렬을 벡터화(Vectorize)해서 벡터를 벡터로 미분하는 과정으로 증명한다.
  • Vectorize?

$$\text{vec}(\begin{bmatrix}x_{11} \space x_{12} \\ x_{21} \space x_{22} \end{bmatrix}) = [x_{11} \space x_{12} \space x_{21} \space x_{22}]$$

  • 행렬을 벡터로 변환했으면, 벡터를 벡터로 미분하는 방식을 그대로 적용 가능하다.

따라서,

$$d\text{vec}(\textbf{F})=d\text{vec}(\textbf{X})\frac{\partial \text{vec}(\textbf{F})}{\partial \text{vec}^\intercal(\textbf{X})}$$

  • 벡터를 행렬로 미분하는 과정도 마찬가지 방식으로 접근 가능. 예를 들어 \textbf{y}=\textbf{x}\textbf{W}를 \textbf{W}로 미분한다면?

$$\displaylines{\textbf{y}=[y_1 \space y_2], \textbf{x} =[x_1 \space x_2], \textbf{W}=\begin{bmatrix}w_{11} \space w_{12} \\ w_{21} \space w_{22} \end{bmatrix} \\ [y_1 \space y_2]=[x_1 \space x_2]\begin{bmatrix}w_{11} \space w_{12} \\ w_{21} \space w_{22} \end{bmatrix}=[x_1w_{11}+x_2w_{21} \space \space \space x_2w_{12}+x_2w_{22}]}$$

일 때,

$$\displaylines{\frac{\partial \textbf{y}}{\partial \textbf{W}^\intercal}= \begin{bmatrix} \frac{\partial \textbf{y}_1}{\partial w_{11}} \space \frac{\partial \textbf{y}_2}{\partial w_{11}} \\ \frac{\partial \textbf{y}_1}{\partial w_{12}} \space \frac{\partial \textbf{y}_2}{\partial w_{12}} \\ \frac{\partial \textbf{y}_1}{\partial w_{21}} \space \frac{\partial \textbf{y}_2}{\partial w_{21}} \\ \frac{\partial \textbf{y}_1}{\partial w_{22}} \space \frac{\partial \textbf{y}_2}{\partial w_{22}} \end{bmatrix}= \begin{bmatrix}x_1 \space 0 \\ 0 \space x_1 \\ x_2 \space 0 \\ 0 \space x_2 \\ \end{bmatrix} = \textbf{x}^\intercal \otimes \textbf{I}_2}$$

( \( \otimes \)= kronecker product)