Big Ben
Big Ben's Log
Big Ben
전체 방문자
오늘
어제
  • 전체 글 (80)
    • 파이썬 (23)
      • 파이썬 기초 (5)
      • 클래스 (6)
      • 자료구조 (4)
      • Tensorflow (3)
      • PyTorch (2)
      • konlpy (1)
      • anaconda (1)
    • 머신러닝 (3)
      • 선형회귀 (1)
      • Tree 기반 (1)
    • 딥러닝 (6)
      • NLP (2)
      • VISION (2)
      • TABULAR (0)
      • 딥러닝 서버 구축 (2)
    • 그래프 이론 (1)
      • 그래프마이닝 (1)
      • GNN (0)
    • 강화학습 (3)
      • 강화학습 기본 (3)
    • 인공지능 (5)
    • 추천시스템 (2)
      • 추천시스템 기초 (2)
    • Competitions (1)
    • 빅데이터 (8)
      • 하둡 (3)
      • 스파크 (4)
      • 클라우드 (1)
    • SQL (7)
      • MariaDB (2)
    • 논문 리뷰 (2)
    • 대학원 (0)
      • 데이터 사이언스 (0)
      • 경제학 (0)
    • 선형대수학 (7)
      • 선형대수 ICE BREAKING (1)
      • 벡터 (5)
      • 고윳값 (1)
    • 개인프로젝트 (0)
      • 포트폴리오 대시보드 + AI기반 주식 자동매매 (0)
    • 재테크 (1)
    • 자동차 (0)
    • 알고리즘 (11)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • sql
  • AI
  • class
  • 딥러닝
  • 머신러닝
  • MariaDB
  • 객체
  • 객체지향
  • 선형대수학
  • 프로그래밍
  • 파이썬
  • 알고리즘
  • 데이터사이언스
  • pytorch
  • 코테
  • 프로그래머스
  • Baekjoon
  • TensorFlow
  • 자료구조
  • 하둡
  • mysql
  • PYTHON
  • 데이터
  • 파이썬기초
  • 데이터베이스
  • 코딩테스트
  • 인공지능
  • 선형대수
  • 빅데이터

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Big Ben

Big Ben's Log

[딥러닝] 합성곱 신경망 - 직관적으로 convolutional layer 깊이에 대해 이해하기
딥러닝/VISION

[딥러닝] 합성곱 신경망 - 직관적으로 convolutional layer 깊이에 대해 이해하기

2023. 2. 23. 21:17
반응형

본 포스팅에서는 수식적으로 합성곱 연산을 설명하기 보다는 그림에 의존한 직관적인 내용을 이야기 해보겠음

합성곱 연산

완전 연결층(Dense Layer)과 합성곱 층(Convolutional Layer) 사이의 근본적인 차이는 어떻게 될까?

 

Dense층은 입력 특성 공간에 있는 전역 패턴을 학습하지만, 합성곱 층은 지역 패턴을 학습합니다. 

만약 이미지라면 작은 2D 윈도우로 입력에서 패턴을 찾습니다.

 

Convolutional 연산은 2D Window가 원본 그림 전역을 조금씩 이동해가면서 스캔하는것에서부터 시작된다. (그림 출처: https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2)

 

컨브넷은 두 가지 흥미로운 성질을 제공하는데요.

 

첫째, 학습된 패턴은 평행 이동 불변성(translation invariant)를 갖습니다. 컨브넷이 이미지의 오른쪽 아래 모서리에서 어떤 패턴을 학습했다면, 다른 곳(예를 들어 왼쪽 위 모서리)에서도 이 패턴을 인식할 수 있습니다. 

해당 패턴을 학습했기 때문에 위치에 상관없이 비슷한 패턴을 골라낼 수 있는 것입니다. 반대로 완전 연결 네트워크는 새로운 위치에 나타난 것은 설령 다른 위치에서 관측되었을지라도 새로운 패턴으로 학습해야 합니다.

따라서 컨브넷을 활용하면 적은 수의 훈련 샘플을 사용해서 일반화 능력을 가진 표현을 학습할 수 있습니다.

 

둘째, 컨브넷은 패턴의 공간적 계층 구조를 학습할 수 있습니다.

첫번째 합성곱은 엣지와 같은 작은 지역 패턴을 학습합니다.

두번째 합성곱 층은 첫번째 층의 특성으로 구성된 더 큰 패턴을 학습합니다. 

이런 방식을 사용하여 컨브넷은 매우 복잡하고 추상적인 시각적 개념을 효과적으로 학습할 수 있습니다.

 

아래의 그림을 보겠습니다. 

원본 그림

이 고양이가 첫번째 convolutional layer를 지나게 되면, 아래와 같이 고양이의 엣지와 같이 지역적인 특징을 학습합니다. (여기서는 대각선 모양의 패턴들을 학습했다고 볼 수 있겠습니다)

첫번째 convolutional layer를 지난 이후 (고양이의 엣지를 추출한 것을 볼 수 있음)

여기서 더 많은 컨브넷을 사용하여 그림의 특징을 학습한다면, 아래와 같이 굉장히 추상적인 패턴을 학습하게 됩니다.

7개의 convolution layer를 지난 시점에서의 고양이 모습들

육안으로 "고양이의 어떠한 특징중 한 부분이다"라고 말할 수 없을 정도로 추상적인 모습입니다. 

 

이렇게 학습한 특징을 다른 고양이 사진에서도, 고양이가 어디에 있든 배경 뒤에 있든, 모서리 한 귀퉁에 위치해있든, 저 특징과 일치하는 부분이 보인다면 고양이라고 분류하는 매커니즘 입니다.

 

아래의 그림을 참고하면 이해가 조금 더 쉬울 것입니다.

conv 블록을 지나갈 수록 더 추상적인 그림이 보인다.

따라서, 특징 맵(feature map)이 깊어질수록 class에 대한 정보를 담고 있고, 얕을수록 원본 이미지에 가까운 feature들을 담고 있습니다. 

반응형
저작자표시 (새창열림)

'딥러닝 > VISION' 카테고리의 다른 글

[Tensorflow] AutoEncoder 오토인코더 구현하기  (0) 2023.02.26
    '딥러닝/VISION' 카테고리의 다른 글
    • [Tensorflow] AutoEncoder 오토인코더 구현하기
    Big Ben
    Big Ben
    Data Scientist

    티스토리툴바