카테고리 없음

11월 셋째 주( 1120 ~ 11/26 )

수타. 2023. 11. 20. 11:58
Deep Learning History

AlexNet

  • 2012년
  • CNN구조이며 목표는 224*224 의 이미지를 분류하는것이 목표
  • 이전에는 딥러닝이아닌 커널기반 방법론, SVD(Support Vector machine)등이 사용됐음(이후엔 다 딥러닝)

DQN

  • 2013년
  • Q Learning의 강화학습 방법론을 딥러닝에 접목
  • 후에 구글 딥마인드 > 알파 > 알파폴드 2

Encoder / Decoder

  • 2014년
  • NMT(Neural Machine Translation,인공 신경망 기계번역) 문제를 풀기 위해 고안된 방법
  • Seq2Seq모델에 활용됨

Adam Optimizer

  • 2014년
  • Adaptive momentum Optimizer의 약자
  • Optimizer중 ADAM을 메인으로 사용하는 이유는 ADAM이 결과가 좋기 때문에(논문에 왜에 대한 설명의 부재)

Generative Adversarial Network

  • 2015년
  • Network 가 Generator 와 Discrimiator을 만들어서 학습

Residual Networks

  • 2015년
  • 왜 딥러닝이냐의 대답 > 네트워크를 깊게 쌓기 때문
  • 이전엔 layer을 너무 깊게 쌓으면 성능이 잘 나오지 않았음, resnet은 깊게 쌓아도 성능이 잘 나오게 함

Transformer

  • 논문 제목이 Attention is all you need

BERT(find_tuned NLP models)

  • NLP, 즉 language모델은 다음에 무슨 단어가 올지 예측하는 모델
  • 다양한 큰 말뭉치로 Pre trained를 시키고, 내가 풀고자 하는 문제에 fine_tuned

BIG Language Models

  • 굉장히 많은 Parameters (BERT와 다른점)

Self Supervised Learning

  • 한정된 학습데이터를 주었을 때, 모델, Lossfunc 을 바꿔가면서 학습하는것이 일반적이었는데, Label 을 모르는 unsupervised data를 활용
  • Visual representation 어떻게 하면 이미지를 컴퓨터가 잘 이해할 수 있는 Vector로 바꿀것인가

Gradient Descent Methods(경사 하강알고리즘)

Stochastic gradient descent

  • out lier에 대해 오차가 크게 날 수 있음

 

Momentum

  • 경사하강법엔 local minimum을 빠져나오기 힘들다와, 안장점을 벗어나지 못한다라는 단점이 있음
  • Momentum은 이전에 이동했던 방향을 기억하면서 이전 기울기의 크기를 고려하여 추가로 이동시켜줌으로써 위 단점들을 해결할 수 있음
  • Mini batch traning할때 특히 Momentum을 사용하지 않으면 이전 batch에서 얻은 정보를 활용하지 못하고 각 미니 배치안에서만 보기 때문에, Mini batch traning에 특히 효과를 가

 

Nesterov accelerated gradient

  • 현재 주어진 parameter에서 gradient를 계산해서 momentum을 더했던 momentum방식과 조금 다르게 , momentum 값이 적용된(이동된) 지점에서의 gradient 값이 계산됨
  • 이동될 방향을 예측함으로써 불필요한 이동을 줄임

 

Adagrad

  • Adaptive Gradient 의 약어
  • Feature 마다 중요도가 다르기 때문에 동일한 학습률을 적용하는것은 비효율적 임으로, Feature별로 학습률을 다르게 적용
  • 학습이 많이된 Feature은 학습률을 감소시키고, 학습이 많이 되지 않은 Feature은 학습률을 증가시킴
  • 이때 Gt값은 기울기의 누적 크기인데, 이는 시간이 지나면 점점더 커지기 때문에 식에서 분모의 값이 점점 커져 0으로 수렴하여 결국 학습이 진행되지 않게 되는 단점이 있음

 

Adadelta

  • Adagrad가 가지고 있는 Gt가 계속 커지는 현상을 방지하기 위해 , Gt가 합이아닌 지수평균으로 대체함
  • 지수평균은가장 최근의 데이터에 더 많은 가중치를 주는 방식으로, 일반적인 이동 평균(Moving Average)에서는 모든 데이터가 동일한 가중치를 가지지만, 지수 평균에서는 각 데이터가 가지는 가중치가 지수적으로 감소하게됨
  • step size를 단순하게 η로 사용하는 대신 step size의 변화값의 제곱을 가지고 지수평균을 사용함
  • 고정된 크기의 '윈도우'를 두어 최근 단계들만 고려함, 이를 통해 학습의 초기 단계에서의 정보가 학습이 오래 진행된 후에도 영향을 미치는 것을 방지함
  • learning rate이 없음 > 우리가 바꿀 수 있는 요소가 적음 > 그래서 많이 활용되지 않음

 

RMSprop

  • Adadelta 와 동일하지만 stepsize를 넣음 hyperparameter 추가. 이로써 성능 향상

 

