카테고리 없음
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는 그 과거의 요약으로부터만 영향을 받는다고 가정
- Markov model(first-order autoregressive model)
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
- 입력이 고정됐을 때 출력이 고정되는것이 아니라 , 입력이 고정되더라도 내 옆에 다른 입력들에 따라 출력이 달라지는 유동적인 모델