[Deep Learning/딥 러닝] 딥 러닝 기초

  • 구현 스킬
  • 수학 능력 - 선형대수학, 확률 등
  • 많은 최신 논문을 파악하고 있는 것

개요

  • AI? — 사람의 지능 모방하는 것(Mimic human intelligence)
  • ML? — 데이터 접근 방식(Data-driven approach)
  • DL? — 신경망(Neural networks)

딥 러닝의 주요 구성 요소

  • 모델이 학습 가능한 데이터The data that the model can learn from
  • 데이터 변환 방법이 담긴 모델The model on how to transform the data
  • 모델 성능을 정량화할 손실 함수The loss function that quantifies the badness of the model
  • 손실 함수 최소화를 위해 파라미터를 조정하기 위한 알고리즘The algorithm to adjust the parameters to minimize the loss

데이터

  • 데이터는 풀고자 하는 문제 종류에 따라 다르다.
    • 분류Classification
    • 의미적 분할Semantic segmentation
    • 탐지Detection
    • 포즈 추정Pose estimation
    • 시각 정보 기반 질의응답Visual Q&A

모델

(예) AlexNet, GoogLeNet, ResNet, DenseNet, LSTM, Deep AutoEncoders, GAN, …

손실 함수

  • 이루고자 하는 것의 근사치(proxy)에 불과. loss가 줄어드는 것이 꼭 원하는 목적을 달성하는 것을 의미하는 것은 아님. 관계를 이해하는 것이 새로운 연구를 하는 데 도움이 됨.

    • 회귀Regression \[\text{MSE}=\frac{1}{N}\sum_{i=1}^N\sum_{d=1}^D\left(y_i^{(d)}-\hat y_i^{(d)}\right)^2\]

    • 분류Classification \[\text{CE}=-\frac{1}{N}\sum_{i=1}^N\sum_{d=1}^Dy_i^{(d)}\log\hat y_i^{(d)}\]

    • 확률 기반 \[\text{MLE}=\frac{1}{N}\sum_{i=1}^N\sum_{d=1}^D\log \mathcal N\left(y_i^{(d)};\hat y_i^{(d)},1\right)\]

최적화 알고리즘

(예) SGD, Momentum, NAG, Adagrad, Adadelta, Rmsprop

그밖의 테크닉: dropout, early stopping, k-fold validation, weight decay, batch normalization, mixup, ensemble, bayesian optimization, …

딥 러닝의 역사

2012 — AlexNet

  • CNN
  • 224 x 224 이미지 분류
  • ImageNet 대회 1등
  • 딥 러닝 방법으로 처음 1등, 그 이후 대회에는 딥 러닝 아닌 방법이 한 번도 1등을 한 적이 없음 → 패러다임 변화

2013 — DQN

  • Google Deepmind가 Atari 게임을 풀기 위해 강화학습으로 사용한 방법

2014 — Encoder/Decoder, Adam

  • NMT를 풀기 위해 나온 방법론
  • 단어의 연속이 주어졌을 때, 다른 언어의 단어의 연속으로 어떻게 바꿀지?
  • 기계어 번역의 트렌드가 바뀜
  • 왜 Adam을 사용하는가?

    → Adam이 결과가 잘 나와서

  • cifar-10 데이터셋 학습 시킨 네트워크가 처음 나왔을 때 어떻게 학습시켰는지를 살펴보면, ResNet같은 아키텍처를 기본적으로 사용하고 학습이 절반 정도 진행(전체 epochs의 절반)되었을 때 learning rate을 10% 수준으로 낮춤. (이때 SGD 쓰긴 했음.) 학습이 75% 정도 진행했을 때 다시 learning rate 10% 정도 줄임
  • 왜 이렇게 하는지에 대한 이야기는 없는데, 이런 식으로 세팅을 하지 않으면 같은 결과가 복원이 안 된다고 함 → 더 안 좋은 성능
  • 결과 재현에 있어서 Adam 방법론은 ‘웬만하면 잘 된다’는 의미가 있음

