풀링 계층최대 풀링폴링은 세로, 가로 방향의 공간을 줄이는 연산입니다.위 그림은 스트라이드 2로 최대폴링하는 것입니다. 쵀대폴링은 최댓값을 구하는 연산을 말합니다. 즉, 2x2 최대 풀링은 그림과 같이 2x2 크기의 영역에서 가장 큰 원소를 하나 꺼냅니다. 참고로, 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 보통입니다. 풀링 계층의 특징학습해야 할 매개변수가 없다풀링 계층은 합성곱 계층과 달리 학습해야 할 매개변수가 없습니다. 풀링은 대상 영역에서 최댓값이나 평균을 취하는 명확한 처리이기 때문입니다. 채널 수가 변하지 않는다풀링 연산은 입력 데이터의 채널 수 그대로 출력 데이터를 내보냅니다. 채널마다 독립적으로 계산하기 때문입니다. 입력의 변화에 영향을 적게 받는다(강건하다)입력 데이터..
합성곱 계층합성곱 연산합성곱 계층에서의 합성곱 연산을 처리합니다. 합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당합니다.(문헌에서는 필터를 커널이라고 칭하기도 합니다.) 합성곱 연산은 필터의 윈도우(window)를 일정 간격으로 이동해가며 입력 데이터에 적용합니다. 아래 그림에서 보듯 입력과 필터에서 대응하는 원소끼리 곱한 후 그총합을 구합니다.(이 계산을 단일 곱셈-누산(fused multiply-add,FMA)라고 합니다.)완전연결 신경망에서는 가중치 매개변수와 편향이 존재하는데, 여기서 가중치가 필터의 매개변수입니다. 그리고 편향은 필터를 적용 후의 데이터에 더하면 됩니다.(편향은 항상 1x1만 존재) 패딩(padding)합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값(예컨대 0)으..
CNN의 전체 구조일반적인 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있습니다. 이를 완전연결이라고 하며, 완전히 연결된 계층을 Affine 계층으로 구현했습니다.CNN의 구조는 완전연결계층(Fuuly-Connected Layer)과는 다른점이 있습니다. 완전연결계층에서는 Affine계층으로 구현했지만, CNN에서는 아래의 그림처럼 합성곱 계층과 폴링 계층이 추가됩니다. 그리고 출력에 가까운 층에서는 다시 Affine-ReLU 구성을 사용할 수 있습니다. 마지막 계층에서는 Affine-Softmax 조합을 그대로 사용합니다. 합성곱 신경망(CNN)합성공 신경망(CNN)은 음성 인식이나 이미지 인식에서 주로 사용하는데, 특히 이미지 인식 분야에서는 딥러닝을 활용한 기법이 거의 다 CNN을 기초로 합니다..
오버피팅오버피팅이란 신경망이 훈련 데이터에만 지나치게 적응되어 그 외에 데이터에는 제대로 적응하지 못하는 상태를 말합니다. 기계학습은 범용 능력을 지향하기 때문에 훈련 데이터에서만 잘 작동하는 모델은 필요가 없습니다. 오버피팅은 주로 다음 두 경우에 일어납니다. 매개변수가 많고 표현력이 높은 모델훈련 데이터가 적음 가중치 감소가중치 감소는 학습 과정에서 큰 가중치에 대해서는 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제하는 방법입니다.(L2 법칙 많이 사용) 원래 오버피팅은 가중치 매개변수의 값이 커서 발생하는 경우가 많기 때문입니다. 가중치 감소를 시키는 원리는 손실 함수에 가중치의 L2노름을 더하는 것입니다. 가중치 감소 전(Overfiting)가중치 감소 후 훈련 데이터와 시험 데이터와의 차이..
가중치 초기화은닉층의 활성화 분포은닉층의 활성화값(활성화 함수의 출력 데이터)의 분포를 관찰하면 중요한 정보를 얻을 수 있습니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import numpy as npimport matplotlib.pyplot as plt def sigmoid(x): return 1 / (1 + np.exp(-x)) def ReLU(x): return np.maximum(0, x) def tanh(x): return np.tanh(x) input_data = np.random.randn(1000, 100) # 1000개의 데이터node_num = 100..
매개변수 갱신SGD의 단점 SGD는 단순하고 구현도 쉽지만, 비등방성 함수(방향에 따라 성질, 즉 여기에서는 기울기가 달라지는 함수)에서는 탐색 경로가 비효율적이라는 것입니다. 이럴 때 무작정 기울어진 방향으로 진행하는 단순한 방식보다 더 영리한 방법이 필요하고. 지그재그로 탐색하는 근본 원인은 기울어진 방향이 본래의 최솟값과 다른 방향을 가리켜서라는 점도 생각해 볼 수 있습니다. 이제 SGD의 단점을 개선해주는 모멘텀, AdaGrad, Adam에 대해 설명해 보겠습니다. 모멘텀모멘텀은 운동량을 뜻하는 단어로, 물리와 관련이 있습니다. 모멘텀 수식은 다음과 같습니다.여기서 v는 물리에서 속도에 해당하는 부분입니다. 기울기 방향으로 힘을 받아 물체가 가속된다는 물리 법칙을 나타냅니다. av항은 물체가 아무..
오차역전파Affine/Softmax 계층 구현하기Affine 계층Affine은 신경망의 순전파 때 수행하는 행렬의 내적을 기하학에서 부르는 말로 input 값과 weight값들을 행렬 곱하여 계산하고 거기에 편향을 추가하여 출력값 y를 최종적으로 반환하는 내용에 대한 것이다.(행렬의 내적 시 원소별 차원 맞추는 것을 주의)1234567891011121314151617181920>>> import numpy as np>>> X=np.random.rand(2) #input>>> W=np.random.rand(2,3) #weight>>> B=np.random.rand(3) #bias>>> >>> print(X.shape)(2,)>>> print(W.shape)(2, 3)>>> print(B.shape)(3,)..
오차역전파계산 그래프계산 그래프는 계산 과정을 그래프로 나타낸 것입니다. 자료구조에서 볼 수 있는 그래프 자료구조로, 노드와 엣지로 표현됩니다. 계산 그래프의 이점계산 그래프의 이점은 크게 2가지가 있습니다. 첫 번째는 국소적 계산입니다. 국소적 계산을 전파함으로써 최종 결과를 얻는다는 점입니다. 국소적이란 자신과 직접 관계된 작은 범위라는 뜻입니다. 즉, 독립적이라는 뜻이죠. 국소적 계산을 좀더 이해하기 위해서 계산 그래프를 그려 확인해 보겠습니다.위 그림을 보면 다른 노드에서 4000원이라는 결과가 어떻게 나왔든지간에 단지 4000과 200을 더하기만 하는 것을 볼 수 있습니다. 각 노드가 자신과 관련한 계산 외에는 아무것도 신경 쓸 게 없습니다. 이처럼 계산 그래프는 국소적 계산에 집중합니다. 전체..