SlideShare a Scribd company logo
1 of 84
Download to read offline
컴퓨터 비전을 위한 합성곱 신경망
Convolution Networks
도정찬
Michigan Online, Justin Johnson, Computer Vision, 2021. 02. 08
지난시간 복습 : 역전파
▪ 이제 7번째 강의로 오늘은 합성곱 신경망에 대해서 이야기해봅시다. 이 신경망 모델로 이미지를 전방향으로 나아가면서 처리할
거에요. 지난 시간 강의를 잠깐 복습해보면 역전파 알고리즘에 대해서 배웠었죠. 이 알고리즘으로 복잡한 계산그래프에서도 그라
디언트를 계산할수 있었어요.
지난시간 복습 : 역전파
▪ 그리고 계산 그래프라는 자료 구조 덕분에 일일히 많은 양의 종이나 복잡한 수식들을 정리할 공간이 따로 필요하지 않고 쉽게
계산 할수 있었습니다. 대신 역전파라고 부르는 그래프를 전방향으로가서 출력을 계산한 후 되돌아오는 과정에서 그라디언트들
을 계산하는 복잡한 알고리즘을 통해서 그라디언트를 구할수가 있었죠.
지난시간 복습 : 역전파
▪ 그리고 역전파 알고리즘을 세밀하게 들어가서 지역적으로도 보았었는데요. 계산 그래프 안에 함수를 추가하거나 사용하기 위
해서 작은 몇몇 연산자들을 이용해서 구현할수 있었어요. 그런 함수들로 입력이 주어져 전방향으로 흘러가면서 출력이 어떻게 계
산되어 나오는지도 보았습니다.
▪ 그리고 역방향으로 주어진 업스트림 그라디언트(비용에 대한 노드 출력의 기울기)가 주어질때 입력에 대한 그라디언트(다운스
트림 그라디언트)가 어떻게 계산되는지도 보았었어요.
지난시간 복습 : 역전파
▪ 이제 새로운 함수를 계산 그래프로 넣으려면, 그 함수를 지난시간에 이야기한 모듈화된 API에 넣으면 됩니다. 그리고 지난 시간
에 몇가지 문제들을 이야기했는데, 이 강의에서 그동안 선형 분류기에 대해 여러번 이야기를 했었죠. 그리고 이제는 완전연결 신
경망 분류기 fully connected neural network classifier도 익숙해졌을 텐데,
지난시간 복습 : 역전파
▪ 완전 연결 신경망 분류기는 유연해서 수 많은 다양한 함수들처럼 동작할수 있다보니 아주 유용한 모델이었엇죠. (could flexibly
represent many different function을 *학습에 따라* 다양한 역활, 함수 연산을 할수 있다는 것으로 이해함) 하지만 선형 분류기나
완전 연결 신경망 분류기 둘다 이미지와 같은 2차원 공간적 구조를 입력으로 받을때는 안좋습니다.
지난시간 복습 : 역전파
▪ 하지만 선형 분류기나 완전 연결 신경망 분류기 둘다 이미지와 같은 2차원 공간적 구조를 가진 데이터를 입력으로 받을때는 좋
지 않습니다. 왜냐면 이런 분류기가 이미지를 입력으로 받을때, 이미지는 공간적인 구조도 있지만 각 점마다 RGB 색상값도 가지
고 있죠. 이런 분류기에 넣으려고 이미지를 길다란 벡터로 펴버린다면 flattening 공간적인 정보들이 전부다 사라지게 됩니다.
지난시간 복습 : 역전파
▪ 그래서 그동안 우리가 배운 선형 분류기나 완전 연결 신경망은 이미지 데이터를 처리하는데 적합하지는 않아요. 그래서 여러분
이 머신 러닝을 만들때는 입력 데이터의 구조가 갖는 이점을 활용할수 있는 모델을 만들어야 효과적으로 처리할수 있습니다.
지난시간 복습 : 역전파
▪ 그럼 입력 이미지의 공간적 구조를 반영 시킬수 있는 방법은 어떻게 보면 간단한건데, 일단 지금까지 신경망을 만들려고 계산
그래프를 만들었었죠. 그러니까 여기서 할 일은 이미지를 처리할수 있는 혹은 공간적 구조를 처리할수 있는 새로운 연산자를 정
의 하면 됩니다.
▪ 제가 오늘 할 얘기는 신경망 안에서 2차원 공간을 가진 데이터를 처리할수 있는 새로운 연산자들을 소개하고자 합니다.
▪ 그동안 우리가 완전 연결 신경망에 대해 이야기하면서 완전 연결신경망의 두 기본적인 구성요소는 익숙해지셨죠. 이 완전 연결
신경망이라는 이름은 입력 벡터와 행렬곱을 하여 출력 벡터를 만들어서 생긴 이름인데, 완전 연결 신경망의 다른 중요한 요소로
는 비선형 활성화 함수 non linear activation function 였죠.
▪ 이 슬라이드에선 ReLU 활성화 함수를 보여주고 있는데, 이제 완전 연결신경망에서 합성곱 신경망 convolution neural network
로 넘어가면서, 계산그래프 안에서 사용할수 잇는 추가적인 연산자들을 살펴봅시다.
합성곱 신경망의 구성 요소들
▪ 제가 오늘 얘기할 이 3가지 연산자들 이용해서 합성곱 신경망을 만들수가 있는데, 합성곱 계층 convolution Layers, 풀링 계층
Pooling Layers, 정규화 계층 Normalization 계층에 대해서 이야기할겁니다.
합성곱 신경망의 구성 요소들
합성곱 신경망의 구성 요소들
▪ 우선 입력의 공간 정보를 잃어버리던 완전 연결 계층의 개념을 확장하여, 비슷한 역활을 하는 합성곱 계층이 어떻게 2차원 입력
들을 학습할수 있는지 봅시다.
▪ 일단 완전 연결 계층이 어떻게 순방향으로 처리하는지부터 돌아가서 봅시다. 이 계층에서 순방향으로 나아가면서하는 어떤 동
작을 볼건데, 오늘 강의에서는 순전파에 대해서만 얘기하겠습니다. 지난 시간에 봤었던 어떻게 그라디언트를 계산할지는 여러분
이 어떻게 신경망을 만드느냐에 달려있죠. 일단 오늘은 순전파 위주로만 이야기 하겠습니다.
완전 연결 계층 Fully-Connected Layer
완전 연결 계층 Fully-Connected Layer
▪ 완전 연결 계층이 어떻게 동작하는지를 간단히 얘기를 하자면 순전파 시에 완전 연결 계층은 입력 벡터를 받습니다. 그런데 이
벡터가 32 x 32 x 3의 cifar-10 이미지를 쭉 펼친거라 3072 스칼라 값으로 이뤄졌다고 할께요. 그러면 완전 연결 계층에서 순전파
연산은 그저 이 벡터를 가중치 행렬과 곱해서 출력 벡터를 만드는게 끝입니다.
▪ 이제 합성곱 계층의 경우, 합성곱 계층도 입력을 받아서 어떤식으로든 가중치로 연산을 하고, 동일한 타입의 출력을 만들어 냅
니다.
▪ 이제 합성곱 계층이 3차원 텐서를 입력으로 받을게요. 이 3차원 텐서의 볼륨은 아까처럼 펼쳐진게 아니고, 원래의 cifar-10이미
지를 그대로 합성곱 신경망의 첫번째 계층에서 받습니다.
합성곱 계층 Convolution Layer
합성곱 계층 Convolution Layer
▪ 이 신경망은 그러면 32 x 32이 3개가 있는 3차원 이미지, cifar 10 이미지를 가지고 연산을 하는데, 3개라는 숫자는 입력 텐서
의 채널, 깊이 차원의 수를 말해요. cifar 10 이미지의 경우 빨간색 채널, 파란색 채널, 녹색 채널로 3채널을 가지고 있어요. 그리고
여기서 32 x 32는 각각 3차원 텐서의 가로와 세로 길이구요.
합성곱 계층 Convolution Layer
▪ 이제 입력 텐서가 3차원 공간적 구조를 가지고 있으니, 합성곱 계층 그러니까 우리의 가중치 행렬도 3차원 공간적 구조를 가
지고 있습니다. 이 가중치 행렬을 합성곱 계층의 용어로 사용될때 필터 filter/마스크 mask라고도 부르고 있는데 이건 차원에 상
관 없는 이름입니다.
합성곱 계층 Convolution Layer
▪ 이제 한번 예시를 봅시다. 3 x 5 x 5의 합성곱 필터를 가지고 있다고 할게요. 그릭 h이 작은 합성곱 필터를 입력 이미지의 모든
(공간적) 위치에 놓고 슬라이딩을 시키면서 또다른 3차원 공간을 가지는 출력을 계산하겠습니다.
합성곱 계층 Convolution Layer
▪ 여기서 주의해야할 점으로 입력 텐서의 형태와 합성곱 필터의 형태사이에 한가지 제약사항이 있습니다. 입력 텐서의 깊이/채널
의 수와 합성곱 필터의 깊이/채널의 수가 같아야 해요. 위 예시에는 입력 이미지와 합성곱 필터의 채널이 둘다 3개가 있죠. 그래
서 합성곱 연산을 수행하면서 입력 텐서의 모든 깊이 채널들을 한번에 연산됩니다.
합성곱 계층 Convolution Layer
▪ 이번에 합성곱 연산 예시들을 볼건데, 다음 강의에서도 다룰것 같지만 오늘의 목표가 컨볼루션이다보니 컨볼루션으로 어떻게
입력 텐서의 깊이 공간을 한번에 연산하고, 출력을 계산하는지를 이야기할겁니다.
합성곱 계층 Convolution Layer
▪ 그래서 우리가 할일은 이 작은 5 x 5의 필터 3개로 이걸 입력 이미지 안에 집어 넣고, 3 x 5 x 5 필터를 입력 이미지의 3 x 5 x 5
의 원소들과 매치시킵니다. 입력 텐서의 공간적 위치에 필터가 매치되었을때 필터와 입력 텐서의 해당되는 원소들의 내적을 계산
할수가 있어요.
▪ 그리고 이 내적은 이전에 완전 연결 신경망에서 행렬의 한 행과 벡터 전체의 내적을 구했던것과 달리 하나의 필터와 입력 텐서
의 지역적인 공간 일부를 내적시켜 구한게 됩니다.
합성곱 계층 Convolution Layer
▪ 이 예시에서는 입력 이미지의 3 x 5 x 5 크기의 일부와 동일한 크기의 필터로 75개의 원소들의 내적을 구하였습니다. 그리고 대
부분의 머신러닝 모델처럼 편향 bias이 추가될수도 있어요. 가중치(계수)를 계산할때 편향항이 사용됩니다.
▪ 하지만 이 슬라이드에서는 컨볼루션/합성곱을 이해시키기 위함이다보니 편향항을 생략하였지만, 기본적으로는 편향이 있다는
걸 기억해야 합니다.
합성곱 계층 Convolution Layer
▪ 필터가 한 지점에 있고, 그리고 입력과 내적하여 하나의 스칼라 값을 구하였는데, 이 값은 얼마나 이 입력의 위치가 필터와 잘
맞았는지 정도를 알려주는 값입니다.
▪ 그렇게 출력 텐서의 한 원소를 계산했고, 이 과정을 입력 텐서의 모든 (컨볼루션 연산이) 가능한 위치에다가 입력 필터를 슬라
이드시켜 수행하면 됩니다. 그러면 각 위치에서의 출력들은 컨볼루션이 해당 위치에서 입력의 일부와 가중치(필터) 텐서의 내적
으로 구해지겠죠.
▪ 이 예시에서는 3 x 32 x 32의 입력과 3 x 5 x 5의 필터가 있다 보니 합성곱 연산이 어떻게 되는지 상상해보면 1 x 28 x 28의 격
자 형태의 결과물, 활성 지도 activation map가 나오게 됩니다. 여기서 활성 지도는 내적으로 구한 하나의 수치값들로 이뤄집니다.
합성곱 계층 Convolution Layer
▪ 그래서 하나의 컨볼루션 필터/커널과 입력 텐서로 컨볼루션 한 결과로 1 x 28 x 28 형태의 출력이 나오게 됩니다. 하지만 컨볼
루션 필터 하나만 가지고는 부족하죠. 그래서 컨볼루션 계층에서는 입력 이미지와 여러개의 서로 다른 (가중치를 가진) 필터들을
사용합니다.
합성곱 계층 Convolution Layer
▪ 그러면 이제 이미지를 두 번째 합성곱 필터로 컨볼루션 해봅시다. 여기서 녹색으로 나오고 있는데, 다른 가중치들을 가지고 있
어요. 이 녹색 합성곱 필터로 (똑같이) 컨볼루션, 3 x 5 x 5 컨볼루션 필터로 입력 이미지에서 가능한 모든 위치에서 슬라이딩하며,
한 결과 두 번째 1 x 28 x 28 형태의 출력 평면, 활성화 맵 activation map이 만들어 졌습니다.
합성곱 계층 Convolution Layer
▪ 이 출력 평면들을 신경망에서는 활성 지도 activation map이라고 부르는데, 2차원 지도들이 입력의 각 위치에서 이 층의 합성곱
필터가 얼마나 반응하였느냐를 보여주거든요. 당연히 2개의 필터만을 쓸게 아니라 더 많은 개수의 필터를 사용할건데, 필터의 갯
수도 하이퍼 파라미터가 됩니다.
합성곱 계층 Convolution Layer
▪ 이 예제의 경우 6개의 합성곱 필터로 입력 텐서를 컨볼루션 하고 있습니다. 바닥에 6개의 합성곱 필터들이 있는대 각 필터의 크
기/형태는 3 x 5 x 5 입니다. 이 6개의 3차원 필터들을 하나의 4차원 텐서로 만들수가 있는데, 그러면 6 x 3 x 5 x 5가 됩니다. 이
제 이 4차원 텐서는 3차원 필터가 6개 있다고 보시면 됩니다.
합성곱 계층 Convolution Layer
▪ 그리고 각 필터로 이미지를 컨볼루션 하면, 각 필터에 대한 활성 지도를 얻을 것이고, 모든 활성 지도들을 연결시켜 6 x 28 x
28 사이즈/형태의 3차원 텐서 하나가 만들어 집니다.
▪ 그리고 이거를 또다른 입력 이미지로 볼수가 있어요. 왜냐면 합성곱 계층은 어떤 깊이든, 어떤 가로, 세로 폭을 가지던 간에 3차
원 텐서를 다른 3차원 텐서로 변환시키거든요. 대신 가로, 세로가 바뀌더라도 공간적 구조(3차원이 그대로)는 변하지않고 보존됩
니다.
합성곱 계층 Convolution Layer
▪ 물론 제가 합성곱 계층에는 항상 편향이 존재하고 있고, 완벽하게 정리하자면 이렇게 되겠습니다. 한 합성곱 필터는 편향 하나
를 가지고 있어, 이 예제에는 합성곱 필터가 6개다 보니 편향은 값이 6개인 벡터가 되겠습니다. 그리고 이 편향의 원소들은 각 특
징 지도/활성 지도의 상수 값 오프셋으로 사용되요.
합성곱 계층 Convolution Layer
합성곱 계층 Convolution Layer
▪ 그래서 출력들은 28 x 28의 격자로 봐도 됩니다. 지금까지 컨볼루션 계층의 출력에 대해 2가지 방법으로 다뤘습니다. 하나는 활
성 지도들로 보는건데, 출력은 여러개의 활성 지도들로 이루어져 있고, 각 활성 지도는 입력 이미지를 필터가 어떻게 반응하는지
를 보여준다고 했었죠. 그래서 합성곱 계층의 출력(의 공간적 구조)를 활성 지도로 보는게 유용하다고 볼수 있습니다.
합성곱 계층 Convolution Layer
▪ 합성곱 계층의 출력을 보는 다른 방법은 그 출력을 28 x 28의 그리드/격자로 보면 됩니다. 이 그리드는 입력 텐서의 그리드로
구하였었고, 그리드의 각 지점(한 점)은 합성곱 계층이 계산하여 구한 특징 벡터들가 됩니다. 이 예제에서는 차원이 6인 특징 벡터
가 만들어 졌고, 입력 텐서가 어떻게 생겼는지 알 수 있어요.
합성곱 계층 Convolution Layer
▪ 그래서 출력을 보는 두 방법이 그리드의 한 점(벡터)으로 나눌지, 개별 특징지도/활성 지도로 나누는 것으로 단순한 차이로 보
일 수 있는데, 어떻게 볼지는 여러분들은 컨볼루션을 보는 상황에 따라 고려하여야 합니다.
▪ 특징 지도들을 모으는게 유용한 상황일 수도 있고, 그리드를 구성하는 특징 벡터들을 모으는게 유용한 경우도 있겠죠. 합성곱
계층의 출력을 어떻게 다룰지 생각해 보면서 어쩔때는 둘다 필요할 때도 있어요.
합성곱 계층 Convolution Layer
▪ 그리고 실제 컨볼루션 연산을 수행할때 배치 이미지(이미지 여러개)를 가지고 하는 경우가 많습니다. 이미지 하나를 주고 3차원
텐서 하나로 컨볼루션을 하는 경우보다요. 그래서 이미지 여러개를 하나의 4차원 텐서로 만들수가 있어요. 보통 합성곱 계층에
서 처리되는 이미지와 상관없는(이미지에 독립인) 배치 차원(개수)이 맨 앞에 옵니다.
▪ 그래서 합성곱 계층의 일반적인 형태는 이렇게 생겼습니다. 이 계층에서는 4차원 입력을, 4차원 텐서를 입력으로 받고, 이 4차
원 텐서가 배치 차원(배치 개수)로 n개로 미니 배치 데이터의 개수입니다. 그리고 cn은 각 입력 이미지의 채널이고 각 이미지들은
H x W로 2개의 차원을 가지고 있으며, 데이터의 크기로 보면 되겠습니다.
합성곱 계층 Convolution Layer
▪ 출력은 항상 배치 차원(데이터 개수)는 같습니다. 왜냐면 합성곱 계층에서는 배치 데이터를 따로따로(독립적으로) 연산을 수행
하거든요. 그리고 출력에서 채널 수는 합성곱 계층의 필터 개수만큼 채널들이 만들어지다보니, 입력 때의 채널 개수와 달라질 수
있습니다. 그 다음에 H와 W도 합성곱 연산으로 인해 달라지게 됩니다.
합성곱 계층 Convolution Layer
▪ 합성곱 계층은 3차원 혹은 4차원 텐서를 입력으로 받아, 출력으로 4차원 텐서를 만들다보니 여러개의 합성곱 신경망을 서로서
로(end to end) 쌓는 경우도 생각해볼수도 있습니다. 이렇게 만들면 신경망에는 더이상 완전 연결 계층이 없지만, 여기있는 3개
의 합성곱 계층으로 이뤄진 합성곱 신경망의 예시를 봅시다.
합성곱 계층들을 쌓기 Stacking Convolutions
▪ 그러면 출력은 우선 28 x 28 크기의 활성지도를 갖는데, 깊이 채널은 첫 합성곱 계층의 필터가 6개이므로 6이 되고, 이를다른 3
차원 텐서들에도 반복해서 적용하므로, 그러니까 모든 이미지에 합성곱 연산을 수행해서 N x 6 x 28 x 28 형태의 출력이 나오고
다음 합성곱 계층의 입력으로 사용됩니다.
합성곱 계층들을 쌓기 Stacking Convolutions
▪ 이제 두번째 합성곱 연산을 보시면, 가중치 행렬이 10 x 6 x 3 x 3의 형태를 가지고 있어요. 이는 합성곱 필터가 10개가 있는데,
각 합성곱 필터가 6개의 채널을 가지고 있으며, 한 필터당의 공간적 사이즈가 3 x 3이 되겠죠. 그래서 N x 10 x 26 x 26의 출력을
만들어 낼거고, 이런 식으로 합성곱 계층을 계속 쌓겠습니다.
합성곱 계층들을 쌓기 Stacking Convolutions
합성곱 계층들을 쌓기 Stacking Convolutions
▪ 물론 완전 연결 신경망을 다뤘을때 처럼 합성곱 계층들도 은닉층으로 봐도 됩니다. 그래서 여기에는 3 계층으로 이뤄진 합성곱
신경망이며 빨간게 1층, 파란게 2층, 녹색이 3층으로된 3 계층 합성곱 신경망이라고 보면 되겠습니다. 하지만 슬라이드에 나와있
는 이 합성곱 신경망은 문제점을 가지고 있는데, 혹시 뭐가 잘못됬는지 아는사람 있을까요?
▪ 여러개의 합성곱 계층을 바로 쌓아 서로 서로 연결된다면, 합성곱 연산이 선형 연산자 처럼 동작하게 됩니다. 한 합성곱 계층을
다른 합성곱 계층과 연결하면, 다른 합성곱 계층은 이전에 선형 분류기 예시를 떠올려보면 아니다. 완전 연결 신경망을 떠올려 보
시면, 두 완전 연결 계층을 바로 연결시켰을때 처럼 똑같은 효과/동작을 하게되요.
합성곱 계층들을 쌓기 Stacking Convolutions
합성곱 계층들을 쌓기 Stacking Convolutions
▪ 왜냐면 합성곱 계층들도 선형 연산자라 합성곱 계층을 직접 연결시킨, 쌓는다면 이들도 선형 연산자이다보니, 또 완전 연결 계
층을 직접 연결시켰을때 다른 하나의 가중치 행렬이 만들어지던것 처럼, 합성곱 계층도 쌓을 시 하나의 다른 합성곱 계층이 되어
버리거든요. 각 계층들이 다른 필터 크기, 채널 차원을 가지고 있더라두요.
▪ 그래서 합성곱 계층을 쌓더라도 여전히 합성곱 계층이고, 이런 문제를 해결하려면 완전 연결망애헛 했던 해결 방법을 사용하면
됩니다. 그 때처럼 각 선형 합성곱 연산자 사이에 비선형 활성화 함수를 넣으면 됩니다. 그럴때마다 ReLU함수를 자주 사용할거고,
3차원 텐서의 모든 원소들을 원소 단위로 처리할 거에요.
합성곱 계층들을 쌓기 Stacking Convolutions
▪ 질문이 들어았는데 첫째 합성곱 계층에 왜 5개의 편향항이 있는지에 대해 질문이 들어왔는데, 제가 그렇게 슬라이드를 만들었
거든요(오타내서 그렇다는 얘기로 보임). 찾아줘서 고맙네요 . 사실 이건 여러분들이 첫번째 합성곱 계층이 6개의 편향항을 갖는
데 여러분들을 테스트해보려고 했어요. 이 계층들이 어떤 역활을 하는지 잘 이해한것 같아 좋내요.
합성곱 계층들을 쌓기 Stacking Convolutions
합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
▪ 또 다른 질문을 드리자면 선형 분류기나 완전 연결 신경망을 떠올려보면, 항상 신경망의 첫번째 계층이 어떻게 학습하였는지
가중치를 시각적인 관점에서 볼수 있었었죠. 그래서 여러분들은 합성곱 신경망의 경우 어떻게 하면 시각적으로 볼수 있는지 또는
합성곱 신경망의 첫 번째 계층의 가중치를 어떻게 하면 이해할수있는 방법을 물어볼수 있을거에요.
▪ 지금까지 우리는 여러 차례 선형 분류기를한 클래스당 한 탬플릿으로 수많은 탬플릿들을 학습한다고 봐왔습니다.
합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
▪ 이걸 완전 연결 신경망으로 확장시켰고, 첫번째 계층에서 수 많은 템플릿들을 학습했어요. 하지만 아직 이 탬플릿들을 묶어 어
느 클래스에 속하는지는 까지 구하지는 않았습니다. 하지만 완전 연결 신경망에서의 각 탬플릿은 입력 이미지와 동일한 크기를
가지고 있어요. 그래서 완전 연결 신경망의 첫번째 계층은 입력 이미지와 같은 크기의 템플릿들을 여러개 학습한다고 보면 됩니
다.
합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
▪ 이번에 합성곱 신경망을 보면, 비슷하게 이해할수 있는데 다만 다른점은 입력 이미지와 같은 사이즈의 템플릿들을 학습하는게
아니라, 더 작고 지역적인 것들을 템플릿으로 학습합니다. 우측에 보시면 알렉스 넷이 이미지 넷을 학습해서 얻은 템플릿들을 보
여주고 있습니다. 알렉스 넷의 첫번째 계층은 합성곱 연산의 출력으로 3 x 11 x 11 형태의 합성곱 필터 64개가 나오내요.
합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
▪ 이 64개의 필터들을 11 x 11 크기의 RGB 이미지로 시각화 시킨 결과를 보면 알렉스 넷의 이 필터들이 뭘 학습 했는지를 이해할
수 알 수 있어요. 필터 대부분이 에지들을 학습하다보니 방향을 가진 에지 검출기 oriented edge detector 역활을 하고 있고, 수
직 에지나 수평 에지, 방향이 다르거나, 에지의 빈도가 다르거나 하는 다양한 에지들을 검출할 수 있을거에요. 그래서 이 필터들
을 지역 에지 검출기 또는 지역 웨이블릿 wavelet으로 보면 되겠습니다.
합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
▪ 그리고 합성곱 신경망에서 가장 눈에 띄는 다른건, 정 반대되는 색상들이죠. 이 필터를 보면 녹색 방울같은거 옆에 빨산색 방울
같은게 있는걸 볼수 있는데, 이들은 어떤 방향으로 반대되는 색상이 있는지 찾으려고 하는거에요.
▪ 그래서 특징 지도가 2번째로 하는 일은, 그러니까 활성 지도들로 첫 컨볼루션 연산을 한 후에 얻은 3차원 출력 텐서들은 입력
이미지의 모든 위치에 64개의 필터들을 적용하면서 반응하는 정도를 얻을 수 있습니다.
합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
▪ 혹은 합성곱 연산의 출력을 그리드 형태의 출력 벡터들의 모임의 관점으로 볼때, 알렉스 넷으로 입력 이미지의 모든 지점에 대
해 64차원의 특징 벡터를 얻을 수 있고, 이 특징 벡터의 원소들은 입력과 각 템플릿들(64차원)이 얼마나 잘 맞는지의 정도를 알려
준다고 할 수 있어요.
합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
▪ Hubel과 Wiesel의 고양이 실험을 다시 떠올려보면, 그들은 고양이의 시각 인지 기능이 에지의 일부 영역, 지역적인 패턴에 반응
한다고 했었죠. 합성곱 신경망의 첫번째 계층의 학습된 필터들이 비슷한 역활을 한다고 보면 되겠습니다.
합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
▪ 이제 더 깊이 들어가서 합성곱 연산의 공간적 자원에서 자세히 봅시다.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 입력 이미지를 가지고 와서 일단 깊이 차원(C)은 없애고, 공간 차원(H x W)만 보겠습니다. 그러면 공간적 차원의 크기가 7 x 7인
입력 이미지를 가지고 있을때, 크기가 3 x 3인 합성곱 필터로 컨볼루션을 한다고 해봅시다. 출력의 공간적 크기가 얼마나 되는지
를 보려면, 입력 이미지에서 합성곱 필터를 슬라이딩 시킬수 있는 지점이 몇개가 있는지 새면 됩니다.
▪ 여기서 하나
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 둘
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 셋
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 넷
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 다섯 해서, 가로로 5개의 지점에서 합성곱 연산을 할수 있네요. 그리고 세로 방향으로도 5만큼 내려갈수 있으니, 입력 이미지의
크기가 7 x 7인 경우 3 x 3 크기의 필터로 합성곱 연산을 할 때, 출력의 공간적 크기는 5 x 5가 됩니다.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 이걸 일반화 시키면 입력의 크기가 W이고, 커널/필터의 크기가 K인 경우 출력은 W - K + 1이 된다고 할수 있어요. 왜냐면 필터
가 입력의 바깥으로 나가지 못하고, 이를 따라 슬라이딩 되다보니 입력의 모든 픽셀에서 컨볼루션을 하지 못하여 출력/피처맵의
크기가 줄어들게 됩니다.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 그래서 컨볼루션 연산이 수행될때마다 공간적 차원, 입력 텐서를 줄일거고, 이게 우리가 학습시키고자 하는 신경망의 깊이에 제
약을 걸수 있어요. 예를들어 우리가 3 x 3 합성곱 연산을 하면, 매번 2 픽셀씩 줄어들겠죠. 그러면 우리가 신경망에 넣을수 있는
계층의 수에 상한이 생길거에요.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 합성곱 계층을 사용할때마다 이미지의 공간적 크기가 사라진다? 이미지의 크기가 계속 줄어들다보니 사용할수 있는 계층의 수
가 제한이 되고 신경망 설계에서 문제가 될수 있습니다. (7 x 7 이미지를 3 x 3 필터로 합성곱 연산을 한다면, 합성곱 계층을 2~3
개 밖에 사용하지 못하겠죠. 더 큰 이미지라면 더 깊이 할수는 있겠지만 .. )
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 우리는 신경망 계층 갯수에 제약이 걸리길 원치 않다보니 이 문제를 해결하고자 합성곱 연산을 하기 전에 이미지 경계면에 패
딩을 추가시키는 방법을 사용합니다. 이 예시는 합성곱 연산전에 패딩을 추가시킨건데 이미지 경계면에 픽셀을 붙인거에요. 그리
고 이 값들을 모두 0으로 넣어서 이걸 제로 패딩이라고 부릅니다.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 이 패딩 자리에 다른 방법들을 사용하여 값을 넣을수도 있어요. 예를들면 경계면에 있는 값을 그대로 패딩자리에 넣는다거나,
패딩의 값들이 원형이 되도록 한다거나 여러가지가 있겠지만, 합성곱 신경망을 학습시킬때 패딩으로 가장 흔하게 사용되는건 0
으로 지정하는 거에요. 이게 쉽고 잘 동작하거든요.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 그래서 이 패딩도 합성곱 계층의 하이퍼 파라미터가 되겠습니다. 그래서 우리가 합성곱 계층을 만들때는 필터의 크기, 필터의
수, 그리고 패딩의 크기도 지정해주어야 해요. 이제 합성곱 계층에 패딩도 추가하여 일반화/정리해서 보자면 출력의 크기는 W -
K + 1 + 2P가 됩니다.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 여기서 P는 패딩의 크기로 이것도 하이퍼 파라미터인데, 일반적으로 P = (K - 1)/2로 지정합니다. 그래서 3 x 3 합성곱 필터를
사용할때 패드가 1개, 5 x 5의 합성곱 필터를 사용한다면 패드 2개가 각 면에 추가가 될거에요. 이걸 패딩이라고 부르는건 합성곱
연산을 수행할때, 출력이 기존의 입력으로 구한 것에다가(W-K+1) 추가적인 공간적 크기(+2P)를 가져서 그래요.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 패딩 자체는 꼭 지정할 필요는 없는 하이퍼 파라미터이지만 합성곱 연산을 수행하면서도 공간적인 크기가 변하는걸 막아 공간
적 크기를 쉽게 정리/파악할수 있도록 도와주다보니 많이 사용되고 있습니다.
공간적 차원에서 자세히 보자 A closer look at spatial dimensions
▪ 합성곱 연산이 하는 일을 보기 위한 다른 방법으로 수용장 receptive filed에 대해 봅시다. 여기 보시면 입력 그리드와 출력 그리
드가 있어요. 그리고 이 출력은 합성곱 연산을 하여 만들어 지구요. 우리가 합성곱을 합성곱 필터/행렬을 이미지 전체 픽셀에 슬
라이딩 시키면서 내적을 구하는거라고 했었죠. 즉, 출력의 각 지점은 입력 이미지의 특정 픽셀을 중심으로 픽셀 주위 일부/지역적
영역을 3 x 3 크기의 합성곱 필터를 곱해 구했다고 볼수 있습니다.
수용장 Receptive Fields
▪ 즉, 출력의 각 지점, 원소, 값은 입력 이미지의 특정 픽셀을 중심으로 픽셀 주위 일부/지역적 영역을 3 x 3 크기의 합성곱 필터를
곱해 구했다고 볼수 있습니다. 그리고 이 3 x 3 크기의 영역을 합성곱 수용장이라고 합니다. 이건 하나의 합성곱 계층에서 볼때
직관적이고 이해하기 쉽지만, 스태킹 시킨 합성곱 계층에서 수용장들에 어떤 일이 생기는지도 같이 보는게 좋을거같아요.
수용장 Receptive Fields
▪ 여기서는 세 합성곱 계층의 스택과 맨 오른쪽에 출력 텐서의 한 원소를 볼수 있어요. 이 원소는 마지막 활성 지도의 3 x 3 영역
으로 부터 구하였죠. 하지만 마지막 활성 지도의 각 원소들은 2번째 활성 지도의 원소들을 합성곱하여 구하였고, 이들은 첫번째
활성지도의 원소들을 합성곱해서 구하고, 첫번째 활성지도는 입력과 첫번째 합성곱 계층의 합성곱 연산으로 구하였겠죠.
수용장 Receptive Fields
▪ 그래서 이거는 마지막 출력의 한 값, 녹색 부분은 입력의 넓은 공간으로부터, 여러개의 값으로 구했다고 볼수 있어요. 이 예시에
서로 3 x 3 크기의 합성곱 연산이 쌓여져 있을때, 두 합성곱 연산의 출력이 원래 입력 영역의 5 x 5 크기의 부분으로 구할수 있다
는걸 확인 할 수 있어요.
(* 3x3 크기의 합성곱 필터 시 : 입력이 3 x 3인 경우 conv1_output의 1 x 1을 구함,
입력의 5 x 5인 경우 conv1_output은 3 x 3 -> conv2_output 1 x 1을 구할 수 잇음)
수용장 Receptive Fields
▪ 만약에 여러분들이 필터의 크기가 3 x 3인 합성곱 계층 3개를 쌓는다면, 최종 출력 1개는 입력 공간의 7 x 7 크기의 일부로 부
터 구할수 있겠습니다. 하지만 수용장이란 용어는 조금 다른 의미로 사용될때도 있어요. 이전 계층에서 뉴런의 수용장은 컨볼루
션 커널 크기를 말하고, 입력 이미지에서의 모든 활성들의 수용장은 (여러 합성곱 계층을 거쳐 구한) 뉴련 값에 영향을 미치는 입
력 이미지의 공간적 크기를 말합니다.
(다시 말하면 수용장이 이전 층 커널의 크기, 출력 값 하나에 영향을 주는 입력 공간의 크기 두가지 의미를 갖는다는 걸로 보임)
수용장 Receptive Fields
수용장 Receptive Fields
▪ 여러분들이 이 그림을 통해 알수 있는건 우리가 합성곱 계층을 쌓을때 입력 이미지에서의 수용장(출력에 영향을 미치는 입력의
영역)은 합성곱 계층의 갯수가 늘어날 수록 선형적으로 커지게 됩니다. 그런데 이러면 1024 x 1024 크기의 고해상도 이미지를 다
룬다고 할때 출력 텐서 값들은 하나하나가 고해상도 이미지의 넓은 영역을 반영하게 되다보니 문제가 생길수 있어요.
수용장 Receptive Fields
▪ 출력 값 하나가 입력의 넓은 영역을 반영할수 있도록 하려면, 합성곱 계층을 엄청 많이 쌓아야 되겠죠. 특히, 1024 x 1024 크기
이미지를 가지고 3 x 3 컨볼루션 필터를 사용하면 수용장에는 2픽셀씩만 들어오게 되겠죠. 원본 입력 이미지로 최종 출력을 만드
는데 까지 500개의 합성곱 계층이 필요할겁니다. 그러면 입력 이미지에서 수용장이 너무 커지게 되겠죠. 신경망은 이미지 전체의
전역적인 정보가 필요한 경우에 이게 좋을 걸수도 있습니다.
▪ 이 문제를 해결하기 위한 방법은 합성곱 연산에 다른 하이퍼 파라미터를 추가하면 되는데, 잠깐 여기에 질문이 들어왔네요. 질
문 내용이 "제로 패딩은 신경망에 아무런 정보를 주는것 처럼 보이지는 않습니다"인데, 재로 패딩은 신경망에 정보를 추가한다기
보다는 실제로는 네트워크 내부에서 출력이 작아지는걸 방지하기 위한거고 그걸 편하게 표기하다보니 넣은거에요.
수용장 Receptive Fields
▪ 실제로 제로패딩으로 신경망에 정보를 주는 방법이 있긴하지만, 그렇게 된다면 평행이동 불변성 translation invariant을 훼손시
킬수 있습니다. 합성곱 연산에서는평행이동 불변성이 있어야 해요. 그리고 여러분이 이미지를 시프팅하면서 평행이동 등변동?이
지켜져야하는데(translation equivariance), 입력 이미지를 시프팅 하면은, 그에 따른 출력들도 시프트되면서 얻어야 해요.
* 평행이동 등변동은 컨볼루션 필터가 평행이동하면서 입력이 바뀌는 만큼 출력도 변한다는 원칙, 규칙같은걸 말하는걸로 보임.
수용장 Receptive Fields
▪ 하지만 합성곱 계층에 제로 패딩이 추가된다면, 신경망이 영 패딩 경계를 제거하도록 합성곱 필터를 학습시키다보니, 합성곱 필
터는 영인 행을 찾아 이미지가 어디있는지 찾을수 있게 될거에요. 그래서 제 생각에는 제로 패딩을 추가하는건 합성곱 연산에 있
어 평행이동 등변동성을 훼손할 수 있고, 입력 이미지가 어디있는지 잠재적으로 학습하게 만듭니다.
수용장 Receptive Fields
▪ 저도 이게 버그인지 특징인지는 모르겠으나, 이런 것들이 제로 패딩을 신경망에 추가할때 생기는 영향이라고 보시면 될 것 같
아요.
수용장 Receptive Fields
▪ 다시 돌아와서 우리가 매우 큰 수용장을 다뤄야하는 문제가 있었는데, 그 때문에 아주 많은 합성곱 계층을 쌓았었습니다. 하지
만 다른 하이퍼파라미터를 합성곱 계층에 추가하여 이걸 해결 할 수 있는 방법이 있는데, 스트라이드 stride 입니다. 다시 7 x 7
크기의 입력을 3 x 3 크기의 합성곱 필터 예제로 돌아가서 봅시다.
스트라이드를 이용한 합성곱 연산 Strided Convolution
▪ 일단 스트라이드를 2로 한다고 할께요. 스트라이드를 2로한다는건 합성곱 필터가 가능한 2자리씩 이동한다는 뜻입니다. 그래서
시작 자리인 왼쪽 코너에서
스트라이드를 이용한 합성곱 연산 Strided Convolution
▪ 한 자리는 뛰어넘고, 스킵하고 스트라이드가 2니까 한번 더 가면
스트라이드를 이용한 합성곱 연산 Strided Convolution
▪ 입력에서 세 자리에서만 합성곱 연산을 수행하면 됩니다. 스트라이드를 2로 했으니까요. 그럼 출력은 상당히 다운 샘플되었어
요. 그래서 신경망에 스트라이드를 추가한다는 말은 수용장을 훨씬 빠르게 만들수가 있겠죠. 스트라이드를 2로 지정하면 각 레이
어에서 수용장이 두배로 커지거든요.
스트라이드를 이용한 합성곱 연산 Strided Convolution
▪ 이건 합성곱 연산의 출력 형태를 계산하는 식인데, 입력의 크기가 W, 필터의 크기가 K, 패딩이 P, 그리고 스트라이드가 S 일때
출력의 사이즈는 위와 같이 구할수 있어요. 아마 저 식을 보면 사이즈를 스트라이드로 나누는걸 볼수 있을텐데, 나눈 결과가 정수
가 아닌경우 어떻게 되는지 궁금할 수도 있어요. 저 부분은 스트라이드로 볼수 없는 부분이다보니. 어떤 사람들은 별도로 구현해
서 반영시키는 경우도 있지만 일반적으로는 나머지 부분은 잘라버기도 합니다. 답은 없고 어떻게 활용할지에 따라 생각하면될거
같아요.
스트라이드를 이용한 합성곱 연산 Strided Convolution
▪ 저 부분은 스트라이드로 볼수 없는 부분이다보니. 어떤 사람들은 별도로 구현해서 반영시키는 경우도 있지만 일반적으로는 나
머지 부분은 잘라버기도 합니다. 답은 없고 어떻게 활용할지에 따라 생각하면될거같아요. 하지만 우리는 그러지는 않을건데 스트
라이드가 항상 나눠지는 경우로 합성곱 계층을 만들어서 할겁니다.
스트라이드를 이용한 합성곱 연산 Strided Convolution
감사합니다

