심층학습

 

배경

 

  • 1980년대 깊은 신경망 아이디어 등장
  • 한계
    • 경사 소멸 문제 (gradient vanishing)
    • 작은 훈련집합(어려운 데이터 수집)
    • 과다한 연산과 시간 소요 (낮은 연산의 범용 컴퓨터, 값비싼 슈퍼컴퓨터) (심층학습을 받쳐주지 못하는 하드웨어)
  • 성공배경
    • 혁신적 알고리즘 등장
      • 합성곱 신경망 (Convolutional neural networks, CNN) 구조
      • 경사 소멸 문제 해결을 위한 ReLU 활성함수
      • 과잉적합을 방지하는데 효과적인 다양한 규제 기법
      • 층별 예비학습(pretraining) 기법 개발
    • 값싼 GPU 등장 (하드웨어 보안)
    • 학습 데이터 양과 질 향상

고전적 다층 퍼셉트론과의 비교

 

  • 전통적 다층 퍼셉트론
    • 은닉층은 특징 추출기
    • 얕은 구조 (제한적 특징 추출)이므로 가공하지 않은 획득한 원래 패턴을 그대로 입력하면 낮은 성능
    • 따라서 사람이 수작업 특징을 선택(feature selection)하거나 추출(feature extraction)하여 신경망에 입력
    •                               ↓학습집합
      패턴 -> 특징 추출 -> 분류 (얕은 신경망) -> 부류
  • 심층학습
    • 학습에 의해 자동적으로 데이터로부터 특징(data-driven features) 추출 <- 표현 학습representation learning
    • 특징 벡터를 인공 신경망의 입력으로 줌 <- 종단간 학습(end-to-end learning)
    •                  ↓학습집합
      패턴 -> 특징 + 분류 (얕은 신경망) -> 부류
    • 깊은 신경망의 구조와 동작은 Multi Layer Perceptron과 같다.

깊은 신경망 표현 학습(representation learning / 특징 학습 feature learning)

 

낮은 단계 은닉층은 선이나 모서리와 같은 간단한(저급) 특징 추출

높은 단계 은닉층은 추상적 형태(abstractive representation)의 복잡한(고급) 특징 추출

 


역사적 고찰

 

  •               퍼셉트론 -> 다층 퍼셉트론 -> 깊은 다층 퍼셉트론
    활성함수 : 계단 함수    시그모이드 함수   ReLU와 변형들
    목적함수 : MSE                MSE             교차 엔트로피 또는 로그우도
  • 합성곱 신경망(CNN)의 부상 -> 완전 연결을 부분 연결로 바꾸자! (깊은 다층 퍼셉트론의 파생형이라 할 수 있음)

 


왜 심층학습은 강력한가?

 

  • 전체 깊은 신경망을 동시에 최적화 (종단간 학습 end-to-end)
  • 깊이의 중요성
    • ex) 점선이 20개 노드를 가진 은닉층 하나 짜리 신경망이라고 하면
      실선은 각각 10개 노드를 가진 은닉층 두 개 신경망이라고 할 수 있다. 즉, 더 정교한 분할이 가능해진다.
  • 계층적 특징(hierarchical features)
    • 깊은 신경망에서는 층의 역할이 잘 구분됨
    • 그러나 얕은 신경망은 하나 또는 두 개의 은닉층이 여러 형태의 특징을 모두 담당
      (깊은 신경망은 은닉층 수가 많은 것. 얕고 넓은 신경망은 1~2개의 은닉층 내부에 굉장히 많은 노드가 있는 것)

컨볼루션 (합성곱) 신경망 Convolutional neural network, CNN

 

  • 구조
    • 컨볼루션층 (CONV)
      • 선형함수인 컨볼루션과 비선형 함수인 활성함수 조합
      • 학습에 의해 결정된 복수의 커널들 (혹은 필터들)에 대응되는 특징들 추출
        • 각 층의 입출력 특징 형상이 유지된다.(특징맵)
        • 영상의 공간 정보를 유지하며 공간적으로 인접한 정보의 특징을 효과적으로 인식
        • 각 커널(필터)은 파라미터를 공유함으로써 완전 연결 신경망 대비 학습 파라미터가 매우 적음
    • 풀링층 (POOL)
      • 컨볼루션의 얻어진 특징을 통계적으로 압축 (최근에는 쓰지 않음)
      • 특징을 요약하고 강화함
    • (CONV - RELU) - (CONV - RELU) - POOL - .... - FC
  • 활용 분야
    • 분류 (classification)
    • 검색 (retrieval)
      • 비슷한 사진 출력을 보여줌.
      • ex) 구글 검색엔진
    • 검출 (detection)
    • 분할 (segmentation)
      • 검출의 상위호환. 클래스를 픽셀 단위로 구분해준다.
  • DMLP(Deep Multi Layer Perceptron)와 CNN 비교
    • DMLP
      • 완전 연결(fully connection) 구조. 높은 복잡도
      • 학습이 매우 느리고 과잉적합 우려
    • CNN
      • 컨볼루션 연산을 이용한 부분연결 (희소 연결) 구조로 복잡도 크게 낮춤
        • 이미지이기 때문에 부분연결을 통해서도 성능이 좋을 수 있다.
        • 이미지에는 지역성이 있기 때문에. 가까운 픽셀끼리가 먼 픽셀끼리보다 특징적으로 유사할 것.
        • 지역성을 중첩해서 전체의 shape을 만들어 나간다.
      • 컨볼루션 연산은 좋은 특징 추출
      • 특징
        • 격자(grid) 구조 (영상, 음성 등)를 갖는 데이터에 적합
        • 수용장(receptive field)은 인간시각과 유사
        • 가변 크기 입력 처리 가능
          • 컨볼루션층에서 보폭을 조정하거나, 풀링층에서 커널이나 보폭을 조정해 특징 맵 크기 조절
      • 컨볼루션 신경망 예제 https://transcranial.github.io/keras-js/#/
 

