티스토리 뷰

keras.io/ko/getting-started/sequential-model-guide/

 

201022, 23 CNN

 

  • Filter는 '지정된 간격'을 이동해가면서 이미지 데이터와 Convolution 연산 수행
    • 최종결과 => Feature Map
  • Stride - 기본값 1
    • 변경 가능
    • 특별한 경우 빼고는 그닥 의미 x

CNN (합성곱 신경망)

  • Convolution Neural Network
  • 지금까지 사용한 Deep Learning 구조는 DNN (Deep Neural Network)
  • CNN은 이미지 처리용으로 주로 Computer Vision쪽 연구나 응용에서 사용한다.
    • Computer Vision : 시각적인 세계를 해석하고 이해하도록 컴퓨터를 학습시키는 AI 분야
  • DNN은 FC layer로 구성되어 있다
    • 입력 데이터가 1차원으로 사용되었다. 
    • 공간 정보가 삭제되었다.
    • ex) MNIST 이미지 28 X 28 (2차원) => 784 (1차원)
  • CNN은 이미지의 특징/ pattern 특징을 이용해서 학습하고 예측한다.
    • 이미지 pattern을 수동으로 추출하지 않고, 데이터를 이용해서 pattern 자체를 학습하고 분류한다.

 

그만 좀 헷갈리자 - 알고리즘이 iterative하다는 것은

https://blog.naver.com/qbxlvnf11/221449297033

  1. 알고리즘이 iterative 하다는 것: gradient descent와 같이 결과를 내기 위해서 여러 번의 최적화 과정을 거쳐야 되는 알고리즘
  2. epoch : 한 번의 epoch는 인공 신경망에서 전체 데이터 셋에 대해 forward pass/backward pass 과정을 거친 것을 말함. 즉, 전체 데이터 셋에 대해 한 번 학습을 완료한 상태) 
    1. ) epoch 값이 너무 작다면 underfitting이 너무 크다면 overfitting이 발생할 확률이 높은 것이죠.
    2. ) epochs = 40이라면 전체 데이터를 40번 사용해서 학습을 거치는 것입니다.
  3. batch size는 한 번의 batch마다 주는 데이터 샘플의 size. 여기서 batch(보통 mini-batch라고 표현)는 나눠진 데이터 셋을 뜻하며 iteration는 epoch를 나누어서 실행하는 횟수라고 생각하면 됨.
  4. 메모리의 한계와 속도 저하 때문에 대부분의 경우에는 한 번의 epoch에서 모든 데이터를 한꺼번에 집어넣을 수는 없습니다.
    1. )그래서 데이터를 나누어서 주게 되는데 이때 몇 번 나누어서 주는가 iteration
    2. ) 각 iteration마다 주는 데이터 사이즈 batch size라고 합니다.


CNN 모델

  • 사물 인식은 계층적으로 : 점, 선 -> 눈코입 -> 얼굴 인식 단계적으로
  • 컨볼루션 (convolution) : 계층적으로 인식할 수 있도록 단계마다 이미지의 특징을 추출
    • 필터를 적용할 때 이미지 왼쪽 위에서 오른쪽 밑까지 밀어가며 곱하고 더하는데 이 작업을 컨볼루션이라고 한다. 
    • 컨볼루션을 하는 인공 신경망 -> CNN
    • CNN은 이미지를 추출하는 필터를 학습한다. 필터가 하나의 작은 신경망인 것.
  • CNN 모델 : 컨볼루션 계층 - 폴링 계층 - 특징들을 모아 최종 분류하는 인공 신경망 계층
  • 컨볼루션 계층 : 이미지의 특징을 추출
  • 폴링 계층 :  필터를 거친 여러 특징 중 가장 중요한 특징 하나를 골라낸다
    • 덜 중요한 특징은 버리기 때문에 이미지의 차원이 감소한다
  • 컨볼루션 연산은 이미지를 '겹치는 매우 작은 조각'으로 쪼개어 필터 기능을 하는 작은 신경망에 적용 
    • 이 신경망은 모든 조각에 동일하게 적용되며, 특징을 추출하기 때문에 컨볼루션 필터 혹은 커널이라고 부른다.
    • 커널은 컨볼루션 계층 하나에 여러 개가 존재할 수 있다.
    • 보통 3 x 3 혹은 5 x 5 크기의 커널이 쓰인다.
    • 컨볼루션은 칸씩으로 움직인다. 움직임을 조잘하는 값을 스트라이드 (stride)라고 부른다.
    • 스트라이드를 올려 여러 칸을 건너뛸수록 출력되는 텐서의 크기가 작아진다.
  • 컨볼루션을 거쳐 만들어지는 새로운 이미지는 특징 맵 (feature map)이라고 부른다. 
  • 컨볼루션 계층마다 여러 특징 맵이 만들어지며, 다음 단계인 폴링 (polling) 계층으로 넘어가게 된다.
  • 특징 맵의 크기가 크면 학습이 어렵고 과적합 위험이 증가한다
  • 폴링 계층은 앞 계층에서 추출한 특징을 값 하나로 추려내서 특징 맵의 크기를 줄여주고 중요한 특징을 강조하는 역할을 한다. 
    • 폴링 역시 일종의 컨볼루션 연산이다. 
    • 필터가 지나갈 때 마다 픽셀을 묶어서 평균이나 최댓값을 가져오는 간단한 연산으로 이루어진다.

 

CNN 모델 구현 절차

 컨볼루션 -> 폴링 -> 컨볼루션  -> 드롭아웃 -> 폴링 -> 신경망 -> 드롭아웃 -> 신경망

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함