Processing math: 100%

딥러닝 기초개념

래훈
|2024. 6. 24. 14:41
728x90
반응형

AI(Artificial Intelligence)

  • 인간의 사공방식을 흉내내는 것(딥러닝의 핵심)
    AIMLDL

AI : 규칙기반 알고리즘
ML : 결정트리, 선형회귀, 퍼셉트론, SVM
DL : CNN, RNN, GAN 등

CNN(Convolutional Neural Network)

  • 이미지도 숫자.(행렬)
  • 컬러이미지 = 3차원 행렬
  • 이미지개수 x channel x row x col (채널, 행, 열)

RNN(Recurrent Neural Network)

GAN(Generative Adversarial Network)

  • G(Generator), D(Discriminator) Network가 있다.
  • G는 도둑, D는 경찰
  • G는 D가 진짜라고 생각하게 끔 이미지를 만들어야한다.
  • D가 먼저 학습이 된다.
  • G가 학습하고 평가를 진행하면서 서로서로 계속 학습한다.
  • 결국 진짜도 0.5 가짜도 0.5로 수렴하면 끝

지도학습 vs 비지도학습

  • 지도학습
    • 정답(label)을 알고 있다.
    • 회귀(regression)
    • 분류(classification)
    • Localization
    • Object Detection
    • Instance Segmentation
      • 강아지 1, 강아지 2 이렇게 같은 객체도 다른걸로 분리
  • 비지도 학습
    • 정답을 모른다.
    • 군집화(K-Means, DBSCAN..) : 그룹화 의미는 모른다.
    • 차원축소(PCA, SVD ..)
    • GAN

자기 지도 학습(Self-supervised learning)

데이터가 많을수록 좋은데, 정답을 알고 있는 데이터가 너무 적다. (정답을 만드는 비용이 상당하다.)
자기지도 학습은 진짜 풀려고 했던 문제 말고 다른 문제를 새롭게 정의해서 먼저 풀어본다.
데이터 안에서 self로 정답(label)을 만듦.

  1. pretext task학습으로 pre-training
  2. downstream task를 풀기위해 transfer learning함
    Context prediction
    Paper : Unsupervised visual representation learning by context prediction (2015)
    pretask로 Contrastive learning을 이용
    Paper : A simple framework for contrastive learning of visual representations (2020)

강화학습

강아지한테 "손"이라는 말을 했을 때 손을 내는 행동을 하면 간식을 주듯이 AI를 학습
오목에서 5개를 완성하는 것

  • Agent : 강아지, 흑돌
  • Reward : 간식, 승리
  • Environment : 주인, 흰돌
  • Action(a) : "손", 이기는 수
  • State(s) : 바둑판 상황 (행렬같은 느낌의 숫자형태)
  • Q-function : Q(s, a)
  • Agent는 Reward를 최대화 하고 싶어한다.
    Q-learning
    Exploration : 최적을 찾기 위해 탐험
  • epsilon-greedy : epsilon의 확률로 길을 탐험.
  • discount-factor : gamma의 값만큼 reward를 곱해줌 (최적의 길을 가기위한 방법) 돌아돌아 가게 된다면 reward가 낮아짐.

기초 개념

인공신경

  • 노드와 엣지로 이루어져 있다.
  • weight를 곱하고 bias를 더하고 activation
  • 여러가지 activation이 있다.
  • 주어진 입력에 대해 원하는 출력이 나오도록 weight, bias를 정해줘야 한다.
  • AI가 스스로 적당한 weight, bias를 찾기 때문에 흥미로운 것.
  • 곱하고 더하고 activation 반복.
  • Input layer & output layer ; hidden layer
  • 노드끼리 싹다 연결한 층은 FC(Fully-Connected) layer
  • 모든 layer가 FC layer이면 multilayer perceptron(MLP) : 임의의 활성화 함수를 사용하는 인공신경망

인공신경망은 함수다.

  • 입력과 출력을 연결시켜주는 연결고리
  • 주어진 입력에 대해 원하는 출력이 나오도록 하는 함수를 알아내자는 것.
  • weight 와 bias를 알아내는 것이 딥러닝의 목표

