본문 바로가기
필기 노트/처음 배우는 딥러닝 수학

[딥러닝 기초] 딥러닝 수학 - 2 : 행렬, 미분

by misconstructed 2020. 7. 6.
728x90

안녕하세요 :)

오늘은 저번 게시물(딥러닝 수학-1)에 이어서 조금 더 구체적인 수학적인 내용을 다뤄보겠습니다.

크게 형렬, 미분에 대해서 배워보겠습니다.

1. 행렬 (matrix)

행렬은 수와 식을 사각 형태의 배열로 나열한 것을 의미합니다.

거로 줄을 , 세로 줄을 이라고 부릅니다.

이때, 행의 수와 열의 수가 같은 경우 정사각 행렬(square matrix)라고 부릅니다.

또한, 행렬 중, 하나의 열로 구성된 행렬을 열 벡터, 하나의 행으로 구성된 행렬을 행 벡터라고 부릅니다.

행렬의 원소 중, i행 j열에 위치한 성분은 aij로 표시합니다.

그중, i = j 인 경우 aij 가 1이고, 나머지의 경우 모두 0인 경우를 단위행렬(E)라고 합니다.

단위행렬

행렬의 연산

행렬의 상등

두 행렬에서 대응하는 각 성분이 모두 같은 경우 A = B라고 표현합니다.

행렬의 합, 차, 상수배

행렬의 같은 위치의 성분끼리 연산을 진행합니다.

  1. A+B : 두 행렬 A, B의 같은 위치의 성분의 합을 구합니다.
  2. A-B : 두 행렬 A, B의 같은 위치의 성분의 차를 구합니다.
  3. nA : 행렬 A의 모든 성분의 n배를 구합니다.

행렬의 곱셈

두 행렬 A, B에 대해서 곱셈 AB를 한다고 할 때, A의 i행을 행 벡터로, B의 j열을 열 벡터로 보고,

두 벡터의 내적 값이 결과 행렬의 aij 원소 값이 됩니다.

행렬의 곱셈

미리 짐작하신 분들도 계시겠지만, 위와 같은 방식으로 행렬의 곱셈을 수행하기 때문에 교환 법칙이 성립하지 않습니다. (AB ≠ BA)

하지만, 단위행렬에 대해서는 교환법칙이 성립합니다. (AE = EA = A)

아다마르 곱(Hadamard product)

아다마르 곱은 A○B로 표현하고, 두 행렬의 같은 위치의 성분끼리의 곱을 결과로 제공합니다.

전치 행렬(Transpose matrix)

전치 행렬은 행렬의 i행 j열의 값을 j행 i열의 값으로 변경한 행렬을 말합니다.

전치 행렬의 예시


미분 (Derivative)

미분을 이해하기에 앞서, 먼저 도함수에 대한 이야기를 해보겠습니다.

도함수는 함수 안에 포함된 값 각각이 0에 한없이 가까워지는 극한값(미분계수)을 구하는 함수입니다.

수학적인 도함수의 정의는 다음과 같습니다.

도함수의 정의

f(x)의 도함수 f'(x)를 구하는 것을 "f(x)를 미분한다"라고 합니다.

y = f(x)에 대해서 f'(x)는 dy/dx로 표현할 수도 있습니다.

f'(x)는 f(x)의 접선의 기울기를 의미합니다.

다음은 c를 상수라고 할 때, 변수 x에 대해 미분한 예시입니다.

미분 예시

분수 함수의 경우 조금 다르게 미분을 수행하는데, 분수 함수의 미분은 다음과 같이 수행합니다.

분수의 미분

분수의 미분을 사용해서 앞서 배운 시그모이드(sigmoid) 함수에 적용을 시켜보겠습니다.

시그모이드(sigmoid) 미분

미분의 특징 중 하나가 바로 선형성입니다.

미분의 선형성 때문에 다음과 같은 공식을 만족합니다.

미분의 선형성

함수의 최솟값

함수 y=f(x)가 x=a에서 최솟값을 갖는다면 f'(a) = 0을 만족합니다.

