합성곱 계층합성곱 연산합성곱 계층에서의 합성곱 연산을 처리합니다. 합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당합니다.(문헌에서는 필터를 커널이라고 칭하기도 합니다.) 합성곱 연산은 필터의 윈도우(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을 더하기만 하는 것을 볼 수 있습니다. 각 노드가 자신과 관련한 계산 외에는 아무것도 신경 쓸 게 없습니다. 이처럼 계산 그래프는 국소적 계산에 집중합니다. 전체..
신경망의 학습Data(데이터)데이터 주도 학습머신러닝은 데이터가 생명입니다. 왜냐하면 알고리즘을 명시적으로 설계하는 것보다 주어진 데이터를 잘 활용해 문제를 해결하는 것이 더 쉽고 간단하기 때문입니다. 그런 방법 중 하나로, 이미지에서 특징(feature)을 추출하고 그 특징의 패턴을 기계학습 기술로 학습하는 방법이 있습니다. 기계는 모아진 데이터로부터 규칙을 찾아내는 역할을 담당하고, 사람은 이미지를 벡터로 변환할 때 사용하는 특징을 설계하는 역할을 합니다. 여기서 사람이 특징을 설계하기 때문에 문제에 적합한 특징을 쓰지 않으면(혹은 특징을 설계하지 않으면)좀처럼 좋은 결과를 얻을 수 없다는 말이 됩니다. 여기서 머신러닝과는 다르게 신경망(딥러닝)의 이점이 나타납니다. 딥러닝은 사람의 역할조차 기계가 ..