Keras.js - Run Keras models in the browser

 

transcranial.github.io


컨볼루션층

 

컨볼루션은 해당하는 요소끼리 곱하고 결과를 모두 더하는 선형 연산이다.

연산은 다음과 같다.

위는 1차원 입력, 아래는 2차원 입력 식

u는 커널(kernel/필터 filter), z는 입력, s는 출력 (특징 맵 feature map)

 

컨볼루션 연산 그림 예)

 

https://leonardoaraujosantos.gitbook.io/artificial-inteligence/machine_learning/deep_learning/convolution

 

덧대기(Padding)

 

가장자리에 영상의 크기가 줄어드는 효과 방지 (각 층 입출력의 특징형상 유지)

 

편향(bias) 추가

 

커널에 편향 추가

 

가중치 공유(weight sharing / parameter sharing)(묶인 가중치)

 

모든 노드가 동일 커널 사용

즉, 가중치를 공유하므로 매개변수는 3개에 불과하다.

∴ 모델 복잡도가 크게 낮아진다.

 

다중 특징 맵 추출

 

커널의 값에 따라 커널이 추출하는 특징은 달라진다.

∵ 하나의 커널만 사용하면 너무 빈약한 특징이 추출

그래서 실제로는 수십~수백 개의 커널을 사용한다.

 

특징 학습

 

커널을 사람이 설계하지 않고, 학습으로 찾음

DMLP와 마찬가지로 오류 역전파로 커널 학습

 

병렬분산 구조

 

각 노드는 독립적으로 계산 가능하므로 병렬 구조

+ 노드는 깊은 층을 거치며 전체에 영향을 미치므로 분산 구조

 

큰 보폭(stride)에 의한 다운샘플링(down-sampling)

 

일반적으로 보폭이 k면, k개마다 하나씩 샘플링해 커널 적용

-> 2차원 영상의 경우 특징 맵이 1/k^2으로 작아짐

텐서 적용

 

3차원 이상 구조에도 적용 가능

이 때, 입력 차원이 3이면 (ex)RGB) 커널도 그에 맞춰서 3차원으로 결정이 된다.


풀링층

 

  • 풀링 연산 종류 (풀링 연산은 특징은 유지하되, 사이즈를 줄인다.) 
    • 최대 풀링 max pooling
      • 특징 값 중 가장 큰 값 추출
      • https://paperswithcode.com/method/max-pooling
    • 평균 풀링
      • 특징 값 평균을 내 추출
    • 가중치 평균 풀링
  • 풀링 연산 특성
    • 풀링은 상세 내용 요약 혹은 평균 등 통계적 대표성 추출
    • 매개변수가 없음
    • 특징 맵 수 그대로 유지 (깊이는 유지(차원). 가로 세로는 변화)
    • 연산 효율화 (연산 횟수, 연결 가중치 개수 줄임)
    • 작은 변화에 둔감 -> 물체 인식이나 영상 검색에 효과적

CNN의 전체 구조

 

  • 빌딩 블록(building block)
    • CNN은 빌딩 블록을 이어 붙여 깊은 구조로 확장
    • 전형적 빌딩블록 : CONV -> ReLU(활성함수) -> POOL
    • 다중 커널을 사용해 다중 특징 맵 추출
  • 컨볼루션 층 출력 크기와 매개변수 수
    • 입력 : W1*H1*D1 (width, height, depth)
    • K개 F*F 커널, 보폭 S, 덧대기 P
      • 출력 크기 : W2*H2*D2
                       W2 = (W1-F+2P)/S+1
                       H2 = (H1-F+2P)/S+1
                       D2 = K
      • 매개변수 수 :
                       커널마다 (F*F*D1)개 가중치와 1개 바이어스를 가짐.
                       따라서, 전체 매개변수 수는 (F*F*D1)K + K
      • 일반적으로 F=2, S=2 혹은 F=3, S=1 사용
    • 위 식을 실제 예제로 보면
      입력 크기 : 32*32*3
      10개의 5*5 커널 보폭 1, 덧대기 2
      • 출력 크기 : (32-5+2*2)/1+1=32 -> 32*32*10
        층의 매개변수 개수 : 5*5*3+1 = 76 (+1은 편향 추가) -> 76*10 = 760

 

CNN 시각화 예제 https://poloclub.github.io/cnn-explainer/

'AI > KDT 인공지능' 카테고리의 다른 글

[07/19] 12주차 강의 개요  (0) 2021.07.19
[06/28] 심층학습 기초2  (0) 2021.06.28
[06/23] 다층 퍼셉트론  (0) 2021.06.23
[06/22] 라이브 세션  (0) 2021.06.22
[06/21] 신경망의 기초  (0) 2021.06.21

+ Recent posts