선형회귀(Linear Regression)

  • 입력과 출력간의 관계를 추정하는 것 -> 처음보는 입력에 대해서도 적절한 출력을 얻기 위함.
  • 키와 몸무게의 관례를 ax+b로 놓고 a,b를 잘 추정해서 처음보는 키에 대해서도 적절한 몸무게를 출력.
  • 최적의 a, b를 알아내야한다. ; a,b가 좋다 나쁘다를 판단할 줄 알아야함.
  • loss(=cost)를 최소화 하는 a,b가 최적의 a,b
  • loss는 내가 풀고싶은 문제에 맞게 잘 정의해야함 ; 내가 줄이고 싶은거
  • MSE vs MAE : MSE가 더 error에 민감하게 반응 (그래프를 그려보면 확인 가능)

Gradient Descent

  • 처음 a,b를 아무렇게나 정하고, 현재 a,b에서 L을 줄이는 방향으로 나아간다.
  • Gradient는 항상 가장 가파른 방향을 향한다. -> 반대 방향으로 가게 되면 최소값을 찾게된다.
  • learning rate α : 적절한 값을 주어 학습을 적절히 진행 (스케줄링을 하기도 함 : 점점 줄이면서 진행 or 늘렸다가 줄였다가)
  • Initial weight (LeCun, Xavier, He) 방법론.
    • 너무 신중한 방향선택 : 너무 오래 걸릴 수 있다.
    • Local minimum : global minimum이 아닌 local minimum에 빠지는 문제
Weight initialization

랜덤하게 0근처로 잡자.

  • LeCunwU(3Nin,3Nin)orwN(0,1Nin)
  • Xavier(sigmoid, tanh)wU(6Nin+Nout,6Nin+Nout)orwN(0,2Nin+Nout)
  • He(ReLU)wU(6Nin,6Nin)orwN(0,2Nin)
  • Q. 만약 전부 0으로 초기화 한다면? 만약 전부 1로 초기화 한다면?
    • answer :

Stochastic Gradient descent, SGD

  • 랜덤하게 데이터 하나씩 뽑아서 loss만듦 (랜덤이라 stochastic)
  • 하나만 보고 빠르게 방향 결정
    • Q. gradient가 왜 최소를 향하지 않을까?
    • A. 뽑은 하나의 데이터에 대한 최소의 방향으로 향하기 때문에
  • 비복원 추출 & 다 뽑고 다시 반복
  • local minimum으로 부터 탈출의 기회가 되기도 한다.
  • 안장점 문제 : 최솟값은 아니지만 기울기가 0에 가까워서 업데이트 되지 않는 상황
mini-batch SGD
  • SGD는 하나씩만 보니까 너무 성급하게 방향을 결정한다.
  • GPU는 병렬 연산을 가능하게 하므로 여러 데이터에 대해서도 빠르다. -> mini-batch(작은 묶음)
  • batch size 키우진 말고 최대 8000정도 까지만 키우자 -> 그나마 성능 유지가 된다(Accurate, large minibatch sgd: Training imagenet in 1hour, 2017)
  • learning rate도 같이 키우고 warm up도 해야 그나마 작은 batch size일 때 성능을 얻을 수 있다.
  • Batchsize를 키울수록 성능이 안좋아 진다. <- 아마 안좋은 local minimum으로 빠질 가능성이 커져서?
Epoch & Batch size
  • 총 epoch수 : 전체 데이터를 몇 번 반복해서 볼건지
  • Batch Size : 몇개씩 볼건지
  • learning rate : 얼만큼 갈건지
Parameter vs HyperParameter

parameter : machine이 스스로 알아내는 변수

  • weights
  • bias
  • etc.
    Hyperparameter : 내가 정해줘야 하는 값
  • Initial weight
  • Epoch, batchsize
  • learning rate
  • model architecture (layer수, node 수, activation 함수 등..)
  • loss

SGD vs Moment

  • gradient를 누적함으로써 관성을 가지게 함
    vαvηLW
    WW+v
  • 첫 v는 0

SGD vs RMSProp(Root Mean Square Propagation)

  • 많이 훑은 축으로는 적게, 적게 훑은 축으로는 많이 탐색(평준화를 통해 공평하게 탐색)
  • Learning rate를 각 파라미터 별로 다르게 준 셈.
  • 경사를 보고 너무 가파른쪽은 조심해서, 완만한 쪽은 과감하게

