Ch08.이미지를 위한 인공 신경망

Hyemin Seo·2024년 11월 22일
0

합성곱 신경망의 구성 요소

합성곱 convolution

영어로 Convolution은 '대단히 복잡한 것, 난해한 것, 얽히고 설킨 것'이라고 한다.
합성곱이란 두 함수를 서로 곱해서 합한다는 뜻이다.

합성곱 vs 밀집층

밀집층이 입력데이터 전체에 뉴런의 가중치를 곱하고 절편을 더해서 1개의 출력을 만드는 반면, 합성곱은 일부에 가중치를 곱하고 절편을 더해서 1개의 출력을 만든다.

합성곱 신경망 convolutional neural network, CNN

합성곱을 이용한 신경망. 이는마치입력데이터위를 이동하면서같은도장(!)으로하나씩찍는것처럼생각할수있습니다. 도장을찍을때마다출력이하나씩만들어지는거죠. 완전 연결 신경망(밀집층 신경망)과 반대의 의미이다! 밀집층과 다르게 2차원 입력에 용이하다.
filter: 뉴런
kernel: 뉴런

눈치챘을까? filter = kernel = neuron 다 같은 말이다.
다만 우리끼리 비밀스럽게,

뉴런 개수: 필터
입력에 곱해지는 가중치: 커널
이라고 불러보자.

그리고 특성맵 feature map은 합성곱 계산을 통해 얻은 출력을 의미한다!

(4,4)의 크기의 입력을 (2,2)의 출력으로 줄인 느낌이 난다. 신기하다...

케라스 합성곱 층

from tensorflow import keras
keras.layers.Conv2d(10, kernel_size(3,3), activation='relu')

keras.layers 패키지 아래에는 여러 케라스의 층들을 구현할 수 있는 클래스가 있다. 합성곱 층은 Conv2D 클래스에서 제공된다.
kernel_size는 필터에 사용된 커널의 크기; 보통 (3,3), (5,5) 추천
활성화 함수는 렐루를 써본다.

합성곱 신경망

헷갈리지 말것!

합성곱 층이 단 한 개만 있어도 합성곱 신경망이다!

패딩과 스트라이드


padding: 입력 배열 주위를 가상의 원소로 채우는 것
same padding: (4,4) 입력을 (4,4) 출력으로 만들고 싶을 때 0처럼 의미없는 값을 주변에 둘러싸주는 것. 필터(도장) 찍을 횟수를 늘려주는 의의를 가진다.
valid padding: 패딩 없이 순수 입력만을 쓰는 경우. 솔직히 이런건 패딩이라고 이름 붙이면 안되지 않은가?, 라고 생각했지만 파라미터 기본값을 valid라고 주기 때문에 이해되었다.

풀링 pooling

  • 특성맵 크기 줄이기
  • 최대 풀링과 평균 풀링이 있다. 가중치가 없기 때문에 최대값과 평균값을 output으로 내어놓는 것이다.업로드중..
    keras.layers.MaxPooling2D(2)
    2칸을 스트라이드로 해서 이동하겠다는 뜻임. 즉 특성맵 크기를 반으로 줄인다는 뜻.

기억하자! 1. 풀링은 가로세로 방향으로만 진행된다. 2. 특성 맵의 개수는 변하지 않는다
풀링을사용하는이유는합성곱에서스트라이드를크게하여특성맵을줄이는것보다 풀링 층에서크
기를줄이는것이경험적으로더나은성능을내기때문입니다

profile
친해져요

0개의 댓글