모두의 딥러닝 시즌 1

2024. 12. 22. 22:33·딥러닝
반응형

머신러닝의 개념과 용어

  1. 머신러닝 이란? 개발자가 하드 코딩하지 않고, 데이터를 통해 학습해서 문제를 해결하는 것 (Arthur Samuel. 1959)
  2. Supervised learning 이란? label(정답) 이 갖춰진 데이터를 통해 학습하는 방법
  3. Unsupervised learning 이란? label이 없는 데이터를 통해 스스로 학습(Clustering, PCA 등)하는 방법
  4. Training data set 이란? X(학습 데이터)와 Y(label)로 구성된 데이터이며, 모델 정확도를 위해 학습(가중치 업데이트)할 때 쓰이는 데이터 셋
  5. Supervised learning 종류? 연속적인 값(ex. 0~100 사이 실수)를 예측하는 regression 문제, 이산적인 값(ex. 0, 1, 2..)를 구분하는 (binary or multi-label) classification 문제

Linear Regression의 개념

  1. $x: (10, 9, 3, 2), y: (90, 80, 50, 30)$ 데이터를 통해 $f(x)$를 학습하고, $f(7)$? 을 묻는 문제. 즉, 어떤 연속적인 값을 예측하기 위한 문제
  2. Linear Regression 문제를 해결한다는 것은, $f(x)$의 Hypothesis(가설)을 세우는 것이라 할 수 있음.
  3. 주어진 학습 데이터 (10, 90), (9, 80), (3, 50), (2, 30) 에 가장 잘 맞는 함수(=모델)를 찾는 것
  4. 일반적으로 $H(x) = Wx+b$ 가설을 세울 수 있음. (초기 W, b는 랜덤으로 설정하여, $H(x)$를 통한 예측값과, 정답값 간의 차이를 통해 $W, b$를 오차를 줄이는 방향으로 업데이트 하는 것을 학습 이라고 함)
  5. 예측값과 정답값의 차이는 Loss function(=Cost function)이라고 함. 주어진 데이터와 모델의 목적에 맞게 설정이 가능하며, $(H(x) - y)^2$ 로 설정 가능. ($H(x)$: Predicted data, $y$: label)
  6. 최종 Cost는 모든 학습 데이터의 Cost의 평균으로, 다음과 같이 정의됨. $cost = \frac{1}{m} \sum^m_{i=1} (H(x^{(i)})-y^{(i)})^2$

Linear Regression Cost 함수 최소화

  1. Cost 가 작다는 것은 학습 데이터를 통해 모델이 결과를 잘 예측한 상태를 의미.
  2. 즉, 학습 과정에서 $minimize Cost(W,b)$ 를 통해 Cost가 최소화 되는 방향으로 $W, b$를 업데이트
  3. $cost = \frac{1}{m} \sum^m_{i=1} (H(x^{(i)})-y^{(i)})^2$ 이며, $x$: (1, 2, 3), $y$: (1, 2, 3) 일 때
    1. $W$=1, cost($W$) = 0
    2. $W$=0, cost($W$) = 4.67
    3. $W$=2, cost($W$) = 4.67
  4. X축이 $W$, y축이 $Cost$ 인 그래프를 그려보면 (1,0)에서 최솟값을 갖는 2차원 그래프가 나옴. 이 그래프를 통해 경사하강법(Gradient Descent)를 진행하면, 어떤 $(W, b)$ 에서 시작하던지에 상관없이 local minimum 지점을 찾을 수 있음.
  5. 경사하강법을 통해 $W$를 업데이트 하는 수식은 다음과 같음. $W_{t+1}: W_t - \alpha \frac{\partial}{\partial W}$
  6. 현재 가중치 $W_t$ 에서 Cost 가 줄어드는 방향(Cost function의 미분했을 때 부호의 반대 방향)으로 $\alpha$(learning rate)를 곱해준 만큼 이동
  7. 단, Cost function이 Convex(볼록) 형태가 아니면 최적화가 잘 되지 않을 수 있음.

여러 입력(feature)의 Linear Regression

  1. $(x_1, x_2, x_3...)$ 입력(feature)을 통해 $y$를 학습하는 과정.
  2. $H(x) = w_1x_1 + w_2x_2 + w_3x_3 + b$ 와 같이, 각 입력에 대해 계산하는 가중치의 개수가 늘어남.
  3. 행렬(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)$) 
  4. $W$ 를 통해 출력을 조절할 수 있음. (ex. $W$ : (3, 1)일 때 출력은 $X$(n, 3) $\cdot$ $W$(3, 1) = (n, 1).)

