본문으로 건너뛰기

[메타코드 강의 후기] 딥러닝 Deep Learning | Neural Network (1)

LEGGO약 2 분DeepLearningPytorchLinearLayerSoftmaxActivationFunctionMatrixMultiplication메타코드메타코드mmetacodemetacodem

메타코드 강의: 딥러닝 입문 + Pytorch 실습 부트캠프로 이동open in new window
메타코드 강의: 딥러닝 입문 + Pytorch 실습 부트캠프로 이동

메타코드?

메타코드는 IT 대기업 현직자 + 서울대/카이스트 AI 박사 등 검증된 강사진들로 구성되어 있으며,

현직자 특강, 커리어 멘토링, 포트폴리오, 공모전, 채용정보 등 실제 취업에 도움이 될 수 있는 양질의 컨텐츠를 제공하고 있습니다.


Vector Multiplication

Vector X Matrix

aTM=[123]×[123456]=[1×1+2×3+3×51×2+2×4+3×6]=[1+6+152+8+18]=[2228] a^T M = \begin{bmatrix} 1 & 2 & 3 \end{bmatrix} \times \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix} \\[2em] = \begin{bmatrix} 1 \times 1 + 2 \times 3 + 3 \times 5 & 1 \times 2 + 2 \times 4 + 3 \times 6 \end{bmatrix} \\[2em] = \begin{bmatrix} 1 + 6 + 15 & 2 + 8 + 18 \end{bmatrix} \\[2em] = \begin{bmatrix} 22 & 28 \end{bmatrix}

Matrix X Vector

Mb=[123456]×[12]=[1×1+2×23×1+4×25×1+6×2]=[1+33+85+12]=[41117] Mb = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix} \times \begin{bmatrix} 1 \\ 2 \end{bmatrix} \\[2em] = \begin{bmatrix} 1 \times 1 + 2 \times 2 \\ 3 \times 1 + 4 \times 2 \\ 5 \times 1 + 6 \times 2 \end{bmatrix} \\[2em] = \begin{bmatrix} 1 + 3 \\ 3 + 8 \\ 5 + 12 \end{bmatrix} = \begin{bmatrix} 4 \\ 11 \\ 17 \end{bmatrix}

표기

aR3,atR1×3,bR2 and MR3×2at=(1,3),M=(3,2) and atM=(1,2)M=(3,2),b=(2,) and Mb=(3,1) a \in \mathbb{R}^3, a^t \in \mathbb{R}^{1 \times 3}, b \in \mathbb{R}^2 \text{ and } M \in \mathbb{R}^{3 \times 2} \\[2em] \left| a^t \right| = (1, 3), \left| M \right| = (3, 2) \text{ and } \left| a^t M \right| = (1, 2) \\[2em] \left| M \right| = (3, 2), \left| b \right| = (2,) \text{ and } \left| Mb \right| = (3, 1)

설명

aR3a \in \mathbb{R}^3 : a는 3차원 벡터이다.

atR1×3a^t \in \mathbb{R}^{1 \times 3} : a를 transpose 하면 차원이 앞에 하나 더 생긴다.

bR2 and MR3×2b \in \mathbb{R}^2 \text{ and } M \in \mathbb{R}^{3 \times 2} : b는 2차원 벡터, M은 차원이 2개이고 차원의 값이 3과 2인 Matrix다.

두 벡터의 차원(길이)이 같아야 한다.

Matrix Multiplication

Matrix X Matrix

AB=[123456]×[123456]=[11+23+3512+24+3641+53+6542+54+66]=[1+6+152+8+184+15+308+20+36]=[22284064] AB = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} \times \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix} \\[2em] = \begin{bmatrix} 1 \cdot 1 + 2 \cdot 3 + 3 \cdot 5 & 1 \cdot 2 + 2 \cdot 4 + 3 \cdot 6 \\ 4 \cdot 1 + 5 \cdot 3 + 6 \cdot 5 & 4 \cdot 2 + 5 \cdot 4 + 6 \cdot 6 \end{bmatrix} \\[2em] = \begin{bmatrix} 1 + 6 + 15 & 2 + 8 + 18 \\ 4 + 15 + 30 & 8 + 20 + 36 \end{bmatrix} = \begin{bmatrix} 22 & 28 \\ 40 & 64 \end{bmatrix}

표기

AR2×3,BR3×2 and ABR2×2A=(2,3),B=(3,2) and AB=(2,2) A \in \mathbb{R}^{2 \times 3}, B \in \mathbb{R}^{3 \times 2} \text{ and } AB \in \mathbb{R}^{2 \times 2} \\ \left| A \right| = (2, 3), \left| B \right| = (3, 2) \text{ and } \left| AB \right| = (2, 2)

설명

AR2×3A \in \mathbb{R}^{2 \times 3} : A는 2개의 차원을 가지고 있으면 각 차원이 2, 3이다.

