#10. CNN

2022. 11. 28. 12:51
Update Log
| 22.11.28 First Upload
DMLP 와 CNN의 비교
  • DMLP
    • 깊은 다층 퍼셉트론
    • 완전연결구조 : 높은 복잡도
      • 모든 node들이 연결, 각 연결에는 파라미터 존재
      • 학습이 매우느리다.
      • 과잉적합 가능성이 있다.
      • 어떤 node 가 중요한지 모른다.
    • 영상에서는 특정 pixel 근처에 어떤 정보가 있는지 중요하다.
  • CNN
    • 컨볼루션 연산을 이용한 부분연결 (희소 연결)
    • 복잡도가 매우 작다.
    • 격자 구조 (영상, 음성)을 갖는 데이터에 적합하다.
    • 수용장
      • 인간시각 (뉴런) 과 유사하다.
    • 가변크기의 입력 처리 가능.
컨볼루션 층
  • 컨볼루션 연산
    • 컨볼루션
      • 해당하는 요소끼리 곱하고, 결과를 모두 더하는 선형 연산
    • 패딩(Padding)
      • 가장자리에서 입력이 줄어드는 상황을 방지
      • 여상 상에서 size가 작아지는 상황을 방지하는 것이다.
    • 바이어스 추가
      • 원래의 input에는 없는 bias 를 추가
      • 학습 할때 값 처리에 중요한 역할을 한다.
      • 학습시에는 update 가 된다.
    • 가중치 공유 (묶인 가중치)
      • 모든 노드가 동일한 커널을 사용
      • 즉, 가중치를 공유하고 있고, 같은 weight 값을 사용한다고 생각하면 됨.
        • 이는 매개변수의 수를 줄인다.
        • 이는 모델의 복잡도를 줄인다.
    • 다중특징맵 추출
      • 커널을 여러개 사용한다.
      • 커널의 값에 따라서 커널이 추출하는 것이 달라짐
        • 수직방향edge 커널
        • 수평방향edge 커널
      • 하나의 커널만 사용하면, 너무 빈약한 특징이 추출됨
      • 커널을 여러개 사용하여서 다양한 특징을 뽑자
    • 특징학습 : 커널에 대한 매개변수를 학습
      • 커널
        • 데이터 주위에 있는 특징들을 뽑아내 고려하여 데이터의 특징을 추출하는 과정
        • 커널의 매개변수를 결정하느냐에 따라서 서로다른 특징들 추출
      • 커널은 사람이 설계하는 것이 아니라, 학습으로 알아냄
      • 이는 오류역전파로 매개변수 (컨볼루션에서는 커널) 를 학습
    • 컨볼루션 연산에 따른 CNN의 특성
      • 이동에 동변
        • 신호가 이동하면 이동정보가 그대로 특징맵에 반영
        • 영상인식에서 물체이동이나, 음성인식에서 발음 지연에 효과적으로 대처
        • 즉, 특징 자체는 여전히 남아있다는 뜻.
      • 병렬 분산구조
        • 병렬구조
          • 각 노드들은 독립적인 계산이 가능하다.
        • 분산구조
          • 분산적으로 특정 노드의 영향이 층이 깊어질수록 전체에 영향이 간다.
    • 큰 Stride 에 의한 Downsampling
      • 큰 Stride
        • 커널이 여러칸을 움직임
      • Down Sampling
        • Sampling을 통해서 처리하는 Network의 복잡도를 낮추고, 특정맵의 크기를 줄임
        • 즉 영상의 해상도를 낮춘다고 생각하면 됨.
      • Stride = K
        • K개마다 하나씩 샘플링하여 커널을 적용한다.
        • 2차원 영상의 Feature Map이 K^-2로 작아진다.
    • 텐서에 적용
      • 3차원 이상의 구조에도 적용이 가능하다.
    • 3차원 구조의 데이터에 적용
      • 채널이 K개인 3차원 격자 구조
      • 4차원 텐서로 표현하는 데이터
        • 컬러 동영상 (3x s x m x n) :RGB 영상에서 시간축 추가
        • MRI 뇌 영상 (l x s x m x n)
      • k x h x h x h 커널을 s x m  x n 공간을 이동하면서 적용