More Related Content

Similar to [컴퓨터비전과 인공지능] 7. 합성곱 신경망 1

[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Othersjdo
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16jdo
 
Xception mhkim
Xception mhkimXception mhkim
Xception mhkimKIMMINHA3
 
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수jdo
 
14장 입자 시스템과 스트림 출력.pptx
14장 입자 시스템과 스트림 출력.pptx14장 입자 시스템과 스트림 출력.pptx
14장 입자 시스템과 스트림 출력.pptxHolyTak
 
[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2jdo
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNetjdo
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)Sukwoo Lee
 
The fastalgorithmfordeepbeliefnets
The fastalgorithmfordeepbeliefnetsThe fastalgorithmfordeepbeliefnets
The fastalgorithmfordeepbeliefnetsLee Gyeong Hoon
 
08. spectal clustering
08. spectal clustering08. spectal clustering
08. spectal clusteringJeonghun Yoon
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagationJinSooKim80
 
[Paper Review] Visualizing and understanding convolutional networks
[Paper Review] Visualizing and understanding convolutional networks[Paper Review] Visualizing and understanding convolutional networks
[Paper Review] Visualizing and understanding convolutional networksKorea, Sejong University.
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
[0618 석재호]용기에담긴액체를위한굴절매핑
[0618 석재호]용기에담긴액체를위한굴절매핑[0618 석재호]용기에담긴액체를위한굴절매핑
[0618 석재호]용기에담긴액체를위한굴절매핑Jaeho Seok
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)Lee Seungeun
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기라한사 아
 
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 풀이
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 풀이KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 풀이
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 풀이NAVER D2
 

