티스토리 뷰

합성곱 계층

합성곱 연산

합성곱 계층에서의 합성곱 연산을 처리합니다. 합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당합니다.(문헌에서는 필터를 커널이라고 칭하기도 합니다.)


합성곱 연산은 필터의 윈도우(window)를 일정 간격으로 이동해가며 입력 데이터에 적용합니다. 아래 그림에서 보듯 입력과 필터에서 대응하는 원소끼리 곱한 후 그총합을 구합니다.(이 계산을 단일 곱셈-누산(fused multiply-add,FMA)라고 합니다.)

완전연결 신경망에서는 가중치 매개변수와 편향이 존재하는데, 여기서 가중치가 필터의 매개변수입니다. 그리고 편향은 필터를 적용 후의 데이터에 더하면 됩니다.(편향은 항상 1x1만 존재)


패딩(padding)

합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값(예컨대 0)으로 채우기도 합니다. 이를 패딩이라고 하며, 합성곱 연산에서 자주 이용하는 기법입니다. 

패딩은 주로 출력 크기를 조정할 목적으로 사용합니다. 예를 들어 (4,4)입력 데이터에 (3,3)필터를 적용하면 출력 데이터는 (2,2)가 됩니다. 이렇게 필터를 적용하면 입력 데이터보다 출력 데이터가 줄어들게 됩니다. 이는 합성곱 연산을 반복하는 심층 신경망에서는 문제가 될 수 있습니다. 합성곱 연산을 거칠 때마다 크기가 작아지면 어느 순간 1이 되어버립니다. 이는 더 이상 합성곱 연산을 할 수 없다는 의미이기도 합니다. 이러한 문제를 막기 위해 패딩을 사용합니다. 즉, 입력 데이터의 크기를 고정한 채로 다음 계층에 전달할 수 있습니다.


스트라이드(stride)

필터를 적용하는 위치의 간격을 스트라이드라고 합니다. 아래 그림은 스트라이드가 2인 합성곱 연산입니다.

스트라이드를 키우면 출력 크기는 작아집니다. 한편, 패딩을 크게 하면 출력 크기가 커졌습니다. 


이러한 관계를 수식화 하면 다음과 같습니다.(입력 크기를(H,W), 필터 크기를 (FH, FW), 출력 크기를 (OH,OW), 패딩을 P, 스트라이드를 S)

위 식은 정수로 나눠떨어져야 한다는 것에 주의해야 합니다.(딥러닝 프레임워크에서는 정수로 떨어지지 않을 경우 가장 가까운 정수로 반올림을 합니다.)


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

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


3차원의 합성곱 연산에서 주의할 점은 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다는 것입니다.(위 그림에서는 3개) 필터 자체의 크기는 원하는 값으로 설정할 수 있습니다.(단, 모든 채널의 필터가 같은 크기여야 합니다.)


블록으로 생각하기

채널을 추가한 실제 입력 데이터 처리 관계 즉 채널(색상)이 여러개가 있는 이미를 합성곱 연산에 넣으면 1개의 채널을 가진 데이터가 출력 데이터가 됩니다.

이 때 필터를 어러 개 적용 한다면 출력데이터도 여러개의 채널로 출력 될 수 있기 때문에 CNN에서는 필터가 4차원 데이터로 적용한다.(출력 채널 수, 입력 채널 수, 높이, 너비)

배치 처리된 입력 데이터가 들어 왔을 때는 아래와 같이 계산된다. 입력데이터는 데이터 갯수, 채널, 높이, 너비 순으로 형상이 이루어진다.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함