반응형
머신러닝의 개념과 용어
- 머신러닝 이란? 개발자가 하드 코딩하지 않고, 데이터를 통해 학습해서 문제를 해결하는 것 (Arthur Samuel. 1959)
- Supervised learning 이란? label(정답) 이 갖춰진 데이터를 통해 학습하는 방법
- Unsupervised learning 이란? label이 없는 데이터를 통해 스스로 학습(Clustering, PCA 등)하는 방법
- Training data set 이란? X(학습 데이터)와 Y(label)로 구성된 데이터이며, 모델 정확도를 위해 학습(가중치 업데이트)할 때 쓰이는 데이터 셋
- Supervised learning 종류? 연속적인 값(ex. 0~100 사이 실수)를 예측하는 regression 문제, 이산적인 값(ex. 0, 1, 2..)를 구분하는 (binary or multi-label) classification 문제
Linear Regression의 개념
- $x: (10, 9, 3, 2), y: (90, 80, 50, 30)$ 데이터를 통해 $f(x)$를 학습하고, $f(7)$? 을 묻는 문제. 즉, 어떤 연속적인 값을 예측하기 위한 문제
- Linear Regression 문제를 해결한다는 것은, $f(x)$의 Hypothesis(가설)을 세우는 것이라 할 수 있음.
- 주어진 학습 데이터 (10, 90), (9, 80), (3, 50), (2, 30) 에 가장 잘 맞는 함수(=모델)를 찾는 것
- 일반적으로 $H(x) = Wx+b$ 가설을 세울 수 있음. (초기 W, b는 랜덤으로 설정하여, $H(x)$를 통한 예측값과, 정답값 간의 차이를 통해 $W, b$를 오차를 줄이는 방향으로 업데이트 하는 것을 학습 이라고 함)
- 예측값과 정답값의 차이는 Loss function(=Cost function)이라고 함. 주어진 데이터와 모델의 목적에 맞게 설정이 가능하며, $(H(x) - y)^2$ 로 설정 가능. ($H(x)$: Predicted data, $y$: label)
- 최종 Cost는 모든 학습 데이터의 Cost의 평균으로, 다음과 같이 정의됨. $cost = \frac{1}{m} \sum^m_{i=1} (H(x^{(i)})-y^{(i)})^2$
Linear Regression Cost 함수 최소화
- Cost 가 작다는 것은 학습 데이터를 통해 모델이 결과를 잘 예측한 상태를 의미.
- 즉, 학습 과정에서 $minimize Cost(W,b)$ 를 통해 Cost가 최소화 되는 방향으로 $W, b$를 업데이트
- $cost = \frac{1}{m} \sum^m_{i=1} (H(x^{(i)})-y^{(i)})^2$ 이며, $x$: (1, 2, 3), $y$: (1, 2, 3) 일 때
- $W$=1, cost($W$) = 0
- $W$=0, cost($W$) = 4.67
- $W$=2, cost($W$) = 4.67
- X축이 $W$, y축이 $Cost$ 인 그래프를 그려보면 (1,0)에서 최솟값을 갖는 2차원 그래프가 나옴. 이 그래프를 통해 경사하강법(Gradient Descent)를 진행하면, 어떤 $(W, b)$ 에서 시작하던지에 상관없이 local minimum 지점을 찾을 수 있음.
- 경사하강법을 통해 $W$를 업데이트 하는 수식은 다음과 같음. $W_{t+1}: W_t - \alpha \frac{\partial}{\partial W}$
- 현재 가중치 $W_t$ 에서 Cost 가 줄어드는 방향(Cost function의 미분했을 때 부호의 반대 방향)으로 $\alpha$(learning rate)를 곱해준 만큼 이동
- 단, Cost function이 Convex(볼록) 형태가 아니면 최적화가 잘 되지 않을 수 있음.
여러 입력(feature)의 Linear Regression
- $(x_1, x_2, x_3...)$ 입력(feature)을 통해 $y$를 학습하는 과정.
- $H(x) = w_1x_1 + w_2x_2 + w_3x_3 + b$ 와 같이, 각 입력에 대해 계산하는 가중치의 개수가 늘어남.
- 행렬(Matrix)를 이용해 $H = XW$로 표현할 수 있음. ($(x_1 \ x_2 \ x_3) \cdot \left(\begin{array}{c}w_1 \\ w_2 \\ w_3 \end{array}\right) = (x_1w_1 + x_2w_2 + x_3w_3)$)
- $W$ 를 통해 출력을 조절할 수 있음. (ex. $W$ : (3, 1)일 때 출력은 $X$(n, 3) $\cdot$ $W$(3, 1) = (n, 1).)
Logistic (Regression) Classification
- sigmoid($\frac{1}{(1+e^{-z}}$)를 통해 $wx$를 [0, 1] 범위를 갖는 값으로 transform하여 임계값(Threshold)를 기준으로 이진 분류하는 방법
- Logistic Classification에서 $H(x)$는 $\frac{1}{1+e^{-W^TX}}$임.
- 이 $H(X)$에 대해 기존에 사용한 Cost function($\frac{1}{m} \sum^m_{i=1} (H(x^{(i)})-y^{(i)})^2$)를 사용하게 되면, Cost function이 Non-Convex 한 형태로 나타나게됨. 따라서, 다른 Cost function 을 적용해야함.
- 따라서, Logistic Classification에서는 다음 Cost function을 정의해서 사용함. $Cost(H(x), y) = -y log(H(x)) - (1-y)log(1-H(x))$
- 직관적으로, $H(x)$의 exponential term을 상쇄시키기 위해 Cost function에서 log 를 사용했다고 이해함.
Softmax Regression (Multinomial Logistic Regression)
- Softmax는 $WX = y$ 를 계산했을 때, $y$ 값을 0과 1 사이의 값이며 모든 값의 합이 1(=확률)로 표현하기 위한 함수.
- Cost function은 Cross-Entropy 를 사용함. $C(Y, \hat Y) = -\sum_i \hat Y_i log(Y_i) $
ML의 실용과 몇가지 팁
- Learning rate 이란? Gradient Descent 과정에서 learning step을 조절해 Cost의 ① 발산과 ② 너무 느린 수렴 을 해결하기 위한 상수 값
- Overfitting 이란? 모델($H(x)$)이 학습 데이터에만 높은 정확도를 갖고, 테스트 데이터에 대해서 잘 예측하지 못하는 경우. (학습 데이터를 늘림, 입력(feature)의 수를 줄임, Loss term에 Weight loss를 추가함(Regularization) 등의 학습 난이도를 올리는 방향으로 해결)
- Regularization 이란? $H(x) = w_1x_1 + w_2x_2 + .. .w_nx_n$ 를 가정. 이 때, $w_i$ 값들이 커질 수록 구불구불한 함수임. 이게 심할수록 training set에 overfitting 됨. 따라서, $w_i$ 의 크기를 줄여 $H(x)$를 Linear 하게 만들어줌. 대표적으로 loss에 $\sum_i W_{i}^2$를 추가해줌. 이 의미는 $\sum W^2$ 이 클 수록 높은 loss를 부여하며, $\sum W^2$ 가 작아지는 방향으로 모델이 학습하게됨.
Neural Network 1: XOR 문제와 학습방법
- 하나의 뉴런으로는 XOR 문제를 해결할 수 없음. (XOR: 두 입력이 서로 다를때에만 출력이 1)
- 이는 뉴런을 여러 층으로 쌓은 다층 퍼셉트론을 설계하여 해결할 수 있음
- $x_1$과 $x_2$를 입력으로 받는 NAND gate
- $x_1$과 $x_2$를 입력으로 받는 OR gate
- $y_1$과 $y_2$를 입력으로 받는 AND gate
- Deep Neural Network에서 가중치 업데이트 방법으로 Backpropagation을 사용함. (정리 내용: Lecture 4: Backpropagation and Neural Networks — 191)
| $x_1$ | $x_2$ | XOR |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| $x_1$ | $x_2$ | $y_1$ | $y_2$ | $\bar y$ | XOR |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | 1 | 1 |
| 1 | 1 | 0 | 1 | 0 | 0 |
Neural Network 2: ReLU, 초기값 정하기
- Deep Neural Network는 Backpropagation 과정에서 Network의 초기 가중치 gradient를 구하기 위해서, 많은 activation function의 미분값이 곱해짐. 이 때, activation function으로 Sigmoid가 사용된다면, Sigmoid의 미분값은 1보다 작은 값이기 때문에 gradient가 소실될 수 있음. 따라서, Deep Neural Network에서 미분값이 [0, 1] 사이의 범위가 아닌 적절한 activation function들이 제안됨. (ex. ReLU)
- ReLU 는 $ReLU(x) = max(0,x)$로 정의되며, 미분값은 Negative 영역에서 0, Positive 영역에서 1임.
- 학습 초기 모델 Weight 초기화는 매우 중요함.
- Xavier Initialization: 입력과 출력의 평균, 분산을 맞춰주기 위한 가중치 초기화 방법. 입력과 출력의 분포가 같다고 가정.($Var(a^{l-1}) = Var(a^l)$ 이를 정리하면 $Var(a^{l}) = Var(W) = \frac{1}{n^{l-1}}$ 을 얻을 수 있음. 즉, 입력과 출력의 분포가 같기 위해선 가중치의 분산이 $\frac{1}{n^{l-1}}$, 입력 차원에 역수를 따라야함. 따라서, 가중치를 생성할 때 $(0, \frac{1}{n})$의 분포를 맞춰 생성함. (정리 내용: Weight Initialization — 191)
- He initialization: ReLU 에서는 Xavier Initialization 방법이 통하지 않음.(입력의 절반이 날아가기 때문) 따라서 가중치의 분산을 $\frac{2}{n}$ 로 설정함.
- Dropout은 Overfitting 을 해결하는 방법 중 하나이자, 모델 성능을 올릴 수 있는 방법 중 하나임. probability를 지정해 랜덤한 특정 뉴런들만 학습에 사용함. 이는 학습 난이도를 올리는 방법 중 하나이며, 특정 입력(feature)에 모델이 Overfit 되지 않게 하는 의미로 해석 가능.
Convolutional Neural Networks
- CNN은 이미지를 처리하는 태스크에서 주로 사용되는 모델.
- 이미지의 모든 픽셀의 RGB 값을 Fully-Connected Layer로 처리하기에는 높은 Cost가 필요함.
- CNN의 Filter를 사용해 이미지의 oriented edge, angle 등의 특징(feature)를 잘 추출할 수 있음.
- 일반적으로 (((Conv-ReLU) x N) x Pooling) x N + FC 구조로 나타남.
- Pooling layer는 입력을 down sampling 하는 layer를 나타냄.
- Output Size = $\frac{I-F+2P}{S}$. ($I$: input size, $F$: filter size, $P$: padding size, $S$: stride)
Recurrent Neural Networks
- RNN은 time series data를 처리하는 태스크에서 주로 사용되는 모델.
- $x_t$(현재 시점의 입력)과 $h_{t-1}$(이전 시점의 히든 스테이트)를 통해 $h_t$를 계산함. $h_t=f_W(h_{t-1}, x_t)$
- $h_t$를 통해 $y$(output)을 계산함. $y = W_{hy}h_t$
- 다음 시점으로 이동해 1~2 반복.
반응형
'딥러닝' 카테고리의 다른 글
| Positional Encoding: sin/cos을 사용하는 이유 (1) | 2024.11.25 |
|---|---|
| Batch/Layer/Group Normalization (0) | 2024.11.25 |
| RNN: Backpropagation (0) | 2024.11.18 |