SlideShare a Scribd company logo
1 of 72
Download to read offline
컴퓨터 비전을 위한 합성곱 신경망 2
Convolution Networks 2
도정찬
Michigan Online, Justin Johnson, Computer Vision, 2021. 02. 08
▪ 이제 합성곱 연산의 예시를 한번 봅시다. 이 신경망에서는 cifar-10 데이터를 사용할 거라 입력은 3개의 채널에 32 x 32의 공간
적 크기 spatial size를 가지고 있다고 해요. 그리고, 필터는 10개에 5 x 5의 크기, 스트라이드는 1, 패딩은 2라고 합시다. 합성곱 계
층에서 이렇게 설정한다면, 합성곱 연산 후에 출력 텐서의 크기는 어느 정도가 될까요?
합성곱 연산 예제 Convolution Example
▪ 이전 슬라이드에서 본 공식을 사용하면 공간적 크기는 똑같이 32 x 32가 됩니다.
합성곱 연산 예제 Convolution Example
▪ 그리고 이 계층에서 학습하는 파라미터의 갯수는 몇 개가 될까요? 지금 우리는 합성곱 필터가 10개 있고, 각 필터는 3 x 5 x 5
의 크기를 가지고 있죠. 그리고 각 필터에는 편향항도 있습니다. 그래서 한 필터당 학습 가능한 파라미터는 3 x 5 x 5(가중치 필
터)+ 1(편향) = 76개가 됩니다. 그리고 필터가 10개이므로 총 학습할 파라미터는 760개가 되겠습니다.
합성곱 연산 예제 Convolution Example
▪ 다음 질문은 이 합성곱 연산에서 곱셈-덧셈 연산이 얼마나 많이 수행될까요?
합성곱 연산 예제 Convolution Example
▪ 이걸 계산하려면, 우선 여러분들은 이 출력 텐서의 형태가 10 x 32 x 32가 되는걸 알고 있죠, 그리고 출력에서 각 원소들을 계산
하기 위해서 입력 텐서와 3 x 5 x 5 크기의 필터 텐서 사이의 내적을 구했었어요. 그러면 이걸 다 곱하면(출력 텐서 개수 10 x 32
x 32와 한 출력 텐서당 내적 연산 개수 3 x 5 x 5) 합성곱 연산에서 출력 텐서를 구하기 위해 얼마나 많이 곱셈과 덧셈 연산을 수
행했는지 계산할수 있어요.
합성곱 연산 예제 Convolution Example
▪ 이건 사람들이 가끔 사용하는 방법이긴한데 1 x 1 합성곱 필터를 사용하는 예시에요. 좀 이상하게 보일수가 잇긴한데, 실제로
동작 합니다. 이 예시에서는 입력 텐서는 64 채널과 56 x 56의 공간적 차원, 크기를 가지고 있습니다. 거기다가 1 x 1의 공간적 크
기를 갖고 입력 깊이/채널 64와 동일한 채널을 같은 필터가 32개가 있다고 합시다.
▪ 32(출력 채널/필터 개수) x 64(입력 채널) x 1(필터 W) x 1(필터 H)
예시 : 1 x 1 컨볼루션
▪ 이걸로 얘기하고자하는건 (깊이 방향으로) 독립적으로 내적 연산을 하고 있다는 점인데, 이 3차원 텐서가 특징 벡터(64; 64 x 1
x 1)들의 그리드로 보시면 될거에요. 그래서 1 x 1 컨볼루션(32 x 64 x 1 x 1)을 적용시키면, 이 1 x 1 컨볼루션은 3차원 그리드의
한 그리드를 특징벡터로 보고, 이 특징벡터들과 독립적으로 계산하는 선형 계층(가중치 행렬)으로 볼수 있어요.
예시 : 1 x 1 컨볼루션
▪ 이렇게 이해를 한다면, 신경망 구조가 1 x 1 합성곱 연산 후 ReLU를 하고, 다른 1 x 1 합성곱 연산후 ReLu를 해나가는 이게 시
퀀스 형태를 이루면 신경망 내 신경망이라고 부르는 구조가 됩니다. 이건 효율적인 완전 연결 신경망이라고 부를수 있는데 입력
공간의 모든 위치에 존재하는 특징 벡터들을 독립적으로 연산을 할수 있거든요. 이건 좀 특이하게 생기기는 했지만 실제로도 보
게 될거고 가끔 사용하게 될겁니다.
예시 : 1 x 1 컨볼루션
▪ 이제 합성곱 연산에 대해서 정리하자면 이건 3차원 입력을 받고, 하이퍼 파라미터로 커널 크기, 일반적으로는 가로 세로가 같은
정방 크기를 사용합니다. 그리고 필터의 개수와 패딩, 스트라이드가 있어요. 우리가 4차원 가중치 행렬(필터 갯수 x 입력 깊이/차
원 x 필터 크기 x 필터 크기)과 하나의 편향 벡터(필터 갯수)를 가지고 있을때, 위 식에 따라서 3차원 출력을 얻을 수가 있겠습니
다.
합성곱 연산 요약 Convolution Summary
합성곱 연산 요약 Convolution Summary
▪ 이런식으로 다양한 수들을 하이퍼 파라미터로 지정 할 수 있는데, 여기에는 정방 필터를 사용한다고 하는 경우이지만 정방 필
터를 사용하지 않는 경우도 있습니다. 하지만 대부분의 경우 같은 패딩을 가로, 세로 똑같이 주는게 일반적이며, 출력이 입력과
같은 크기로 만드는 경우도 흔해요. 그리고 3 x 3 합성곱 필터에 스트라이드 1 또는 4 x 4 혹은 5 x 5 필터에 스트라이드 1도 자주
사용합니다.
▪ 합성곱 계층에서 커널의 크기를 3 x 3, 패딩을 1, 스트라이드 2는 다운 샘플링을 할때 흔하게 사용되요. 아무튼 이런 모든 예시
들이 합성곱 계층에서 자주 사용되는 파라머터들이라 보면 되겠습니다. 질문이 하나 들어왔는데, 1 x 1 합성곱 연산이 완전 연결
계층보다 좋은가요? 라는 내용이내요. 제 생각에는 1x 1의 경우 조금 다르게 이해할수 있다고 생각해요.
합성곱 연산 요약 Convolution Summary
▪ 1 x 1 합성곱 연산은 3차원 텐서에서 채널 차원의 수가 변하지만, 완전 연결 신경망은 전체 텐서를 쭉 펼치고 벡터 출력을 만드
는거라, 완전 연결 계층은 입력의 공간적 구조 spatial structure를 없애고 싶을때 사용한다고 보면 됩니다. 그래서 이건 신경망의
맨 끝에서 카테고리 점수를 만들때 주로 사용되요.
합성곱 연산 요약 Convolution Summary
▪ 반면에 1 x 1합성곱 연산은 신경망 내부에서 적절한 데이터 변환이 할때, 3차원 합성곱 활성화 지도를 가지고 있는 경우, 입력
채널의 깊이를 바꿀때 1 x 1 합성곱 계층을 사용한다고 보면 됩니다. 그래서 완전 연결 신경망과 1 x 1 합성곱 계층은 다른 방식
으로 사용된다고 할수 있어요.
합성곱 연산 요약 Convolution Summary
▪ 지금까지는 우리가 2차원 합성곱 연산에 대해 이야기 해 왔는데, 3차원 입력을 가지고 있고, 합성곱 필터를 2차원 공간의 모든
지점을 이동시키면서 사용하였었죠.
다른 합성곱 연산들 Other types of convolution
▪ 하지만 다른 타입의 합성곱 연산도 있어요. 여기 보시면 입력 데이터에 1차원 합성곱 연산을 하는걸 볼수 있는데, 입력은 2차원
이지만 여전히 채널 차원과 하나의 공간적 차원을 가지고 있습니다. 그리고 가중치 행렬은 3차원이라고 할수 있는데, C_out개의
필터를 가지고 있고, 각 필터는 C_in개의 깊이 차원을 가지고 있어요, 그리고 K는 커널사이즈가 되구요.
다른 합성곱 연산들 Other types of convolution
▪ 그래서 이거는 이 필터를 1차원 공간에 놓고 전체 공간에 슬라이딩 시켜 컨볼루션연산을 한다고 이해하면 됩니다. 이 1차원 합
성곱 연산은 시퀀스 형태로 이루어진 문자 데이터나 오디오 네트워크를 합성곱 연산으로 처리하는 경우 사용되요.
다른 합성곱 연산들 Other types of convolution
▪ 그리고 3차원 합성곱 연산을 사용할 때도 있는데, 3차원 합성곱 연산의 하나의 원소는 4차원 텐서(C_in x K x K x K)가 되요. 저
는 4차원 텐서를 2차원 화이트보드에다가 그릴수가 없다보니 대신, 크기가 C_in인 특징 벡터 그리드의 모든 점에 각각 3차원 텐
서, 3차원 텐서 그리드가 하나씩 들어있다고 생각하면 될거같아요. 그래서 3차원 합성곱 필터, 자유도는 4차원이 됩니다.
다른 합성곱 연산들 Other types of convolution
▪ 죄송하지만 5차원은 커널은 3차원(K x K x K)으로 이루어지고, 그걸 입력의 특징 차원수(C_in) 만큼 늘리고, 이들을 여러개
(C_out) 모아 5차원의 3D 합성곱 계층이 만들어집니다. 그래서 5차원의 가중치 행렬이 되요. 3차원 필터들은 3차원 입력 텐서의
전체 공간을 슬라이드 하면서 계산이 될거에요.
다른 합성곱 연산들 Other types of convolution
▪ 3차원 합성곱 연산은 점 구름 point cloud 데이터를 처리하거나 다른 3차원 공간을 타타내는 데이터들을 처리할때 사용되곤 합
니다. 그리고 이런 합성곱 계층들도 입력과 출력, 패딩과 스트라이드 등을 조정하기 위해서 하이퍼 파라미터가 필요해요.
다른 합성곱 연산들 Other types of convolution
▪ 한번 파이토치에서 어떻게 되어있는지 한번 봅시다. 여러분들이 합성곱 연산을 수행할때, 합성곱 계층마다 다르게 하이퍼 파라
미터들을 지정해줄수 있을거에요.
파이토치에서 제공하는 합성곱 계층들 PyTorch Convolution Layer
▪ 1차원, 2차원 컨볼루션도 있내요.
파이토치에서 제공하는 합성곱 계층들 PyTorch Convolution Layer
▪ 그래서 합성곱 계층은 학습가능한 가중치 행렬들을 가지고있으며, 어떻게 다음 층으로 변환해서 보내주는가를 보내는가를 다
룬다고 할수 있었어요. 다음으로는 풀링 계층에 대해서 볼건데 합성곱 신경망의 핵심이라고 할수 있겠습니다.
합성곱 신경망의 구성 요소들 Components of a Convolution Network
풀링 계층 : 샘플 줄이는 다른 방법 Pooling Layers: Another way to downsample
▪ 여러분들은 풀링 레이어가 어떻게 합성곱 신경망 내부에서 다운 샘플링을 하는지 알아야 해요. 이들은 학습을 시켜야 하는 파
라미터도 없어요.
▪(합성곱 계층에서는 학습/최적화 과정을 통해 가중치 행렬들이 학습되었으나 풀링에서는 학습될 가중치/파라미터가 없음)
풀링 계층 : 샘플 줄이는 다른 방법 Pooling Layers: Another way to downsample
▪ 이미 우린 합성곱 신경망에서 합성곱 계층에 스트라이드를 1보다 크게 해서 공간적 데이터, 텐서의 공간적 차원을 줄이는 방법
을 봤었죠. 하지만 대신 우리가 사용할 이 풀링 계층은 커널 사이즈를 지정하는 하이퍼파라미터는 있지만 학습해야할 파라미터
(가중치)는 없습니다.
풀링 계층 : 샘플 줄이는 다른 방법 Pooling Layers: Another way to downsample
▪ 하지만 풀링 계층은 합성곱 계층과 비슷한 기능을 하는데, 커널 사이즈 만큼 입력 텐서에서의 수용장 범위 만큼 보고, 각 수용장
범위들, 영역들에서 어떤 풀링 함수를 통해 그 범위 안에 있는 여러 입력값들을 없애고 하나의 출력값만을 만듭니다. 이 연산을
모든 입력 텐서의 조각들(풀링 범위, 수용장 범위)에다가 해서, 다운 샘플링을 시킨 출력값을 얻을수가 있어요.
▪ 가장 많이 사용되는 풀링 방법으로 이 예제에서는 2 x 2 치대 풀링이 있습니다. 여기서는 스트라이드를 2를 주었는데, 스트라이
드와 커널 사이즈가 같아야, 각 2 x 2 영역들이 겹치지 않고 입력 텐서들을 나눠줄수가 있어요. 그래서 이런 식으로 커널과 스트
라이드를 똑같이 해서 풀링을 자주 사용합니다.
최대 풀링 Max Pooling
▪ 4 x 4 크기 spatial의 입력을 받았을때, 이들을 2 x 2개의 공간으로 나눌수 있을것이고 여기선 다른 색깔로 표시할께요. 그리고
각 2 x 2 공간에서 이 공간을 정리해서 나타낼수 있는 출력값 하나를 구할수가 있겠습니다. 여러분이 최대 풀링을 사용한다면, 이
하나의 값을 구하는데 맥스 함수를 쓰면됩니다.
최대 풀링 Max Pooling
▪ 각 영역에서 가장 큰 값이 출력의 한 구간의 값이 되겠습니다. 빨간 영역에서 값 하나를 추출한다면 가장 큰게 6이므로 6이 나
올거고, 녹색 영역에서는 8, 노란색에서는 3, 파란색에서는 4가 나와 오른쪽의 풀링 결과가 나오겠습니다. 왜 합성곱 보다 풀링을
선호하는 이유는, 이 풀링 계층은 학습할 파라미터가 없거든요.
최대 풀링 Max Pooling
▪ 두번째는 평행한 방향으로 약한 이동하더라도 풀링을 한 값이 변하지 않다는 점입니다. 이 최대 풀링의 경우 맥스 연산으로 각
영역에서 가장 큰 값을 고르다보니, 입력 이미지가 약간 이동해서 들어오더라도(이미지 안에 있는 값의 위치가 조금씩 변하더라
도) 해당 영역에 속하는 최대 값은 변하지 않기 때문입니다.
최대 풀링 Max Pooling
▪ 그래서 우리가 맥스 풀링을 사용할때 평행이동을 하더라도 불변성이 존재하여 다른 여러 문제들에 유용하게 사용될수 있어요.
최대 풀링이랑 다른 비슷한 방법으로 평균 풀링 average pooling이 있습니다.
최대 풀링 Max Pooling
▪ 이 평균 풀링은 최대 풀링과 동일한 영역에 있는 값들을 평균을 계산하여 출력으로 사용하는 방법이라고 할수 있겠습니다. 이
건 풀링의 요약인데, 합성곱때와 비슷하게 생겼죠. 스트라이드랑 커널 사이즈 파라미터가 있고, 다른건 합성곱에서 내적 계산하던
거랑 다르게 수용장 영역에 사용할 풀링 함수를 지정해줘야 한다는 점입니다.
풀링 정리 Pooling Summary
▪ 이제 지금까지 완전 연결 계층과 활성화 함수, 합성곱 계층, 풀링계층이 대해서 살펴 보았고, 이것들을 가지고 고전적인 방식의
컨브넷 convet을 만들수가 있겠는데
합성곱 신경망의 구성 요소들 Components of a Convolution Network
▪ 지금 보시는건, 우리가 배운 연산들을 잘 조합해서 만든 신경망의 한 종류인데, 어떻게 연결시켜서 만들지는 여러분들의 자유입
니다. 하지만 지금 보고 있는 합성곱 신경망에서는 고전적인 설계 형태를 볼수 있는데, 합성곱-ReLU-Pool, 합성곱-ReLU-Pool 한
다음에 완전 연결 계층으로 이루어지고 있네요. 이건 엄청 고전적인 방식의 합성곱 신경망의 예시인 LeNet-5 입니다. 이 신경망
은 1998년 레쿤이란 사람이 문자 인식을 하려고 만든 신경망이에요.
합성곱 신경망 Convolution Network
▪ 이 LeNet-5는 크기가 28 x 28인 그레이 스케일(명암) 이미지를 하나로 입력으로 받는데, 그레이 스케일 이미지의 경우 채널이
하나 뿐이므로, 각 픽셀의 강도/세기 intensity 값도 한개 입니다. 가장 먼저 만나는건 합성곱 계층으로 합성곱 필터가 20개가 있
는데, 각 필터의 크기가 5 x 5이고 채널이 하나 뿐이에요. 그리고 여기서는 패딩 사용하지 않습니다.
* 강의 오류 ? : 강의에서 LeNet-5는 28 x 28 크기의 입력을 받고 패딩을 사용하지 않는다고 말하면서, 그림은 P = 2로 출력 크
기가 20 x 28 x 28로 출력이 줄어들지 않고 입력과 동일한 크기로 유지되고 있음.
예시 : LeNet-5
▪ 잠시 LeNet-5에 대해 검색 해본 결과 1 x 32 x 32 입력을 받아 6 x 1 x 5 x 5의 커널로 첫 합성곱 연산을 수행. 패딩을 쓰지 않아
32 x 32 크기의 입력이 28 x 28로 줄어들고 있다. 본 강의에서 예시 설명이 잘못된것 같아 이 장 대부분은 넘어가고 일부만 살펴
보자.
예시 : LeNet-5
▪ 좋은 질문이 들어왔는데, 최대 풀링이 비선형적인 효과를 갖는다고 얘기했는데 여기서 왜 ReLU함수를 사용하나요 라는 질문이
들어왔습니다. 여기서 ReLU를 사용하는 이유는 제 생각에는 여러분들 말대로 ReLU를 굳이 넣을 필요는 없어요. 다만 현대 합성
곱 신경망에서 ReLU를 자주 쓰다보니 그런것 같아요.
예시 : LeNet-5
▪ 여러분들이 레쿤의 논문을 보면 각 계층에서 ReLU를 비선형성을 주기 위해 쓴게 아니고, 비선형성을위해 최대 풀링을 사용하
다보니 여러분들이 맞다고 봅니다. 하지만 현대 신경망 설계에서는 꼭 해야한다는 건아니지만 최대 풀링을 쓸때 ReLU를 자주 사
용하고 있어요.
예시 : LeNet-5
▪ 그리고 마지막으로 맨 끝에 보면 완전 연결 신경망이 숫자를 인식하룻 있도록 10개 클래스에 대한 점수를 만들고 있는데, 여기
서 눈에 띄는 점은 이 고전 합성곱 신경망 설계를 보시면 공간적인 크기(이미지 크기)가 풀링 계층을 거치고 나서 줄어들지만 채
널의 깊이, 필터의 수가 증가하고 있는 점입니다.
예시 : LeNet-5
▪ 그래서 전체 볼륨/크기는 항상 유지되고 있어요. 겉보기에는 이미지 크기 자체는 줄이지만 필터를 옆으로 늘리는 식으루요. 합
성곱 신경망에서 흔히 사용되는 방식 입니다. 질문이 들어왔네요. 이걸 얼마나 해야되는냐고 물어보는데, 제 생각에는 이건 많은
시행착오로 구해야한다고 생각합니다. 하지만 다음 강의에서 다양한 합성곱 설계법들과 어떻게 개선되어왔는지 역사에 대해서
얘기할거다 보니 여러분들에게 도움될거라고 생각해요.
예시 : LeNet-5
문제 : 심층 신경망은 학습하기 정말 힘들다!
▪ 하지만 오늘 강의의 목표를 생각하면 어떻게 1998년 레쿤이 만든 모델이 잘 동작하게 되는지 알 필요가 있어요. 하지만 이런 고
전적인 설계법에는 문제점이 있습니다. 합성곱 - ReLU - 풀링이 반복되서 쌓이는 식으로 신경망을 깊이 만드는 방식이 흔하게 사
용되나, 이런 고전적인 합성곱 신경망 설계 방식으로 신경망을 깊게 만들 때 하나의 값으로 수렴하기가 힘들어지는 문제가 발생
할 수 있어요.
▪ 이 문제를 극복하기 위해서 최근 신경망 안에 정규화 계층을 추가하는게 최근 추세 입니다. 이렇게 하면 심층 신경망을 쉽게 학
습 할 수 있어요.
합성곱 신경망의 구성 요소들 Components of a Convolution Network
▪특히 가장 유명한 방식으로 배치 정규화 batch normalization이란 개념이 있는데, 이 개념은 이전 층의 출력을 정규화 해서 입력
으로 받는 방식으로 평균이 0이고 분산이 1인 분포로 정규화를 시킵니다. 여러분들이 이 논문을 보셨다면 내부 공분산 변동?
internal covariate shift라고 부르는 개념을 줄인다고 하고 있는데, 내부 공분 변동이 무엇인지 잘 이해하기는 힘들 겁니다.
배치 정규화 Batch Normalization
▪ 대략적인 개념은 여러분이 심층 신경망을 학습할때, 각 계층에서는 이전 계층의 출력을 사용 할겁니다. 모든 가중치 행렬들이
동시에 학습되다보니, 다시 말하면 이전 계층의 가중치 행렬이 최적화 과정에서 변하므로, 다음 계층에서 입력으로 사용될 현재
출력의 분포도 최적화 과정에서 변하게 될겁니다.
배치 정규화 Batch Normalization
▪ 그래서 두번째 계층에서는 학습 중 달라진 입력 분포를 받을건데, 이건 내부 공분 변동에 강하지 않다보니(가중치 행렬의 분포
가 학습 과정에서 계속 달라지는 걸 말하는것 같다.) 최적화 관점에선 좋지 않을수도 있습니다. 이 내부 공변 변동의 문제를 극복
하기 위한 방법으로 모든 계층의 타겟 분포, 출력의 분포를 평균이 0, 분산이 1인 정규분포로 변환을 시켰습니다.
배치 정규화 Batch Normalization
▪ 이렇게 하면 다음 계층이 활성화 계층일때 훈련 과정에서 정상적인 분포 stationary distribution 를 입력으로 받을수 있죠. 이렇
게 하면 심층 신경망의 최적화 과정을 안정화시키고, 가속화 시킬수가 있어요. 이걸 하는 방법은 확률 분포 x로부터 샘플 집합
x^k를 가지고 있다고 할때, 이 샘플들 전체를 평균 만큼 빼주고, 표준편차로 나눔으로서 정규화를 시켜줄 수가 있습니다.
▪ 그리고 이건 미분 가능 함수이고, 우린 계산 그래프에 대해 알고 있으니 이 미분 가능 함수를 신경망에다가 넣어서 사용할수가
있겠습니다.
배치 정규화 Batch Normalization
▪ 배치 정규화로 할 일은 이 계층을 신경망에 넣어서 입력들은 정규 분포를 따르는 값들로 변환시켜 주면 되겠습니다. 더 구체적
으로 보자면, 배치 정규화를 완전 연결된 신경망에서 생각해볼게요. 배치 차원의 크기는 N, 입력 데이터는 N개이고, 벡터 차원의
크니는 D로, 한 데이터의 길이/차원이 D인 벡터가 N개가 있습니다.
배치 정규화 Batch Normalization
▪ 여기서 할 일은 (한 벡터 값들의 평균이 아닌) 배치 차원으로 평균 (여러 데이터들의 한 채널 값들로 평균)을 구하면 됩니다. 배
치에 있는 모든 샘플들로 각각의 채널들에 대한 평균을 구하면, 전체 평균 벡터의 크기는 D가 될겁니다. 그리고 표준 편차를 계산
하는 식으로 각 채널에서 표준 편차를 구하면, 한 채널의 데이터가 주어질때 그 채널의 평균을 빼고 구한 해당 채널의 표준 편차
를 나눔으로서 평균이 0이고, 분산이 1이 되도록 정규화를 시킬수가 있겠습니다.
배치 정규화 Batch Normalization
▪ 여기서 정규화를 시킬때 표준 편차 자리에 앱실론 항을 더해주는 이유는 표준 편차가 0인 경우 0으로 나눠지는 것을 방지하기
위함으로 이 앱실론은 아주 작은 상수라고 생각할수 있겠습니다. 이 값은 하이퍼 파라미터이지만 크게 설정하지는 않아요.
배치 정규화 Batch Normalization
▪ 지금까지 여러분들은 입력 데이터의 평균을 0, 분산이 1이 되도록 만들어주는게 최적화에서 좋다고는 하는데, 신경망에서 사용
하기에는 이건 꽤 엄격한 제약이 될수 있어요. 모든 이 배치 정규화 계층은 항상 이 정규화된 단위 값을 학습을 하다보니, 평균치
와 분산을 제약한다고 볼수 있을것 같습니다.
-> N(0, 1)의 분포를 따르도록 데이터를 만들다 보니 더 나은 성능을 내도록 하지를 못함.
배치 정규화 Batch Normalization
https://de-novo.org/2018/05/28/batch-normalization-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
▪ 그래서 실제 사용시에는 정규화를 한 후에 추가적인 연산을 하는데요. 스케일과 시프트 파라미터 감마와 베타를 신경망에 추가
시킵니다. 이들은 (아까 각 채널로 평균/분산을 구하여 D차원의 벡터를 만들어 정규화 그래서 각 채널 만큼 스캐일과 시프트 파
라미터도 D개가 필요) D차원의 벡터로, 정규화 출력 X_hat에다가 이 학습가능한 파라미터를 사용하여 더하고(베타 = 평균), 곱함
으로서(감마=표준편차)로 원래 대로 되돌릴 수가 있습니다.
* 배치 정규화 설명이 이해 되지 않아 뒤에 타 링크의 설명 추가
배치 정규화 Batch Normalization
▪ 이 학습 가능한 파라미터들이 신경망이 필요한 각 벡터에서의 평균과 분산으로 스스로 학습을 통해 찾을 겁니다. 신경망이 감
마 = 시그마/분산 과 베타 = 뮤/평균가 되도록 학습을 시킨다면 베치 정규화 계층의 출력을 다시 복원 시킬수가 있을 겁니다. 이
게 신경망에다가 스케일, 시프트 파라미터를 추가하는 이유에요.
* 배치 정규화 설명이 이해 되지 않아 뒤에 타 링크의 설명 추가
배치 정규화 Batch Normalization
▪ 타 링크 설명 : 출력 데이터의 분포가 N(0, 1)의 정규 분로만 제약되는 걸 방지하기 위해, 데이터가 정규 분포의 형태를 따르 되
스케일 파라미터 감마(분포 크기 조절)와 시프트 파라미터로 베타(편향 역활로 치우쳐짐 정도 조절)이 학습되는 파라미터로 사용
됨. 실제 출력은 N(0, 1) x_hat이 아닌 위 파라미터로 조정한 y값. 만약 학습한 결과 감마 = 기존의 표준분포, 베타 = 기존의 평균
이라면 배치 정규화는 항등 함수 역활을 수행함
배치 정규화 Batch Normalization
https://de-novo.org/2018/05/28/batch-normalization-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
▪ 여기에 또 다른 문제가 있는데, 우측의 부분에 보시면 평균과 시그마를 입력 차원의 배치 차원으로 평균으로 계산하고 있습니
다. 여기서 우리가 그동안 보지못한 특이한 부분은 배치 데이터를 가지고 배치 단위로 독립적으로 연산을 한다는 점이에요. 여러
분이 배치에다가 뭘 넣던간에, 고양이 사진을 넣거나 강아지 사진을 넣더라도 다른 배치끼리 분류 스코어가 나오는데 영향을 주
지는 않습니다.
배치 정규화 : 테스트 상황
▪ 하지만 배치 정규화에서는 한 배치의 출력들은 같은 배치에 있는 다른 데이터에 영향을 받다보니 테스트 시에는 나쁠수 있어요.
왜냐면 예를들면 여러분이 웹 서비스를 돌리고 있는데, 유저들이 매 시간마다 뭘 업로드 하는지 계산한다고 해요. 그런데 여러분
의 신경망의 예측 결과가 동시간대의 다른 사람이 뭘 업로드하는지에 영향을 받으면 좋지는 않겟죠.
배치 정규화 : 테스트 상황
▪ 머신 러닝 모델이 이렇게 되는건 정말 나쁠수 있다 보니, 테스트를 할 때 좋은 방법은 한 배치 안에 있는 모든 데이터들이 독립
이 되도록 하는게 되겠습니다. 그래서 훈련시에는 배치 정규화는 배치 안에 있는 데이터들을 이런 식으로 평균과 표준 편차를 구
하고
배치 정규화 : 테스트 상황
▪ 테스트 상황에서는 배치 데이터로 계산하는게 아니라, 훈련시에 얻었던 평균과 시그마의 전체 평균 값을 사용하겠습니다. 이
렇게 하면 우린 훈련 데이터로 구한 전체 평균과 분산의 평균을 상수 값으로서, 테스트 때는 배치 단위의 평균이 아닌 이 값들을
사용해 나갈건데, 이렇게 하면 배치 데이터에서도 독립성을 얻을 수 있어 좋다고 할수 있겠습니다.
배치 정규화 : 테스트 상황
▪ 여기서 사용하는 평균과 시그마가 상수값이 되면, 이제 이 배치 정규화 연산은 선형 연산이 됩니다. 여기 보시면 한상수 값을 빼
고, 또 다른 상수 값으로 나누거든요. 그래서 이 정규화 단계를 거치고, 학습한 스케일과 시프트 파라미터로 스케일과 시프트 단
계를 거칠겁니다. 그렇게 되면 테스트에서의 배치 정규화 연산은 선형 연산이 되며, 이걸 합성곱 신경망 뒤에다가 붙이면, 여러
분이 알다시피 두 선형 연산자를 붙이면 하나의 선형 연산자가 되었었죠.
배치 정규화 : 테스트 상황
▪ 실제로 추론 과정에 이렇게 합친 연산이 자주 이뤄져요. 그래서 구한 평균과 표준편차, 스케일, 시프트 파라미터가 이전 합성곱
연산과 합쳐지면서 배치 정규화는 테스트 시에 사라지게 됩니다. 정확히 말하자면 테스트 시 이전 선형 연산자와 합쳐지는 바람
에 계산 비용이 0이 되어요.
배치 정규화 : 테스트 상황
▪ 그래서 배치 정규화는 실제로 사용하기에는 정말 좋은 방법이며, 완전 연결 신경망에 배치 정규화를 붙인 경우를 이야기 했는
데, 합성곱 신경망에서도 배치 정규화가 자주 사용되고 있습니다. 어떻게 완전 연결 신경망에서 동작하는지 보자면, 입력 X의 크
기가 N x D가 있었는데 이걸 배치 차원으로 평균을 계산하여 1 x D 의 평균과 분산, 그리고 감마와 베타를 계산하였습니다.
합성곱 신경망에서의 배치 정규화 Batch Normalization for ConvNets
▪ 이번에는 합성곱 신경망의 경우를 봅시다. 대부분은 비슷한데, 배치 차원으로 평균을 구했던것과는 달리 배치 차원 뿐만이 아니
라, 공간적 차원에 대해서도 평균과 표준편차를 계산하여 한 파라미터의 벡터 크기는 1 x C x 1 x 1개로 채널의 개수가 되겠습니
다.
합성곱 신경망에서의 배치 정규화 Batch Normalization for ConvNets
▪ 이건 배치 정규화 계층을 신경망에다가 추가한 예시인데, 합성곱 계층이나 완전 연결 계층 뒤에 직접 추가를 시킵니다. 배치 정
규화의 좋은 점은 신경망의 학습을 훨씬 빠르게 해줘요.
배치 정규화 Batch Normalization
▪ 이 그림은 배치 정규화 논문에 나오는데, 여기서 보이는검은 점선이 베이스라인 신경망으로 배치 정규화 없이 합성곱과 풀링
계층 그리고 다른 연산으로 이뤄져 있습니다. 빨간 점선은 합성곱 계층 뒤에다가 배치 정규화 계층을 추가만 하고 다른 바꾼건 없
는 경우인데 이 배치 정규화가 추가된 모델에서 엄청 빠르게 학습되는걸 볼수 있어요. 배치 정규화를 사용하고, 학습률을 높이 주
었을때 학습 과정에 발산하지 않고 빠르게 정확도가 올라가고 있죠.
배치 정규화 Batch Normalization
▪ 여기서 파란 선은 같은 신경망인데 배치 정규화 계층을 추가하고, 학습율을 높이 준 경우에요. 그래서 이 둘을 조합했을때 심층
신경망을 훨신 빠르고 다른 합성곱 신경망들 보다 강건해지는걸 볼수 있었습니다.
배치 정규화 Batch Normalization
▪ 하지만 배치 정규화의 아쉬운 점은 이론적으로 왜 이렇게 잘 동작되는지 이해하기가 힘들다는 점이에요. 내부 공변 변동에 변
화가 생기기는 한데, 이게 왜 최적화 과정을 돕는지 명확하지는 않습니다. 배치 정규화의 다른 문제는 훈련 때와 테스트 떄가 다
르게 동작한다는 점이며, 여러 응용시에 버그의 원인이 되고 있습니다.
▪ 여러분의 데이터가 균형이 맞지 않은 경우 배치 정규화를 사용하여 모델에 사용하기 적절하지 않을 수도 있긴하나, 이미지 클
래스가 윤형이 있는 이미지 분류 문제의 경우 정규화를 시키는게 적절 하구요.
배치 정규화 Batch Normalization
계층 정규화 Layer Normalization
▪ 배치 정규화의 문제점 중 하나는 훈련 때와 테스트 때가 다르게 동작하는건데, 여러분의 모델이 훈련이나 테스트때 똑같이 동
작해야할 때는 그러면 안되겠죠. 훈련과 테스트 때 한 계층에서 동일하게 동작하면 좋을거에요. 그렇게 하는 배치 정규화를 바꾼
버전으로 계층 정규화 Layer Normalization라는 기법이 있습니다.
계층 정규화 Layer Normalization
▪ 기본 개념은 비슷하게 평균과 표준 편차를 구하고 정규화를 시키는데 차이점은 배치 차원에 대해서 평균을 구하는게 아니라 특
징 차원 D에 대해서 평균을 구하고 정규화를 해요. 그렇게 하면 배치 차원에 데이터의 수에 영향을 받지 않고 훈련때나 테스트
때나 동일한 연산을 할수 있게 되요. 이 계층 정규화 연산자는 순환 신경망과 차후에 강의에서 설명할 트랜스포머에서 사용됩니
다.
▪ 다른 배치 정규화의 다른 버전으로 인스턴스 정규화 Instance Normalization가 있습니다. 이 방법은 배치와 공간 차원에 대해서
평균을 구하는게 아니라, 공간적 차원에 대해서만 평균을 구하여 정규화를 시킵니다. 그러면 여기서 사용하는 평균과 표준 편차
들은 배치 차원과는 관련이 없어지므로 테스트와 훈련 상황에 동일하게 동작을 할수가 있겠습니다.
인스턴스 정규화 Instance Normalization
▪ 이 그림은 다양한 정규화 방법들을 비교하기 쉽게 나타낸 그림인데, 우리가 배치 차원, 채널 차원, 공간 차원이 있는 텐서가 있
을때, 배치 정규화의 경우 배치와 공간 차원에서 평균을 구하고 있고, 계층 정규화는 공간 차원과 채널 차원의 평균을 구합니다.
그리고 인스턴스 정규화의 경우 채널 차원에 대해서 평균을 구하구요.
▪ 여기에 빈공간이 있다 시피 다른 타입의 정규화가 있을거라 예상할수가 있을텐데
정규화 계층 비교 Comparison of Normalization Layers
▪ 얼마전에 그룹 정규화 group normalization이란 방법이 나왔습니다. 이 방법은 채널 차원을 몇개의 그룹으로 나누어 정규활르
하는 방법인데 물체 인식 같은 응용분야에서 잘 동작하고 있습니다.
그룹 정규화 Group Normalization
▪ 그래서 지금까지 우리는 합성곱 신경망의 다양한 구성 요소들을 살펴보았습니다. 여러분들이 아마 이걸로 어떻게 해서 신경망
모델을 만들지 궁금하실거에요. 저는 이걸 어떻게 조합해야 좋은 모델을 만들수 있는지 얘기를 못했는데, 다음 주에 어떻게 신경
망을 만드는지에 대해서 배워봅시다.
합성곱 신경망의 구성 요소들 Components of a Convolution Network
감사합니다

