딥러닝 개괄적 복습

eric9687·2022년 1월 13일
0

ML Problem

  1. 데이터 수집
  2. 함수 결정 : 모델,loss 결정.
  • Loss 함수를 쓰는 가정(backpropagation의 조건):
    - 학습 샘플들의 loss는 각 샘플들의 loss합이랑 같다.
    - 출력값과 정답에 대해서만 loss를 구한다.
  • loss함수의 결정:
    1. 가우시안 분포, continuous => MSE : gradient vanishing에 자유롭지 못함
    2. 베르누이 분포, discreet => crossentropy => 레이어가 늘어나면 결국 작아질수 있어완전히 자유롭지는 않음
  1. learning / training : iterative method를 통한 loss의 minimum
  2. predicting / Testing

Gradient Descent

: 가장 저점을 찾아 loss를 최소화하는것으로. Weight를 update(backprropagation)하는데에 쓰인다.
가로축은 gradient, 세로는 loss (2D)
실제로는 vector축도 추가되어 3D

MLP 와 CNN

: MLP는 이미지 행렬을 1차원 배열로 만들어 가중치 계산때 정보 손실이 큰 반면,
CNN은 2차원 배열에 대해 합성곱 연산과 풀링 연산으로 특징 추출을 함으로 정보 손실이 비교적 거으며 연산량도 MLP보다 적다.

CNN 의 과정

  1. 특징 추출
  2. topology변화에 영향을 받지 않도록 해주는 단계
  3. 분류기.

conv layer

  • filter: 큰것을 쓰는 것보단 작은 걸 여러 개: 가중치의 개수가 줄어들어 학습속도 향상. 비선형성 증가로 특성 표현이 증가.
  • Padding: zero paddin은 경계선의 특징도 충분히 추출할 수 있도록 한다.

Pooling = subsampling

: 이미지 데이터를 작은 사이즈의 이미지로 줄이는 과정, conv- activation의 output에적용.
Output의 모든 데이터가 필요하지 않기 때문에 사용. 파라미터를 줄기이기 때문에 네트워크의 표현력은 줄어들어 overfitting을 억제하고, 하드웨어의 리소스도 절약한다.
1. Max Pooling
2. Average Pooling
3. Stochastic Pooling

Batch normalization

: mini batch단위로 수행하는 normalization.
학습과정 자체를 전체적으로 안정화.
Gradient vanishing방지. 학습을 더 빠르게.
Local minimum에 빠지는 것을 감소.
각레이어나 actvation의 입력값의 분산이 달라지는 internal covariance shift를 방지.
평균과 분산을 이용한 정규화.
Dropout을 할 필요가 없어짐

Activation

: 출력값을 활성화할것인가를 결정하는 함수.
모델의 비선형성을 증가시켜 특징공간을 더 좋은 특징 공간으로 변환하여 선현분류가 더 쉬워짐.
활성화 함수가 결합하여 비선형성을 가지는 함성함수가 만들어짐.
“bias”는 활성화 함수의 “위치”를 바꿀 수 있다 활성화함수의 decision boundary의 위치를 결정.
비선형함수를 쓰는 이유: 선형함수를 사용할시에는 층을 깊게 하는 이유가 없기 때문에
1. Sigmoid, Tanh
: 0부터 1사이의 값만 가지므로, x가 어무 크거나 작으면 gradient vanishing/ exploding발생.
2. ReLU
: 0이상에서 다양한 값들을 가지게 때문에 sigmoid의 단점을 보완하는 역함을 한다. 또 exp연산이 없기 때문에 연산량도 줄어들음. 음수일때 0이되는 것을 방지하기 위해서 leaky-RELU등장. 하지만 변화는 미미.

FC layer

