머신러닝을 위한 수학

Machine Learning
Mathmatics
Data science
Author

Taeyoon Kim

Published

September 10, 2024

Modified

November 12, 2024

책 “아카이시 마사노리, 딥러닝을 위한 수학, 위키북스, 2020”을 읽고 저자가 정리한 딥러닝을 위한 수학의 최단기 코스 목차를 참고해 내용을 하였습니다. 더 자세한 설명과 파이썬 코드를 알고 싶으시다면 책을 읽어보시는 걸 추천드립니다.

1 수학이 필요한 이유

머신러닝을 이해하는 데 수학은 알고리즘의 작동 원리를 이해하고, 알고리즘을 최적화하며, 데이터를 분석하는 데 필요합니다. 따라서 수학적 개념을 이해하지 못하면 다음과 같은 한계가 있습니다:1

  • 알고리즘의 블랙박스화: 수학적 원리를 이해하지 못하면 알고리즘이 어떻게 동작하는지 알기 어려워지고, 결과를 해석하거나 문제를 해결하는 데 어려움을 겪을 수 있습니다.
  • 문제 해결 능력 제한: 수학적 이해가 부족하면 복잡한 문제를 논리적으로 해결하는 데 한계가 생길 수 있습니다.
  • 모델 최적화의 어려움: 수학적 최적화를 이해하지 못하면 모델의 성능을 개선하거나 최적화하는 데 어려움을 겪을 수 있습니다.

1.1 알아야하는 필수 개념

2 미분과 적분

미분과 적분은 수학에서 매우 중요한 개념으로, 함수의 변화를 분석하고 이해하는 데 핵심적인 역할을 합니다. 이 두 개념은 서로 밀접하게 연관되어 있으며, 많은 실제 응용 분야에서 활용됩니다.

미분은 함수의 순간적인 변화율을 측정하는 방법입니다. 주요 특징은 다음과 같습니다:

  • 함수의 기울기를 나타냅니다.
  • 변화의 속도를 계산하는 데 사용됩니다.
  • 최적화 문제를 해결하는 데 중요한 역할을 합니다.

미분은 ” 함수를 미세하게 쪼개는 것 ” 으로 이해할 수 있습니다.2 이는 함수의 특정 지점에서의 순간적인 변화를 분석하는 데 유용합니다.

적분은 미분의 역연산으로, 적분은 ” 쌓는 것 ” 으로 이해할 수 있으며 함수값을 미세하게 나누어 합친 값을 의미합니다.3 다음과 같은 특징이 있습니다:

  • 함수의 곡선 아래 면적을 계산합니다.
  • 누적된 변화량을 구하는 데 사용됩니다.
  • 부정적분과 정적분으로 나뉩니다.

미분과 적분의 관계는 서로 역관계에 있습니다. 이를 미적분학의 기본 정리라고 합니다.

  • 함수 \(f(x)\) 의 부정적분 \(F(x)\) 를 미분하면 원래 함수 \(f(x)\) 가 됩니다.
  • 정적분은 부정적분을 이용해 계산할 수 있습니다.

2.1 함수

관련 개념: 합성함수와 역함수, 극한과 미분, 다변수 함수

함수는 정의역의 각 원소에 공역의 원소를 오직 하나씩 대응시키는 관계입니다.4 함수는 종종 ’ 보이지 않는 마술상자 ’ 에 비유됩니다. 입력값을 넣으면 특정한 출력값이 나오는 구조이기 때문입니다. 이 비유는 단순해 보이지만 함수의 본질적인 개념을 잘 표현합니다

  • 입력값 (정의역) 에 대해 단 하나의 출력값 (공역) 이 존재합니다.
  • 모든 입력값은 반드시 하나의 출력값을 가져야 합니다.

2.2 합성함수와 역함수

관련 개념: 로그함수

합성함수와 역함수는 함수의 성질을 이해하고 복잡한 관계를 분석하는 데 중요한 도구입니다. 특히 합성함수는 여러 단계의 변환을 하나의 함수로 표현할 수 있게 해주며, 역함수는 함수의 가역성을 나타내는 중요한 개념입니다.

합성함수: 합성함수는 두 개 이상의 함수를 연속적으로 적용하여 만든 새로운 함수입니다. 함수 \(f\)\(g\) 가 있을 때 \(g∘f(x) = g(f(x))\) 로 정의되는 함수를 \(f\)\(g\) 의 합성함수라고 합니다. 합성함수는 여러 함수를 거쳐 한 집합에서 다른 집합으로 직접 연결하는 ” 다리 ” 역할을 합니다.5

  1. 교환법칙이 성립하지 않습니다. \(g∘f ≠ f∘g\)
  2. 결합법칙은 성립합니다. \((h∘g)∘f = h∘(g∘f)\)

역함수: 역함수는 주어진 함수의 입력과 출력을 서로 바꾼 함수입니다. 함수 \(f\) 에 대해 \(y = f(x)\) 이면 \(x = f^(-1)(y)\) 가 성립하는 함수 \(f^(-1)\)\(f\) 의 역함수라고 합니다. 역함수는 원래 함수의 ” 되돌리기 ” 연산으로 볼 수 있습니다.

  1. 모든 함수가 역함수를 가지는 것은 아닙니다. 일대일대응 함수만이 역함수를 가집니다.6
  2. \(f(f^(-1)(x)) = f^(-1)(f(x)) = x\) 가 성립합니다.

2.3 극한과 미분

관련개념: 극대와 극소, 다항식의 미분, 곱의 미분, 적분, 합성함수의 미분, 로그함수의 미분, 편미분, 전미분

극한은 어떤 변수가 특정 값에 한없이 가까워질 때 함수값이 수렴하는 값을 의미합니다.

  • 엡실론 - 델타 정의: 함수 \(f(x)\)\(x\)\(a\) 로 접근할 때의 극한 \(L\) 은 다음과 같이 정의됩니다: 모든 \(ε > 0\) 에 대해, \(δ > 0\) 이 존재하여 \(0 < |x - a| < δ\) 일 때 \(|f(x) - L| < ε\) 이 성립합니다.
  • 직관적으로 \(x\)\(a\) 에 충분히 가까워지면 \(f(x)\)\(L\) 에 원하는 만큼 가까워질 수 있다는 의미입니다.
  • 엡실론 - 델타 정의는 해석학의 기초가 되며 이를 통해 함수의 성질을 엄밀하게 분석할 수 있습니다.