그러므로, f'(a) = 0 은 f(x)가 x = a에서 최솟값을 가지기 위함 필요조건이라고 할 수 있습니다.

주의하셔야 할 점은 필요조건이기 때문에, f'(a) = 0을 만족하더라도 f(a)의 값이 최솟값이 아닐 수도 있다는 점입니다.

편미분 (partial derivative)

편미분에 대해서 이야기하기 전에, 다변수 함수에 대해서 먼저 정의하겠습니다. 

다변수 함수 f(x1, x2,..., xn)은 x1, x2, ..., xn을 독립변수로 갖는 함수를 의미합니다.

편미분은 다변수 함수에서 특정 변수에 대해서만 미분하는 것입니다.

z = f(x, y)라는 함수를 예시로 사용해보겠습니다.

함수 z의 최솟값을 갖기 위해서는 df/dx = 0 이어야 하고 동시게 df/dy = 0 이어야 합니다.

위의 조건은 z = f(x, y)가 최솟값이 되기 위한 필요조건이지,

해당 조건을 만족한다고 최솟값을 갖는 것을 보장하지는 못한다는 점 다시 강조합니다!

연쇄 법칙 (chain rule)

합성함수에 대해서 먼저 이야기해보겠습니다.

y = f(u), u = g(x)라는 두 함수가 존재할 때, 

y = f(g(x)) 로 표현할 수 있고, y는 f(u)와 g(x)의 합성함수라고 합니다.

이전에 배운 유닛의 공식을 다시 보겠습니다.

유닛의 연산

y는 x1, x2, x3의 1차 함수 f와 활성화 함수 a의 합성함수로 표현된다고 할 수 있습니다.

일변수 함수의 연쇄 법칙

일변수 함수의 연쇄법칙

다변수 함수의 연쇄 법칙

다변수 함수의 연쇄법칙

조금은 복잡한 내용이기 때문에 예시를 들어서 설명해보겠습니다.

다변수 함수의 연쇄법칙 예시

근사식

일변수 함수의 근사식

근사식은 "y = f(x)에서 x값을 일정 수준 변경하면 y는 얼마나 바뀔 것인가"를 알기 위해 사용합니다.

△x 가 0에 근접한 값이라고 할 때, 다음과 같은 식이 성립합니다.

근사식 정의

이 때, x가 어떤 상수 a에 근접해 있다면,

△x = x - a라고 할 수 있습니다.

예시를 들어보겠습니다!

근사식 예시

다변수 함수의 근사식

다변수 함수의 근사식에 대해서 알아보겠습니다.

일반화한 다변수 함수 f(x, y)가 있다고 가정했을 때,

f(x + △x, y + △y) = f(x, y) + △x * df(x, y) / dx + △y*df(x, y)/d(y)라고 정의할 수 있습니다.

△z = f(x + △x, y + △y) - f(x, y)라고 정의한다면,

z = f(x, y)에서 x, y가 각각 △x, △y만큼 변했을 때 z의 변화량은 다음과 같이 정의할 수 있습니다.

다변수 함수의 근사식

▽z = (df(x, y) / dx, df(x, y) / dy)라고 정의하고, △x = (△x, △y)라고 정의한다면,

위의 식 △z는 ▽z와 △x의 내적으로 표현할 수 있습니다.

다변수 함수 근사식의 내적

위와 같은 방식으로 표현한다면, n변수 함수에서도 근사식의 표현을 두 벡터의 내적으로 표현할 수 있습니다.

 

딥러닝에 사용되는 기초적인 수학 지식은 여기까지 정리하겠습니다.

다음 게시물에는 신경망에 대한 이야기를 더 해보도록 하겠습니다.


처음 배우는 딥러닝 수학
국내도서
저자 : 와쿠이 요시유키,와쿠이 사다미 / 박광수역
출판 : 한빛미디어 2018.02.01
상세보기

<처음 배우는 딥러닝 수학>을 읽으면서 개인적으로 정리한 내용입니다.

제가 잘못 이해했거나, 수정이 필요한 부분에 대한 피드백은 언제든지 환영입니다.

감사합니다 :)

728x90

댓글