: 결과를 라벨로 분류하는데 사용.

  • Dropout: hidden layer가 많아지면 학습능력이 좋아지지만 오버피팅 위험이 있다. 따라서 mini-batch구간동안 일부 뉴런을 생략.
  • Softmax:
  • sigmoid는 해당 뉴런으로 들어오는 입력들과 바이어스에 의해 출력이 결정된다
  • softmax는 다른 뉴런들의 출력값과의 상대적 비교를 통해 최종 결과값이 결정된다.
    Softmax의 모든 출력 값들의 합 = 1

Overfitting을 줄이기위한 방법

  1. 더 많은 데이터, data augmentation
  2. regularization
    : cost함수에 regularization식을 추가 (lambda상수에 각 가중치들의 제곱의 합을 곱하여 더함). weight가 낮을수록 overfitting확률이 낮아져 굽은 곡선이 펴지는 효과!
  3. dropout
  4. early stopping
  5. weight decay(weight를 0으로)
  6. BN
    : lr증가, dropout 불필요, l2 weight decay 감소, lr decay감소, local response BN 제거

optimizer

  • SGD: backpropagation을 이용해 갱신시킬 파라미터들의 현 기울기 값인 그래디언트를 구하고 일정한 학습률을 곱하여 갱신.목적함수의 gradient가 하나의 데이터에 의해 결정되다보니 다소 들쑥날쑥한 갱신. 분산이 크면 local minimum을 방지할 수 있지만 수렴을 방해할때도 있다
  • Adam: 파라미터마다 다른 크기의 업데이트 수행.

평가 지표

분류 T/F: 예측 성/패, P/N: 예측결과 음/양

Precision = TP / (TP + FP)
Recall = TP / (TP + FN)
ACC = (TP + TN)/ (TP + TN +FP + FN)
F1-Score = Precision과 Recall의 조화 평균 = 2/(1/precision + 1/ recall)
: f1-score가 높은 것이 무조건 좋다라고 평가할 수 없다.
예를 들어, 암판정이나 경비시스템 같은 경우는 recall이 높을수록 좋다
F1-score는 큰값에 패널티 작은 값위주이기 때문에 imbalanced data에 대해서 평가하기 좋음

객체 검출

IOU: 교집합/ 합집합
mAP: IoU에 따른 AP

semantic segmentation

mIoU: IoU의 평균

Autoencoder,AE (Nonlinearity)

: 차원 축소 등을 위해 표현학습 또는 특징학습을 비지도 학습의 형태로 학습하는 신경망

  • Decoder: 학습을 위해서
  • 표현학습/ 특징학습: feature detection이나 classification을 위한 특징점을 자동으로 발견하는 시스템적 기법의 총체를 일컫는다.
  • 차원의 저주: 고차원 공간의 데이터를 분석하거나 측정할때 저차원 공간에서는 나타지 않았던 여러문제들이 발생하는것으로, 머신러닝에서는 일반적으로 차원이 증가하는 경우 기하급수적인 데이터가 요구되는 현상을 말한다. 고차원일수록 특징을 찾기가 힘듬.
  • 고차원의 데이터가 저차원의 manifold에 표현될 수 있다라는 가정하에. 차원축소를 한다.

Manifold Learning

data공간에 있는 데이터들이 어떤 sub-space에있다고 가정, 그 spece를 manifold라고 정의.
(이점)
1. data compression
2. data visualization
3. curse of dimensionality
: 데이터의 차원이 증가할수록 해당 공간의 크기(부피가) 기하급수적으로 증가하기 때문에 동일한 개수의 데이터의 밀도는 차우너이 증가할수록 급속도 희박해진다. 따라서, 차원이 증가할수록 데이터의 분포 분석 또는 모델 추정에 필요한 샘플 데이터의 개수가 기하급수적으로 증가하게 된다.
: 매니폴드 학습결과 평가를 위해 매니폴드 좌표들이 조금씩 변할 때 원 데이터도 유의미하게 조금씩 변함(회전,크기…)을 보인다. 또 학습이 잘 됐으면 visualization을 했을 때 이상적임.
4. discovering most important feature

LeNet