Adam

  • RMSprop과 Momentum 방법을 결합한 방법론
  • RMSprop처럼 각 매개변수에 대한 학습률을 조정하고, Momentum처럼 기울기의 지수평균을 사용하여 이동 방향을 결정함
  • 이 때문에 일반적으로 Adam이 가장 잘 작동하는 것으로 알려져 있음

 

Regularization

Early Stopping

  • Validation error 가 커지면 멈추기

 

Parameter Norm Penalty

  • Parameter가 너무 커지는것을 방지
  • 네트워크의 파라미터들을 제곱해서 다 더한 후 이를 줄임, (크기 자체를 줄임)
  • 함수가 급격하게 변하는것이 아닌 부드럽게 변하게 함 (부드러운 함수일수록 일반적인 성능이 더 높다는 가정)

 

Data Augmentation

  • 많은량의 데이터는 필연적
  • label이 변하지 않는 선에서 변화 (ex 강아지는 뒤집어도 강아지지만 숫자 6은 뒤집으면 9)

 

Noise Robustness

  • 노이즈를 집어넣게 되면 (input뿐 아니라 weight에 대해서도) 실험적으로 결과가 잘 나옴

 

Label Smoothing

  • 데이터 두개를 뽑아서 두개를 섞음
  • 분류문제를 풀때 dicision boundary를 찾을때 이를 부드럽게 만들어 주는 효과가 있음
  • Mixup, Cutout, CutMix등의 방법이있음

 

Dropout

  • Neural Network에서 weight를 무작위로 0으로 만듦
  • 각각의 뉴런들이 robust하게됨

 

Batch Normalization

  • 데이터를 평균과 표준편차로 정규화 하고, 배치마다 데이터의 평균과 표준편차가 달라지지 않도록 하는 데이터 전처리(평균을 빼주고 분산으로 나누어줌)

  • 어떤것을 기준으로 정규화를 하냐에 따라 여러가지 정규화가 있음

Network

AlexNet

  • ReLU(Rectified Linear Unit) 으로 activation함 
    • linerar model이 가지고 있는 좋은 성질들을 가지고있음
    • radient descent 로 optimize하기 편함
    • vanishing gradient problem 을 극복
  • 2개의 GPU를 적용
  • Overlapping pooling
  • Data augmentation
  • Dropout
  • 일반적으로 봤을때 기준이 되는 딥러닝의 특징들임

 

VGGNet

  • 3 x 3 convolution filter만 활용함
    • 원래 convolution filter의 크기가 커지면서 가지는 이점은 한 번 filter를 찍었을때 고려되는 input의 크기가 커진다는것.(이를 Receptive field(하나의 convolution feature map 값을 얻기위해  입력할 수 있는 special demension)라고 함)
    • 3 x 3두개를 사용하는 것과 , 5 x 5하나를 사용하는것이 Receptive field 관점에서 같음 하지만 params 수의 차이는 큼 (아래 그림 참고)
  • fully connected layers 에 1 x 1 convolution 사용
  • Dropout(p =0.5)
  • Layer 개수에 따라 VGG167, VGG19

 

 

GoogLeNet

 

  • 검은색 박스 친 부분이 여러번 반복됨, Network In Network(NIN)구조
  • Inception block 여러개로 퍼졌다가 하나로 합쳐지게 됨
    • 하나의 입력에 대해서 여러개의 receptive filters를 통해서 여러개의 결과를 합치는 효과
    • 1 x 1 convolution을 통해 parameters수를 줄일 수 있게
    • 왜 1 x 1 convolutions이 parameters수를 줄이는가 
      • spacial demension은 그대로고 channel방향으로 줄임

 

ResNet

  • 깊은 신경망 네트워크가 학습시키기가 굉장히 어려움
    • 많은 숫자의 파라미터들 때문에 과적합이 흔하게 발생 그래서 

  • 차이만 학습 

  • 그전엔 학습을 잘시켜도 더 깊게 쌓은것이 성능이 안 좋았는데 residual 이후엔 깊게 쌓아도 성능이 향상
  • > Deep 하게 쌓을 가능성을 엶

  • inception structure 와 같이 앞뒤로 1 x 1을 넣으면서 크기는 원하는대로 바꾸되 파라미터갯수만 줄여줌

 

 