2015 — GAN, ResNet

  • GAN: Generative Adversarial Network
  • 생성 모델 — 중요하고 강조하는 토픽
  • 감사의 인사: “Finally, we would like to thank Les Trois Brasseurs for stimulating our creativity.” 술집의 술이 맛이 없어서 연구를 생각하다가 떠오른 아이디어가 GAN
  • Residual Networks의 의의?
    • 이 연구 덕분에 딥 러닝이 딥 러닝이 가능해졌다(?) → 네트워크를 깊게 쌓기 때문에 딥 러닝이라는 설명이 있음
    • 한편 신경망을 깊게 쌓으면 트레이닝 에러는 더 작아지더라도 테스트 에러가 오히려 커지는 과적합overfitting 현상이 알려져 있었는데, 이 문제를 해결

2017 — Transformer

  • 논문 제목: Attention Is All You Need
  • 도발적이고 도전적인 제목: 일반적인 논문 제목은 풀고자 하는 문제와 어떻게 풀었는지를 설명한다든지 만들고자하는 네트워크의 성질을 잘 표현하게끔 네이밍을 함!
  • 트랜스포머Transformer 구조는 웬만한 RNN 구조를 대체했고, 컴퓨터 비전 분야까지도 섭렵
  • Multihead attention 구조를 이해하는 것은 매우 중요

2018 — BERT

  • 웹에 산재해있는 말뭉치(위키피디아 등)를 이용해 사전학습pre-training 학습
  • 그 후 정말 풀고자하는 문제의 소드 데이터에 파인튜닝fine-tuning
  • Fine-tuned NLP models 발전하기 시작

2019 — Big Language Models (GPT-X)

  • Fine-tuned NLP model의 끝판왕 느낌으로도 볼 수 있음
  • GPT-3 특징: BERT와 다르게 굉장히 많은 수의 파라미터 수. 175B params.

2020 — Self-Supervised Learning

  • SimCLR: a simple framework for contrastive learning of visual representations
  • 해결하고자 하는 문제 수준 대비 데이터가 적을 때, 모델 혹은 loss 함수 등을 바꿔가며 여러가지 다른 변경사항을 주는 것이 일반적인 방법이었다면
  • Self-supervised learning의 경우, 주어진 데이터 외에 정답 레이블을 모르는 unsupervised data를 이용하겠다는 아이디어
  • 어떻게 하면 이미지를 컴퓨터가 잘 이해할 수 있는 벡터로 바꿀 수 있을 것인가?
  • 학습 데이터 뿐만 아니라 unsupervised data까지 동원하여 문제를 풀고자 함

신경망 & 다층 퍼셉트론(Neural Networks & Multi-Layer Perceptron)

  • 딥 러닝/뉴럴 네트워크가 무엇인지
  • 딥 러닝의 가장 간단한 구조(MLP)가 어떤 것인지
  • 딥 러닝을 ‘학습’한다는 것의 의미

신경망

  • 사람의 뇌를 모방했기 때문에 → 잘 된다?
  • 꼭 이렇게 설명할 필요가 없는 이유? 역전파(backpropagation)이 인간의 뇌에서 일어나는가를 살펴보면 아니라는 쪽의 대답을 하게 될 것
  • 하늘을 나는 구조체의 발명의 역사에 빗대어 설명해보자면
    • Clèment Ader’s Avion III (1897)
    • Write Brothers (1903)
    • F-22 Raptor

    처음에는 새를 모방하려고 했을지 몰라도 새를 꼭 모방을 하지는 않아도 하늘을 날게 할 수 있음

  • 신경망은 ‘아핀 변환 - 비선형 변환’ 구조가 반복하여 쌓이는 함수 근사식이다(Neural networks are function approximators that stack affine transformations followed by nonlinear transformations).

선형 신경망

  • 데이터: \(\mathcal D=\{(x_i,y_i)\}_{i=1}^N\)
  • 모델: \(\hat y=wx+b\)
  • 손실: \(\text{loss}=\frac{1}{n}\sum\limits_{i=1}^N(y_i-\hat y_i)^2\)