배경: 사람이 설계한 feature extrxctor: 관련 정보만 입력해야함, fully-conneceted multi-layer: 가중치 너무 많음. 저장공간 많이 필요. 공간적 상관정보를 담지 못함.

  • Receptive field를 local로 제한 local feature 추출.
  • 가중치 공유: weight 와 bias 공유
  • Pooling(average)

AlexNet

  • 병렬적 구조(+LeNet)
  • ReLU: 입력에 정규화 딱히..
  • Maxpooling
  • Local response normalization: ReLU의 결과에 대해서
  • Data augmentation
  • Dropout

GoogLeNet

  • Deeper: 기존은 10층미만, 22층, 하지만 연산량은 AlexNet보다 적어
  • 1*1 conv : 차원 감소. 비슷한 성질들으 묶고, feature map의 숫자를 줄여 연산량 감소
  • Inception: sparse한 구조를 dense하게 근사화.
    - 1*1 3*3,5*5 conv를 가각 연산 + pooling+ padding(h,w가 같아야해서)
    - Demension reduction
    - 서로 다른 규모에서의 다양한 특징을 추출.
  • Auxiliary classifier: 층이 깊어져 gradient vanishing이 생길 수 있는데, 중간계층에 추가

VGGNet

  • 단점: 파라미터의 개수가 너무 많음(fc가 세개)/ googlenet은 fc가 없음
  • Local response normalization 효과 없어 없음
  • 3*3 filter

ResNet

  • 작은 필터를 쓰면, 큰 필터를 쓸때보다 가중치의 개수가 줄어들고, 가중치 개수가 작으면 학습속도도 빨라진다. 동시에 층의 개수가 늘어나면서 비선형성이 증가되어 특성이 유용해진다.
  • 이 전의 plain network(alexnet, resnet)은 일반적인 CNN, resnet은 skip connection(=shortcut connection)이 있음. 층이 깊어질수록 기울기소실(gradient vanishing)과 폭발의 문제가 발생합니다.
  • 기울기를 구하기위해서 가중치에 해당하는 손실함수의 미분을 backpropagation으로 구합니다. 이과정에서 활성함수의 편미분을 구하고 그값을 곱해주는데 이때 뒤로 갈수록 활성함수의 미분값이 너무 작아지거나 너무 커지는 것을 기울기 소실/ 폭발이라고합니다.
  • skip connection: 기울기 소실/ 폭발의 문제를 해결하기위해, 입력 x를 몇 layer이루의 출력값에 더해주는 방법. => 기울기가 소실되어 정확도가 감소하는 문제를 방지 : residual block
  • 신경망이 깊어지면, 학습시간은 늘어남 => bottleneck design, 1*1conv를 전후로 추가하며 성능은 유지하고 파라미터 수를 감소하는 역할을 한다.

RCNN

  • 2000개의 후보 영역에 대해 log loss방식으로 fine-tuning
  • 학습시간 너무 길어, 대용량 저장공간

Fast-RCNN

  • ROI pooling layer를 fixed length feature 벡터 추출
  • Fully connected layer추가
  • 원영상 그대로 사용. Hierachical sampling방식: 무작위로 ROI를 선택하는 것이 아닌 작은 수의 학습영상으로부터 128개의 ROI를 정하도록.

Region Proposal Network, RPN

Object가 있을만한 영역에 대한 proposal을 구하고 그결과를 ROI pooling에 보낸다.

  • RCNN,Fast-RCNN에서 사용한 region proposal.
  • Bottom-up segmentation을 수행하고 이것들을 다양한 segmentation상에서 병합하여 그 영역을 box로 구분
    1. sub-segmentation
    1. 작은 영역을 큰영역으로 통합
    1. 통합된 영역들을 바탕으로 후보 영역을 만든다

