그림처럼 AI 안에 machine learning, 그 중 뉴럴네트워크를 사용해서 학습하는게 deep learning
용어를 정리해보자면
Supervised Learning (classification 이나 regression 등)
Unsupervised learining (패턴을 찾는거 clustering이나 차원 축소 문제 등)
Self Supervised Learning ( word2vec, gpt나 bert 처럼 predictive learning 을 통해 데이터 basis에서 패턴 학습)
Reinforcement learning (알파고나 자율주행 등등 강화학습)
이러한 학습방법이 Machine learning 안에 들어있고, 그 중 한 분야가 DL.
고전적인 ML에서 사람의 직관을 사용해 만든 feature extraction을 DL에서는 feature extraction까지도 뉴럴 네트워크로 대체했음.
선대복습
벡터 (Vector)
메트릭스 (Metrics)
행렬. 각 원소는 특정 위치를 나타냄.
예를 들어, 2x3 행렬은 다음과 같이 나타낼 수 있음
$$ X = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix} $$
여기서 X21은 4
메트릭스 연산 (Matrix Operations)
메트릭스 덧셈 (Matrix Addition)
두 행렬을 더하는 연산. 예를 들어, 다음 두 행렬을 더하면:
$$ A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} , \quad B = \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} $$
결과는 다음과 같음
$$ A + B = \begin{pmatrix} 6 & 8 \\ 10 & 12 \end{pmatrix} $$
스칼라 곱셈 (Scalar Multiplication)
행렬의 각 원소에 스칼라 값을 곱하는 연산. 예를 들어, 행렬 A에 3을 곱하면:
$$ 3 \cdot A = 3 \cdot \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} = \begin{pmatrix} 3 & 6 \\ 9 & 12 \end{pmatrix} $$
행렬-벡터 곱셈 (Matrix-Vector Multiplication)
행렬과 벡터를 곱하는 연산입니다. 예를 들어, 행렬 A와 벡터 x의 곱은 다음과같음.
$$ A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} , \quad x = \begin{pmatrix} 5 \\ 6 \end{pmatrix} $$
결과는:
$$ A \cdot x = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} \cdot \begin{pmatrix} 5 \\ 6 \end{pmatrix} = \begin{pmatrix} 1 \cdot 5 + 2 \cdot 6 \\ 3 \cdot 5 + 4 \cdot 6 \end{pmatrix} = \begin{pmatrix} 17 \\ 39 \end{pmatrix} $$
로지스틱 회귀 (Logistic Regression)
로지스틱 회귀는 분류 문제를 해결하기 위해 사용되는 대표적인 알고리즘 중 하나임. 예시 :
$$ h_{\theta}(x) = \sigma(\theta_0 + \theta_1 x_1 + \theta_2 x_2 + \ldots + \theta_n x_n) = \sigma(x^T \theta + \theta_0) $$
여기서 \sigma는 시그모이드 함수. 이를 벡터 및 행렬 형태로 표현하면 다음과 같음
$$ \sigma \left( \begin{pmatrix} x_1 & x_2 & x_3 \end{pmatrix} \begin{pmatrix} \theta_1 \\ \theta_2 \\ \theta_3 \end{pmatrix} + \theta_0 \right) = \hat{y} $$
여기서 x는 특징 벡터, \theta는 가중치 벡터, \theta_0는 bias
배치 추론 (Batch Inference)에서의 로지스틱 회귀 모델의 예시는 다음과 같음
$$ h_{\theta}(x) = \sigma(\theta_0 + \theta_1 x_1 + \theta_2 x_2 + \ldots + \theta_n x_n) = \sigma(x^T \theta + \theta_0) $$
$$ \sigma \left( \begin{pmatrix} x_1^{(1)} & x_2^{(1)} & x_3^{(1)} \\ x_1^{(2)} & x_2^{(2)} & x_3^{(2)} \\ x_1^{(3)} & x_2^{(3)} & x_3^{(3)} \end{pmatrix} \begin{pmatrix} \theta_1 \\ \theta_2 \\ \theta_3 \end{pmatrix} + \theta_0 \right) = \begin{pmatrix} \hat{y}^{(1)} \\ \hat{y}^{(2)} \\ \hat{y}^{(3)} \end{pmatrix} $$
이 경우, 여러 데이터 포인트를 한꺼번에 처리하여 효율성을 높일 수 있음.. 각 행은 하나의 데이터 포인트를 나타내며, 각 열은 특징 벡터의 성분을 나타냄
Identity Matrix
Identity Matrix는 단위 행렬이라고도 하며, 대각선 원소가 모두 1이고 나머지 원소가 0인 행렬. 이 행렬은 행렬 곱셈에서 항등원 역할. 즉, 어떤 행렬 A에 단위 행렬 I를 곱해도 A가 그대로 나옴.
예를 들어, 3x3 단위 행렬은 다음과 같음:
$$ I = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} $$
이때, A가 3x3 행렬이라면, A * I = A가 성립함
Matrix Transpose
Matrix Transpose는 행렬의 행과 열을 서로 뒤바꾼 행렬. 예를 들어, 행렬 A의 Transpose를 A^T로 나타내고, A의 i행 j열 원소가 A^T의 j행 i열 원소가 됨.
예를 들어, 다음과 같은 행렬 A가 있을 때:
$$ A = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix} $$
이 행렬의 Transpose는 다음과 같음
$$ A^T = \begin{pmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{pmatrix} $$
Matrix Inverse
Matrix Inverse는 행렬의 역행렬을 말함. 행렬 A와 그 역행렬 A^-1을 곱하면 단위 행렬 I가 됨. 역행렬이 존재하려면 행렬 A는 정사각 행렬이어야 하고, 행렬식이 0이 아니어야함.
예를 들어, 다음과 같은 행렬 A가 있을 때:
$$ A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} $$
이 행렬의 역행렬은 다음과 같음
$$ A^{-1} = \frac{1}{(1*4 - 2*3)} \begin{pmatrix} 4 & -2 \\ -3 & 1 \end{pmatrix} = \begin{pmatrix} -2 & 1 \\ 1.5 & -0.5 \end{pmatrix} $$
Neural Network의 구성 요소
Neural Network는 여러 구성 요소로 이루어져 있음. 주로 다음과 같은 요소들이 포함됨
- 활성 함수(Activation function)
- Neural Network Structure
- Learning Method ( weight 를 업데이트 하는 방식)
활성 함수는 입력 신호를 출력 신호로 변환해주는 함수. 시그모이드 함수, ReLU 함수 등이 자주 사용됨.
Neural Network Structure는 입력과 출력을 연결하는 구조야. 일반적으로 인풋과 파라미터들, 그리고 활성 함수의 복잡한 연산으로 구서됨.
여러 가지 구조가 있는데, 예를 들면 다음과 같은 구조들이 있음. (뒤에서 다루게 될.. )
- Multi Layer Perceptron: 여러 개의 층으로 구성된 신경망으로, 각 층은 여러 개의 노드로 이루어져있음
- Auto-Encoder: 입력을 압축하여 중요한 특징만 추출하고 다시 복원하는 신경망 구조
- Convolutional Neural Network (CNN): 주로 이미지 처리에 사용되며, 합성곱 연산을 통해 특징을 추출
- Recurrent Neural Network (RNN): 순차적인 데이터 처리를 위해 사용되며, 시계열 데이터나 텍스트 처리에 많이 사용
- Vanilla RNN: 기본적인 RNN 구조로, 순차적인 데이터의 정보를 기억함
- LSTM: Long Short-Term Memory는 RNN의 한 종류로, 장기 의존성을 학습할 수 있음
- GRU: Gated Recurrent Unit은 LSTM의 변형으로, 비교적 간단한 구조를 가지면서도 성능이 좋음(연산이 더 가벼운데 나름 성능이 좋음)
- Relational Network (RN): 객체들 간의 관계를 학습하는 신경망 구조
- Self-Attention: 입력 데이터의 중요한 부분에 집중하여 학습하는 방법
- Transformer: Self-Attention을 기반으로 한 구조로, 자연어 처리 (vit 논문 발표후에는 비전 등 모든거에 다 쓰일정도로) 성능이 좋음