\(w, b\) 찾는 법?

→ 역전파Backpropagation

  • 최적화 변수에 관해 편미분을 계산: \[\begin{aligned} \frac{\partial\text{loss}}{\partial w}&=\frac{\partial}{\partial w}\frac{1}{N}\sum_{i=1}^N(y_i-\hat y_i)^2\\ &=\frac{\partial}{\partial w}\frac{1}{N}\sum_{i=1}^N(y_i-wx_i-b)^2\\ &=-\frac{1}{N}\sum_{i=1}^N-2(y_i-wx_i-b) \end{aligned}\]

  • 최적화 변수를 반복하여 갱신: \[\begin{aligned} w\leftarrow w-\eta\frac{\partial\text{loss}}{\partial w}\\ b\leftarrow b-\eta\frac{\partial\text{loss}}{\partial b} \end{aligned}\]

    • 적당한 \(\eta\) 값이 중요. 크면 학습이 잘 안 됨.

행렬곱에 대한 해석?

  • 두 벡터 공간 사이의 선형 변환을 찾겠다는 것 (\(W\))

비선형성 추가 이유?

  • 단순한 선형 결합의 연속은 한 번의 선형 결합과 동치

활성화 함수(activation functions)

  • ReLU, Sigmoid, tanh
  • 어떤 것이 제일 좋을지는 문제마다, 상황마다 다름 → 엔지니어링 감각!?

선형 신경망을 넘어서?

  • Kur Hornik, Multilayer Feedforward Networks are Universal Approximators
  • English: “There is a single hidden layer feedforward network that approximates any measurable function to any desired degree of accuracy on some compact set K.”
  • Math: For every function \(g\) in \(M^r\) there is a compact subset \(K\) of \(R^r\) and an \(f\in\sum^r(\Psi)\) such that for any \(\epsilon>0\) we have \(\mu(K)<1-\epsilon\) and for every \(X\in K\) we have \(|f(x)-g(x)|<\epsilon\), regardless of \(\Psi\), \(r\), or \(\mu\).

  • 그러한 신경망의 존재성만을 보장하는 것일 뿐, 학습 시킨 신경망 구조가 최적해일 것이라는 보장 x. 어떻게 찾는지는 모른다.

다층 퍼셉트론(Multi-Layer Perceptron)

  • 이와 같은 구조를 MLP라 부름
  • 깊게 쌓을 수도 있음
  • 손실 함수?

    cf. \(\hat y\)을 보통 logit이라고 많이 부름

    • 회귀Regression \[\text{MSE}=\frac{1}{N}\sum_{i=1}^N\sum_{d=1}^D\left(y_i^{(d)}-\hat y_i^{(d)}\right)^2\]

      • 꼭 제곱이어야 할 것인가?
      • L1-norm, L2-norm 사용할 때의 성질이 조금 달라짐. → Outlier가 있을 때, 그 데이터에 신경망이 맞추려고 하다가 신경망이 망가지곤 함. 이 경우에는 L1-norm이 L2-norm에 비해 outlier에 더 robust할 수 있음.
    • 분류Classification \[\text{CE}=-\frac{1}{N}\sum_{i=1}^N\sum_{d=1}^Dy_i^{(d)}\log\hat y_i^{(d)}\]

      • 과연 cross entropy loss가 분류 문제를 푸는 데 최적일까?
      • 클래스 \(y_i^{(d)}\)는 한 개만 1, 나머지는 0이어서 해당 클래스의 \(\hat y_i^{(d)}\)가 다른 것들보다 크기만 하면 됨. 즉 $\hat y_i^{(d)}$ 간의 상대적인 관계를 따지는 것.
    • 확률 기반 \[\text{MLE}=\frac{1}{N}\sum_{i=1}^N\sum_{d=1}^D\log \mathcal N\left(y_i^{(d)};\hat y_i^{(d)},1\right)\]

      • Confidence, uncertainty 정보 등을 함께 찾고자 할 때 probabilistic loss function을 사용하게 됨.

참고


© Copyright 2023 GT.