콘텐츠로 이동

수학 기초 빠른 복습

이 페이지는 선형대수, 미적분, 확률과 통계를 처음부터 강의하지 않는다. 딥러닝 본문에서 수식과 그림을 읽는 데 필요한 뜻을 짧은 예로 복습한다. 계산이 막히면 해당 탭만 읽고 본문으로 돌아가면 된다.

어디까지 알면 될까

공식을 외우기보다 기호가 무엇을 가리키고, 값이 변할 때 다른 값이 어떻게 달라지는지 말로 설명할 수 있으면 충분하다.

벡터와 행렬은 숫자를 배열하는 방법이다

스칼라(scalar)는 하나의 수이고, 벡터(vector)는 순서가 있는 수의 묶음이다. 학생 한 명을 키와 몸무게로 표현하면 \((170, 65)\)라는 2차원 벡터가 된다. 행렬(matrix)은 여러 벡터를 행과 열로 배열한 것이다. 딥러닝에서는 여러 샘플이나 여러 특징을 한꺼번에 계산할 때 행렬을 쓴다.

shape는 각 축의 크기다. \((32, 3, 224, 224)\)인 이미지 텐서는 보통 샘플 32개, 색 채널 3개, 높이 224, 너비 224를 뜻한다. 라이브러리마다 축의 순서는 다를 수 있으므로 숫자만 보지 말고 각 축의 의미를 확인한다.

내적과 행렬 곱셈은 정보를 모은다

두 벡터의 내적(inner product)은 같은 위치의 수를 곱해 더한 값이다.

\[ x \cdot w = x_1w_1+x_2w_2+\cdots+x_dw_d \]

신경망의 뉴런은 입력 특징마다 가중치를 곱한 뒤 더한다. 행렬 곱셈은 이 내적을 여러 출력에 동시에 적용하는 연산으로 볼 수 있다. 앞 행렬의 열 수와 뒤 행렬의 행 수가 같아야 곱할 수 있다는 점만 먼저 기억한다.

두 행렬을 곱할 때 행과 열의 대응을 색으로 나타낸 도식
행렬 곱셈에서 왼쪽 행과 오른쪽 열이 하나의 출력 원소를 만든다. 출처: Bilou, Wikimedia Commons, CC BY-SA 3.0/GFDL, 변경 없음.

길이, 거리, 방향

노름(norm)은 벡터의 크기를 재는 규칙이고, 두 벡터의 차이에 노름을 적용하면 거리를 만들 수 있다. 코사인 유사도는 벡터의 길이보다 방향이 얼마나 비슷한지를 본다. 임베딩을 비교할 때 어떤 거리나 유사도를 썼는지가 중요한 이유다.

선형변환과 기저

행렬 \(A\)를 벡터 \(x\)에 곱한 \(Ax\)는 벡터를 늘이거나 줄이고, 회전하거나 다른 차원으로 보내는 선형변환(linear transformation)으로 이해할 수 있다. 기저(basis)는 같은 벡터를 표현하는 좌표축의 선택이다. 주성분분석(PCA)은 데이터가 크게 퍼지는 새로운 축을 찾아 좌표계를 바꾼다.

고유값, 고유벡터, 특잇값분해

어떤 방향 \(v\)가 변환 뒤에도 방향을 유지해 \(Av=\lambda v\)를 만족하면 \(v\)를 고유벡터, \(\lambda\)를 고유값이라고 한다. PCA에서는 공분산행렬의 주요 고유벡터가 데이터가 많이 퍼진 방향을 나타낸다. 특잇값분해(SVD)는 직사각형 행렬에도 적용할 수 있는 분해이며 PCA를 계산하는 대표 방법이다. 세부 계산은 4장을 더 깊게 공부할 때 익혀도 된다.

확인: 벡터의 차원과 데이터셋의 샘플 수를 구분할 수 있는가? 행렬 곱셈이 여러 가중합을 묶은 계산이라는 점을 설명할 수 있는가?

함수는 입력을 출력으로 바꾸는 규칙이다

함수 \(y=f(x)\)는 입력 \(x\)를 출력 \(y\)로 바꾼다. 신경망은 여러 함수를 차례로 합성한 함수다. 예를 들어 \(z=g(f(x))\)에서는 \(x\)가 먼저 \(f\)를 지나고, 그 결과가 \(g\)의 입력이 된다.

미분은 작은 변화의 영향을 나타낸다

도함수(derivative)는 입력을 조금 바꿀 때 출력이 얼마나 변하는지를 나타낸다. 변수가 여러 개면 한 변수를 제외한 나머지를 고정한 편미분(partial derivative)을 사용한다. 모든 편미분을 한 벡터로 모은 것이 기울기(gradient)다.

손실 함수 \(L(\theta)\)의 기울기 \(\nabla_\theta L\)은 매개변수 \(\theta\)를 어느 방향으로 바꾸면 손실이 가장 빠르게 커지는지 알려 준다. 따라서 경사하강법은 반대 방향으로 이동한다.

\[ \theta \leftarrow \theta-\eta\nabla_\theta L \]

여기서 \(\eta\)는 한 번에 움직이는 크기를 정하는 학습률이다.

