업데이트:

태그: , ,

카테고리:

Deep Learning

Perceptron recap

스크린샷 2023-04-01 13 36 55

  • 퍼셉트론에서 여러 층의 신경망을 N층 신경망이라고하는데, 각 신경세포는 입력값에 대해 가중치를 가해 비선형적인 함수를 거쳐 출력을 낸다.
  • 각 출력은 다음 층의 신경세포의 입력으로 사용되며 가중합을통해 비선형함수를 통해 출력이 반복된다.



why deep learning?

  • 여러 층을 쌓는다는게 무슨 의미일까?
    • 신경망은 층을 여러개 쌓으면 학습이 잘 안되어 hidden layer를 1개만 사용하는 2층신경망을 사용했었다.


  • 그러다보니, 입력으로 사용하는 값을 그대로 사용하지말고 입력을 출력으로 변환하는 그 비선형함수를 어떻게 잘 설계할 수 있을까?가 중요했다.
  • 어떻게 주어진 문제를 잘 해결하는 특징을 잘 선택할 수 있을까? 가 주요한 문제였다.
  • 어떻게 feature extractor를 잘 설계할 수 있을까가 문제였다.


스크린샷 2023-04-01 13 40 51

  • 답은 모르지만, 복잡한 함수를 x로부터 찾는게 아닌, sin, log, cos 등 기본 함수의 조합을 통해 복잡한 함수를 찾는 것이 효율적이라고 생각했었다.

    • 하지만, 이 방식은 만들고자하는 함수가 기본함수로만 이뤄지지 않을수도 있다는 문제점이 있었다.


스크린샷 2023-04-01 13 41 20

  • 그래서 이 함수의 비선형적인 특징을 학습에서 찾아내보자가 핵심이 되었다.
  • 간단한 함수를 여러개 중첩해서 이 비선형 함수를 찾아낼 수 있을 거라 생각했었다.



Representation Learning(특징표현학습)

  • 딥러닝의 핵심
    • input에서 output을 표현하기 위한 수많은 선형-비선형 변환의 중첩


  • 함수를 신경세포에 대입해보면, 신경망과 비슷한 느낌.


  • 층이 진행됨에 따라 디테일한 특징이 표현된다.
    • 식별하는 특징을 강조
    • 분류문제에 관계없는 차이는 약화



Overview

Deep learning

스크린샷 2023-04-01 14 37 01

  • 뉴런을 학습시키는게 아니라, input->output 함수를 이루는 기본함수들을 학습시키자! 가 기본
  • 이 딥러닝 모델에는 크게 3가지 모델이 있다.

CNN

스크린샷 2023-04-01 14 37 43

  • Convolution Neural network
  • 영상처리에 사용
  • SGD, ReLU, Dropout, Inception, ResNet등 변형이 생겨남

GAN

스크린샷 2023-04-01 14 37 52

  • Generative Adversrial Network
  • 중간 특징을 생성해나가면서 해결한다.
  • 중간의 특징이 특별한 의미를 가진다.

RNN

스크린샷 2023-04-01 14 37 58

  • Recurrent Neural Network
  • 현재 input을 이전 input을 고려한 self loop라고 하는 가중치로 표현한다.
  • LSTM, GRU, Encoder-decoder, Attention등 변형모델 생겨남



Convolutional Neural Networks(CNN)

특징

스크린샷 2023-04-01 14 47 51

  1. 특별한 방법으로 연결하는 정방향 신경망
  2. input에 convolution(합성곱) 적용
  3. 비선형출력(non-linear activation)
  4. 특징을 줄이는 pooling(subsampling)
    • 불필요정보 줄이면서 가중 수 감소


1.Convolution(합성곱)

  • 각 층은 이전 층의 일정 부분을 통합한다.
    • 큰 데이터를 압축해 목적에 맞는 특징으로 변환한다. -> multiple filter를 통해 특징을 추출한다.
    • local receptive field를 통해 지역적인 부분의 데이터 처리 -> 근처 화소와의 관계에 대한 특징을 잘 표현한다.


스크린샷 2023-04-01 14 56 11

  • MLP보다 적은 수의 가중치 수를 가진다. -> 위에서 봤듯 local receptive field를 사용하기 때문. -> 필터간 가중치를 공유하고있다.


2.Non-linearity

  • Non-linear activation

sigmoid function

스크린샷 2023-04-01 15 01 01 스크린샷 2023-04-01 15 01 29

Tanh(hyperbolic tangent)

스크린샷 2023-04-01 15 01 53

!!ReLU(Rectified Linear)!!

  • max(0,x) 스크린샷 2023-04-01 15 02 07

  • backpropagation 과정을 간단하게 만들어 처리 속도를 높임.
  • feature를 분포시켜 더 잘 분류되게함
  • activation을 다음 층에 전달해 이전 층의 특징이 점점 희석되는 gradient vanishing문제 해결


3.Pooling

  • 최근에 피함
  • 데이터를 압축하고 유연하게한다.
  • 디테일한 정보를 삭제.
  • 이 삭제 방법은 receptive field의 값을 선택하는 방법에 따라 나뉜다.


  • 사진을 pooling한다고 생각하자.
  • 224짜리를 112로 바꿔야한다.

스크린샷 2023-04-01 15 09 39


  • 224짜리를 112로 바꿔야한다.

스크린샷 2023-04-01 15 10 28

1. Max-pooling

  • receptive field에서 max값으로 pooling을 하면 Max-pooling,