More Related Content

What's hot

옥트리의 구축
옥트리의 구축옥트리의 구축
옥트리의 구축
sj k
 

What's hot (20)

数独のアルゴリズムを考える ― 各種法の改善と高速化
数独のアルゴリズムを考える ― 各種法の改善と高速化数独のアルゴリズムを考える ― 各種法の改善と高速化
数独のアルゴリズムを考える ― 各種法の改善と高速化
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
9XD 대학생 노동자 성장기
9XD 대학생 노동자 성장기9XD 대학생 노동자 성장기
9XD 대학생 노동자 성장기
 
선형대수 12강 Gram-Schmidt Orthogonalization
선형대수 12강 Gram-Schmidt Orthogonalization선형대수 12강 Gram-Schmidt Orthogonalization
선형대수 12강 Gram-Schmidt Orthogonalization
 
SVM
SVMSVM
SVM
 
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen AlgorithmMatrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
 
Weighted Defect Removal Effectiveness: Method and Value
Weighted Defect Removal Effectiveness: Method and ValueWeighted Defect Removal Effectiveness: Method and Value
Weighted Defect Removal Effectiveness: Method and Value
 
옥트리의 구축
옥트리의 구축옥트리의 구축
옥트리의 구축
 
CODE FESTIVAL 予選B 解説
CODE FESTIVAL 予選B 解説CODE FESTIVAL 予選B 解説
CODE FESTIVAL 予選B 解説
 