등고선 위에서 손실이 낮아지는 쪽으로 반복 이동하는 경사하강법
기울기의 반대 방향으로 이동하며 손실 함수의 낮은 지점을 찾는 과정. 출처: Zerodamage, Wikimedia Commons, 퍼블릭 도메인, 변경 없음.

연쇄법칙은 합성함수의 변화를 연결한다

합성함수에서는 바깥 함수의 변화율과 안쪽 함수의 변화율을 곱해 전체 변화율을 구한다. 이것이 연쇄법칙(chain rule)이다.

\[ \frac{dL}{dx}=\frac{dL}{dz}\frac{dz}{dx} \]

역전파는 연쇄법칙을 계산 그래프의 출력 쪽에서 입력 쪽으로 효율적으로 적용하는 절차다. 역전파는 기울기를 계산하고, 옵티마이저는 그 기울기로 매개변수를 갱신한다.

야코비안과 발산은 언제 필요한가

벡터를 입력받아 벡터를 출력하는 함수의 편미분을 행렬로 모으면 야코비안(Jacobian)이다. 벡터장의 각 성분이 자기 좌표 방향으로 얼마나 퍼지는지를 더한 값은 발산(divergence)이다. 플로 매칭과 연속 정규화 흐름에서 이름이 등장하지만, 입문 단계에서는 역할만 알아도 된다.

확인: 기울기 계산과 매개변수 갱신이 서로 다른 단계인 이유를 설명할 수 있는가?

확률분포는 가능한 값과 그 가능성을 함께 나타낸다

확률변수(random variable)는 결과에 따라 값이 정해지는 변수이고, 확률분포(probability distribution)는 가능한 값에 확률을 배정하는 규칙이다. 베르누이분포는 두 결과, 범주형분포는 여러 범주, 정규분포는 연속적인 값을 표현하는 대표적인 분포다.

평균과 표준편차가 다른 여러 정규분포의 확률밀도 곡선
평균과 표준편차에 따라 위치와 퍼짐이 달라지는 정규분포. 출처: Inductiveload, Wikimedia Commons, 퍼블릭 도메인, 변경 없음.

기댓값(expectation)은 분포의 평균적인 위치, 분산(variance)은 값이 퍼진 정도를 나타낸다. 공분산(covariance)은 두 변수가 함께 커지거나 작아지는 경향을 측정한다. 공분산이 0이라고 해서 항상 두 변수가 독립인 것은 아니다.

조건부확률과 베이즈 정리

\(p(a\mid b)\)는 사건 \(b\)를 안다는 조건에서 사건 \(a\)의 확률이다. 베이즈 정리는 조건의 방향을 바꾸어 계산하는 관계다.

\[ p(a\mid b)=\frac{p(b\mid a)p(a)}{p(b)} \]

VAE에서는 관측 데이터 \(x\)가 주어졌을 때 잠재변수 \(z\)의 분포인 \(p(z\mid x)\)를 생각한다. 정확히 계산하기 어려워 근사분포를 도입한다는 것이 핵심이다.

우도는 관측된 데이터를 기준으로 모형을 본다

우도(likelihood)는 매개변수가 정해졌을 때 지금 관측한 데이터가 얼마나 그럴듯한지를 나타낸다. 확률과 같은 식을 쓰더라도 무엇을 고정하고 무엇을 바꾸어 보는지가 다르다. 곱셈을 덧셈으로 바꾸고 작은 수의 수치 문제를 줄이기 위해 로그우도를 자주 사용한다.

KL 발산은 두 분포의 차이를 한 방향으로 잰다

KL 발산은 두 확률분포가 얼마나 다른지를 나타내지만 일반적인 거리와 달리 방향을 바꾸면 값이 달라질 수 있다. VAE에서는 근사 사후분포가 기준 분포에서 지나치게 벗어나지 않도록 하는 항으로 등장한다.

확률밀도는 확률 그 자체가 아니다

연속확률변수에서는 한 점의 확률이 아니라 구간 아래의 넓이가 확률이다. 확률밀도 값은 1보다 클 수도 있지만 전체 구간에서 적분한 값은 1이다. 생성 모델에서 \(p(x)\)를 읽을 때 이 차이를 기억한다.

확인: 기댓값과 분산이 각각 분포의 어느 성질을 요약하는지, 조건부확률의 세로선이 무엇을 뜻하는지 설명할 수 있는가?

본문에서 자주 보는 기호

기호 읽는 법 이 자료에서 주로 뜻하는 것
\(x\), \(y\) 엑스, 와이 입력과 목표값
\(\hat{y}\) 와이 햇 모형의 예측값
\(w\), \(b\), \(\theta\) 더블유, 비, 세타 가중치, 편향, 매개변수 전체
\(L\), \(\mathcal{L}\) 손실 함수 또는 목적 함수
\(\nabla\) 나블라 여러 편미분을 모은 기울기 연산자
\(p(x)\) 피 엑스 \(x\)의 확률 또는 확률밀도
\(\mathbb{E}[X]\) 엑스의 기댓값 확률변수 \(X\)의 평균적인 값

다음으로 무엇을 읽을까