수학/딥러닝 이론

[딥러닝] 합성곱 신경망(CNN) - 3차원 데이터의 합성곱 연산 - 가중치와 편향

AI 꿈나무 2020. 10. 4. 22:27
반응형

사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다.

 


 

 

[딥러닝] 합성곱 신경망(CNN) - 합성곱 연산에서의 패딩과 스트라이드

사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다. 을 공부하고 정리해보았습니다. 을 공부하고 정리해보았습니다. 을 공부하고 정리해보았습니다.  합성곱 신경망 - C

deep-learning-study.tistory.com

 이전 포스팅에서 합성곱 연산에서의 패딩과 스트라이드 기법을 공부했습니다.

 이번에는 3차원 데이터의 합성곱 연산에 대해 공부하겠습니다.

 

3차원 데이터의 합성곱 연산

 지금까지 2차원 형상을 다루는 합성곱 연산을 살펴봤습니다.

 그러나 이미지만 해도 세로, 가로, 채널의 3차원 데이터입니다.

 이번에는 채널까지 고려한 3차원 데이터를 다루는 합성곱 연산을 살펴보겠습니다.

 

 3차원 데이터의 합성곱 연산 예와 계산 순서를 살펴보겠습니다.

 

3차원 데이터 합성곱 연산의 예

 

3차원 데이터 합성곱 연산의 계산 순서

 

 2차원일 때와 비교하면, 길이 방향(채널 방향)으로 특징 맵이 늘어났습니다.

 채널쪽으로 특징 맵이 여러 개 있다면 입력 데이터와 필터의 합성곱 연산을 채널마다 수행하고, 그 결과를 더해서 하나의 출력을 얻습니다.

 

 3차원의 합성곱 연산에서 주의할 점은 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다는 것입니다.

 이 예에서는 모두 3개로 일치합니다.

 

 한편, 필터 자체의 크기는 원하는 값으로 설정할 수 있습니다.(단, 모든 채널의 필터가 같은 크기여야 합니다.)

 이 예에서는 필터의 크기가 (3, 3)이지만, 원한다면 (2, 2)나 (1, 1) 또는 (5, 5)등으로 설정해도 됩니다.

 

블록으로 생각하기

 3차원의 합성곱 연산은 데이터와 필터를 직육면체 블록이라고 생각하면 쉽습니다.

 블록은 아래 그림과 같은 3차원 직육면체 입니다.

 

 또, 3차원 데이터를 다차원 배열로 나타낼 때는 (채널, 높이, 너비) 순서로 쓰겠습니다.

 예를 들어 채널 수 C, 높이 H, 너비 W인 데이터의 형상은 (C, H, W)로 씁니다.

 필터도 같은 순서로 씁니다.

 

합성곱 연산을 직육면체 블록으로 생각합니다. 블록의 형상에 주의

 

 이 그림에서 출력 데이터는 한 장의 특징 맵입니다.

 한 장의 특징 맵을 다른 말로 하면 채널이 1개인 특징 맵입니다.

 그럼 합성곱 연산의 출력으로 다수의 채널을 내보내려면 필터(가중치)를 다수 사용하는 것입니다.

 

여러 필터를 사용한 합성곱 연산의 예

 

 이 그림과 같이 필터를 FN개 적용하면 출력 맵도 FN개가 생성됩니다.

 그리고 그 FN개의 맵을 모으면 형상이 (FN, OH, OW)인 블록이 완성됩니다.

 이 완성된 블록을 다음 계층으로 넘기겠다는 것이 CNN의 처리 흐름입니다.

 

 합성곱 연산에서는 필터의 수도 고려해야 합니다.

 그런 이유로 필터의 가중치 데이터는 4차원 데이터이며 (출력 채널 수, 입력 채널 수, 높이 너비) 순으로 씁니다.

 예를 들어 채널 수 3, 크기 5 X 5인 필터가 20개 있다면 (20, 3, 5, 5)로 씁니다.

 

 합성곱 연산에서도 편향이 쓰입니다.

 아래 그림은 편향을 더한 모습입니다.

 

합성곱 연산의 처리 흐름(편향 추가)

 

 위 그림에서 보듯 편향은 채널 하나에 값 하나씩으로 구성됩니다.

 이 예에서는 편향의 형상은 (FN, 1, 1)이고, 필터의 출력 결과의 형상은 (FN, OH, OW)입니다.

 이 두 브록을 더하면 편향의 각 값이 필터의 출력인 (FN, OH, OW) 블록의 대응 채널의 원소 모두에 더해집니다.

 형상이 다른 블록의 덧셈은 넘파이의 브로드캐스트 기능으로 쉽게 구현할 수 있습니다.

 

반응형