Xgboost
XgboostXgboost
Xgboost
 
Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
 
CNNの可視化手法Grad-CAMの紹介~CNNさん、あなたはどこを見ているの?~ | OHS勉強会#6
CNNの可視化手法Grad-CAMの紹介~CNNさん、あなたはどこを見ているの?~ | OHS勉強会#6CNNの可視化手法Grad-CAMの紹介~CNNさん、あなたはどこを見ているの?~ | OHS勉強会#6
CNNの可視化手法Grad-CAMの紹介~CNNさん、あなたはどこを見ているの?~ | OHS勉強会#6
 
입문 Visual SLAM - 5장 카메라와 이미지
입문 Visual SLAM - 5장 카메라와 이미지입문 Visual SLAM - 5장 카메라와 이미지
입문 Visual SLAM - 5장 카메라와 이미지
 
OpenDroneMap과 QGIS를 이용한 드론 영상처리 소개
OpenDroneMap과 QGIS를 이용한 드론 영상처리 소개OpenDroneMap과 QGIS를 이용한 드론 영상처리 소개
OpenDroneMap과 QGIS를 이용한 드론 영상처리 소개
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
 
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
 
深層学習による非滑らかな関数の推定
深層学習による非滑らかな関数の推定深層学習による非滑らかな関数の推定
深層学習による非滑らかな関数の推定
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]
 

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