Adam(Adaptive Moment Estimation)

θtθt1α^mt(^vt+ϵ)
gt : t에서 gradient
mtβ1mt1+(1β1)gt : 방향(exponential moving average) : gradient 누적
vtβ2vt1+(1β2)g2t : 보폭

Training vs Test vs Validation

  • Testdata를 학습에 절대 사용하면 안된다. - 처음보는 data에 대해 잘하는지 봐야한다.
  • 학습도중 test해보고 싶을 때 Validation사용
  • Training data : parameter학습을 위한 data
  • Test data : 최종적으로 학습된 모델 테스트용 data
  • Validation data : 하이퍼파라미터를 선정하는 data
    • validation data에 가장 잘 할 때 학습을 멈춘다 (총 Epoch수)
    • validation data에 대해 잘하는 모델을 고른다 (model구조

K-Fold Cross Validation

  • training data가 적어서 일부를 validation으로 쓰기 곤란할 때
  • 편향된 validation data -> 각기 다른 train, validation data으로 학습
  • 평균 val_loss를 구해 가장 작은 hyperparameter set을 고르는데 사용
    • 5-fold 라면 5개의 데이터 셋을 만들고 val_loss의 평균을 구함.
    • hyperparameter set 3개 중 가장 낮은 set을 선택.
  • 선택된 set으로 training data 전체를 새로 학습하거나 학습했던 5개 모델의 출력 결과를 하나로 합치기도 한다. (majority vote(다수결))

MLP

  • 행렬 곱하고, 벡터 더하고, activation 반복.
  • 인공신경망은 함수다!
  • linear activation(입력과 출력간의 선형적 관계)으로는 아무리 깊은 신경망이어도 그 효과를 누리지 못한다.
  • non-linear activation는 입력, 출력간의 비선형 관계도 나타낼 수 있고 깊을수록 복잡한 함수 표현 가능.

Backpropagation

이진분류

hidden layer 없이 unit-step function을 activation으로 사용하면 퍼셉트론이라고 한다.

  • 미분불가 (gradient descent 못 씀)
  • 빡빡하게 분류(모 아니면 도)
    u(ta)={1,ta>00,ta<0
sigmoid

sigmoid(x)=11+ex

  • 전구간 미분 가능 (최대 기울기 1/4)
  • 좀 더 부드러운 분류 가능
  • 합리적인 분류 기준 선을 찾게 된다.
sigmoid를 이용한 이진분류

머신의 출력을 q 정답을 y라고 하면 강아지(y=1), 고양이(y=0)이다.

  • q = 1 이 나오게 하자 = q를 키우자
  • q = 0 이 나오게 하자 = 1-q를 키우자
  • 따라서 qy(1q)1y를 최대화.
    Πni=1qyii(1qi)1yi 0~1사이의 값을 계속 곱하게 되면 0에 가까워짐. -> 따라서 log를 취한다.
    ni=1log(qyii(1qi)1yi) log함수는 단조증가함수이기 때문에 log를 취해도 된다.
    L=ni=1log(qyii(1qi)1yi)를 최소화 하면 된다.
    logistic regression : logit(log-odds = log(q1q))을 linear regression한 것.
  • loss를 만들기 위해 logit을 구하는 함수의 역함수인 sigmoid를 통과시켜 확률이 출력되도록 한 것.

MLE

P(Y|q=fw(input))=qy(1q)1y 를 w의 함수로 보고 maximize : likelihood

  • input이 들어갔을 때 y에 대한 "확률"을 키우는 것.
  • Negative Log-Likelihood : NLL(loss함수) : Log-Likelihood를 최대화 하면 NLL은 최소화.
    "학습"이라 함은 w에 대한 MLE다.
    ˆw=argmaxwP(y|fw(x))
728x90
반응형

'Deep Learning' 카테고리의 다른 글

Softmax function derivative  (0) 2024.09.03
Norm,L1,L2  (0) 2024.08.17
AUROC Random Detector  (0) 2024.08.09
Cross Entropy Loss and gradient  (0) 2024.08.08
Precision, Recall, TPR, FPR, AUROC, AUPR  (0) 2024.08.06