2. Average-pooling

  • average값으로 pooling하면 Average-pooling이라고 한다.

Summary

  • CNN

    1. 학습데이터로부터 자동으로 특징을 추출하고 학습한다.
    2. 데이터로부터 분류함수를 매핑한다.
  • ConvNet = 몇개의 Convolution(합성곱), Pooling(풀링) 레이어 + 완전 연결 레이어
  • Activation Function(non-linear) = tanh, sigmoid, ReLU
  • ReLU가 가장 많이 사용됨


스크린샷 2023-04-01 15 15 22



CNN guidelines

1. using ReLU

스크린샷 2023-04-01 15 36 47

  • CNN에서 사용되는 비선형 activation 함수
  • 연산 속도가 빠르다.
  • 생물학적으로도 이렇게 작동한다는 연구
  • sigmoid함수가 s자 모양이라 무한한 z에 대해서도 비슷한 a값을 가지는 문제가 있는데, 이를 해결.
  • 미분시의 gradient vanishing 문제를 해결한다.


  • Vanishing Gradient Problem

스크린샷 2023-04-01 15 39 05

  • sigmoid 함수 사용하면 발생하는 문제
  • input value가 커질수록 output의 기울기가 작아지는 문제.
  • 학습이 매우 느리다.
  • 랜덤하다.



2. Stochastic Gradient Descent

  • Batch Gradient Descent(BGD)
    • 모든 학습 데이터를 사용해 가중치를 수정해나간다.
    • 많은 연산을 요구로한다.


  • Stochastic Gradient Descent(SGD)

    • 학습 데이터의 일부분(mini batch)을 가지고 가중치를 수정해나간다.
    • 연산이 적다.
    • 반복이 진행됨에따라 BGD와 거의 비슷한 결과를 가진다.
    • BGD보다 나은 성능을 기대할 수 있다.
  • 성능지표

스크린샷 2023-04-01 15 43 57



3. Dropout

스크린샷 2023-04-01 15 48 54

  • 각 학습마다 connection을 임의로 삭제한다.
  • drop의 비율을 hyper-parameter로 사용자가 임의로 정한 후 사용한다.
    • dropout은 주어진 학습데이터를 기억하지 않기때문에 과적합(overfitting) 문제를 방지한다.



4. Optimizers

Gradient descent

스크린샷 2023-04-01 17 39 48

  • t + 1시점의 기울기는 t 시점의 기울기에서 함수의 결과를 보정하게된다.
  • 이때 함수의 결과에 학습률 η를 곱해 보정하는데, 고정된 학습률은 학습의 저하를 불러일으킨다.
  • 아래는 모두 이 학습률을 변동성있게 가져가는 방법에 대한 것이다.


Momentum

스크린샷 2023-04-01 17 47 35

  • 이전 gradient를 계산에 포함한다.
  • 국소최소점 빠지는 것을 방지한다.


AdaGrad

스크린샷 2023-04-01 17 58 14

  • 업데이트 빈도를 반영해 자주 업데이트될수록 학습률을 작게한다.


RMSProp

스크린샷 2023-04-01 17 58 55

  • AdaGrad 학습률이 점점 작아지는 문제가 있는데, 일부만 사용하는 방법
  • 과거 정보를 일정부분만 반영한다.


ADAM

스크린샷 2023-04-01 18 00 11

  • 가장 보편적으로 사용하는 방법이다.
  • 가장 최근에 발표되었다.
  • RMSProp과 Momentum을 결합한다.
  • Gradient와 Gradient제곱을 모두 사용한다.
  • Decaying rate도 두 곳에 모두 사용한다.



5. Batch Normalization

  • 각 층에서 mini batch단위로 평균 분산으로 보정하는 정규화 과정을 한다.
  • 학습데이터와 테스트데이터의 분포가 다를 수 있기 때문에 이를 보정하기 위한 것.

스크린샷 2023-04-01 18 46 52

  • Internal covariance shift problem
    • activation layer간 분포의 차이
    • 학습 및 테스트 데이터가 다른 분포를 가질 수 있다.
    • 작은 학습률을 요구로한다.


  • Batch normalization
    • 각 레이어의 각 Minibatch에서 input 특징의 분산을 정규화한다.
    • scaleshift를 학습한다.
    • 더 높은 학습률이 가능하다.

스크린샷 2023-04-01 18 49 43



6. Ensemble(추가적)

스크린샷 2023-04-01 18 53 46

  • 정의

    • 여러 모델을 합쳐서 만드는 모델
  • 사용

    • Bagging: 분산을 줄이기 위해 사용
    • Boosting: 편향을 줄이기 위한 방법
    • Stacking: 예측률을 개선
  • CNN에 Ensemble을 사용하면 분류 성능을 높일 수 있다.ex)AlexNet



7. Model structure

  • CNN의 성능을 개선

    • 신경망의 depth, width를 높인다.
  • 문제

    1. Overfitting: 파라미터(가중치)의 개수가 빠르게 증가한다.
    2. Computation bottleneck: 연산을 많이 필요로된다.
  • 해결

    1. Uniform structure : 병렬 컴퓨팅 최적화
    2. Sparse structure: 대칭성을 없애고, 학습을 개선한다.



Depth of CNN Models

스크린샷 2023-04-01 18 58 34

  1. AlexNet: 8 layer
  2. GoogleNet: 22 layer
  3. ResNet, 152 layer



댓글남기기