Similar to [컴퓨터비전과 인공지능] 7. 합성곱 신경망 1 (20)

[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
 
Xception mhkim
Xception mhkimXception mhkim
Xception mhkim
 
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
 
14장 입자 시스템과 스트림 출력.pptx
14장 입자 시스템과 스트림 출력.pptx14장 입자 시스템과 스트림 출력.pptx
14장 입자 시스템과 스트림 출력.pptx
 
[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
 
HistoryOfCNN
HistoryOfCNNHistoryOfCNN
HistoryOfCNN
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
 
The fastalgorithmfordeepbeliefnets
The fastalgorithmfordeepbeliefnetsThe fastalgorithmfordeepbeliefnets
The fastalgorithmfordeepbeliefnets
 
08. spectal clustering
08. spectal clustering08. spectal clustering
08. spectal clustering
 
CNN
CNNCNN
CNN
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagation
 
[Paper Review] Visualizing and understanding convolutional networks
[Paper Review] Visualizing and understanding convolutional networks[Paper Review] Visualizing and understanding convolutional networks
[Paper Review] Visualizing and understanding convolutional networks
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
07. PCA
07. PCA07. PCA
07. PCA
 
[0618 석재호]용기에담긴액체를위한굴절매핑
[0618 석재호]용기에담긴액체를위한굴절매핑[0618 석재호]용기에담긴액체를위한굴절매핑
[0618 석재호]용기에담긴액체를위한굴절매핑
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기
 
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 풀이
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 풀이KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 풀이
KAIST RUN 교내 ACM-ICPC 모의대회 Advanced division 풀이
 

More from jdo

[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리jdo
 
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수jdo
 
[리트코드 문제 풀기] 연결 리스트
[리트코드 문제 풀기] 연결 리스트[리트코드 문제 풀기] 연결 리스트
[리트코드 문제 풀기] 연결 리스트jdo
 
[리트코드 문제 풀기] 배열
[리트코드 문제 풀기] 배열[리트코드 문제 풀기] 배열
[리트코드 문제 풀기] 배열jdo
 
[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화jdo
 
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제jdo
 
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부jdo
 
Titanic kaggle competition
Titanic kaggle competitionTitanic kaggle competition
Titanic kaggle competitionjdo
 
1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식jdo
 
1-1. 공학과 수학에서 벡터/ 내적 직교
1-1. 공학과 수학에서 벡터/ 내적 직교1-1. 공학과 수학에서 벡터/ 내적 직교
1-1. 공학과 수학에서 벡터/ 내적 직교jdo
 
소형 무인 비행체 5장-선형 모델 설계
 소형 무인 비행체 5장-선형 모델 설계 소형 무인 비행체 5장-선형 모델 설계
소형 무인 비행체 5장-선형 모델 설계jdo
 
소형 무인 비행체 4장-힘과 모멘트
소형 무인 비행체 4장-힘과 모멘트소형 무인 비행체 4장-힘과 모멘트
소형 무인 비행체 4장-힘과 모멘트jdo
 
소형 무인 비행체 3장-기구학과 동역학
소형 무인 비행체 3장-기구학과 동역학소형 무인 비행체 3장-기구학과 동역학
소형 무인 비행체 3장-기구학과 동역학jdo
 
소형 무인 비행체 2장-좌표계
소형 무인 비행체 2장-좌표계소형 무인 비행체 2장-좌표계
소형 무인 비행체 2장-좌표계jdo
 
소형 무인 비행기 1장-소개
소형 무인 비행기 1장-소개소형 무인 비행기 1장-소개
소형 무인 비행기 1장-소개jdo
 
소형 무인 비행기-서론
소형 무인 비행기-서론소형 무인 비행기-서론
소형 무인 비행기-서론jdo
 
Improved techniques for grid mapping with rao blackwellized particle filters 번역
Improved techniques for grid mapping with rao blackwellized particle filters 번역Improved techniques for grid mapping with rao blackwellized particle filters 번역
Improved techniques for grid mapping with rao blackwellized particle filters 번역jdo
 
Slam algorithms
Slam algorithmsSlam algorithms
Slam algorithmsjdo
 
영상 기반 SLAM 알고리즘 시험
영상 기반 SLAM 알고리즘 시험영상 기반 SLAM 알고리즘 시험
영상 기반 SLAM 알고리즘 시험jdo
 
논문-특징점 기반 단안 영상 SLAM의 최적화 기법 및 필터링 기법의 성능 연구
논문-특징점 기반 단안 영상 SLAM의 최적화 기법 및 필터링 기법의 성능 연구논문-특징점 기반 단안 영상 SLAM의 최적화 기법 및 필터링 기법의 성능 연구
논문-특징점 기반 단안 영상 SLAM의 최적화 기법 및 필터링 기법의 성능 연구jdo
 

More from jdo (20)

[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
 
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
[컴퓨터비전과 인공지능] 5. 신경망 2 - 신경망 근사화와 컨벡스 함수
 
[리트코드 문제 풀기] 연결 리스트
[리트코드 문제 풀기] 연결 리스트[리트코드 문제 풀기] 연결 리스트
[리트코드 문제 풀기] 연결 리스트
 
[리트코드 문제 풀기] 배열
[리트코드 문제 풀기] 배열[리트코드 문제 풀기] 배열
[리트코드 문제 풀기] 배열
 
[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화
 
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
 
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
 
Titanic kaggle competition
Titanic kaggle competitionTitanic kaggle competition
Titanic kaggle competition
 
1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식
 
1-1. 공학과 수학에서 벡터/ 내적 직교
1-1. 공학과 수학에서 벡터/ 내적 직교1-1. 공학과 수학에서 벡터/ 내적 직교
1-1. 공학과 수학에서 벡터/ 내적 직교
 
소형 무인 비행체 5장-선형 모델 설계
 소형 무인 비행체 5장-선형 모델 설계 소형 무인 비행체 5장-선형 모델 설계
소형 무인 비행체 5장-선형 모델 설계
 
소형 무인 비행체 4장-힘과 모멘트
소형 무인 비행체 4장-힘과 모멘트소형 무인 비행체 4장-힘과 모멘트
소형 무인 비행체 4장-힘과 모멘트
 
소형 무인 비행체 3장-기구학과 동역학
소형 무인 비행체 3장-기구학과 동역학소형 무인 비행체 3장-기구학과 동역학
소형 무인 비행체 3장-기구학과 동역학
 
소형 무인 비행체 2장-좌표계
소형 무인 비행체 2장-좌표계소형 무인 비행체 2장-좌표계
소형 무인 비행체 2장-좌표계
 
소형 무인 비행기 1장-소개
소형 무인 비행기 1장-소개소형 무인 비행기 1장-소개
소형 무인 비행기 1장-소개
 
소형 무인 비행기-서론
소형 무인 비행기-서론소형 무인 비행기-서론
소형 무인 비행기-서론
 
Improved techniques for grid mapping with rao blackwellized particle filters 번역
Improved techniques for grid mapping with rao blackwellized particle filters 번역Improved techniques for grid mapping with rao blackwellized particle filters 번역
Improved techniques for grid mapping with rao blackwellized particle filters 번역
 
Slam algorithms
Slam algorithmsSlam algorithms
Slam algorithms
 
영상 기반 SLAM 알고리즘 시험
영상 기반 SLAM 알고리즘 시험영상 기반 SLAM 알고리즘 시험
영상 기반 SLAM 알고리즘 시험
 
논문-특징점 기반 단안 영상 SLAM의 최적화 기법 및 필터링 기법의 성능 연구
논문-특징점 기반 단안 영상 SLAM의 최적화 기법 및 필터링 기법의 성능 연구논문-특징점 기반 단안 영상 SLAM의 최적화 기법 및 필터링 기법의 성능 연구
논문-특징점 기반 단안 영상 SLAM의 최적화 기법 및 필터링 기법의 성능 연구
 

Recently uploaded

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP Korea
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP Korea
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 

Recently uploaded (8)

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 

[컴퓨터비전과 인공지능] 7. 합성곱 신경망 1

  • 1. 컴퓨터 비전을 위한 합성곱 신경망 Convolution Networks 도정찬 Michigan Online, Justin Johnson, Computer Vision, 2021. 02. 08
  • 2. 지난시간 복습 : 역전파 ▪ 이제 7번째 강의로 오늘은 합성곱 신경망에 대해서 이야기해봅시다. 이 신경망 모델로 이미지를 전방향으로 나아가면서 처리할 거에요. 지난 시간 강의를 잠깐 복습해보면 역전파 알고리즘에 대해서 배웠었죠. 이 알고리즘으로 복잡한 계산그래프에서도 그라 디언트를 계산할수 있었어요.
  • 3. 지난시간 복습 : 역전파 ▪ 그리고 계산 그래프라는 자료 구조 덕분에 일일히 많은 양의 종이나 복잡한 수식들을 정리할 공간이 따로 필요하지 않고 쉽게 계산 할수 있었습니다. 대신 역전파라고 부르는 그래프를 전방향으로가서 출력을 계산한 후 되돌아오는 과정에서 그라디언트들 을 계산하는 복잡한 알고리즘을 통해서 그라디언트를 구할수가 있었죠.
  • 4. 지난시간 복습 : 역전파 ▪ 그리고 역전파 알고리즘을 세밀하게 들어가서 지역적으로도 보았었는데요. 계산 그래프 안에 함수를 추가하거나 사용하기 위 해서 작은 몇몇 연산자들을 이용해서 구현할수 있었어요. 그런 함수들로 입력이 주어져 전방향으로 흘러가면서 출력이 어떻게 계 산되어 나오는지도 보았습니다. ▪ 그리고 역방향으로 주어진 업스트림 그라디언트(비용에 대한 노드 출력의 기울기)가 주어질때 입력에 대한 그라디언트(다운스 트림 그라디언트)가 어떻게 계산되는지도 보았었어요.
  • 5. 지난시간 복습 : 역전파 ▪ 이제 새로운 함수를 계산 그래프로 넣으려면, 그 함수를 지난시간에 이야기한 모듈화된 API에 넣으면 됩니다. 그리고 지난 시간 에 몇가지 문제들을 이야기했는데, 이 강의에서 그동안 선형 분류기에 대해 여러번 이야기를 했었죠. 그리고 이제는 완전연결 신 경망 분류기 fully connected neural network classifier도 익숙해졌을 텐데,
  • 6. 지난시간 복습 : 역전파 ▪ 완전 연결 신경망 분류기는 유연해서 수 많은 다양한 함수들처럼 동작할수 있다보니 아주 유용한 모델이었엇죠. (could flexibly represent many different function을 *학습에 따라* 다양한 역활, 함수 연산을 할수 있다는 것으로 이해함) 하지만 선형 분류기나 완전 연결 신경망 분류기 둘다 이미지와 같은 2차원 공간적 구조를 입력으로 받을때는 안좋습니다.
  • 7. 지난시간 복습 : 역전파 ▪ 하지만 선형 분류기나 완전 연결 신경망 분류기 둘다 이미지와 같은 2차원 공간적 구조를 가진 데이터를 입력으로 받을때는 좋 지 않습니다. 왜냐면 이런 분류기가 이미지를 입력으로 받을때, 이미지는 공간적인 구조도 있지만 각 점마다 RGB 색상값도 가지 고 있죠. 이런 분류기에 넣으려고 이미지를 길다란 벡터로 펴버린다면 flattening 공간적인 정보들이 전부다 사라지게 됩니다.
  • 8. 지난시간 복습 : 역전파 ▪ 그래서 그동안 우리가 배운 선형 분류기나 완전 연결 신경망은 이미지 데이터를 처리하는데 적합하지는 않아요. 그래서 여러분 이 머신 러닝을 만들때는 입력 데이터의 구조가 갖는 이점을 활용할수 있는 모델을 만들어야 효과적으로 처리할수 있습니다.
  • 9. 지난시간 복습 : 역전파 ▪ 그럼 입력 이미지의 공간적 구조를 반영 시킬수 있는 방법은 어떻게 보면 간단한건데, 일단 지금까지 신경망을 만들려고 계산 그래프를 만들었었죠. 그러니까 여기서 할 일은 이미지를 처리할수 있는 혹은 공간적 구조를 처리할수 있는 새로운 연산자를 정 의 하면 됩니다. ▪ 제가 오늘 할 얘기는 신경망 안에서 2차원 공간을 가진 데이터를 처리할수 있는 새로운 연산자들을 소개하고자 합니다.
  • 10. ▪ 그동안 우리가 완전 연결 신경망에 대해 이야기하면서 완전 연결신경망의 두 기본적인 구성요소는 익숙해지셨죠. 이 완전 연결 신경망이라는 이름은 입력 벡터와 행렬곱을 하여 출력 벡터를 만들어서 생긴 이름인데, 완전 연결 신경망의 다른 중요한 요소로 는 비선형 활성화 함수 non linear activation function 였죠. ▪ 이 슬라이드에선 ReLU 활성화 함수를 보여주고 있는데, 이제 완전 연결신경망에서 합성곱 신경망 convolution neural network 로 넘어가면서, 계산그래프 안에서 사용할수 잇는 추가적인 연산자들을 살펴봅시다. 합성곱 신경망의 구성 요소들
  • 11. ▪ 제가 오늘 얘기할 이 3가지 연산자들 이용해서 합성곱 신경망을 만들수가 있는데, 합성곱 계층 convolution Layers, 풀링 계층 Pooling Layers, 정규화 계층 Normalization 계층에 대해서 이야기할겁니다. 합성곱 신경망의 구성 요소들
  • 12. 합성곱 신경망의 구성 요소들 ▪ 우선 입력의 공간 정보를 잃어버리던 완전 연결 계층의 개념을 확장하여, 비슷한 역활을 하는 합성곱 계층이 어떻게 2차원 입력 들을 학습할수 있는지 봅시다.
  • 13. ▪ 일단 완전 연결 계층이 어떻게 순방향으로 처리하는지부터 돌아가서 봅시다. 이 계층에서 순방향으로 나아가면서하는 어떤 동 작을 볼건데, 오늘 강의에서는 순전파에 대해서만 얘기하겠습니다. 지난 시간에 봤었던 어떻게 그라디언트를 계산할지는 여러분 이 어떻게 신경망을 만드느냐에 달려있죠. 일단 오늘은 순전파 위주로만 이야기 하겠습니다. 완전 연결 계층 Fully-Connected Layer
  • 14. 완전 연결 계층 Fully-Connected Layer ▪ 완전 연결 계층이 어떻게 동작하는지를 간단히 얘기를 하자면 순전파 시에 완전 연결 계층은 입력 벡터를 받습니다. 그런데 이 벡터가 32 x 32 x 3의 cifar-10 이미지를 쭉 펼친거라 3072 스칼라 값으로 이뤄졌다고 할께요. 그러면 완전 연결 계층에서 순전파 연산은 그저 이 벡터를 가중치 행렬과 곱해서 출력 벡터를 만드는게 끝입니다. ▪ 이제 합성곱 계층의 경우, 합성곱 계층도 입력을 받아서 어떤식으로든 가중치로 연산을 하고, 동일한 타입의 출력을 만들어 냅 니다.
  • 15. ▪ 이제 합성곱 계층이 3차원 텐서를 입력으로 받을게요. 이 3차원 텐서의 볼륨은 아까처럼 펼쳐진게 아니고, 원래의 cifar-10이미 지를 그대로 합성곱 신경망의 첫번째 계층에서 받습니다. 합성곱 계층 Convolution Layer
  • 16. 합성곱 계층 Convolution Layer ▪ 이 신경망은 그러면 32 x 32이 3개가 있는 3차원 이미지, cifar 10 이미지를 가지고 연산을 하는데, 3개라는 숫자는 입력 텐서 의 채널, 깊이 차원의 수를 말해요. cifar 10 이미지의 경우 빨간색 채널, 파란색 채널, 녹색 채널로 3채널을 가지고 있어요. 그리고 여기서 32 x 32는 각각 3차원 텐서의 가로와 세로 길이구요.
  • 17. 합성곱 계층 Convolution Layer ▪ 이제 입력 텐서가 3차원 공간적 구조를 가지고 있으니, 합성곱 계층 그러니까 우리의 가중치 행렬도 3차원 공간적 구조를 가 지고 있습니다. 이 가중치 행렬을 합성곱 계층의 용어로 사용될때 필터 filter/마스크 mask라고도 부르고 있는데 이건 차원에 상 관 없는 이름입니다.
  • 18. 합성곱 계층 Convolution Layer ▪ 이제 한번 예시를 봅시다. 3 x 5 x 5의 합성곱 필터를 가지고 있다고 할게요. 그릭 h이 작은 합성곱 필터를 입력 이미지의 모든 (공간적) 위치에 놓고 슬라이딩을 시키면서 또다른 3차원 공간을 가지는 출력을 계산하겠습니다.
  • 19. 합성곱 계층 Convolution Layer ▪ 여기서 주의해야할 점으로 입력 텐서의 형태와 합성곱 필터의 형태사이에 한가지 제약사항이 있습니다. 입력 텐서의 깊이/채널 의 수와 합성곱 필터의 깊이/채널의 수가 같아야 해요. 위 예시에는 입력 이미지와 합성곱 필터의 채널이 둘다 3개가 있죠. 그래 서 합성곱 연산을 수행하면서 입력 텐서의 모든 깊이 채널들을 한번에 연산됩니다.
  • 20. 합성곱 계층 Convolution Layer ▪ 이번에 합성곱 연산 예시들을 볼건데, 다음 강의에서도 다룰것 같지만 오늘의 목표가 컨볼루션이다보니 컨볼루션으로 어떻게 입력 텐서의 깊이 공간을 한번에 연산하고, 출력을 계산하는지를 이야기할겁니다.
  • 21. 합성곱 계층 Convolution Layer ▪ 그래서 우리가 할일은 이 작은 5 x 5의 필터 3개로 이걸 입력 이미지 안에 집어 넣고, 3 x 5 x 5 필터를 입력 이미지의 3 x 5 x 5 의 원소들과 매치시킵니다. 입력 텐서의 공간적 위치에 필터가 매치되었을때 필터와 입력 텐서의 해당되는 원소들의 내적을 계산 할수가 있어요. ▪ 그리고 이 내적은 이전에 완전 연결 신경망에서 행렬의 한 행과 벡터 전체의 내적을 구했던것과 달리 하나의 필터와 입력 텐서 의 지역적인 공간 일부를 내적시켜 구한게 됩니다.
  • 22. 합성곱 계층 Convolution Layer ▪ 이 예시에서는 입력 이미지의 3 x 5 x 5 크기의 일부와 동일한 크기의 필터로 75개의 원소들의 내적을 구하였습니다. 그리고 대 부분의 머신러닝 모델처럼 편향 bias이 추가될수도 있어요. 가중치(계수)를 계산할때 편향항이 사용됩니다. ▪ 하지만 이 슬라이드에서는 컨볼루션/합성곱을 이해시키기 위함이다보니 편향항을 생략하였지만, 기본적으로는 편향이 있다는 걸 기억해야 합니다.
  • 23. 합성곱 계층 Convolution Layer ▪ 필터가 한 지점에 있고, 그리고 입력과 내적하여 하나의 스칼라 값을 구하였는데, 이 값은 얼마나 이 입력의 위치가 필터와 잘 맞았는지 정도를 알려주는 값입니다.
  • 24. ▪ 그렇게 출력 텐서의 한 원소를 계산했고, 이 과정을 입력 텐서의 모든 (컨볼루션 연산이) 가능한 위치에다가 입력 필터를 슬라 이드시켜 수행하면 됩니다. 그러면 각 위치에서의 출력들은 컨볼루션이 해당 위치에서 입력의 일부와 가중치(필터) 텐서의 내적 으로 구해지겠죠. ▪ 이 예시에서는 3 x 32 x 32의 입력과 3 x 5 x 5의 필터가 있다 보니 합성곱 연산이 어떻게 되는지 상상해보면 1 x 28 x 28의 격 자 형태의 결과물, 활성 지도 activation map가 나오게 됩니다. 여기서 활성 지도는 내적으로 구한 하나의 수치값들로 이뤄집니다. 합성곱 계층 Convolution Layer
  • 25. ▪ 그래서 하나의 컨볼루션 필터/커널과 입력 텐서로 컨볼루션 한 결과로 1 x 28 x 28 형태의 출력이 나오게 됩니다. 하지만 컨볼 루션 필터 하나만 가지고는 부족하죠. 그래서 컨볼루션 계층에서는 입력 이미지와 여러개의 서로 다른 (가중치를 가진) 필터들을 사용합니다. 합성곱 계층 Convolution Layer
  • 26. ▪ 그러면 이제 이미지를 두 번째 합성곱 필터로 컨볼루션 해봅시다. 여기서 녹색으로 나오고 있는데, 다른 가중치들을 가지고 있 어요. 이 녹색 합성곱 필터로 (똑같이) 컨볼루션, 3 x 5 x 5 컨볼루션 필터로 입력 이미지에서 가능한 모든 위치에서 슬라이딩하며, 한 결과 두 번째 1 x 28 x 28 형태의 출력 평면, 활성화 맵 activation map이 만들어 졌습니다. 합성곱 계층 Convolution Layer
  • 27. ▪ 이 출력 평면들을 신경망에서는 활성 지도 activation map이라고 부르는데, 2차원 지도들이 입력의 각 위치에서 이 층의 합성곱 필터가 얼마나 반응하였느냐를 보여주거든요. 당연히 2개의 필터만을 쓸게 아니라 더 많은 개수의 필터를 사용할건데, 필터의 갯 수도 하이퍼 파라미터가 됩니다. 합성곱 계층 Convolution Layer
  • 28. ▪ 이 예제의 경우 6개의 합성곱 필터로 입력 텐서를 컨볼루션 하고 있습니다. 바닥에 6개의 합성곱 필터들이 있는대 각 필터의 크 기/형태는 3 x 5 x 5 입니다. 이 6개의 3차원 필터들을 하나의 4차원 텐서로 만들수가 있는데, 그러면 6 x 3 x 5 x 5가 됩니다. 이 제 이 4차원 텐서는 3차원 필터가 6개 있다고 보시면 됩니다. 합성곱 계층 Convolution Layer
  • 29. ▪ 그리고 각 필터로 이미지를 컨볼루션 하면, 각 필터에 대한 활성 지도를 얻을 것이고, 모든 활성 지도들을 연결시켜 6 x 28 x 28 사이즈/형태의 3차원 텐서 하나가 만들어 집니다. ▪ 그리고 이거를 또다른 입력 이미지로 볼수가 있어요. 왜냐면 합성곱 계층은 어떤 깊이든, 어떤 가로, 세로 폭을 가지던 간에 3차 원 텐서를 다른 3차원 텐서로 변환시키거든요. 대신 가로, 세로가 바뀌더라도 공간적 구조(3차원이 그대로)는 변하지않고 보존됩 니다. 합성곱 계층 Convolution Layer
  • 30. ▪ 물론 제가 합성곱 계층에는 항상 편향이 존재하고 있고, 완벽하게 정리하자면 이렇게 되겠습니다. 한 합성곱 필터는 편향 하나 를 가지고 있어, 이 예제에는 합성곱 필터가 6개다 보니 편향은 값이 6개인 벡터가 되겠습니다. 그리고 이 편향의 원소들은 각 특 징 지도/활성 지도의 상수 값 오프셋으로 사용되요. 합성곱 계층 Convolution Layer
  • 31. 합성곱 계층 Convolution Layer ▪ 그래서 출력들은 28 x 28의 격자로 봐도 됩니다. 지금까지 컨볼루션 계층의 출력에 대해 2가지 방법으로 다뤘습니다. 하나는 활 성 지도들로 보는건데, 출력은 여러개의 활성 지도들로 이루어져 있고, 각 활성 지도는 입력 이미지를 필터가 어떻게 반응하는지 를 보여준다고 했었죠. 그래서 합성곱 계층의 출력(의 공간적 구조)를 활성 지도로 보는게 유용하다고 볼수 있습니다.
  • 32. 합성곱 계층 Convolution Layer ▪ 합성곱 계층의 출력을 보는 다른 방법은 그 출력을 28 x 28의 그리드/격자로 보면 됩니다. 이 그리드는 입력 텐서의 그리드로 구하였었고, 그리드의 각 지점(한 점)은 합성곱 계층이 계산하여 구한 특징 벡터들가 됩니다. 이 예제에서는 차원이 6인 특징 벡터 가 만들어 졌고, 입력 텐서가 어떻게 생겼는지 알 수 있어요.
  • 33. 합성곱 계층 Convolution Layer ▪ 그래서 출력을 보는 두 방법이 그리드의 한 점(벡터)으로 나눌지, 개별 특징지도/활성 지도로 나누는 것으로 단순한 차이로 보 일 수 있는데, 어떻게 볼지는 여러분들은 컨볼루션을 보는 상황에 따라 고려하여야 합니다. ▪ 특징 지도들을 모으는게 유용한 상황일 수도 있고, 그리드를 구성하는 특징 벡터들을 모으는게 유용한 경우도 있겠죠. 합성곱 계층의 출력을 어떻게 다룰지 생각해 보면서 어쩔때는 둘다 필요할 때도 있어요.
  • 34. 합성곱 계층 Convolution Layer ▪ 그리고 실제 컨볼루션 연산을 수행할때 배치 이미지(이미지 여러개)를 가지고 하는 경우가 많습니다. 이미지 하나를 주고 3차원 텐서 하나로 컨볼루션을 하는 경우보다요. 그래서 이미지 여러개를 하나의 4차원 텐서로 만들수가 있어요. 보통 합성곱 계층에 서 처리되는 이미지와 상관없는(이미지에 독립인) 배치 차원(개수)이 맨 앞에 옵니다.
  • 35. ▪ 그래서 합성곱 계층의 일반적인 형태는 이렇게 생겼습니다. 이 계층에서는 4차원 입력을, 4차원 텐서를 입력으로 받고, 이 4차 원 텐서가 배치 차원(배치 개수)로 n개로 미니 배치 데이터의 개수입니다. 그리고 cn은 각 입력 이미지의 채널이고 각 이미지들은 H x W로 2개의 차원을 가지고 있으며, 데이터의 크기로 보면 되겠습니다. 합성곱 계층 Convolution Layer
  • 36. ▪ 출력은 항상 배치 차원(데이터 개수)는 같습니다. 왜냐면 합성곱 계층에서는 배치 데이터를 따로따로(독립적으로) 연산을 수행 하거든요. 그리고 출력에서 채널 수는 합성곱 계층의 필터 개수만큼 채널들이 만들어지다보니, 입력 때의 채널 개수와 달라질 수 있습니다. 그 다음에 H와 W도 합성곱 연산으로 인해 달라지게 됩니다. 합성곱 계층 Convolution Layer
  • 37. ▪ 합성곱 계층은 3차원 혹은 4차원 텐서를 입력으로 받아, 출력으로 4차원 텐서를 만들다보니 여러개의 합성곱 신경망을 서로서 로(end to end) 쌓는 경우도 생각해볼수도 있습니다. 이렇게 만들면 신경망에는 더이상 완전 연결 계층이 없지만, 여기있는 3개 의 합성곱 계층으로 이뤄진 합성곱 신경망의 예시를 봅시다. 합성곱 계층들을 쌓기 Stacking Convolutions
  • 38. ▪ 그러면 출력은 우선 28 x 28 크기의 활성지도를 갖는데, 깊이 채널은 첫 합성곱 계층의 필터가 6개이므로 6이 되고, 이를다른 3 차원 텐서들에도 반복해서 적용하므로, 그러니까 모든 이미지에 합성곱 연산을 수행해서 N x 6 x 28 x 28 형태의 출력이 나오고 다음 합성곱 계층의 입력으로 사용됩니다. 합성곱 계층들을 쌓기 Stacking Convolutions
  • 39. ▪ 이제 두번째 합성곱 연산을 보시면, 가중치 행렬이 10 x 6 x 3 x 3의 형태를 가지고 있어요. 이는 합성곱 필터가 10개가 있는데, 각 합성곱 필터가 6개의 채널을 가지고 있으며, 한 필터당의 공간적 사이즈가 3 x 3이 되겠죠. 그래서 N x 10 x 26 x 26의 출력을 만들어 낼거고, 이런 식으로 합성곱 계층을 계속 쌓겠습니다. 합성곱 계층들을 쌓기 Stacking Convolutions
  • 40. 합성곱 계층들을 쌓기 Stacking Convolutions ▪ 물론 완전 연결 신경망을 다뤘을때 처럼 합성곱 계층들도 은닉층으로 봐도 됩니다. 그래서 여기에는 3 계층으로 이뤄진 합성곱 신경망이며 빨간게 1층, 파란게 2층, 녹색이 3층으로된 3 계층 합성곱 신경망이라고 보면 되겠습니다. 하지만 슬라이드에 나와있 는 이 합성곱 신경망은 문제점을 가지고 있는데, 혹시 뭐가 잘못됬는지 아는사람 있을까요?
  • 41. ▪ 여러개의 합성곱 계층을 바로 쌓아 서로 서로 연결된다면, 합성곱 연산이 선형 연산자 처럼 동작하게 됩니다. 한 합성곱 계층을 다른 합성곱 계층과 연결하면, 다른 합성곱 계층은 이전에 선형 분류기 예시를 떠올려보면 아니다. 완전 연결 신경망을 떠올려 보 시면, 두 완전 연결 계층을 바로 연결시켰을때 처럼 똑같은 효과/동작을 하게되요. 합성곱 계층들을 쌓기 Stacking Convolutions
  • 42. 합성곱 계층들을 쌓기 Stacking Convolutions ▪ 왜냐면 합성곱 계층들도 선형 연산자라 합성곱 계층을 직접 연결시킨, 쌓는다면 이들도 선형 연산자이다보니, 또 완전 연결 계 층을 직접 연결시켰을때 다른 하나의 가중치 행렬이 만들어지던것 처럼, 합성곱 계층도 쌓을 시 하나의 다른 합성곱 계층이 되어 버리거든요. 각 계층들이 다른 필터 크기, 채널 차원을 가지고 있더라두요.
  • 43. ▪ 그래서 합성곱 계층을 쌓더라도 여전히 합성곱 계층이고, 이런 문제를 해결하려면 완전 연결망애헛 했던 해결 방법을 사용하면 됩니다. 그 때처럼 각 선형 합성곱 연산자 사이에 비선형 활성화 함수를 넣으면 됩니다. 그럴때마다 ReLU함수를 자주 사용할거고, 3차원 텐서의 모든 원소들을 원소 단위로 처리할 거에요. 합성곱 계층들을 쌓기 Stacking Convolutions
  • 44. ▪ 질문이 들어았는데 첫째 합성곱 계층에 왜 5개의 편향항이 있는지에 대해 질문이 들어왔는데, 제가 그렇게 슬라이드를 만들었 거든요(오타내서 그렇다는 얘기로 보임). 찾아줘서 고맙네요 . 사실 이건 여러분들이 첫번째 합성곱 계층이 6개의 편향항을 갖는 데 여러분들을 테스트해보려고 했어요. 이 계층들이 어떤 역활을 하는지 잘 이해한것 같아 좋내요. 합성곱 계층들을 쌓기 Stacking Convolutions
  • 45. 합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn? ▪ 또 다른 질문을 드리자면 선형 분류기나 완전 연결 신경망을 떠올려보면, 항상 신경망의 첫번째 계층이 어떻게 학습하였는지 가중치를 시각적인 관점에서 볼수 있었었죠. 그래서 여러분들은 합성곱 신경망의 경우 어떻게 하면 시각적으로 볼수 있는지 또는 합성곱 신경망의 첫 번째 계층의 가중치를 어떻게 하면 이해할수있는 방법을 물어볼수 있을거에요.
  • 46. ▪ 지금까지 우리는 여러 차례 선형 분류기를한 클래스당 한 탬플릿으로 수많은 탬플릿들을 학습한다고 봐왔습니다. 합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
  • 47. ▪ 이걸 완전 연결 신경망으로 확장시켰고, 첫번째 계층에서 수 많은 템플릿들을 학습했어요. 하지만 아직 이 탬플릿들을 묶어 어 느 클래스에 속하는지는 까지 구하지는 않았습니다. 하지만 완전 연결 신경망에서의 각 탬플릿은 입력 이미지와 동일한 크기를 가지고 있어요. 그래서 완전 연결 신경망의 첫번째 계층은 입력 이미지와 같은 크기의 템플릿들을 여러개 학습한다고 보면 됩니 다. 합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
  • 48. ▪ 이번에 합성곱 신경망을 보면, 비슷하게 이해할수 있는데 다만 다른점은 입력 이미지와 같은 사이즈의 템플릿들을 학습하는게 아니라, 더 작고 지역적인 것들을 템플릿으로 학습합니다. 우측에 보시면 알렉스 넷이 이미지 넷을 학습해서 얻은 템플릿들을 보 여주고 있습니다. 알렉스 넷의 첫번째 계층은 합성곱 연산의 출력으로 3 x 11 x 11 형태의 합성곱 필터 64개가 나오내요. 합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
  • 49. ▪ 이 64개의 필터들을 11 x 11 크기의 RGB 이미지로 시각화 시킨 결과를 보면 알렉스 넷의 이 필터들이 뭘 학습 했는지를 이해할 수 알 수 있어요. 필터 대부분이 에지들을 학습하다보니 방향을 가진 에지 검출기 oriented edge detector 역활을 하고 있고, 수 직 에지나 수평 에지, 방향이 다르거나, 에지의 빈도가 다르거나 하는 다양한 에지들을 검출할 수 있을거에요. 그래서 이 필터들 을 지역 에지 검출기 또는 지역 웨이블릿 wavelet으로 보면 되겠습니다. 합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
  • 50. ▪ 그리고 합성곱 신경망에서 가장 눈에 띄는 다른건, 정 반대되는 색상들이죠. 이 필터를 보면 녹색 방울같은거 옆에 빨산색 방울 같은게 있는걸 볼수 있는데, 이들은 어떤 방향으로 반대되는 색상이 있는지 찾으려고 하는거에요. ▪ 그래서 특징 지도가 2번째로 하는 일은, 그러니까 활성 지도들로 첫 컨볼루션 연산을 한 후에 얻은 3차원 출력 텐서들은 입력 이미지의 모든 위치에 64개의 필터들을 적용하면서 반응하는 정도를 얻을 수 있습니다. 합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
  • 51. ▪ 혹은 합성곱 연산의 출력을 그리드 형태의 출력 벡터들의 모임의 관점으로 볼때, 알렉스 넷으로 입력 이미지의 모든 지점에 대 해 64차원의 특징 벡터를 얻을 수 있고, 이 특징 벡터의 원소들은 입력과 각 템플릿들(64차원)이 얼마나 잘 맞는지의 정도를 알려 준다고 할 수 있어요. 합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
  • 52. ▪ Hubel과 Wiesel의 고양이 실험을 다시 떠올려보면, 그들은 고양이의 시각 인지 기능이 에지의 일부 영역, 지역적인 패턴에 반응 한다고 했었죠. 합성곱 신경망의 첫번째 계층의 학습된 필터들이 비슷한 역활을 한다고 보면 되겠습니다. 합성곱 필터가 무엇을 학습할까요? What do convolutional filters learn?
  • 53. ▪ 이제 더 깊이 들어가서 합성곱 연산의 공간적 자원에서 자세히 봅시다. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 54. ▪ 입력 이미지를 가지고 와서 일단 깊이 차원(C)은 없애고, 공간 차원(H x W)만 보겠습니다. 그러면 공간적 차원의 크기가 7 x 7인 입력 이미지를 가지고 있을때, 크기가 3 x 3인 합성곱 필터로 컨볼루션을 한다고 해봅시다. 출력의 공간적 크기가 얼마나 되는지 를 보려면, 입력 이미지에서 합성곱 필터를 슬라이딩 시킬수 있는 지점이 몇개가 있는지 새면 됩니다. ▪ 여기서 하나 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 55. ▪ 둘 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 56. ▪ 셋 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 57. ▪ 넷 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 58. ▪ 다섯 해서, 가로로 5개의 지점에서 합성곱 연산을 할수 있네요. 그리고 세로 방향으로도 5만큼 내려갈수 있으니, 입력 이미지의 크기가 7 x 7인 경우 3 x 3 크기의 필터로 합성곱 연산을 할 때, 출력의 공간적 크기는 5 x 5가 됩니다. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 59. ▪ 이걸 일반화 시키면 입력의 크기가 W이고, 커널/필터의 크기가 K인 경우 출력은 W - K + 1이 된다고 할수 있어요. 왜냐면 필터 가 입력의 바깥으로 나가지 못하고, 이를 따라 슬라이딩 되다보니 입력의 모든 픽셀에서 컨볼루션을 하지 못하여 출력/피처맵의 크기가 줄어들게 됩니다. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 60. ▪ 그래서 컨볼루션 연산이 수행될때마다 공간적 차원, 입력 텐서를 줄일거고, 이게 우리가 학습시키고자 하는 신경망의 깊이에 제 약을 걸수 있어요. 예를들어 우리가 3 x 3 합성곱 연산을 하면, 매번 2 픽셀씩 줄어들겠죠. 그러면 우리가 신경망에 넣을수 있는 계층의 수에 상한이 생길거에요. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 61. ▪ 합성곱 계층을 사용할때마다 이미지의 공간적 크기가 사라진다? 이미지의 크기가 계속 줄어들다보니 사용할수 있는 계층의 수 가 제한이 되고 신경망 설계에서 문제가 될수 있습니다. (7 x 7 이미지를 3 x 3 필터로 합성곱 연산을 한다면, 합성곱 계층을 2~3 개 밖에 사용하지 못하겠죠. 더 큰 이미지라면 더 깊이 할수는 있겠지만 .. ) 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 62. ▪ 우리는 신경망 계층 갯수에 제약이 걸리길 원치 않다보니 이 문제를 해결하고자 합성곱 연산을 하기 전에 이미지 경계면에 패 딩을 추가시키는 방법을 사용합니다. 이 예시는 합성곱 연산전에 패딩을 추가시킨건데 이미지 경계면에 픽셀을 붙인거에요. 그리 고 이 값들을 모두 0으로 넣어서 이걸 제로 패딩이라고 부릅니다. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 63. ▪ 이 패딩 자리에 다른 방법들을 사용하여 값을 넣을수도 있어요. 예를들면 경계면에 있는 값을 그대로 패딩자리에 넣는다거나, 패딩의 값들이 원형이 되도록 한다거나 여러가지가 있겠지만, 합성곱 신경망을 학습시킬때 패딩으로 가장 흔하게 사용되는건 0 으로 지정하는 거에요. 이게 쉽고 잘 동작하거든요. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 64. ▪ 그래서 이 패딩도 합성곱 계층의 하이퍼 파라미터가 되겠습니다. 그래서 우리가 합성곱 계층을 만들때는 필터의 크기, 필터의 수, 그리고 패딩의 크기도 지정해주어야 해요. 이제 합성곱 계층에 패딩도 추가하여 일반화/정리해서 보자면 출력의 크기는 W - K + 1 + 2P가 됩니다. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 65. ▪ 여기서 P는 패딩의 크기로 이것도 하이퍼 파라미터인데, 일반적으로 P = (K - 1)/2로 지정합니다. 그래서 3 x 3 합성곱 필터를 사용할때 패드가 1개, 5 x 5의 합성곱 필터를 사용한다면 패드 2개가 각 면에 추가가 될거에요. 이걸 패딩이라고 부르는건 합성곱 연산을 수행할때, 출력이 기존의 입력으로 구한 것에다가(W-K+1) 추가적인 공간적 크기(+2P)를 가져서 그래요. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 66. ▪ 패딩 자체는 꼭 지정할 필요는 없는 하이퍼 파라미터이지만 합성곱 연산을 수행하면서도 공간적인 크기가 변하는걸 막아 공간 적 크기를 쉽게 정리/파악할수 있도록 도와주다보니 많이 사용되고 있습니다. 공간적 차원에서 자세히 보자 A closer look at spatial dimensions
  • 67. ▪ 합성곱 연산이 하는 일을 보기 위한 다른 방법으로 수용장 receptive filed에 대해 봅시다. 여기 보시면 입력 그리드와 출력 그리 드가 있어요. 그리고 이 출력은 합성곱 연산을 하여 만들어 지구요. 우리가 합성곱을 합성곱 필터/행렬을 이미지 전체 픽셀에 슬 라이딩 시키면서 내적을 구하는거라고 했었죠. 즉, 출력의 각 지점은 입력 이미지의 특정 픽셀을 중심으로 픽셀 주위 일부/지역적 영역을 3 x 3 크기의 합성곱 필터를 곱해 구했다고 볼수 있습니다. 수용장 Receptive Fields
  • 68. ▪ 즉, 출력의 각 지점, 원소, 값은 입력 이미지의 특정 픽셀을 중심으로 픽셀 주위 일부/지역적 영역을 3 x 3 크기의 합성곱 필터를 곱해 구했다고 볼수 있습니다. 그리고 이 3 x 3 크기의 영역을 합성곱 수용장이라고 합니다. 이건 하나의 합성곱 계층에서 볼때 직관적이고 이해하기 쉽지만, 스태킹 시킨 합성곱 계층에서 수용장들에 어떤 일이 생기는지도 같이 보는게 좋을거같아요. 수용장 Receptive Fields
  • 69. ▪ 여기서는 세 합성곱 계층의 스택과 맨 오른쪽에 출력 텐서의 한 원소를 볼수 있어요. 이 원소는 마지막 활성 지도의 3 x 3 영역 으로 부터 구하였죠. 하지만 마지막 활성 지도의 각 원소들은 2번째 활성 지도의 원소들을 합성곱하여 구하였고, 이들은 첫번째 활성지도의 원소들을 합성곱해서 구하고, 첫번째 활성지도는 입력과 첫번째 합성곱 계층의 합성곱 연산으로 구하였겠죠. 수용장 Receptive Fields
  • 70. ▪ 그래서 이거는 마지막 출력의 한 값, 녹색 부분은 입력의 넓은 공간으로부터, 여러개의 값으로 구했다고 볼수 있어요. 이 예시에 서로 3 x 3 크기의 합성곱 연산이 쌓여져 있을때, 두 합성곱 연산의 출력이 원래 입력 영역의 5 x 5 크기의 부분으로 구할수 있다 는걸 확인 할 수 있어요. (* 3x3 크기의 합성곱 필터 시 : 입력이 3 x 3인 경우 conv1_output의 1 x 1을 구함, 입력의 5 x 5인 경우 conv1_output은 3 x 3 -> conv2_output 1 x 1을 구할 수 잇음) 수용장 Receptive Fields
  • 71. ▪ 만약에 여러분들이 필터의 크기가 3 x 3인 합성곱 계층 3개를 쌓는다면, 최종 출력 1개는 입력 공간의 7 x 7 크기의 일부로 부 터 구할수 있겠습니다. 하지만 수용장이란 용어는 조금 다른 의미로 사용될때도 있어요. 이전 계층에서 뉴런의 수용장은 컨볼루 션 커널 크기를 말하고, 입력 이미지에서의 모든 활성들의 수용장은 (여러 합성곱 계층을 거쳐 구한) 뉴련 값에 영향을 미치는 입 력 이미지의 공간적 크기를 말합니다. (다시 말하면 수용장이 이전 층 커널의 크기, 출력 값 하나에 영향을 주는 입력 공간의 크기 두가지 의미를 갖는다는 걸로 보임) 수용장 Receptive Fields
  • 72. 수용장 Receptive Fields ▪ 여러분들이 이 그림을 통해 알수 있는건 우리가 합성곱 계층을 쌓을때 입력 이미지에서의 수용장(출력에 영향을 미치는 입력의 영역)은 합성곱 계층의 갯수가 늘어날 수록 선형적으로 커지게 됩니다. 그런데 이러면 1024 x 1024 크기의 고해상도 이미지를 다 룬다고 할때 출력 텐서 값들은 하나하나가 고해상도 이미지의 넓은 영역을 반영하게 되다보니 문제가 생길수 있어요.
  • 73. 수용장 Receptive Fields ▪ 출력 값 하나가 입력의 넓은 영역을 반영할수 있도록 하려면, 합성곱 계층을 엄청 많이 쌓아야 되겠죠. 특히, 1024 x 1024 크기 이미지를 가지고 3 x 3 컨볼루션 필터를 사용하면 수용장에는 2픽셀씩만 들어오게 되겠죠. 원본 입력 이미지로 최종 출력을 만드 는데 까지 500개의 합성곱 계층이 필요할겁니다. 그러면 입력 이미지에서 수용장이 너무 커지게 되겠죠. 신경망은 이미지 전체의 전역적인 정보가 필요한 경우에 이게 좋을 걸수도 있습니다.
  • 74. ▪ 이 문제를 해결하기 위한 방법은 합성곱 연산에 다른 하이퍼 파라미터를 추가하면 되는데, 잠깐 여기에 질문이 들어왔네요. 질 문 내용이 "제로 패딩은 신경망에 아무런 정보를 주는것 처럼 보이지는 않습니다"인데, 재로 패딩은 신경망에 정보를 추가한다기 보다는 실제로는 네트워크 내부에서 출력이 작아지는걸 방지하기 위한거고 그걸 편하게 표기하다보니 넣은거에요. 수용장 Receptive Fields
  • 75. ▪ 실제로 제로패딩으로 신경망에 정보를 주는 방법이 있긴하지만, 그렇게 된다면 평행이동 불변성 translation invariant을 훼손시 킬수 있습니다. 합성곱 연산에서는평행이동 불변성이 있어야 해요. 그리고 여러분이 이미지를 시프팅하면서 평행이동 등변동?이 지켜져야하는데(translation equivariance), 입력 이미지를 시프팅 하면은, 그에 따른 출력들도 시프트되면서 얻어야 해요. * 평행이동 등변동은 컨볼루션 필터가 평행이동하면서 입력이 바뀌는 만큼 출력도 변한다는 원칙, 규칙같은걸 말하는걸로 보임. 수용장 Receptive Fields
  • 76. ▪ 하지만 합성곱 계층에 제로 패딩이 추가된다면, 신경망이 영 패딩 경계를 제거하도록 합성곱 필터를 학습시키다보니, 합성곱 필 터는 영인 행을 찾아 이미지가 어디있는지 찾을수 있게 될거에요. 그래서 제 생각에는 제로 패딩을 추가하는건 합성곱 연산에 있 어 평행이동 등변동성을 훼손할 수 있고, 입력 이미지가 어디있는지 잠재적으로 학습하게 만듭니다. 수용장 Receptive Fields
  • 77. ▪ 저도 이게 버그인지 특징인지는 모르겠으나, 이런 것들이 제로 패딩을 신경망에 추가할때 생기는 영향이라고 보시면 될 것 같 아요. 수용장 Receptive Fields
  • 78. ▪ 다시 돌아와서 우리가 매우 큰 수용장을 다뤄야하는 문제가 있었는데, 그 때문에 아주 많은 합성곱 계층을 쌓았었습니다. 하지 만 다른 하이퍼파라미터를 합성곱 계층에 추가하여 이걸 해결 할 수 있는 방법이 있는데, 스트라이드 stride 입니다. 다시 7 x 7 크기의 입력을 3 x 3 크기의 합성곱 필터 예제로 돌아가서 봅시다. 스트라이드를 이용한 합성곱 연산 Strided Convolution
  • 79. ▪ 일단 스트라이드를 2로 한다고 할께요. 스트라이드를 2로한다는건 합성곱 필터가 가능한 2자리씩 이동한다는 뜻입니다. 그래서 시작 자리인 왼쪽 코너에서 스트라이드를 이용한 합성곱 연산 Strided Convolution
  • 80. ▪ 한 자리는 뛰어넘고, 스킵하고 스트라이드가 2니까 한번 더 가면 스트라이드를 이용한 합성곱 연산 Strided Convolution
  • 81. ▪ 입력에서 세 자리에서만 합성곱 연산을 수행하면 됩니다. 스트라이드를 2로 했으니까요. 그럼 출력은 상당히 다운 샘플되었어 요. 그래서 신경망에 스트라이드를 추가한다는 말은 수용장을 훨씬 빠르게 만들수가 있겠죠. 스트라이드를 2로 지정하면 각 레이 어에서 수용장이 두배로 커지거든요. 스트라이드를 이용한 합성곱 연산 Strided Convolution
  • 82. ▪ 이건 합성곱 연산의 출력 형태를 계산하는 식인데, 입력의 크기가 W, 필터의 크기가 K, 패딩이 P, 그리고 스트라이드가 S 일때 출력의 사이즈는 위와 같이 구할수 있어요. 아마 저 식을 보면 사이즈를 스트라이드로 나누는걸 볼수 있을텐데, 나눈 결과가 정수 가 아닌경우 어떻게 되는지 궁금할 수도 있어요. 저 부분은 스트라이드로 볼수 없는 부분이다보니. 어떤 사람들은 별도로 구현해 서 반영시키는 경우도 있지만 일반적으로는 나머지 부분은 잘라버기도 합니다. 답은 없고 어떻게 활용할지에 따라 생각하면될거 같아요. 스트라이드를 이용한 합성곱 연산 Strided Convolution
  • 83. ▪ 저 부분은 스트라이드로 볼수 없는 부분이다보니. 어떤 사람들은 별도로 구현해서 반영시키는 경우도 있지만 일반적으로는 나 머지 부분은 잘라버기도 합니다. 답은 없고 어떻게 활용할지에 따라 생각하면될거같아요. 하지만 우리는 그러지는 않을건데 스트 라이드가 항상 나눠지는 경우로 합성곱 계층을 만들어서 할겁니다. 스트라이드를 이용한 합성곱 연산 Strided Convolution