BR3×2 and ABR2×2B \in \mathbb{R}^{3 \times 2} \text{ and } AB \in \mathbb{R}^{2 \times 2} : B는 각 차원의 값이 3, 2인 Matrix다. A과 B를 곱하면 각 차원이 값이 2, 2인 Matrix가 된다.

Batch Multiplication (BMM)

같은 개수의 행렬 쌍들에 대해 병렬로(한꺼번에) 행렬 곱 실행

활용 예시

왼쪽 그림에 있는 연산을 오른쪽 그림처럼 병렬로 N번 처리를 한다.

N번 반복하는 것이 아닌 한번에 N개의 처리가 가능

Linear Layer (선형 계층)

Input과 Ouput을 weight로 연결하는 Layer이다.

각 원소들을 모두 연결하는 형태이기 때문에 Fully Connected Layer (FC Layer)라고도 부른다.

weight matrix를 transpose한 x에 bias vector 더한 형태로 표현

ax + b를 선형 결합된 꼴 이라고 부르는데, 이와 비슷해서 선형 레이어라고 부른다.

계산 방식

[W11W21W31W41W12W22W32W42W13W23W33W43]×[x1x2x3x4]+[b1b2b3]=[y1y2y3] \begin{bmatrix} W_{11} & W_{21} & W_{31} & W_{41} \\ W_{12} & W_{22} & W_{32} & W_{42} \\ W_{13} & W_{23} & W_{33} & W_{43} \end{bmatrix} \times \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{bmatrix} + \begin{bmatrix} b_1 \\ b_2 \\ b_3 \end{bmatrix} = \begin{bmatrix} y_1 \\ y_2 \\ y_3 \end{bmatrix}

Activation Function

신경망에서 입력 신호의 총합을 출력 신호로 변환하는 함수로, 신경망의 비선형성을 부여하고 학습을 가능하게 하는 중요한 역할을 합니다. 대표적으로 sigmoid, tanh, ReLU등이 있습니다.

Sigmoid

σ(x)=11+ex \sigma(x) = \frac{1}{1 + e^{-x}} \\[2em]

출력 범위가 0에서 1 사이입니다. 이 함수는 초기 신경망에서 많이 사용되었으나, 오늘날에는 그라디언트 소실 문제(학습 과정에서 기울기가 점점 작아져서 학습이 잘 이루어지지 않는 현상) 때문에 깊은 신경망에서는 사용이 감소했습니다.

Tanh

tanh(x)=exexex+ex \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} \\[2em]

출력 범위가 -1에서 1 사이입니다. 이는 sigmoid 함수의 중심을 0으로 옮긴 형태로 볼 수 있습니다. 이로 인해 학습 초기 단계에서 데이터의 정규화(normalization) 효과가 있어 신경망이 더 효율적으로 학습할 수 있게 됩니다.

ReLU

ReLU(x)=max(0,x) ReLU(x) = \max(0, x) \\[2em]

음수 입력에 대해서는 0을, 양수 입력에 대해서는 그대로의 값을 출력합니다. 간단한 구조와 효율적인 계산으로 인해 현재 가장 널리 사용되는 활성화 함수 중 하나입니다. 그라디언트 소실 문제를 어느 정도 해결할 수 있으나, 0 이하의 입력에 대해서는 기울기가 0이 되는 "죽은 뉴런" 문제가 있을 수 있습니다.

Softmax

Softmax 함수는 클래스가 여러 개인 분류 문제에서 출력층에 주로 사용되는 활성화 함수입니다. 이 함수는 각 클래스에 속할 확률을 나타내는데 적합하며, 모든 출력 값의 합이 1이 되도록 해서 확률 분포로 변환해 줍니다.

σ(xi)=exikexk \sigma(x_i) = \frac{e^{x_i}}{\sum_{k} e^{x_k}} \\[2em]

  • xix_i는 입력 벡터 xxii번째 원소입니다.

  • exie^{x_i}xix_i의 지수 값을 나타냅니다.

  • 분모의 kexk\sum_{k} e^{x_k}는 입력 벡터의 모든 원소에 대해 지수 함수를 적용한 값들의 총합을 계산합니다. 이는 모든 원소 kk에 대해 수행됩니다.

  1. 확률 해석 가능: 출력을 확률처럼 해석할 수 있어 다중 클래스 분류 문제에 적합합니다.

  2. 지수 함수 사용: 지수 함수를 사용하여, 큰 값에 더 높은 가중치를 부여하고, 작은 값은 더욱 축소시킵니다. 이는 선택된 클래스와 그렇지 않은 클래스 간의 차이를 뚜렷하게 만듭니다.

  3. 수치 안정성 문제: 큰 수에 대한 지수 함수는 오버플로우를 발생시킬 수 있어, 계산 과정에서 보정이 필요할 수 있습니다.


이런 분들께 추천합니다!


서포터즈 강의료 지원을 받아 작성하였습니다