풀링층 (Polling Layer)
  • 풀링연산
    • 압축, 중요한 값들을 뽑아내는 과정.
    • 주어져 있는 여러개의 OutPut 들을 활용해서 하나의 값으로 만드는 과정
    • 종류
      • 최대풀링 : 연결되어 있는 것들 중에 최대값만 뽑아냄
      • 평균풀링
      • 가중치 평균풀링
    • 특성
      • Stride를 크게 하면 Downsampling 효과
      • 즉 얼마나 듬성듬성하게 Pulling을 진행하는지 (Ex. 1: 그대로 2: 개수의 1/2)
      • 상세 내용에서 요약통계를 추출한다. (최대값, 평균값)
      • 매개변수가 없다.
      • 특징맵의 수를 그대로 유지한다. (Kernel 의 개수에 의해서 바뀐다.)
        • 즉 Stride 를 크게하면 downsampling 할 수 있다는 뜻 -> 특징맵의 크기와 연관
      • 작은 이동에 둔감하다 -> 물체인식 / 영상검색 등에 효과적이다.
    • Conv. Layer 처럼 복잡한 연산을 하지 않는다.
    • 주어져있는 값들을 "요약" 해서 표현한다.
    • Conv. 계층의 Output의 noise를 완화한다.
    • 크기가 너무 크기 때문에 실제로 요약해서 중요하다고 생각되는 값을 뽑아내는 등 출력의 크기를 줄이는 효과.(다운샘플링)
전체구조
  • 빌딩블록
    • 빌딩블록
      • 컨볼루션 층 -> 활성함수 (ReLU) -> 풀링층
    • 다중  Kernel 을 사용하여서 다중특징맵을 추출
    • kernel의 개수에 비례해서 늘어난다.
    • kernel의 모양이 다 다르게 학습이 된다.
    • Data의 어떤 특성이 중요한지 표현하는 것 k개 -> 활성함수 통과 -> 풀링층으로 요약처리 -> 또다른 CNN 빌딩블록으로 반복하여 깊은 구조로
  • CNN
    • conv계층이나, 풀링 계층에 있는 Kernel이나 Stride를 조정해서 특징맵의 크기를 조절할 수 있다.
    • 가변적인 데이터를 다루기 용이하다.
    • DMLP는 특징벡터의 크기가 달라지면 연산이 불가능 하다.

 

딥러닝은 왜 강력한가?
  • 전체과정을 동시에 최적화
    • 통째학습
      • 분할, 특징추출, 분류과정을 신경망 내부에서 수행
    • CNN
      • 주어져있는 데이터를 어떻게 표현하면 원하는 예측결과를 낼 수 있는지를
      • 신경망 내부에서 수많은 연산을 통해서 학습하는 과정
    • 고전적인 방법
      • 분할, 특징추출, 분류를 따로 구현한 후 이어붙임.
      • 사람의 직관에 따르므로 인식 대상이 달라지면 새로 설계함.
    • 깊이의 중요성
      • 깊어질수록 신경망이 표현할 수 있는 용량이 증가함
    • 계층적 특징
      • Conv 계층에서 Layer 중간에 표현되는 특징값들
      • 깊은 신경망
        • 층의 역할이 잘 구분됨
      • 얕은 신경망
        • 하나 /두개의 은닉층이 여러 형태의 특징을 모두 담당 -> 성능 감소

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

#11. RNN  (0) 2022.11.28
#9. 딥러닝 주요 최적화 방법  (0) 2022.11.01
#8. Pytorch 실습  (0) 2022.11.01
#7. 딥러닝과 깊은 퍼셉트론  (0) 2022.11.01
#6. 다층 퍼셉트론 및 딥러닝 기초  (0) 2022.11.01

BELATED ARTICLES

more