미분은 함수의 순간변화율을 나타내는 개념입니다.

  • 극한을 이용한 정의: 함수 \(f(x)\)\(x = a\) 에서의 미분은 다음과 같이 정의됩니다: \(f'(a) = lim_{h→0} [f(a+h) - f(a)] / h\)
  • 이는 함수의 그래프 상의 한 점에서의 접선의 기울기를 의미하며 \(f'(a)\) 를 함수 \(f(a)\) 의 도함수라 합니다.

극한과 미분의 관계

  1. 미분은 극한의 개념을 기반으로 정의됩니다. 미분 계수는 특정한 형태의 극한값입니다.
  2. 함수가 미분 가능하려면 해당 점에서 극한이 존재해야 합니다. 즉, 좌극한과 우극한이 같아야 합니다.
  3. 극한의 존재가 미분 가능성을 보장하지는 않습니다. 예를 들어, \(|x|\)\(x = 0\) 에서 극한은 존재하지만 미분은 불가능합니다.
  4. 미분 가능한 함수는 반드시 연속함수이지만 그 역은 성립하지 않습니다.

2.4 극대와 극소

관련개념: 경사하강법, 가능도함수와 최대가능도 추정

극대와 극소는 함수의 그래프에서 봉우리와 골짜기를 나타내며, 이러한 점들을 찾는 것은 함수의 최적화 및 분석에 있어 매우 중요합니다. 극대와 극소를 찾기 위해서는 도함수를 사용하여 함수의 기울기가 \(0\) 이 되는 지점을 찾고, 이 지점들이 극대인지 극소인지 추가적인 분석을 통해 확인합니다. 이 개념들은 최적화 문제와 함수의 그래프 분석에서 중요한 역할을 합니다.

극대: 함수 \(y = f(x)\)\(x = a\) 에서 극대 (maximum) 를 가진다고 할 때, 이는 \(f(a)\)\(a\) 의 근처에 있는 모든 \(x\) 에 대해 \(f(x) \leq f(a)\) 를 만족하는 경우를 의미합니다.

  • 극대점에서는 함수의 기울기가 \(0\) 이 되거나, 변화가 없는 상태가 됩니다. 즉, 도함수 \(f'(x) = 0\) 이거나 정의되지 않는 점일 수 있습니다.

극소: 함수 \(y = f(x)\)\(x = b\) 에서 극소 (minimum) 를 가진다고 할 때 이는 \(f(b)\)\(b\) 의 근처에 있는 모든 \(x\) 에 대해 \(f(x) \geq f(b)\) 를 만족하는 경우를 의미합니다.

  • 극소점에서도 마찬가지로 함수의 기울기가 \(0\) 이 되거나 변화가 없는 상태가 됩니다. 즉, 도함수 \(f'(x) = 0\) 이거나 정의되지 않는 점일 수 있습니다.

2.5 다항식의 미분

관련개념: 시그모이드 함수

다항식의 미분은 함수의 순간 변화율을 나타내며, 곡선의 기울기를 구하거나 최적화 문제를 해결하는 데 사용됩니다. 다항식의 미분은 각 항을 개별적으로 미분한 후 그 결과를 더하는 방식으로 이루어집니다. 다항식 미분의 주요 특징은 다음과 같습니다:

  1. 상수항의 미분: 상수 c 에 대해 \((c)' = 0\)
  2. 거듭제곱 함수의 미분: \(x^n\) 의 미분은 \(nx^(n-1)\) 입니다. 즉, \((x^n)' = nx^(n-1)\).
  3. 선형성: \((f(x) + g(x))' = f'(x) + g'(x)\), \((cf(x))' = c * f'(x)\). 여기서 \(c\) 는 상수.

다항식의 미분 정의: 다항식 \(f(x) = a_n x^n + a_(n-1) x^(n-1) + ... + a_1 x + a_0\) 의 미분은 다음과 같이 정의됩니다:

  • \(f'(x) = n * a_n x^(n-1) + (n-1) * a_(n-1) x^(n-2) + ... + 2 * a_2 x + a_1\) 이 정의를 사용하면 모든 다항식의 미분을 쉽게 계산할 수 있습니다.

예를 들면 아래와 같습니다: - \((3x^2 + 2x - 1)'= 6x + 2\) - \((x^3 - 5x + 7)' = 3x^2 - 5\)

2.6 곱의 미분

관련개념: 몫의 미분

곱의 미분법칙 (product rule) 은 두 함수의 곱을 미분할 때 사용하는 규칙으로 복잡한 함수의 미분을 단순화하고 해결하는 데 활용됩니다.

곱의 미분은 두 함수 \(u(x)\)\(v(x)\) 의 곱 \(f(x) = u(x)v(x)\) 에 대한 미분은 다음과 같이 정의됩니다: \(f'(x) = u'(x)v(x) + u(x)v'(x)\). 여기서 \(f'(x)\)\(f(x)\) 의 도함수이며 \(u'(x)\)\(u(x)\) 의 도함수이고 \(v'(x)\)\(v(x)\) 의 도함수입니다.

곱의 미분 특징:

  1. 이 법칙은 두 함수의 곱을 미분할 때 각 함수를 개별적으로 미분한 후 조합하는 방법을 제공합니다.
  2. 첫 번째 함수의 미분에 두 번째 함수를 곱하고, 두 번째 함수의 미분에 첫 번째 함수를 곱한 후 이 둘을 더합니다.
  3. 이 법칙은 두 개 이상의 함수의 곱에도 확장 적용할 수 있습니다.
  4. 곱의 미분법칙은 합의 미분법칙과 함께 복잡한 함수의 미분을 가능하게 합니다.

2.7 합성함수의 미분

관련 개념: 몫의 미분, 지수함수의 미분, 전미분과 합성함수

합성함수의 미분, 즉 연쇄법칙 (chain rule) 은 신경망과 같은 복잡한 구조의 미분을 계산할 때 핵심적인 역할을 합니다.

합성함수의 미분 정의: 두 함수 \(f(x)\)\(g(x)\) 의 합성함수 \(h(x) = f(g(x))\) 에 대한 미분은 다음과 같이 정의됩니다: \(h'(x) = f'(g(x)) * g'(x)\) . 여기서 \(h'(x)\) 는 합성함수 \(h(x)\) 의 도함수, \(f'(g(x))\)\(f\) 의 도함수를 \(g(x)\) 에 대해 계산한 것, \(g'(x)\)\(g(x)\) 의 도함수입니다.

연쇄법칙의 특징

  1. 이 법칙은 ” 바깥 함수의 미분 ” 곱하기 ” 안쪽 함수의 미분 ” 으로 이해할 수 있습니다.
  2. 연쇄법칙은 여러 함수가 중첩된 복잡한 함수의 미분을 가능하게 합니다.
  3. 이 법칙은 다변수 함수의 편미분에도 확장 적용될 수 있습니다.
  4. 연쇄법칙은 역함수의 미분을 구할 때도 유용합니다.

2.8 몫의 미분

관련 개념: 소프트맥스 함수

몫의 미분법칙 (quotient rule) 은 두 함수의 몫을 미분할 때 사용하는 규칙입니다. 두 함수 \(u(x)\)$와 \(v(x)\)$ 의 몫 \(f(x) = \frac{u(x)}{v(x)}\) 에 대한 미분은 다음과 같이 정의됩니다:

\[ f'(x) = \frac{u'(x)v(x) - u(x)v'(x)}{[v(x)]^2} \]

여기서

  • \(f'(x)\)\(f(x)\) 의 도함수입니다.
  • \(u'(x)\)\(u(x)\) 의 도함수입니다.
  • \(v'(x)\)\(v(x)\) 의 도함수입니다.

몫의 미분법칙은 복잡한 함수의 미분을 단순화하고, 다양한 수학적 문제를 해결하는 데 중요한 도구입니다. 이 법칙의 특징은 다음과 같습니다:

  1. 분자와 분모의 역할: 분자의 미분에 분모를 곱하고, 분모의 미분에 분자를 곱한 후, 이 두 값을 뺍니다.
  2. 분모의 제곱: 결과적으로 분모의 제곱이 분모로 들어갑니다.
  3. 적용 조건: 분모 \(v(x)\) 는 0 이 아니어야 합니다. 이는 함수가 정의되지 않는 점을 피하기 위함입니다.

2.9 적분

관련 개념: 확률밀도함수와 확률분포함수

적분은 고대 그리스의 아르키메데스가 처음 아이디어를 제시했으며, 이후 앙리 르베그와 같은 수학자들에 의해 이론적으로 완성되었습니다. 적분은 물리학, 공학, 경제학 등 다양한 분야에서 널리 사용되며, 예를 들어 곡면으로 이루어진 수영장을 채우기 위해 필요한 물의 양을 계산하는 데 활용될 수 있습니다.7

적분은 크게 두 가지로 나뉩니다: 부정적분과 정적분입니다. 부정적분은 함수의 원시함수를 찾는 과정이며, 정적분은 특정 구간에서의 함수의 값을 계산하는 과정입니다.8 적분의 주요 특징과 의미는 다음과 같습니다:

  1. 정의: 적분은 함수의 그래프 아래 면적을 계산하는 방법입니다.
  2. 종류:
    • 부정적분: 함수의 원시함수를 찾는 과정
    • 정적분: 특정 구간에서의 함수의 값을 계산하는 과정 9
  3. 정적분의 개념: 주어진 함수의 구간을 아주 작은 직사각형들로 나누어 그 넓이의 합을 구하는 방식입니다.
  4. 리만 적분: 가장 일반적으로 사용되는 적분 형식 중 하나로, 함수를 잘게 나누어 근사값을 구하는 방식입니다.
  5. 미적분학의 기본 정리: 미분과 적분이 서로 역연산 관계에 있음을 보여주는 중요한 정리입니다.10
  6. 응용: 적분은 물리학, 공학, 경제학 등 다양한 분야에서 사용되며, 면적, 부피, 일, 에너지 등 다양한 물리량을 계산하는 데 활용됩니다.

3 벡터와 행렬

3.1 벡터

관련개념: 덧셈, 뺄셈, 스칼라 곱셈, 편미분

벡터는 수학과 물리학에서 크기와 방향을 동시에 가지는 양을 나타내는 개념입니다. 벡터는 일반적으로 화살표로 표현되며, 시작점과 끝점을 통해 방향과 크기를 나타냅니다. 주요 특징은 다음과 같습니다:

  1. 크기와 방향: 벡터는 크기 (길이) 와 방향을 가지며, 이 두 가지 요소로 정의됩니다. 크기는 벡터의 길이를 나타내고, 방향은 벡터가 가리키는 방향을 나타냅니다.
  2. 자유벡터: 벡터는 시점 (시작점) 이 자유로울 수 있으며, 같은 크기와 방향을 가지면 동일한 벡터로 간주됩니다. 이러한 벡터를 자유벡터라고 합니다.
  3. 벡터의 연산: 벡터는 덧셈, 뺄셈, 스칼라 곱 등의 연산이 가능합니다. 이러한 연산을 통해 벡터의 크기와 방향을 조작할 수 있습니다.11
  4. 벡터 공간: 벡터는 벡터 공간의 원소로 간주되며, 벡터 공간은 벡터의 선형 결합으로 구성됩니다. 벡터 공간은 수학적 구조를 정의하는 데 중요한 역할을 합니다.

3.2 덧셈, 뺄셈, 스칼라 곱셈

관련개념: 길이와 거리

벡터의 덧셈과 뺄셈은 벡터의 결합과 분리를 나타내며, 스칼라 곱셈은 벡터의 크기를 조절하는 데 사용됩니다.12 각 연산의 정의는 다음과 같습니다:

벡터의 덧셈: 두 벡터 \(\mathbf{a}\)\(\mathbf{b}\) 의 덧셈은 대응하는 성분끼리 더하는 것입니다. - 수식: \(\mathbf{a} + \mathbf{b} = (a_1 + b_1, a_2 + b_2, \ldots, a_n + b_n)\) - 특징: 벡터 덧셈은 교환법칙과 결합법칙이 성립합니다.

벡터의 뺄셈: 두 벡터 \(\mathbf{a}\)\(\mathbf{b}\) 의 뺄셈은 대응하는 성분끼리 빼는 것입니다. - 수식: \(\mathbf{a} - \mathbf{b} = (a_1 - b_1, a_2 - b_2, \ldots, a_n - b_n)\) - 특징: 벡터 뺄셈은 벡터 덧셈과 유사하게 처리되며, 벡터의 방향을 반대로 하는 것과 같습니다.

스칼라 곱셈: 벡터 \(\mathbf{a}\) 에 스칼라 \(c\) 를 곱하는 것은 벡터의 각 성분에 \(c\) 를 곱하는 것입니다.

  • 수식: \(c\mathbf{a} = (ca_1, ca_2, \ldots, ca_n)\)
  • 특징: 스칼라 곱셈은 벡터의 크기를 변화시키며, 방향은 변하지 않습니다. 스칼라가 음수일 경우 벡터의 방향이 반대가 됩니다.

3.3 길이와 거리

관련개념: 내적, 코사인 유사도

벡터의 길이: 벡터의 길이 (또는 크기) 는 벡터가 나타내는 화살표의 길이를 의미하며, 이는 벡터의 각 성분의 제곱의 합의 제곱근으로 계산됩니다.

  • 수식: 벡터 \(\mathbf{v} = (v_1, v_2, \ldots, v_n)\) 의 길이는 다음과 같이 정의됩니다: \[ \|\mathbf{v}\| = \sqrt{v_1^2 + v_2^2 + \ldots + v_n^2} \]
  • 특징: 벡터의 길이는 항상 0 이상의 값을 가지며, 벡터가 원점에서 얼마나 떨어져 있는지를 나타냅니다.

벡터 간의 거리: 두 벡터 사이의 거리는 두 벡터를 연결하는 선분의 길이를 의미합니다. - 수식: 벡터 \(\mathbf{u} = (u_1, u_2, \ldots, u_n)\)\(\mathbf{v} = (v_1, v_2, \ldots, v_n)\) 사이의 거리는 다음과 같이 정의됩니다: \[ \text{거리}(\mathbf{u}, \mathbf{v}) = \sqrt{(u_1 - v_1)^2 + (u_2 - v_2)^2 + \ldots + (u_n - v_n)^2} \] - 특징: 이 거리는 유클리드 거리로, 두 점 사이의 직선 거리를 측정하며, 항상 0 이상의 값을 가집니다.

3.4 삼각함수

관련개념: 내적

삼각함수는 삼각형의 각과 변의 관계를 나타내는 함수로, 주로 직각삼각형에서 정의됩니다.13 삼각함수의 주요 정의는 다음과 같습니다:

  1. 사인 (Sine, \(\sin\)): 직각삼각형에서 한 각의 사인은 그 각의 대변의 길이를 빗변의 길이로 나눈 값입니다.

  2. 코사인 (Cosine, \(\cos\)): 직각삼각형에서 한 각의 코사인은 그 각의 인접변의 길이를 빗변의 길이로 나눈 값입니다.

  3. 탄젠트 (Tangent, \(\tan\)): 직각삼각형에서 한 각의 탄젠트는 그 각의 대변의 길이를 인접변의 길이로 나눈 값입니다.

3.5 내적

관련개념: 코사인 유사도, 행렬과 행렬 연산, 경사하강법

내적은 두 벡터의 각 성분을 곱한 후 더하는 연산으로, 실수체에서는 이중선형 (bilinear) 함수로 정의됩니다. 이는 두 벡터의 방향이 얼마나 일치하는지를 나타냅니다.14 내적의 정의는 다음과 같습니다:

  • 수식: 두 벡터 \(\mathbf{a} = (a_1, a_2, \ldots, a_n)\)\(\mathbf{b} = (b_1, b_2, \ldots, b_n)\) 의 내적은 다음과 같이 계산됩니다: \[ \mathbf{a} \cdot \mathbf{b} = a_1b_1 + a_2b_2 + \ldots + a_nb_n \]

  • 성질:

    1. 교환법칙: \(\mathbf{a} \cdot \mathbf{b} = \mathbf{b} \cdot \mathbf{a}\)
    2. 분배법칙: \(\mathbf{a} \cdot (\mathbf{b} + \mathbf{c}) = \mathbf{a} \cdot \mathbf{b} + \mathbf{a} \cdot \mathbf{c}\)
    3. 스칼라곱과의 호환성: \(c(\mathbf{a} \cdot \mathbf{b}) = (c\mathbf{a}) \cdot \mathbf{b} = \mathbf{a} \cdot (c\mathbf{b})\), 여기서 \(c\) 는 스칼라입니다.

3.6 코사인 유사도

코사인 유사도 (Cosine Similarity) 는 두 벡터 간의 유사도를 측정하는 방법으로, 두 벡터 사이의 코사인 각도를 이용하여 유사도를 계산합니다. 코사인 유사도는 벡터의 방향에 기반하여 유사성을 측정하기 때문에, 크기에 영향을 받지 않고 패턴이나 방향의 유사성을 평가하는 데 적합합니다. 따라서 자연어 처리 (NLP) 에서 문서 간의 유사도를 측정하거나 추천 시스템에서 아이템 간의 유사도를 계산하는 데 널리 사용됩니다. 코사인 유사도는 다음과 같은 특징을 가지고 있습니다:

  1. 정의: 코사인 유사도는 두 벡터가 이루는 각의 코사인을 계산하여 두 벡터의 방향이 얼마나 유사한지를 나타냅니다. 수식으로는 다음과 같이 표현됩니다: \[ \text{Cosine Similarity} = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|} \] 여기서 \(\mathbf{A} \cdot \mathbf{B}\) 는 두 벡터의 내적이고, \(\|\mathbf{A}\|\)\(\|\mathbf{B}\|\) 는 각각 벡터의 크기 (길이) 입니다.

  2. 특징:

    • 코사인 유사도는 -1 에서 1 사이의 값을 가지며, 1 에 가까울수록 두 벡터의 방향이 유사하다는 것을 의미합니다.
    • 벡터의 크기보다는 방향에 초점을 맞추기 때문에, 문서의 길이가 다르거나 크기가 다른 벡터를 비교할 때 유용합니다 15

3.7 행렬과 행렬 연산

행렬은 수 또는 다항식 등을 직사각형 모양으로 배열한 것입니다. 행렬은 수학과 과학의 다양한 분야에서 사용되며, 특히 물리학, 컴퓨터 그래픽스, 확률론, 통계학 등에서 중요한 역할을 합니다. 행렬에 대한 주요 연산은 다음과 같습니다:

  1. 덧셈: 같은 크기의 두 행렬에 대해서만 정의되며, 대응하는 원소끼리 더합니다.
  2. 스칼라배: 행렬의 각 원소에 스칼라를 곱하는 연산입니다.
  3. 곱셈: 첫 번째 행렬의 열의 수와 두 번째 행렬의 행의 수가 같을 때 정의됩니다. 결과 행렬의 각 원소는 첫 번째 행렬의 행과 두 번째 행렬의 열의 원소를 곱한 후 합한 값입니다.
  4. 전치 행렬: 행과 열을 교환한 행렬입니다. 즉, 원래 행렬의 \(i\)- 행, \(j\)- 열의 원소가 전치 행렬에서는 \(j\)- 행, \(i\)- 열의 원소가 됩니다.16
  5. 역행렬: 정방행렬 (정사각 행렬) 에 대해서만 정의되며, 행렬 곱셈의 역원 역할을 합니다. 모든 정방행렬이 역행렬을 가지는 것은 아닙니다.
  6. 행렬식: 정방행렬에 대해 정의되는 값으로, 행렬의 특성을 나타냅니다. 기하학적으로는 행렬이 나타내는 변환의 부피 스케일링을 의미합니다.17

4 다변수 함수의 미분

4.1 다변수 함수

관련개념: 함수, 편미분

다변수 함수는 두 개 이상의 독립변수를 가지는 함수를 의미합니다. 단변수 함수의 개념을 고차원으로 확장한 것으로 더 복잡한 현상을 수학적으로 표현할 때 사용합니다. 주요 특징과 정의는 다음과 같습니다:

  1. 정의: 다변수 함수는 여러 개의 입력 변수를 받아 하나의 출력값을 반환하는 함수입니다. 일반적으로 다음과 같이 표현됩니다: \(f(x_1, x_2, ..., x_n) = y\) 여기서 \(x_1, x_2, ..., x_n\) 은 독립변수이고, \(y\) 는 종속변수입니다.
  2. 정의역: 다변수 함수의 정의역은 n 차원 공간의 부분집합입니다. 예를 들어, 2 변수 함수의 경우 정의역은 2 차원 평면의 일부가 됩니다.
  3. 치역: 함수의 출력값들의 집합으로 일반적으로 실수 집합의 부분집합입니다.
  4. 그래프: 다변수 함수의 그래프는 \(n+1\) 차원 공간에 존재합니다. 예를 들어, 2 변수 함수의 그래프는 3 차원 공간에 표현됩니다.
  5. 연속성과 미분가능성: 단변수 함수와 마찬가지로 다변수 함수도 연속성과 미분가능성을 가질 수 있습니다. 다만, 이를 판단하는 기준이 더 복잡해집니다.
  6. 편미분: 다변수 함수에서는 각 변수에 대한 편미분을 고려해야 합니다. 이는 다른 변수들을 상수로 취급하고 한 변수에 대해서만 미분하는 것을 의미합니다.

4.2 편미분

관련개념: 극한과 미분, 벡터, 전미분, 전미분과 함성함수

편미분은 다변수 함수에서 특정 변수에 대해 미분하는 것을 의미합니다. 편미분의 주요 특징과 정의는 다음과 같습니다:

  1. 정의: 다변수 함수 \(f(x, y, z, ...)\) 에서 한 변수에 대해서만 미분하고 나머지 변수들은 상수로 취급하여 미분하는 것입니다.
  2. 표기법: 편미분은 일반적으로 \(∂\) 기호를 사용하여 표현합니다. 예를 들어, \(f(x,y)\)\(x\) 에 대한 편미분은 \(∂f/∂x\) 로 표기합니다.
  3. 계산 방법: 편미분을 계산할 때는 미분하려는 변수 이외의 모든 변수를 상수로 취급하고 일반적인 미분 규칙을 적용합니다.
  4. 기하학적 의미: 편미분은 다변수 함수의 그래프에서 특정 방향으로의 기울기를 나타냅니다.
  5. 전미분과의 관계: 모든 변수에 대한 편미분을 종합하여 전미분을 구할 수 있습니다.

편미분은 복잡한 다변수 함수의 동작을 이해하고 분석하는 데 중요한 도구로, 현대 과학과 공학의 여러 분야에서 핵심적인 역할을 합니다.

4.3 전미분

관련개념: 편미분, 극한과 미분, 전미분과 합성함수, 경사하강법

전미분은 다변수 함수의 변화량을 특정 지점에서 근사화하는 방법으로, 각 변수의 변화에 따른 함수 값의 총 변화를 나타냅니다. 전미분은 다변수 함수의 변화를 이해하고 분석하는 데 중요한 도구로, 특히 복잡한 시스템의 근사해를 구하는 데 유용합니다.18 전미분은 다음과 같이 정의할 수 있습니다:

  1. 정의: 다변수 함수 \(f(x_1, x_2, \ldots, x_n)\) 의 전미분은 각 변수의 작은 변화에 대한 함수의 총 변화량을 근사화하는 선형 표현입니다. 이는 함수의 변화량을 각 변수의 변화량에 비례하여 나타냅니다.

  2. 수식: 함수 \(f(x, y)\) 의 전미분은 다음과 같이 표현됩니다: \[ df = \frac{\partial f}{\partial x} dx + \frac{\partial f}{\partial y} dy \] 여기서 \(\frac{\partial f}{\partial x}\)\(\frac{\partial f}{\partial y}\) 는 각각 \(x\)\(y\) 에 대한 편미분이며, \(dx\)\(dy\)\(x\)\(y\) 의 작은 변화량입니다.

  3. 기하학적 의미: 전미분은 함수의 그래프에서 접평면의 방정식을 구성하며, 이는 함수의 변화율을 각 변수 방향으로 나타내는 벡터의 합으로 이해할 수 있습니다.

4.4 전미분과 합성함수

관련개념: 편미분, 전미분, 합성함수의 미분

전미분과 합성함수는 모두 복잡한 함수의 변화를 분석하는 데 중요한 도구입니다. 전미분은 다변수 함수의 전체적인 변화를 이해하는 데 사용되며, 합성함수는 여러 단계의 변환을 거치는 함수를 다룰 때 유용합니다.

전미분: 전미분은 다변수 함수의 모든 변수에 대한 변화를 동시에 고려한 미분입니다.

  • 다변수 함수 \(f(x, y, ...)\) 의 전미분은 각 변수의 편미분을 모두 더한 형태로 표현됩니다.
  • 예를 들어, 2 변수 함수 \(f(x, y)\) 의 전미분은 다음과 같이 정의됩니다: \[df = (∂f/∂x)dx + (∂f/∂y)dy\]
  • 여기서 \(∂f/∂x\)\(∂f/∂y\) 는 각각 \(x\)\(y\) 에 대한 편미분이며, \(dx\)\(dy\)\(x\)\(y\) 의 미소 변화량을 나타냅니다.

합성함수: 합성함수는 두 개 이상의 함수를 연속적으로 적용하여 만든 새로운 함수입니다.

  • 함수 \(f\)\(g\) 가 있을 때, \((g ∘ f)(x) = g(f(x))\) 로 정의되는 함수를 \(f\)\(g\) 의 합성함수라고 합니다.
  • 합성함수는 한 함수의 출력을 다른 함수의 입력으로 사용하는 것을 의미합니다.
  • 합성함수의 미분에는 연쇄법칙이 적용됩니다. 즉, \((g ∘ f)'(x) = g'(f(x)) · f'(x)\) 입니다.

4.5 손실함수

관련개념: 미분과 적분, 편미분, 가능도함수와 최대가능도 추정, 경사하강법

손실함수는 모델이 예측한 값과 실제 정답 사이의 차이를 수치화하는 함수입니다. 이는 모델이 얼마나 잘못 예측하고 있는지를 측정하는 도구로, 학습 과정에서 모델의 성능을 개선하는 데 사용됩니다.

4.5.1 역할

  1. 성능 평가: 모델의 예측 정확도를 평가합니다.
  2. 학습 방향 제시: 손실값을 최소화하는 방향으로 모델을 조정합니다.
  3. 최적화 기준: 모델 파라미터를 조정하는 기준이 됩니다.

4.5.2 주요 손실함수 종류

회귀 문제에서의 손실함수:

  1. MSE (Mean Squared Error): 가장 기본적인 손실함수, 예측값과 실제값의 차이를 제곱하여 평균을 냄, 이상치에 민감할 수 있음.
  2. MAE (Mean Absolute Error): 예측값과 실제값의 절대 차이의 평균, MSE 에 비해 이상치에 덜 민감함.
  3. RMSE (Root Mean Squared Error): MSE 에 제곱근을 취한 값

분류 문제에서의 손실함수:

  • 엔트로피 개념을 활용한 손실함수를 주로 사용합니다.

4.6 경사하강법

관련개념: 극대와 극소, 내적

경사하강법 (Gradient Descent) 은 주어진 함수의 최소값을 찾기 위한 최적화 알고리즘입니다. 이 방법은 함수의 기울기 (gradient) 를 이용하여 함수의 값을 점진적으로 줄여나가는 방식으로 작동합니다. 경사하강법은 함수의 최적화 문제를 해결하는 데 중요한 도구로, 특히 기계 학습에서 모델의 학습과 최적화에 사용됩니다 .경사하강법의 주요 특징은 다음과 같습니다:

  1. 목적: 경사하강법은 함수의 최소값을 찾는 것을 목표로 합니다. 이는 손실 함수 (loss function) 를 최소화하는 데 사용되며, 특히 기계 학습에서 모델의 최적화에 널리 활용됩니다.

  2. 작동 원리:

    • 함수의 현재 위치에서의 기울기를 계산합니다.
    • 기울기의 반대 방향으로 일정한 크기 (step size 또는 learning rate) 만큼 이동합니다.
    • 이 과정을 반복하여 함수의 값을 점진적으로 줄입니다.
  3. 수식:

    • 변수 \(\theta\) 에 대해 경사하강법의 업데이트 규칙은 다음과 같이 표현됩니다: \[ \theta := \theta - \alpha \nabla f(\theta) \] 여기서 \(\alpha\) 는 학습률 (learning rate), \(\nabla f(\theta)\) 는 함수 \(f\)\(\theta\) 에서의 기울기입니다.
  4. 변형: 경사하강법에는 여러 변형이 존재합니다. 예를 들어, 확률적 경사하강법 (Stochastic Gradient Descent, SGD) 은 데이터의 전체 집합 대신 무작위로 선택된 일부 데이터를 사용하여 기울기를 계산합니다.

5 지수함수와 로그함수

5.1 지수함수

관련개념: 로그함수, 시그모이드 함수, 소프트맥스 함수, 확률밀도함수와 확률분포함수

지수함수는 일반적으로 \(f(x) = a^x\) 형태로 표현되며, 여기서 \(a\) 는 양의 상수 (기저, base) 이고, \(x\) 는 지수입니다. 가장 흔히 사용되는 기저는 자연상수 \(e\) 로, 이 경우의 지수함수는 \(f(x) = e^x\) 입니다.

  1. 특징:
    • 연속성과 미분 가능성: 지수함수는 모든 실수 \(x\) 에 대해 연속적이며 미분 가능합니다.
    • 증가 또는 감소: 기저 \(a\) 가 1 보다 크면 함수는 증가하고, 0 보다 크고 1 보다 작으면 함수는 감소합니다.
    • 고유한 미분 특성: 특히 \(f(x) = e^x\) 의 경우, 미분해도 자기 자신이 되는 고유한 성질을 가집니다. 즉, \(\frac{d}{dx} e^x = e^x\).

5.2 로그함수

관련개념: 합성함수와 역함수, 로그함수와 미분, 가능도함수와 최대가능도 추정

로그함수는 지수함수의 역함수로 정의되며, 다음과 같은 특징을 가집니다:

  1. 정의: 로그함수는 일반적으로 \(y = \log_a x\) 형태로 표현됩니다. 여기서 \(a\) 는 로그의 밑 (base) 이며, \(x\) 는 진수입니다. 이는 \(a^y = x\) 와 동일한 의미를 가집니다.

  2. 주요 성질:

    • 로그함수는 양수에 대해서만 정의됩니다. 즉, \(x > 0\) 일 때만 정의됩니다.
    • \(\log_a 1 = 0\) (모든 양의 실수 \(a\) 에 대해)
    • \(\log_a a = 1\)
    • 로그함수는 단조 증가 함수입니다.
Note

 단조 증가 함수란 x 값이 증가할 때 y 값도 항상 증가하거나 같은 값을 유지하는 함수를 말합니다. 이 성질 때문에 로그함수는 넓은 범위의 값을 좁은 범위로 압축하는 데 유용하게 사용됩니다. 예를 들어, 지진의 규모나 소리의 강도를 표현하는 데 사용됩니다.

  1. 특별한 경우:
    • 자연로그: \(\ln x = \log_e x\) (밑이 자연상수 \(e\) 인 경우)
    • 상용로그: \(\log x = \log_{10} x\) (밑이 10 인 경우)
  2. 로그의 성질:
    • 곱의 로그: \(\log_a (xy) = \log_a x + \log_a y\)
    • 몫의 로그: \(\log_a (x/y) = \log_a x - \log_a y\)
    • 거듭제곱의 로그: \(log_a (x^n) = n \log_a x\)

5.3 로그함수의 미분

관련개념: 극한과 미분, 지수함수의 미분, 가능도함수와 최대가능도 추정

로그함수의 미분은 다음과 같이 정의됩니다:

  1. 자연로그 함수 \(ln(x)\) 의 미분: \[ \frac{d}{dx} \ln(x) = \frac{1}{x}, \quad x > 0 \]

  2. 일반적인 로그함수 \(log_a(x)\) 의 미분: \[ \frac{d}{dx} \log_a(x) = \frac{1}{x \ln(a)}, \quad x > 0, a > 0, a \neq 1 \]

로그함수의 주요 특징은 다음과 같습니다:

  1. 로그함수의 미분은 항상 함수 자체의 역수에 비례합니다.
  2. 자연로그의 경우, 미분 결과가 단순히 \(1/x\) 로 나타납니다. 이는 자연로그가 미분 관점에서 가장 단순한 형태를 가진다는 것을 보여줍니다.
  3. 일반 로그함수의 경우, 밑 (base) 에 따라 추가적인 상수 \(1/ln(a)\) 가 곱해집니다.
  4. 로그함수의 미분은 \(x > 0\) 인 양수 영역에서만 정의됩니다. 이는 로그함수 자체가 양수 영역에서만 정의되기 때문입니다.
  5. 로그함수의 미분은 \(x\) 가 증가함에 따라 감소하는 형태를 보입니다. 이는 로그함수의 증가 속도가 \(x\) 가 커질수록 느려짐을 의미합니다.

5.4 지수함수의 미분

관련개념: 합성함수의 미분, 시그모이드 함수

지수함수의 미분은 다음과 같이 정의됩니다:

  1. 자연지수 함수 \(e^x\) 의 미분: \[ \frac{d}{dx} e^x = e^x \] 이는 자연지수 함수의 가장 중요한 특징 중 하나로, 미분해도 자기 자신이 됩니다.

  2. 일반적인 지수함수 a^x 의 미분 (\(a > 0, a ≠ 1\)): \[ \frac{d}{dx} a^x = a^x \ln(a) \]

이 정의의 주요 특징은 다음과 같습니다:

  1. 지수함수의 미분은 항상 자기 자신에 비례합니다. 이는 지수함수의 성장률이 함수값에 비례한다는 것을 의미합니다.
  2. 자연지수 함수 \(e^x\) 의 경우, 미분 결과가 단순히 자기 자신이 됩니다. 이는 \(e^x\) 가 미분 관점에서 가장 단순한 형태를 가진다는 것을 보여줍니다.
  3. 일반 지수함수의 경우, 밑 (base) 에 따라 추가적인 상수 \(ln(a)\) 가 곱해집니다.
  4. 지수함수의 미분은 모든 실수에 대해 정의되며, 항상 양수입니다 (\(a > 0\) 인 경우).
  5. 지수함수의 미분은 \(x\) 가 증가함에 따라 지수적으로 증가하는 형태를 보입니다. 이는 지수함수의 성장 속도가 \(x\) 가 커질수록 빨라짐을 의미합니다.

5.5 시그모이드 함수

관련개념: 다항식의 미분, 지수함수의 미분, 합성함수의 미분, 로그함수

시그모이드 함수 (Sigmoid function) 는 S 자 모양의 곡선을 그리는 함수로, 주로 기계학습과 신경망에서 활성화 함수로 사용됩니다. 시그모이드 함수의 정의와 주요 특징은 다음과 같습니다:

  1. 정의: 시그모이드 함수는 일반적으로 다음과 같이 정의됩니다: \[ f(x) = \frac{1}{1 + e^{-x}} \] 여기서 \(e\) 는 자연상수 (약 2.71828) 입니다.

  2. 특징:

    • 함수의 출력 범위는 0 에서 1 사이입니다.
    • \(x\) 가 음의 무한대로 갈 때 함수값은 0 에 가까워지고, 양의 무한대로 갈 때 1 에 가까워집니다.
    • \(x = 0\) 일 때 함수값은 0.5 입니다.
    • 함수는 연속적이며 모든 점에서 미분 가능합니다.
  3. 미분: 시그모이드 함수의 미분은 다음과 같습니다: \[ f'(x) = f(x)(1 - f(x)) \] 이 특성은 신경망의 역전파 알고리즘에서 중요하게 사용됩니다.

5.6 소프트맥스 함수

관련개념: 합성함수의 미분, 시그모이드함수, 몫의 미분, 편미분

소프트맥스 함수는 다중 클래스 분류 문제에서 주로 사용되는 함수로, 주어진 입력 벡터를 확률 분포로 변환하는 역할을 합니다. 이 함수는 다음과 같은 특징과 정의를 가집니다:

  1. 정의: 소프트맥스 함수는 \(k\) 차원의 입력 벡터 \(z\) 를 받아 각 클래스에 대한 확률을 계산합니다. 각 클래스 \(i\) 에 대한 확률 \(p_i\) 는 다음과 같이 정의됩니다:

    \[ p_i = \frac{e^{z_i}}{\sum_{j=1}^{k} e^{z_j}} \]

    여기서 \(e\) 는 자연상수이고, \(z_i\) 는 입력 벡터의 \(i\) 번째 요소입니다.

  2. 특징:

    • 확률 분포: 소프트맥스 함수의 출력은 확률 분포를 이루며, 모든 출력 값의 합은 1 이 됩니다.
    • 분류 작업: 각 요소가 특정 클래스에 속할 확률을 나타내므로, 다중 클래스 분류 작업에 적합합니다.19
  3. 응용:

    • 신경망의 출력층: 신경망에서 소프트맥스 함수는 출력층에 사용되어 각 클래스에 대한 확률을 계산합니다.
    • 역전파 가능: 미분 가능하기 때문에 신경망의 학습 과정에서 역전파 알고리즘을 통해 최적화할 수 있습니다.20

6 확률과 통계

6.1 확률변수와 확률 분포

확률변수는 확률적인 결과에 따라 값이 바뀌는 변수를 의미합니다. 이는 확률실험의 가능한 결과에 수치적 값을 할당하는 함수로 이해할 수 있습니다. 확률변수는 다음과 같은 유형으로 나뉩니다:

  • 이산확률변수: 가능한 값이 유한하거나 셀 수 있는 경우. 예를 들어, 주사위를 던졌을 때 나오는 숫자.
  • 연속확률변수: 가능한 값이 연속적인 경우. 예를 들어, 특정 구간 내에서의 온도 측정값.

확률변수는 측정 가능한 함수로, 확률공간에서 정의되며, 일반적으로 실수값을 가집니다.21

확률 분포는 확률변수가 취할 수 있는 값과 그 값이 발생할 확률을 나타내는 함수입니다. 확률 분포는 확률변수의 유형에 따라 다음과 같이 구분됩니다:

  • 이산확률분포: 이산확률변수의 확률 분포로, 각 가능한 값에 대해 확률을 할당합니다. 예를 들어, 이항분포, 포아송분포 등이 있습니다.
  • 연속확률분포: 연속확률변수의 확률 분포로, 확률 밀도 함수를 통해 정의됩니다. 예를 들어, 정규분포, 지수분포 등이 있습니다.

확률 분포는 확률변수의 특성을 설명하고, 데이터 분석 및 예측 모델링에 필수적인 역할을 합니다.

6.2 확률밀도함수와 확률분포함수

관련개념: 극한과 미분, 적분, 지수함수

확률밀도함수 (Probability Density Function, PDF): 확률밀도함수는 연속 확률변수의 확률 분포를 나타내는 함수입니다. 특정 구간 내에서 확률변수가 취할 수 있는 값의 확률을 나타내며, 특정 값에서의 확률은 정의되지 않습니다.

  • 확률밀도함수의 적분은 확률을 나타내며, 전체 영역에 대한 적분은 1 이 됩니다.
  • 특정 구간 \([a, b]\) 에서 확률변수가 존재할 확률은 확률밀도함수를 해당 구간에서 적분한 값으로 계산됩니다.
  • 특정 값에서의 확률은 0 이지만, 구간을 통해 확률을 계산합니다.22

확률분포함수 (Probability Distribution Function, CDF): 확률분포함수는 확률변수가 특정 값 이하일 확률을 나타내는 함수입니다. 이산 확률변수와 연속 확률변수 모두에 대해 정의됩니다.

  • 확률분포함수는 단조 증가 함수이며, 0 에서 1 사이의 값을 가집니다.
  • 연속 확률변수의 경우, 확률밀도함수의 적분으로 표현할 수 있습니다.
  • 이산 확률변수의 경우, 각 값의 확률을 누적하여 나타냅니다.

6.3 가능도함수와 최대가능도 추정

관련개념: 극대와 극소, 로그함수, 로그함수의 미분, 확률밀도함수와 확률분포함수

가능도 함수 (Likelihood Function): 가능도 함수는 주어진 데이터가 특정한 확률 분포를 따를 확률을 나타내는 함수입니다. 이는 주로 모수 추정에서 사용되며, 특정 모수 값이 주어졌을 때 관측된 데이터가 발생할 가능성을 계산합니다.

  • 표기: 일반적으로 가능도 함수는 \(L(\theta | x)\) 로 표현되며, 여기서 \(\theta\) 는 모수 (parameter), \(x\) 는 관측된 데이터입니다.
  • 특징: 가능도 함수는 확률 분포의 모수에 대한 함수로, 데이터가 주어졌을 때 모수가 어떤 값을 가질 가능성이 높은지를 평가합니다.

최대가능도 추정 (Maximum Likelihood Estimation, MLE): 최대가능도 추정은 가능도 함수를 최대화하는 모수 값을 찾는 방법입니다. 즉, 주어진 데이터에 대해 가장 가능성이 높은 모수 값을 추정하는 방법입니다.

  • 방법: MLE 는 가능도 함수의 최대값을 찾는 최적화 문제로, 보통 미분을 통해 가능도 함수의 극대점을 찾습니다.
  • 응용: MLE 는 다양한 통계 모델에서 모수 추정에 널리 사용되며, 특히 회귀 분석, 분류 문제, 베이지안 통계 등에서 중요한 역할을 합니다.

7 Reference

Footnotes

  1. https://thebook.io/007019/↩︎

  2. https://darkpgmr.tistory.com/45↩︎

  3. https://darkpgmr.tistory.com/45↩︎

  4. https://namu.wiki/w/%ED%95%A8%EC%88%98↩︎

  5. https://holymath.tistory.com/entry/%ED%95%A9%EC%84%B1%ED%95%A8%EC%88%98%EC%9D%98-%EA%B8%B0%EB%B3%B8%EC%84%B1%EC%A7%88↩︎

  6. https://namu.wiki/w/%ED%95%A8%EC%88%98↩︎

  7. https://ko.wikipedia.org/wiki/%EC%A0%81%EB%B6%84↩︎

  8. https://namu.wiki/w/%EC%A0%81%EB%B6%84↩︎

  9. https://unolab.tistory.com/entry/%EC%A0%81%EB%B6%84%EC%9D%98-%EC%A0%95%EC%9D%98-%EC%A0%95%EC%A0%81%EB%B6%84%EC%9D%98-%EC%A0%95%EC%9D%98↩︎

  10. https://www.youtube.com/watch?v=LEr4RdMxpLY↩︎

  11. https://www.youtube.com/watch?v=LsQoiETuBBc↩︎

  12. https://angeloyeo.github.io/2020/09/07/basic_vector_operation.html↩︎

  13. https://blog.naver.com/pss2072/220798287435↩︎

  14. https://namu.wiki/w/%EB%82%B4%EC%A0%81↩︎

  15. https://wikidocs.net/24603↩︎

  16. http://bigdata.dongguk.ac.kr/lectures/disc_math/_book/matrix.html↩︎

  17. https://minusi.tistory.com/entry/%ED%96%89%EB%A0%AC-%EB%8C%80%EC%88%98↩︎

  18. https://namu.wiki/w/%EB%AF%B8%EB%B6%84%ED%98%95%EC%8B%9D↩︎

  19. https://syj9700.tistory.com/38↩︎

  20. https://hyunhp.tistory.com/696↩︎

  21. https://www.datadata.link/qa66/↩︎

  22. https://www.youtube.com/watch?v=S1WIW662LJQ↩︎