Segmentation

  • 픽셀 기반: thresholding에 기반한 방식으로 histogram을 이용해서 픽섹 분포 확인 후 저적절한 threshold를 설정하고, 픽셀단위 연산을 통해 픽셀별로 나누는 방식. 이진화에 많이 씀. 또는 otsu
    - Threshold는 global과 local로 적용하는 영역에 따로 구분 가능. 픽셀값 분퐝의 두 peak사이의 값.
  • Edge기반: edge를 추출하여 non-maximum supression방시으로 의미 있는 영역 구별
  • 영역 기반: 위의 두 방식은 쉽지않고, 잡음이 있으며 더 어려움. 몇 개의 픽셀에서 넓혀가는 region growing방식등이 있음.
    - Region growing: 단순하지만, local method. 잡음에 민감
    - Region merging: 비슷한 속성을 가지는 영역들을 결합하여 같은 labeling. 심하게 나뉜 영역에서 시작. 처리되는 순서에 따라 결과가 다를 수 있음.
    - Region Splitting: merging과 반대. 쪼개는 원리 때문에 효과 별로.

FCN,Fully convolutional Network

: 검증된 좋은 네트워크(AlexNet, VGG, GoogLeNet,…)등의 fully connected layer를 1*1conv으로 본다면, 그 layer에서 위치정보가 사라진다고 간주

upsampling

: conv+pooling으로 인한 줄어든 feature map을 다시 키움 => bilinear interpolation으로
Skip layer가 있어야 위치정보를 더 잘 알 수 있음(segmentation의 결과가 더 정교해짐)

Deconvolutional Network

FCN은 detail에 취약한 점이 있음(미리 정한 rececptive field를 사용하기 때문에 너무 작은 object는 무시 또는 오인)
Unpooling + Deconvolution: 더 정교
연산량 많음.. => overfitting? => 2단계 학습법, 각 conv와 deconv layer에 BN추가.
2단계 학습법: 쉬운 이미지 -> 위치와 경우가 더 당야한 이미지 순으로 학습

Dilated Convolution

:해상도의 손실없이 receptive field의 크기를 확장할 수 있음.(=astrous convolution)

  • 많은 파라미터 개수 없이도 receptive field확장 가능(연산량)
  • FCN보다 간단. FCN은 skip layer도 있고 연산량도 늘고~
  • 다중 scale의 context를 잘 추출

Recurrent Neural Network,RNN

: 순환. 과거의 상태로 맥락 파악. 시간에 대한 의존성이 있는 문제 해결에 적합

  • Input : vector로 표현된 시퀀스 데이터 (text인 경우, word embedding)
  • State : vector의 순서에따른 순환신경망의 상태
  • update : 가중치 tuning
    문제점: 너무 깊어지는 신경망 => gradient vanishing

LSTM

:RNN의 장기 메모리 문제 해결하기 위한 구조.
장기간 메모리 역할의 Cell state와 연결강도 조절을 위한 gate(forget, input, output) 정보 존재.

GAN

  • 초기 GAN은 학습이 제대로 되지 않거나 다양한 분포에서 특정 분포만 갖는 문제가 존재
  • 생성모델과 판별모델의 경쟁적학습
    1. G 고정 D 학습
    1. D 고정 G 학습

DCGAN

  • max-pooling을 없애고 strided convolution이나 franctional-strided convolution을 사용하여 feature map의 크기 조절
  • BN 적용
  • Fully connected hidden layer제거
  • G 활성함수: Tanh/ 나머지는 ReLU
  • D 활성함수: LeakyReLU

cGAN

: 특정 컨디션을 가해 이미지를 생성한다

Pix2Pix

  • paired data
  • reconstruction loss + adversarial loss
  • UNet기반의 G: detail이 blur해지는 문제를 피하기위해서 skip connection
  • PatchGAN구조의 D: patch 단위로 진짜/가짜 판별. 픽셀별의 연관성은 거리와 살관 잇음
profile
그러나 먼저 된 자로서 나중되고 나중 된 자로서 먼저될 자가 많으니라(마:19:30)

0개의 댓글