본문 바로가기

전체 글

(18)
홀수 판독 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 12..
풀링, Pooling 풀링은 세로 * 가로 방향의 공간을 줄이는 연산이다. 예를 들어 아래와 같이 2 * 2 영역을 원소 하나로 집약하여 공간 크기를 줄인다. ​ 맨 위의 그림은, “ 2 * 2 최대 풀링 , Max pooling “, 을 스트라이드 2로 처리하는 순서이다. 최대풀링은 최댓값을 구하는 연산으로, “ 2 * 2 “ 는 대상 영역의 크기를 뜻한다. 즉 2 * 2 최대 풀링은 그림과 같이 2*2 크기의 영역에서 가장 큰 원소를 하나 꺼내는 것이다. 또, 스트라이드는 이 예 에서는 2로 설정했으므로 2 * 2 윈도우가 원소 2칸 간격으로 이동한다. 참고로, 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 보통이다. 예를 들어 윈도우가 3 * 3 이라면, 스트라이드는 3으로 하는 것이 이상적이다. ​ 아래..
3차원의 합성곱 연산 지금까지 2차원 형상을 다루는 합성곱 연산을 살펴봤다. 그러나 이미지만 해도 세로 * 가로 에 더해서 채널까지 고려한 3차원 데이터이다. ​ 이번 내용은 조금 전과 같은 순서로, 채널까지 고려한 3차원 데이터를 다루는 합성곱 연산에 대해 알아보자. ​ 위의 그림은 3차원 데이터의 합성곱 연산의 예이다. 2차원일 때와 비교하자면, 길이 방향 ( 채널 방향 ) 으로 특징 맵이 늘어났다. 채널쪽으로 특징 맵이 여러개 있다면, 입력 데이터와 필터의 합성곱 연산을 채널마다 수행하고, 그 결과를 더해서 하나의 출력을 얻는다. ​ 아래의 그림은 계산 순서이다. ​ ​ 3차원의 합성곱 연산에서 주의할 점은 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다는 것이다. 이 예에서는 모두 3개로 일치한다. 한편, 필터..
스트라이드, Stride 필터를 적용하는 위치의 간격을 “ 스트라이드 , stride “ 라고 한다. 우리말로는 보폭이라는 뜻이다. 지금까지 본 예는 모두 스트라이드가 1이었지만, 예를 들어 스트라이드를 2로 하면 필터를 적용하는 윈도우가 모두 두 칸씩 이동한다. ​ 크기가 ( 7 , 7 ) 인 입력데이터에 스트라이드를 2로 설정한 필터를 적용한다. 이처럼 스트라이드는 필터를 적용하는 간격을 지정한다. ​ 하지만, 스트라이드를 2로 하니 출력 데이터가 ( 4 , 4 ) 에서 ( 3 , 3 ) 으로 줄었다. ​ 이처럼 스트라이드를 키우면 출력 크기는 작아진다. 한편, 패딩을 크게 하면 출력 크기는 커진다. 이러한 관계는 수식으로 나타 낼 수 있다. ​ 입력 크기를 ( H, W ) , 필터 크기를 ( FH, FW ) , 출력 크기를..
패딩, Padding 합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값 ( 예컨대 0 ) 으로 채우기도 한다. 이를 “ 패딩 , Padding “ 이라고도 한다. ​ 합성곱 연산에서 자주 이용하는 기법이다. 예를 들어 아래의 그림과 같이 ( 4 , 4 ) 크기의 입력 데이터에 “ 폭이 1인 패딩 “ 을 적용한 모습이다. ​ ​ 폭 1짜리 패딩이라 하면 입력 데이터 사방 1픽셀을 특정값으로 채우는 것이다. ​ 패딩은 점선으로 표시되었고, 그 안의 값 ‘ 0 ‘ 은 생략되었다. ( 4 , 4 ) 인 입력 데이터가 패딩이 추가가 되어 ( 6 , 6 ) 이 되었다. ​ NOTE_ ​ 패딩은 주로 출력 크기를 조정할 목적으로 사용한다. 예를 들어 ( 4 , 4 ) 입력 데이터에 ( 3 , 3 ) 필터를 적용하면 출력은 ( 2 ..
합성곱 연산 합성곱 계층에서의 합성곱 연산을 처리한다. 합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당된다. 아래 예를 살펴보자. ​ 위의 그림과 같이 합성곱 연산은 입력 데이터에 필터를 적용한다. 이 예에서 입력 데이터는 세로 * 가로 방향의 형상을 가졌고, 필터 역시 세로 * 가로 방향의 차원을 가진다. ​ 데이터와 필터의 형상을 ( “높이, height “ , “ 너비 , width “ )로 표기하며 구한다. ( 이 계산을 단일 곱셈-누산, fused multiply-add, FMA 이라고 한다. ) 그리고 그 결과를 출력의 해당 장소에 저장한다. ​ 이 과정을 모든 장소에서 수행하면 합성곱 연산의 출력이 완성된다. ​ 맨 위의 그림이라면, 왼쪽 위 원소부터 오른쪽으로 스캔해가며, ​ 1*2 + 2*0 ..
CNN, 합성곱 신경망, 컨볼루션 신경망 ​ NOTE_ ​ 합성곱은 공학과 물리학에서 널리 쓰이는 수학적 개념으로, 간단히 정의해보면 다음과 같다. “ 두 함수 중 하나를 반전(reverse), 이동(shift)시키며 나머지 함수와의 곱을 연이어 적분한다. “ 합성곱 신경망을 영어 발음 그대로 “ 컨볼루션 신경망 “ 으로도 많이 쓰기도 한다. ​ CNN은 이미지 인식과 음성인식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 CNN을 기초로 한다. CNN의 메커니즘과 이를 파이썬으로 구현해보는 것을 목표로 해보자. ​ 우선 CNN의 네트워크 구조를 살펴보며 전체 틀을 이해해보자. CNN도 지금까지 본 신경망과 같이 레고 블록처럼 계층을 조합하여 생성할 수 있다. ​ 다만, 합성곱 계층 ( convolut..
경사 하강법 기계학습 문제 대부분은 학습 단계에서 최적의 매개변수를 찾아낸다. 신경망 역시 최적의 매개변수 ( 가중치와 편향 )를 학습시에 찾아야 한다. ​ 여기에서 최적이란 손실 함수가 최솟값이 될 때의 매개변수 값이다. ​ 그러나 일반적인 문제의 손실 함수는 매우 복잡하고, 매개변수 공간이 광대하여 어디가 최솟값이 되는 곳인지를 짐작할 수 없다. ​ 이런 상황에서 기울기를 잘 이용해 함수의 최솟값( 또는 가능한 한 작은 값 ) 을 찾으려는 것이 경사법이다. ​ 여기에서 주의할 점은 각 지점에서 함수의 값을 낮추는 방안을 제시하는 지표가 기울기라는 것이다. 그러나 기울기가 가르키는 곳에 정말 함수의 최솟값이 있는지, ​ 즉 그쪽이 정말로 나아갈 방향인지는 보장할 수 없다. 실제로 복잡한 함수에서는 기울기가 가리키는..