Logistic (Regression) Classification

  1. sigmoid($\frac{1}{(1+e^{-z}}$)를 통해 $wx$를 [0, 1] 범위를 갖는 값으로 transform하여 임계값(Threshold)를 기준으로 이진 분류하는 방법
  2. Logistic Classification에서 $H(x)$는 $\frac{1}{1+e^{-W^TX}}$임.
  3. 이 $H(X)$에 대해 기존에 사용한 Cost function($\frac{1}{m} \sum^m_{i=1} (H(x^{(i)})-y^{(i)})^2$)를 사용하게 되면, Cost function이 Non-Convex 한 형태로 나타나게됨. 따라서, 다른 Cost function 을 적용해야함.
  4. 따라서, Logistic Classification에서는 다음 Cost function을 정의해서 사용함. $Cost(H(x), y) = -y log(H(x)) - (1-y)log(1-H(x))$
  5. 직관적으로, $H(x)$의 exponential term을 상쇄시키기 위해 Cost function에서 log 를 사용했다고 이해함.

Softmax Regression (Multinomial Logistic Regression)

  1. Softmax는 $WX = y$ 를 계산했을 때, $y$ 값을 0과 1 사이의 값이며 모든 값의 합이 1(=확률)로 표현하기 위한 함수.
  2. Cost function은 Cross-Entropy 를 사용함. $C(Y, \hat Y) = -\sum_i \hat Y_i log(Y_i) $

ML의 실용과 몇가지 팁

  1. Learning rate 이란? Gradient Descent 과정에서 learning step을 조절해 Cost의 ① 발산과 ② 너무 느린 수렴 을 해결하기 위한 상수 값
  2. Overfitting 이란? 모델($H(x)$)이 학습 데이터에만 높은 정확도를 갖고, 테스트 데이터에 대해서 잘 예측하지 못하는 경우. (학습 데이터를 늘림, 입력(feature)의 수를 줄임, Loss term에 Weight loss를 추가함(Regularization) 등의 학습 난이도를 올리는 방향으로 해결)
  3. 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 문제와 학습방법

  1. 하나의 뉴런으로는 XOR 문제를 해결할 수 없음. (XOR: 두 입력이 서로 다를때에만 출력이 1)
  2. 이는 뉴런을 여러 층으로 쌓은 다층 퍼셉트론을 설계하여 해결할 수 있음
    1. $x_1$과 $x_2$를 입력으로 받는 NAND gate
    2. $x_1$과 $x_2$를 입력으로 받는 OR gate
    3. $y_1$과 $y_2$를 입력으로 받는 AND gate
  3. 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, 초기값 정하기

  1. Deep Neural Network는 Backpropagation 과정에서 Network의 초기 가중치 gradient를 구하기 위해서, 많은 activation function의 미분값이 곱해짐. 이 때, activation function으로 Sigmoid가 사용된다면, Sigmoid의 미분값은 1보다 작은 값이기 때문에 gradient가 소실될 수 있음. 따라서, Deep Neural Network에서 미분값이 [0, 1] 사이의 범위가 아닌 적절한 activation function들이 제안됨. (ex. ReLU)
  2. ReLU 는 $ReLU(x) = max(0,x)$로 정의되며, 미분값은 Negative 영역에서 0, Positive 영역에서 1임.
  3. 학습 초기 모델 Weight 초기화는 매우 중요함.
    1. 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)
    2. He initialization: ReLU 에서는 Xavier Initialization 방법이 통하지 않음.(입력의 절반이 날아가기 때문) 따라서 가중치의 분산을 $\frac{2}{n}$ 로 설정함.
  4. Dropout은 Overfitting 을 해결하는 방법 중 하나이자, 모델 성능을 올릴 수 있는 방법 중 하나임. probability를 지정해 랜덤한 특정 뉴런들만 학습에 사용함. 이는 학습 난이도를 올리는 방법 중 하나이며, 특정 입력(feature)에 모델이 Overfit 되지 않게 하는 의미로 해석 가능.

Convolutional Neural Networks

  1. CNN은 이미지를 처리하는 태스크에서 주로 사용되는 모델.
    1. 이미지의 모든 픽셀의 RGB 값을 Fully-Connected Layer로 처리하기에는 높은 Cost가 필요함. 
    2. CNN의 Filter를 사용해 이미지의 oriented edge, angle 등의 특징(feature)를 잘 추출할 수 있음.
    3. 일반적으로 (((Conv-ReLU) x N) x Pooling) x N + FC 구조로 나타남.
    4. Pooling layer는 입력을 down sampling 하는 layer를 나타냄.
    5. Output Size = $\frac{I-F+2P}{S}$. ($I$: input size, $F$: filter size, $P$: padding size, $S$: stride)

Recurrent Neural Networks

  1. RNN은 time series data를 처리하는 태스크에서 주로 사용되는 모델.
    1. $x_t$(현재 시점의 입력)과 $h_{t-1}$(이전 시점의 히든 스테이트)를 통해 $h_t$를 계산함. $h_t=f_W(h_{t-1}, x_t)$ 
    2. $h_t$를 통해 $y$(output)을 계산함. $y = W_{hy}h_t$
    3. 다음 시점으로 이동해 1~2 반복.
반응형

'딥러닝' 카테고리의 다른 글

Positional Encoding: sin/cos을 사용하는 이유  (1) 2024.11.25
Batch/Layer/Group Normalization  (0) 2024.11.25
RNN: Backpropagation  (0) 2024.11.18
'딥러닝' 카테고리의 다른 글
  • Positional Encoding: sin/cos을 사용하는 이유
  • Batch/Layer/Group Normalization
  • RNN: Backpropagation
hangyuwon
hangyuwon
  • hangyuwon
    191
    hangyuwon
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (38)
      • 기타 (1)
      • Stanford CS231n (19)
      • 논문 리뷰 (5)
      • Error (4)
      • 알고리즘 (2)
      • Linux (1)
      • 잡동사니 (2)
      • 딥러닝 (4)
  • 인기 글

  • 태그

    알고리즘
    논문 리뷰
    error
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hangyuwon
모두의 딥러닝 시즌 1
상단으로

티스토리툴바