Convolutional neural networks
Convolutional neural networksConvolutional neural networks
Convolutional neural networks
HyunjinBae3
 

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

[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 1 - 알렉스넷
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 4 - ResNet
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
 
GoogLenet
GoogLenetGoogLenet
GoogLenet
 
Chapter 10 sequence modeling recurrent and recursive nets
Chapter 10 sequence modeling recurrent and recursive netsChapter 10 sequence modeling recurrent and recursive nets
Chapter 10 sequence modeling recurrent and recursive nets
 
[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망
 
CNN
CNNCNN
CNN
 
05. k means clustering ( k-means 클러스터링)
05. k means clustering ( k-means 클러스터링)05. k means clustering ( k-means 클러스터링)
05. k means clustering ( k-means 클러스터링)
 
Ensemble Model (Hybrid model)
Ensemble Model (Hybrid model)Ensemble Model (Hybrid model)
Ensemble Model (Hybrid model)
 
HistoryOfCNN
HistoryOfCNNHistoryOfCNN
HistoryOfCNN
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 2 - ZFNet, VGG-16
 
Mlp logical input pattern classfication report doc
Mlp logical input pattern classfication report docMlp logical input pattern classfication report doc
Mlp logical input pattern classfication report doc
 
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
 
Convolutional neural networks
Convolutional neural networksConvolutional neural networks
Convolutional neural networks
 
07. PCA
07. PCA07. PCA
07. PCA
 
Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others [컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 5 - Others
 
2.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-22.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-2
 
코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)
 

More from jdo

More from jdo (20)

[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 2. 데이터 전처리
 
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
[컴퓨터비전과 인공지능] 8. 합성곱 신경망 아키텍처 3 - GoogLeNet
 
[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 2[컴퓨터비전과 인공지능] 6. 역전파 2
[컴퓨터비전과 인공지능] 6. 역전파 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
 

Recently uploaded

Recently uploaded (8)

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

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

  • 1. 컴퓨터 비전을 위한 합성곱 신경망 2 Convolution Networks 2 도정찬 Michigan Online, Justin Johnson, Computer Vision, 2021. 02. 08
  • 2. ▪ 이제 합성곱 연산의 예시를 한번 봅시다. 이 신경망에서는 cifar-10 데이터를 사용할 거라 입력은 3개의 채널에 32 x 32의 공간 적 크기 spatial size를 가지고 있다고 해요. 그리고, 필터는 10개에 5 x 5의 크기, 스트라이드는 1, 패딩은 2라고 합시다. 합성곱 계 층에서 이렇게 설정한다면, 합성곱 연산 후에 출력 텐서의 크기는 어느 정도가 될까요? 합성곱 연산 예제 Convolution Example
  • 3. ▪ 이전 슬라이드에서 본 공식을 사용하면 공간적 크기는 똑같이 32 x 32가 됩니다. 합성곱 연산 예제 Convolution Example
  • 4. ▪ 그리고 이 계층에서 학습하는 파라미터의 갯수는 몇 개가 될까요? 지금 우리는 합성곱 필터가 10개 있고, 각 필터는 3 x 5 x 5 의 크기를 가지고 있죠. 그리고 각 필터에는 편향항도 있습니다. 그래서 한 필터당 학습 가능한 파라미터는 3 x 5 x 5(가중치 필 터)+ 1(편향) = 76개가 됩니다. 그리고 필터가 10개이므로 총 학습할 파라미터는 760개가 되겠습니다. 합성곱 연산 예제 Convolution Example
  • 5. ▪ 다음 질문은 이 합성곱 연산에서 곱셈-덧셈 연산이 얼마나 많이 수행될까요? 합성곱 연산 예제 Convolution Example
  • 6. ▪ 이걸 계산하려면, 우선 여러분들은 이 출력 텐서의 형태가 10 x 32 x 32가 되는걸 알고 있죠, 그리고 출력에서 각 원소들을 계산 하기 위해서 입력 텐서와 3 x 5 x 5 크기의 필터 텐서 사이의 내적을 구했었어요. 그러면 이걸 다 곱하면(출력 텐서 개수 10 x 32 x 32와 한 출력 텐서당 내적 연산 개수 3 x 5 x 5) 합성곱 연산에서 출력 텐서를 구하기 위해 얼마나 많이 곱셈과 덧셈 연산을 수 행했는지 계산할수 있어요. 합성곱 연산 예제 Convolution Example
  • 7. ▪ 이건 사람들이 가끔 사용하는 방법이긴한데 1 x 1 합성곱 필터를 사용하는 예시에요. 좀 이상하게 보일수가 잇긴한데, 실제로 동작 합니다. 이 예시에서는 입력 텐서는 64 채널과 56 x 56의 공간적 차원, 크기를 가지고 있습니다. 거기다가 1 x 1의 공간적 크 기를 갖고 입력 깊이/채널 64와 동일한 채널을 같은 필터가 32개가 있다고 합시다. ▪ 32(출력 채널/필터 개수) x 64(입력 채널) x 1(필터 W) x 1(필터 H) 예시 : 1 x 1 컨볼루션
  • 8. ▪ 이걸로 얘기하고자하는건 (깊이 방향으로) 독립적으로 내적 연산을 하고 있다는 점인데, 이 3차원 텐서가 특징 벡터(64; 64 x 1 x 1)들의 그리드로 보시면 될거에요. 그래서 1 x 1 컨볼루션(32 x 64 x 1 x 1)을 적용시키면, 이 1 x 1 컨볼루션은 3차원 그리드의 한 그리드를 특징벡터로 보고, 이 특징벡터들과 독립적으로 계산하는 선형 계층(가중치 행렬)으로 볼수 있어요. 예시 : 1 x 1 컨볼루션
  • 9. ▪ 이렇게 이해를 한다면, 신경망 구조가 1 x 1 합성곱 연산 후 ReLU를 하고, 다른 1 x 1 합성곱 연산후 ReLu를 해나가는 이게 시 퀀스 형태를 이루면 신경망 내 신경망이라고 부르는 구조가 됩니다. 이건 효율적인 완전 연결 신경망이라고 부를수 있는데 입력 공간의 모든 위치에 존재하는 특징 벡터들을 독립적으로 연산을 할수 있거든요. 이건 좀 특이하게 생기기는 했지만 실제로도 보 게 될거고 가끔 사용하게 될겁니다. 예시 : 1 x 1 컨볼루션
  • 10. ▪ 이제 합성곱 연산에 대해서 정리하자면 이건 3차원 입력을 받고, 하이퍼 파라미터로 커널 크기, 일반적으로는 가로 세로가 같은 정방 크기를 사용합니다. 그리고 필터의 개수와 패딩, 스트라이드가 있어요. 우리가 4차원 가중치 행렬(필터 갯수 x 입력 깊이/차 원 x 필터 크기 x 필터 크기)과 하나의 편향 벡터(필터 갯수)를 가지고 있을때, 위 식에 따라서 3차원 출력을 얻을 수가 있겠습니 다. 합성곱 연산 요약 Convolution Summary
  • 11. 합성곱 연산 요약 Convolution Summary ▪ 이런식으로 다양한 수들을 하이퍼 파라미터로 지정 할 수 있는데, 여기에는 정방 필터를 사용한다고 하는 경우이지만 정방 필 터를 사용하지 않는 경우도 있습니다. 하지만 대부분의 경우 같은 패딩을 가로, 세로 똑같이 주는게 일반적이며, 출력이 입력과 같은 크기로 만드는 경우도 흔해요. 그리고 3 x 3 합성곱 필터에 스트라이드 1 또는 4 x 4 혹은 5 x 5 필터에 스트라이드 1도 자주 사용합니다.
  • 12. ▪ 합성곱 계층에서 커널의 크기를 3 x 3, 패딩을 1, 스트라이드 2는 다운 샘플링을 할때 흔하게 사용되요. 아무튼 이런 모든 예시 들이 합성곱 계층에서 자주 사용되는 파라머터들이라 보면 되겠습니다. 질문이 하나 들어왔는데, 1 x 1 합성곱 연산이 완전 연결 계층보다 좋은가요? 라는 내용이내요. 제 생각에는 1x 1의 경우 조금 다르게 이해할수 있다고 생각해요. 합성곱 연산 요약 Convolution Summary
  • 13. ▪ 1 x 1 합성곱 연산은 3차원 텐서에서 채널 차원의 수가 변하지만, 완전 연결 신경망은 전체 텐서를 쭉 펼치고 벡터 출력을 만드 는거라, 완전 연결 계층은 입력의 공간적 구조 spatial structure를 없애고 싶을때 사용한다고 보면 됩니다. 그래서 이건 신경망의 맨 끝에서 카테고리 점수를 만들때 주로 사용되요. 합성곱 연산 요약 Convolution Summary
  • 14. ▪ 반면에 1 x 1합성곱 연산은 신경망 내부에서 적절한 데이터 변환이 할때, 3차원 합성곱 활성화 지도를 가지고 있는 경우, 입력 채널의 깊이를 바꿀때 1 x 1 합성곱 계층을 사용한다고 보면 됩니다. 그래서 완전 연결 신경망과 1 x 1 합성곱 계층은 다른 방식 으로 사용된다고 할수 있어요. 합성곱 연산 요약 Convolution Summary
  • 15. ▪ 지금까지는 우리가 2차원 합성곱 연산에 대해 이야기 해 왔는데, 3차원 입력을 가지고 있고, 합성곱 필터를 2차원 공간의 모든 지점을 이동시키면서 사용하였었죠. 다른 합성곱 연산들 Other types of convolution
  • 16. ▪ 하지만 다른 타입의 합성곱 연산도 있어요. 여기 보시면 입력 데이터에 1차원 합성곱 연산을 하는걸 볼수 있는데, 입력은 2차원 이지만 여전히 채널 차원과 하나의 공간적 차원을 가지고 있습니다. 그리고 가중치 행렬은 3차원이라고 할수 있는데, C_out개의 필터를 가지고 있고, 각 필터는 C_in개의 깊이 차원을 가지고 있어요, 그리고 K는 커널사이즈가 되구요. 다른 합성곱 연산들 Other types of convolution
  • 17. ▪ 그래서 이거는 이 필터를 1차원 공간에 놓고 전체 공간에 슬라이딩 시켜 컨볼루션연산을 한다고 이해하면 됩니다. 이 1차원 합 성곱 연산은 시퀀스 형태로 이루어진 문자 데이터나 오디오 네트워크를 합성곱 연산으로 처리하는 경우 사용되요. 다른 합성곱 연산들 Other types of convolution
  • 18. ▪ 그리고 3차원 합성곱 연산을 사용할 때도 있는데, 3차원 합성곱 연산의 하나의 원소는 4차원 텐서(C_in x K x K x K)가 되요. 저 는 4차원 텐서를 2차원 화이트보드에다가 그릴수가 없다보니 대신, 크기가 C_in인 특징 벡터 그리드의 모든 점에 각각 3차원 텐 서, 3차원 텐서 그리드가 하나씩 들어있다고 생각하면 될거같아요. 그래서 3차원 합성곱 필터, 자유도는 4차원이 됩니다. 다른 합성곱 연산들 Other types of convolution
  • 19. ▪ 죄송하지만 5차원은 커널은 3차원(K x K x K)으로 이루어지고, 그걸 입력의 특징 차원수(C_in) 만큼 늘리고, 이들을 여러개 (C_out) 모아 5차원의 3D 합성곱 계층이 만들어집니다. 그래서 5차원의 가중치 행렬이 되요. 3차원 필터들은 3차원 입력 텐서의 전체 공간을 슬라이드 하면서 계산이 될거에요. 다른 합성곱 연산들 Other types of convolution
  • 20. ▪ 3차원 합성곱 연산은 점 구름 point cloud 데이터를 처리하거나 다른 3차원 공간을 타타내는 데이터들을 처리할때 사용되곤 합 니다. 그리고 이런 합성곱 계층들도 입력과 출력, 패딩과 스트라이드 등을 조정하기 위해서 하이퍼 파라미터가 필요해요. 다른 합성곱 연산들 Other types of convolution
  • 21. ▪ 한번 파이토치에서 어떻게 되어있는지 한번 봅시다. 여러분들이 합성곱 연산을 수행할때, 합성곱 계층마다 다르게 하이퍼 파라 미터들을 지정해줄수 있을거에요. 파이토치에서 제공하는 합성곱 계층들 PyTorch Convolution Layer
  • 22. ▪ 1차원, 2차원 컨볼루션도 있내요. 파이토치에서 제공하는 합성곱 계층들 PyTorch Convolution Layer
  • 23. ▪ 그래서 합성곱 계층은 학습가능한 가중치 행렬들을 가지고있으며, 어떻게 다음 층으로 변환해서 보내주는가를 보내는가를 다 룬다고 할수 있었어요. 다음으로는 풀링 계층에 대해서 볼건데 합성곱 신경망의 핵심이라고 할수 있겠습니다. 합성곱 신경망의 구성 요소들 Components of a Convolution Network
  • 24. 풀링 계층 : 샘플 줄이는 다른 방법 Pooling Layers: Another way to downsample ▪ 여러분들은 풀링 레이어가 어떻게 합성곱 신경망 내부에서 다운 샘플링을 하는지 알아야 해요. 이들은 학습을 시켜야 하는 파 라미터도 없어요. ▪(합성곱 계층에서는 학습/최적화 과정을 통해 가중치 행렬들이 학습되었으나 풀링에서는 학습될 가중치/파라미터가 없음)
  • 25. 풀링 계층 : 샘플 줄이는 다른 방법 Pooling Layers: Another way to downsample ▪ 이미 우린 합성곱 신경망에서 합성곱 계층에 스트라이드를 1보다 크게 해서 공간적 데이터, 텐서의 공간적 차원을 줄이는 방법 을 봤었죠. 하지만 대신 우리가 사용할 이 풀링 계층은 커널 사이즈를 지정하는 하이퍼파라미터는 있지만 학습해야할 파라미터 (가중치)는 없습니다.
  • 26. 풀링 계층 : 샘플 줄이는 다른 방법 Pooling Layers: Another way to downsample ▪ 하지만 풀링 계층은 합성곱 계층과 비슷한 기능을 하는데, 커널 사이즈 만큼 입력 텐서에서의 수용장 범위 만큼 보고, 각 수용장 범위들, 영역들에서 어떤 풀링 함수를 통해 그 범위 안에 있는 여러 입력값들을 없애고 하나의 출력값만을 만듭니다. 이 연산을 모든 입력 텐서의 조각들(풀링 범위, 수용장 범위)에다가 해서, 다운 샘플링을 시킨 출력값을 얻을수가 있어요.
  • 27. ▪ 가장 많이 사용되는 풀링 방법으로 이 예제에서는 2 x 2 치대 풀링이 있습니다. 여기서는 스트라이드를 2를 주었는데, 스트라이 드와 커널 사이즈가 같아야, 각 2 x 2 영역들이 겹치지 않고 입력 텐서들을 나눠줄수가 있어요. 그래서 이런 식으로 커널과 스트 라이드를 똑같이 해서 풀링을 자주 사용합니다. 최대 풀링 Max Pooling
  • 28. ▪ 4 x 4 크기 spatial의 입력을 받았을때, 이들을 2 x 2개의 공간으로 나눌수 있을것이고 여기선 다른 색깔로 표시할께요. 그리고 각 2 x 2 공간에서 이 공간을 정리해서 나타낼수 있는 출력값 하나를 구할수가 있겠습니다. 여러분이 최대 풀링을 사용한다면, 이 하나의 값을 구하는데 맥스 함수를 쓰면됩니다. 최대 풀링 Max Pooling
  • 29. ▪ 각 영역에서 가장 큰 값이 출력의 한 구간의 값이 되겠습니다. 빨간 영역에서 값 하나를 추출한다면 가장 큰게 6이므로 6이 나 올거고, 녹색 영역에서는 8, 노란색에서는 3, 파란색에서는 4가 나와 오른쪽의 풀링 결과가 나오겠습니다. 왜 합성곱 보다 풀링을 선호하는 이유는, 이 풀링 계층은 학습할 파라미터가 없거든요. 최대 풀링 Max Pooling
  • 30. ▪ 두번째는 평행한 방향으로 약한 이동하더라도 풀링을 한 값이 변하지 않다는 점입니다. 이 최대 풀링의 경우 맥스 연산으로 각 영역에서 가장 큰 값을 고르다보니, 입력 이미지가 약간 이동해서 들어오더라도(이미지 안에 있는 값의 위치가 조금씩 변하더라 도) 해당 영역에 속하는 최대 값은 변하지 않기 때문입니다. 최대 풀링 Max Pooling
  • 31. ▪ 그래서 우리가 맥스 풀링을 사용할때 평행이동을 하더라도 불변성이 존재하여 다른 여러 문제들에 유용하게 사용될수 있어요. 최대 풀링이랑 다른 비슷한 방법으로 평균 풀링 average pooling이 있습니다. 최대 풀링 Max Pooling
  • 32. ▪ 이 평균 풀링은 최대 풀링과 동일한 영역에 있는 값들을 평균을 계산하여 출력으로 사용하는 방법이라고 할수 있겠습니다. 이 건 풀링의 요약인데, 합성곱때와 비슷하게 생겼죠. 스트라이드랑 커널 사이즈 파라미터가 있고, 다른건 합성곱에서 내적 계산하던 거랑 다르게 수용장 영역에 사용할 풀링 함수를 지정해줘야 한다는 점입니다. 풀링 정리 Pooling Summary
  • 33. ▪ 이제 지금까지 완전 연결 계층과 활성화 함수, 합성곱 계층, 풀링계층이 대해서 살펴 보았고, 이것들을 가지고 고전적인 방식의 컨브넷 convet을 만들수가 있겠는데 합성곱 신경망의 구성 요소들 Components of a Convolution Network
  • 34. ▪ 지금 보시는건, 우리가 배운 연산들을 잘 조합해서 만든 신경망의 한 종류인데, 어떻게 연결시켜서 만들지는 여러분들의 자유입 니다. 하지만 지금 보고 있는 합성곱 신경망에서는 고전적인 설계 형태를 볼수 있는데, 합성곱-ReLU-Pool, 합성곱-ReLU-Pool 한 다음에 완전 연결 계층으로 이루어지고 있네요. 이건 엄청 고전적인 방식의 합성곱 신경망의 예시인 LeNet-5 입니다. 이 신경망 은 1998년 레쿤이란 사람이 문자 인식을 하려고 만든 신경망이에요. 합성곱 신경망 Convolution Network
  • 35. ▪ 이 LeNet-5는 크기가 28 x 28인 그레이 스케일(명암) 이미지를 하나로 입력으로 받는데, 그레이 스케일 이미지의 경우 채널이 하나 뿐이므로, 각 픽셀의 강도/세기 intensity 값도 한개 입니다. 가장 먼저 만나는건 합성곱 계층으로 합성곱 필터가 20개가 있 는데, 각 필터의 크기가 5 x 5이고 채널이 하나 뿐이에요. 그리고 여기서는 패딩 사용하지 않습니다. * 강의 오류 ? : 강의에서 LeNet-5는 28 x 28 크기의 입력을 받고 패딩을 사용하지 않는다고 말하면서, 그림은 P = 2로 출력 크 기가 20 x 28 x 28로 출력이 줄어들지 않고 입력과 동일한 크기로 유지되고 있음. 예시 : LeNet-5
  • 36. ▪ 잠시 LeNet-5에 대해 검색 해본 결과 1 x 32 x 32 입력을 받아 6 x 1 x 5 x 5의 커널로 첫 합성곱 연산을 수행. 패딩을 쓰지 않아 32 x 32 크기의 입력이 28 x 28로 줄어들고 있다. 본 강의에서 예시 설명이 잘못된것 같아 이 장 대부분은 넘어가고 일부만 살펴 보자. 예시 : LeNet-5
  • 37. ▪ 좋은 질문이 들어왔는데, 최대 풀링이 비선형적인 효과를 갖는다고 얘기했는데 여기서 왜 ReLU함수를 사용하나요 라는 질문이 들어왔습니다. 여기서 ReLU를 사용하는 이유는 제 생각에는 여러분들 말대로 ReLU를 굳이 넣을 필요는 없어요. 다만 현대 합성 곱 신경망에서 ReLU를 자주 쓰다보니 그런것 같아요. 예시 : LeNet-5
  • 38. ▪ 여러분들이 레쿤의 논문을 보면 각 계층에서 ReLU를 비선형성을 주기 위해 쓴게 아니고, 비선형성을위해 최대 풀링을 사용하 다보니 여러분들이 맞다고 봅니다. 하지만 현대 신경망 설계에서는 꼭 해야한다는 건아니지만 최대 풀링을 쓸때 ReLU를 자주 사 용하고 있어요. 예시 : LeNet-5
  • 39. ▪ 그리고 마지막으로 맨 끝에 보면 완전 연결 신경망이 숫자를 인식하룻 있도록 10개 클래스에 대한 점수를 만들고 있는데, 여기 서 눈에 띄는 점은 이 고전 합성곱 신경망 설계를 보시면 공간적인 크기(이미지 크기)가 풀링 계층을 거치고 나서 줄어들지만 채 널의 깊이, 필터의 수가 증가하고 있는 점입니다. 예시 : LeNet-5
  • 40. ▪ 그래서 전체 볼륨/크기는 항상 유지되고 있어요. 겉보기에는 이미지 크기 자체는 줄이지만 필터를 옆으로 늘리는 식으루요. 합 성곱 신경망에서 흔히 사용되는 방식 입니다. 질문이 들어왔네요. 이걸 얼마나 해야되는냐고 물어보는데, 제 생각에는 이건 많은 시행착오로 구해야한다고 생각합니다. 하지만 다음 강의에서 다양한 합성곱 설계법들과 어떻게 개선되어왔는지 역사에 대해서 얘기할거다 보니 여러분들에게 도움될거라고 생각해요. 예시 : LeNet-5
  • 41. 문제 : 심층 신경망은 학습하기 정말 힘들다! ▪ 하지만 오늘 강의의 목표를 생각하면 어떻게 1998년 레쿤이 만든 모델이 잘 동작하게 되는지 알 필요가 있어요. 하지만 이런 고 전적인 설계법에는 문제점이 있습니다. 합성곱 - ReLU - 풀링이 반복되서 쌓이는 식으로 신경망을 깊이 만드는 방식이 흔하게 사 용되나, 이런 고전적인 합성곱 신경망 설계 방식으로 신경망을 깊게 만들 때 하나의 값으로 수렴하기가 힘들어지는 문제가 발생 할 수 있어요.
  • 42. ▪ 이 문제를 극복하기 위해서 최근 신경망 안에 정규화 계층을 추가하는게 최근 추세 입니다. 이렇게 하면 심층 신경망을 쉽게 학 습 할 수 있어요. 합성곱 신경망의 구성 요소들 Components of a Convolution Network
  • 43. ▪특히 가장 유명한 방식으로 배치 정규화 batch normalization이란 개념이 있는데, 이 개념은 이전 층의 출력을 정규화 해서 입력 으로 받는 방식으로 평균이 0이고 분산이 1인 분포로 정규화를 시킵니다. 여러분들이 이 논문을 보셨다면 내부 공분산 변동? internal covariate shift라고 부르는 개념을 줄인다고 하고 있는데, 내부 공분 변동이 무엇인지 잘 이해하기는 힘들 겁니다. 배치 정규화 Batch Normalization
  • 44. ▪ 대략적인 개념은 여러분이 심층 신경망을 학습할때, 각 계층에서는 이전 계층의 출력을 사용 할겁니다. 모든 가중치 행렬들이 동시에 학습되다보니, 다시 말하면 이전 계층의 가중치 행렬이 최적화 과정에서 변하므로, 다음 계층에서 입력으로 사용될 현재 출력의 분포도 최적화 과정에서 변하게 될겁니다. 배치 정규화 Batch Normalization
  • 45. ▪ 그래서 두번째 계층에서는 학습 중 달라진 입력 분포를 받을건데, 이건 내부 공분 변동에 강하지 않다보니(가중치 행렬의 분포 가 학습 과정에서 계속 달라지는 걸 말하는것 같다.) 최적화 관점에선 좋지 않을수도 있습니다. 이 내부 공변 변동의 문제를 극복 하기 위한 방법으로 모든 계층의 타겟 분포, 출력의 분포를 평균이 0, 분산이 1인 정규분포로 변환을 시켰습니다. 배치 정규화 Batch Normalization
  • 46. ▪ 이렇게 하면 다음 계층이 활성화 계층일때 훈련 과정에서 정상적인 분포 stationary distribution 를 입력으로 받을수 있죠. 이렇 게 하면 심층 신경망의 최적화 과정을 안정화시키고, 가속화 시킬수가 있어요. 이걸 하는 방법은 확률 분포 x로부터 샘플 집합 x^k를 가지고 있다고 할때, 이 샘플들 전체를 평균 만큼 빼주고, 표준편차로 나눔으로서 정규화를 시켜줄 수가 있습니다. ▪ 그리고 이건 미분 가능 함수이고, 우린 계산 그래프에 대해 알고 있으니 이 미분 가능 함수를 신경망에다가 넣어서 사용할수가 있겠습니다. 배치 정규화 Batch Normalization
  • 47. ▪ 배치 정규화로 할 일은 이 계층을 신경망에 넣어서 입력들은 정규 분포를 따르는 값들로 변환시켜 주면 되겠습니다. 더 구체적 으로 보자면, 배치 정규화를 완전 연결된 신경망에서 생각해볼게요. 배치 차원의 크기는 N, 입력 데이터는 N개이고, 벡터 차원의 크니는 D로, 한 데이터의 길이/차원이 D인 벡터가 N개가 있습니다. 배치 정규화 Batch Normalization
  • 48. ▪ 여기서 할 일은 (한 벡터 값들의 평균이 아닌) 배치 차원으로 평균 (여러 데이터들의 한 채널 값들로 평균)을 구하면 됩니다. 배 치에 있는 모든 샘플들로 각각의 채널들에 대한 평균을 구하면, 전체 평균 벡터의 크기는 D가 될겁니다. 그리고 표준 편차를 계산 하는 식으로 각 채널에서 표준 편차를 구하면, 한 채널의 데이터가 주어질때 그 채널의 평균을 빼고 구한 해당 채널의 표준 편차 를 나눔으로서 평균이 0이고, 분산이 1이 되도록 정규화를 시킬수가 있겠습니다. 배치 정규화 Batch Normalization
  • 49. ▪ 여기서 정규화를 시킬때 표준 편차 자리에 앱실론 항을 더해주는 이유는 표준 편차가 0인 경우 0으로 나눠지는 것을 방지하기 위함으로 이 앱실론은 아주 작은 상수라고 생각할수 있겠습니다. 이 값은 하이퍼 파라미터이지만 크게 설정하지는 않아요. 배치 정규화 Batch Normalization
  • 50. ▪ 지금까지 여러분들은 입력 데이터의 평균을 0, 분산이 1이 되도록 만들어주는게 최적화에서 좋다고는 하는데, 신경망에서 사용 하기에는 이건 꽤 엄격한 제약이 될수 있어요. 모든 이 배치 정규화 계층은 항상 이 정규화된 단위 값을 학습을 하다보니, 평균치 와 분산을 제약한다고 볼수 있을것 같습니다. -> N(0, 1)의 분포를 따르도록 데이터를 만들다 보니 더 나은 성능을 내도록 하지를 못함. 배치 정규화 Batch Normalization https://de-novo.org/2018/05/28/batch-normalization-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
  • 51. ▪ 그래서 실제 사용시에는 정규화를 한 후에 추가적인 연산을 하는데요. 스케일과 시프트 파라미터 감마와 베타를 신경망에 추가 시킵니다. 이들은 (아까 각 채널로 평균/분산을 구하여 D차원의 벡터를 만들어 정규화 그래서 각 채널 만큼 스캐일과 시프트 파 라미터도 D개가 필요) D차원의 벡터로, 정규화 출력 X_hat에다가 이 학습가능한 파라미터를 사용하여 더하고(베타 = 평균), 곱함 으로서(감마=표준편차)로 원래 대로 되돌릴 수가 있습니다. * 배치 정규화 설명이 이해 되지 않아 뒤에 타 링크의 설명 추가 배치 정규화 Batch Normalization
  • 52. ▪ 이 학습 가능한 파라미터들이 신경망이 필요한 각 벡터에서의 평균과 분산으로 스스로 학습을 통해 찾을 겁니다. 신경망이 감 마 = 시그마/분산 과 베타 = 뮤/평균가 되도록 학습을 시킨다면 베치 정규화 계층의 출력을 다시 복원 시킬수가 있을 겁니다. 이 게 신경망에다가 스케일, 시프트 파라미터를 추가하는 이유에요. * 배치 정규화 설명이 이해 되지 않아 뒤에 타 링크의 설명 추가 배치 정규화 Batch Normalization
  • 53. ▪ 타 링크 설명 : 출력 데이터의 분포가 N(0, 1)의 정규 분로만 제약되는 걸 방지하기 위해, 데이터가 정규 분포의 형태를 따르 되 스케일 파라미터 감마(분포 크기 조절)와 시프트 파라미터로 베타(편향 역활로 치우쳐짐 정도 조절)이 학습되는 파라미터로 사용 됨. 실제 출력은 N(0, 1) x_hat이 아닌 위 파라미터로 조정한 y값. 만약 학습한 결과 감마 = 기존의 표준분포, 베타 = 기존의 평균 이라면 배치 정규화는 항등 함수 역활을 수행함 배치 정규화 Batch Normalization https://de-novo.org/2018/05/28/batch-normalization-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
  • 54. ▪ 여기에 또 다른 문제가 있는데, 우측의 부분에 보시면 평균과 시그마를 입력 차원의 배치 차원으로 평균으로 계산하고 있습니 다. 여기서 우리가 그동안 보지못한 특이한 부분은 배치 데이터를 가지고 배치 단위로 독립적으로 연산을 한다는 점이에요. 여러 분이 배치에다가 뭘 넣던간에, 고양이 사진을 넣거나 강아지 사진을 넣더라도 다른 배치끼리 분류 스코어가 나오는데 영향을 주 지는 않습니다. 배치 정규화 : 테스트 상황
  • 55. ▪ 하지만 배치 정규화에서는 한 배치의 출력들은 같은 배치에 있는 다른 데이터에 영향을 받다보니 테스트 시에는 나쁠수 있어요. 왜냐면 예를들면 여러분이 웹 서비스를 돌리고 있는데, 유저들이 매 시간마다 뭘 업로드 하는지 계산한다고 해요. 그런데 여러분 의 신경망의 예측 결과가 동시간대의 다른 사람이 뭘 업로드하는지에 영향을 받으면 좋지는 않겟죠. 배치 정규화 : 테스트 상황
  • 56. ▪ 머신 러닝 모델이 이렇게 되는건 정말 나쁠수 있다 보니, 테스트를 할 때 좋은 방법은 한 배치 안에 있는 모든 데이터들이 독립 이 되도록 하는게 되겠습니다. 그래서 훈련시에는 배치 정규화는 배치 안에 있는 데이터들을 이런 식으로 평균과 표준 편차를 구 하고 배치 정규화 : 테스트 상황
  • 57. ▪ 테스트 상황에서는 배치 데이터로 계산하는게 아니라, 훈련시에 얻었던 평균과 시그마의 전체 평균 값을 사용하겠습니다. 이 렇게 하면 우린 훈련 데이터로 구한 전체 평균과 분산의 평균을 상수 값으로서, 테스트 때는 배치 단위의 평균이 아닌 이 값들을 사용해 나갈건데, 이렇게 하면 배치 데이터에서도 독립성을 얻을 수 있어 좋다고 할수 있겠습니다. 배치 정규화 : 테스트 상황
  • 58. ▪ 여기서 사용하는 평균과 시그마가 상수값이 되면, 이제 이 배치 정규화 연산은 선형 연산이 됩니다. 여기 보시면 한상수 값을 빼 고, 또 다른 상수 값으로 나누거든요. 그래서 이 정규화 단계를 거치고, 학습한 스케일과 시프트 파라미터로 스케일과 시프트 단 계를 거칠겁니다. 그렇게 되면 테스트에서의 배치 정규화 연산은 선형 연산이 되며, 이걸 합성곱 신경망 뒤에다가 붙이면, 여러 분이 알다시피 두 선형 연산자를 붙이면 하나의 선형 연산자가 되었었죠. 배치 정규화 : 테스트 상황
  • 59. ▪ 실제로 추론 과정에 이렇게 합친 연산이 자주 이뤄져요. 그래서 구한 평균과 표준편차, 스케일, 시프트 파라미터가 이전 합성곱 연산과 합쳐지면서 배치 정규화는 테스트 시에 사라지게 됩니다. 정확히 말하자면 테스트 시 이전 선형 연산자와 합쳐지는 바람 에 계산 비용이 0이 되어요. 배치 정규화 : 테스트 상황
  • 60. ▪ 그래서 배치 정규화는 실제로 사용하기에는 정말 좋은 방법이며, 완전 연결 신경망에 배치 정규화를 붙인 경우를 이야기 했는 데, 합성곱 신경망에서도 배치 정규화가 자주 사용되고 있습니다. 어떻게 완전 연결 신경망에서 동작하는지 보자면, 입력 X의 크 기가 N x D가 있었는데 이걸 배치 차원으로 평균을 계산하여 1 x D 의 평균과 분산, 그리고 감마와 베타를 계산하였습니다. 합성곱 신경망에서의 배치 정규화 Batch Normalization for ConvNets
  • 61. ▪ 이번에는 합성곱 신경망의 경우를 봅시다. 대부분은 비슷한데, 배치 차원으로 평균을 구했던것과는 달리 배치 차원 뿐만이 아니 라, 공간적 차원에 대해서도 평균과 표준편차를 계산하여 한 파라미터의 벡터 크기는 1 x C x 1 x 1개로 채널의 개수가 되겠습니 다. 합성곱 신경망에서의 배치 정규화 Batch Normalization for ConvNets
  • 62. ▪ 이건 배치 정규화 계층을 신경망에다가 추가한 예시인데, 합성곱 계층이나 완전 연결 계층 뒤에 직접 추가를 시킵니다. 배치 정 규화의 좋은 점은 신경망의 학습을 훨씬 빠르게 해줘요. 배치 정규화 Batch Normalization
  • 63. ▪ 이 그림은 배치 정규화 논문에 나오는데, 여기서 보이는검은 점선이 베이스라인 신경망으로 배치 정규화 없이 합성곱과 풀링 계층 그리고 다른 연산으로 이뤄져 있습니다. 빨간 점선은 합성곱 계층 뒤에다가 배치 정규화 계층을 추가만 하고 다른 바꾼건 없 는 경우인데 이 배치 정규화가 추가된 모델에서 엄청 빠르게 학습되는걸 볼수 있어요. 배치 정규화를 사용하고, 학습률을 높이 주 었을때 학습 과정에 발산하지 않고 빠르게 정확도가 올라가고 있죠. 배치 정규화 Batch Normalization
  • 64. ▪ 여기서 파란 선은 같은 신경망인데 배치 정규화 계층을 추가하고, 학습율을 높이 준 경우에요. 그래서 이 둘을 조합했을때 심층 신경망을 훨신 빠르고 다른 합성곱 신경망들 보다 강건해지는걸 볼수 있었습니다. 배치 정규화 Batch Normalization
  • 65. ▪ 하지만 배치 정규화의 아쉬운 점은 이론적으로 왜 이렇게 잘 동작되는지 이해하기가 힘들다는 점이에요. 내부 공변 변동에 변 화가 생기기는 한데, 이게 왜 최적화 과정을 돕는지 명확하지는 않습니다. 배치 정규화의 다른 문제는 훈련 때와 테스트 떄가 다 르게 동작한다는 점이며, 여러 응용시에 버그의 원인이 되고 있습니다. ▪ 여러분의 데이터가 균형이 맞지 않은 경우 배치 정규화를 사용하여 모델에 사용하기 적절하지 않을 수도 있긴하나, 이미지 클 래스가 윤형이 있는 이미지 분류 문제의 경우 정규화를 시키는게 적절 하구요. 배치 정규화 Batch Normalization
  • 66. 계층 정규화 Layer Normalization ▪ 배치 정규화의 문제점 중 하나는 훈련 때와 테스트 때가 다르게 동작하는건데, 여러분의 모델이 훈련이나 테스트때 똑같이 동 작해야할 때는 그러면 안되겠죠. 훈련과 테스트 때 한 계층에서 동일하게 동작하면 좋을거에요. 그렇게 하는 배치 정규화를 바꾼 버전으로 계층 정규화 Layer Normalization라는 기법이 있습니다.
  • 67. 계층 정규화 Layer Normalization ▪ 기본 개념은 비슷하게 평균과 표준 편차를 구하고 정규화를 시키는데 차이점은 배치 차원에 대해서 평균을 구하는게 아니라 특 징 차원 D에 대해서 평균을 구하고 정규화를 해요. 그렇게 하면 배치 차원에 데이터의 수에 영향을 받지 않고 훈련때나 테스트 때나 동일한 연산을 할수 있게 되요. 이 계층 정규화 연산자는 순환 신경망과 차후에 강의에서 설명할 트랜스포머에서 사용됩니 다.
  • 68. ▪ 다른 배치 정규화의 다른 버전으로 인스턴스 정규화 Instance Normalization가 있습니다. 이 방법은 배치와 공간 차원에 대해서 평균을 구하는게 아니라, 공간적 차원에 대해서만 평균을 구하여 정규화를 시킵니다. 그러면 여기서 사용하는 평균과 표준 편차 들은 배치 차원과는 관련이 없어지므로 테스트와 훈련 상황에 동일하게 동작을 할수가 있겠습니다. 인스턴스 정규화 Instance Normalization
  • 69. ▪ 이 그림은 다양한 정규화 방법들을 비교하기 쉽게 나타낸 그림인데, 우리가 배치 차원, 채널 차원, 공간 차원이 있는 텐서가 있 을때, 배치 정규화의 경우 배치와 공간 차원에서 평균을 구하고 있고, 계층 정규화는 공간 차원과 채널 차원의 평균을 구합니다. 그리고 인스턴스 정규화의 경우 채널 차원에 대해서 평균을 구하구요. ▪ 여기에 빈공간이 있다 시피 다른 타입의 정규화가 있을거라 예상할수가 있을텐데 정규화 계층 비교 Comparison of Normalization Layers
  • 70. ▪ 얼마전에 그룹 정규화 group normalization이란 방법이 나왔습니다. 이 방법은 채널 차원을 몇개의 그룹으로 나누어 정규활르 하는 방법인데 물체 인식 같은 응용분야에서 잘 동작하고 있습니다. 그룹 정규화 Group Normalization
  • 71. ▪ 그래서 지금까지 우리는 합성곱 신경망의 다양한 구성 요소들을 살펴보았습니다. 여러분들이 아마 이걸로 어떻게 해서 신경망 모델을 만들지 궁금하실거에요. 저는 이걸 어떻게 조합해야 좋은 모델을 만들수 있는지 얘기를 못했는데, 다음 주에 어떻게 신경 망을 만드는지에 대해서 배워봅시다. 합성곱 신경망의 구성 요소들 Components of a Convolution Network