문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 인공신경망 (문단 편집) ====== 알고리즘 ====== 합성곱 층은 말 그대로 [[합성곱]]을 이용하며, 다음과 같이 계산한다. 이때 입력되는 [math(m \times n)] 크기의 데이터 [math(D)]와 [math(p \times p)] 크기의 필터 [math(F)]가 다음과 같다고 하자. (단, stride의 값은 1이다.) [math(D=\begin{pmatrix}d_{11} & d_{12} & \cdots & d_{1n} \\ {d_{21}} & {d_{22}} & {\cdots} & {d_{2n}} \\ \vdots & \vdots & \ddots & \vdots \\ d_{m1} & d_{m2} & \cdots & d_{mn}\end{pmatrix}, F=\begin{pmatrix}{f_{11}} & f_{12} & \cdots & f_{1p} \\ {f_{21}} & f_{22} & \cdots & f_{2p} \\ {\vdots} & \vdots & \ddots & \vdots \\ {f_{p1}} & f_{p2} & \cdots & f_{pp}\end{pmatrix})] 그러면 이 행렬을 이용하여 구한 합성곱은 [math((m - p + 1) \times (n - p + 1))] 행렬이며, 그 행렬의 [math(i)]행 [math(j)]열 성분은 다음과 같다. [math(d_{ij}f_{11}+d_{i(j+1)}f_{12}+\cdots+d_{i(j+p-1)}f_{1p}+\cdots+d_{(i+p-1)j}f_{p1}+d_{(i+p-1)(j+1)}f_{p2}+\cdots+d_{(i+p-1)(j+p-1)}f_{pp})] 특히 그 행렬의 1행 1열의 성분은 다음과 같이 동일한 위치의 성분들의 곱을 합산한 것과 같다. [math(d_{11}f_{11}+d_{12}f_{12}+\cdots+d_{1p}f_{1p}+\cdots+d_{p1}f_{p1}+d_{p2}f_{p2}+\cdots+d_{pp}f_{pp})] 예를 들어 [math(D)] ([math(4 \times 5)] 행렬), [math(F)] ([math(3 \times 3)] 행렬)가 다음과 같을 때, [math(D=\begin{pmatrix}1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8\end{pmatrix})], [math(F=\begin{pmatrix}1 & 0 & 1 \\ 1 & 1 & 0 \\ 0 & 1 & 0\end{pmatrix})] 합성곱은 [math((4 - 3 + 1) \times (5 - 3 + 1))] 행렬, 즉 [math(2 \times 3)] 행렬이며, 다음과 같다. [math(\begin{pmatrix}13 & 18 & 23 \\ 18 & 23 & 28\end{pmatrix})] 즉, 필터 [math(F)]를 데이터 행렬 [math(D)]의 가장 왼쪽 위부터 시작해서 1 (또는 지정된 stride)의 간격으로 가로, 세로 방향으로 격자 형태로 이동해 가면서, 대응되는 성분들의 곱을 모두 합한 결과를 구해 나간다고 생각하면 된다. 만약 stride의 값 [math(s)]가 1이 아니면 합성곱 결과물 행렬의 크기는 [math(\displaystyle (\frac{m - p}{s}+1) \times (\frac{n - p}{s}+1))]이다. 예를 들어 [math(m=n=28, p=4)]일 때, [math(s=1)]이면 결과물 행렬의 크기는 [math(25 \times 25)]이고, [math(s=2)]이면 [math(13 \times 13)]이다. 데이터 행렬 [math(D)]에 대해 실제 데이터에 해당하는 부분의 상하좌우로 패딩(padding)[* 일반적으로 패딩 부분은 일정한 값, 특히 0으로 처리한다.]을 추가할 수 있는데, 이때 패딩의 크기(상하좌우 각각 늘어나는 행과 열의 수)를 [math(a)]라고 하면 가로, 세로 각각 [math(2a)]만큼 늘어난다. 따라서 결과물 행렬의 크기는 [math(\displaystyle (\frac{m - p + 2a}{s}+1) \times (\frac{n - p + 2a}{s}+1))]이다. stride의 값이 1이면서 필터의 크기 [math(p)]보다 패딩으로 인해 늘어나는 길이가 더 길면 결과물 이미지가 더 커질 수 있다. 여러 개의 필터에 대해 이런 방식으로 계산한 결과를 합산 또는 평균하는 등의 적절한 방법을 이용하여 풀링 층 또는 다음 합성곱 층으로 전달되는 행렬을 생성한다. 풀링 층은 입력 데이터를 일정 간격의 정사각형 형태의 행렬들로 나누고, 다음과 같은 작업을 수행한다. 일반적으로는 [math(2 \times 2)] 행렬들로 나누기 때문에 풀링 층을 통과한 결과물은 입력 데이터에 비해 가로 및 세로 길이가 각각 반으로 줄어든다. * 최대 풀링 (Max Pooling) : 해당 행렬에서 최댓값을 구한다. * 평균 풀링 (Average Pooling) : 해당 행렬의 모든 값의 평균값을 구한다. 예를 들어 입력 데이터가 다음과 같을 때, [math(D=\begin{pmatrix}1 & 4 & 2 & 0 \\ 2 & 2 & 3 & 1 \\ 3 & 3 & 5 & 1 \\ 0 & 2 & 0 & 4\end{pmatrix})] 이것을 [math(2 \times 2)] 크기의 정사각형 형태의 행렬들로 나누면 다음과 같다. [math(D_{11}=\begin{pmatrix}1 & 4 \\ 2 & 2\end{pmatrix})], [math(D_{12}=\begin{pmatrix}2 & 0 \\ 3 & 1\end{pmatrix})], [math(D_{21}=\begin{pmatrix}3 & 3 \\ 0 & 2\end{pmatrix})], [math(D_{22}=\begin{pmatrix}5 & 1 \\ 0 & 4\end{pmatrix})] 이 행렬들에 대해 최대, 평균 풀링을 한 결과는 [math(D_{11})], [math(D_{12})], [math(D_{21})], [math(D_{22})]에 대해서 각각 다음과 같다. * 최대 풀링 : 각각 4, 3, 3, 5 * 평균 풀링 : 각각 2.25, 1.5, 2, 2.5저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기