DenseNet

 

  • ResNet처럼 더하지말고 concatenation 하기(채널에 더하기)
  • 그만큼 파라미터 수가 기하 급수적으로 커지기 때문에 
  • Dense BLock으로 parameter 늘리고 Transition Block((1 x 1 conv) 로 줄이고를 반복

 

 

 


Detection

Fully Convolutional Netwrok

  • input 의 spacial demension 에 대해 independent하다(인풋 이미지의 크기와 상관없이 네트워크가 돌아간다)
  • Output 이 커지게 되면 그것에 비례해서 뒷단의 spacial demension이 커지게 됨
    • 컨볼루션이 가지는 shared parameter성질 때문에 
  • FCN이 어떤 인풋사이즈가 들어오던 subsampling에 의해 아웃풋크기는 보통 줄어들음 > 업샘플링필요   
    • 컨볼루션의 역연산  > upsampling

 

 

R-CNN

  • 이미지에서 2천개 가량의 바운딩 박스를 뽑음 > 똑같은 크기로 맞춤(CNN) > 특징을 뽑음(AlexNet) > SVM로 분류 
  • 굉장히 brutal force스럽고 오래걸림

 

 

SPPNet

 

  • 이미지에서 뽑은 2000개의 box를 모두 CNN에 통과시켜야 하는것이 R-CNN의 가장 큰 문제점
  • 그래서 이미지 전체에 대해서 CNN을 해서 feature map을 만들고 뽑힌 바운딩 박스의 Tensor만 가져옴

 

Fast R-CNN

  • 뒷단을 제외하면 R-CNN과 동일
  • 원래 SVD로 하던 분류를 ROI feature vector 을 통해서 함 

 

Faster R-CNN

  • bounding box 를 뽑아내는것을 랜덤이 아니라 학습을 하자
  • >  Region Proposal Network 안에 물건이 있을지 없을지 판단(무슨 물체인진 뒷단에서 판단)

 

YOLO

  • 여러개의 바운딩 박스와 클래스 분류를 동시에 예측
  • 이미지를 S x S 그리드로 나눔 

 

 

Seqential Model
  • Sequential data를 처리하는 가장 큰 어려움은 얻고자 하는 하나의 정보를 얻음에 있어서, 그 정의상 입력의 차원을 알 수 가 없음(어디가 끝날 지 모름)
  • 이전 데이터가 있을 때 , 다음을 예측해 보자

 

 

Naive sequence model

  • 데이터를 추론할 때 이전에 있는 모든 데이터를 고려

 

Autoregressive model

 

  • timespan을 정해놓고 거기까지만 고려
    • Markov model(first-order autoregressive model)
      • 나의 현재는 직전의 과거에서만 영향을 받는다고 가정
      • joint distribution을 하기 굉장히 편함
      • 수능 점수가 전날공부에만 영향받는것이 아니듯이 오류가 존재함
    • Latent autoregressive model
      • 중간에 Hidden state가 과거의 정보를 요약
      • 그리고 다음 x는 그 과거의 요약으로부터만 영향을 받는다고 가정 

 


 

RNN(Recurrent Nerual Network) (valina)

  • Sequential data를 처리하기 위해서 이전의 결과가 다음 결과에 영향을 미칠 수 있어야하므로, 다음과같은 형태로 표현할 수 있음, 상태를 계산할 때 이전 상태를 사용
  • 가장 큰 단점은 먼 과거의 정보는 고려하기 힘듦  > Short-term dependencies

 

Long Short Term Memory

  • 입력값은 세개
    • input Xt
    • Previous cell state는 밖으로 나가지 않고, t초까지의 정보의 요약
    • Privious hidden state 이전의 출력
  • 세개의 Gate로 이루어짐
    • LSTM의 가장 큰 아이디어는 중간에 흘러가는 cell state(T초까지의 정보의 요약)
    • 어떤 정보가 중요한지 아닌지 판단해서 조작 후 넒겨줌 
      • 현재의 input Xt와 이전의 ouput h(t-1) > Ft 
      • 이전의 정보 중 어떤걸 버리고 살릴지 
      • I t :현재의 정보중 어떤걸 cell state에올릴지 말지 결정 예비군
      • 틸다 C t : 현재 정보와 I t 가지고 올릴것을 결정
      • ㄴㅇ

 

Gated Recurrent Unit

  • gate가 두개(Reset , Update)
  • hidden 이 곧 output 
  • 적은 parameter 로 동일한 output을 내면 generalization performance가 올라감\

 


Transformer

  • Transformer 은 RNN 처럼 재귀적인 모델이 아닌 attenion 구조를 활용했다
    •  n개의 단어가 어떻게 encoder에서 한번에 처리되는가?
    • decoder , encoder 사이에 어떤 정보를 주고받는지
    • decoder가 어떻게 generation하는지
    •  n개의 단어가 주어지고, n개의 z벡터를 찾는데 각각의  I번째 x벡터를 z백터로 바꿀 때 나머지 , n-1개의 x벡터를 같이 고려하는것이 self attention(feed forward에서는 없음)
  • 한개의 단어가 임베딩 됐을 때 마다 각각의 neural network를 통해 Queries , Keys , Values 3개의 벡터가 계산됨
    • 이를 가지고 score 벡터를 만듦 
    • score값은 그 단어의  queries와 다른 모든 n-1개의 keys값들의 내적합 > 두 벡터가 얼마나 allign이 잘 되어있는지 > 나머지 단어들과 얼마나 관계가 있는지 
    • 그 후 key벡터의 Dimension의 sqrt로 나눠준 후(normalization) softmax를 취한후 value를 weight sum 
  • 입력이 고정됐을 때 출력이 고정되는것이 아니라 , 입력이 고정되더라도 내 옆에 다른 입력들에 따라 출력이 달라지는 유동적인 모델