본문 바로가기

Study/책『밑바닥부터 시작하는 딥러닝』10

6-2. 학습 관련 기술들 6.4. 바른 학습을 위해 기계학습에서는 오버피팅을 억제하는 기술이 중요해진다. 오버피팅이란 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태다. 6.4.1. 오버피팅 오버피팅은 주로 다음의 두 경우에 일어난다. 매개변수가 많고 표현력이 높은 모델 훈련 데이터가 적음 이 두 요건을 일부로 충족하여 오버피팅을 일으켜보겠다. 60000개인 MNIST 데이터셋의 훈련 데이터 중 300개만 사용하고, 7층 네트워크를 사용해 네트워크의 복잡성을 높이겠다. 각 층의 뉴런은 100개, 활성화 함수는 ReLU를 사용한다. 실험에 필요한 코드를 발췌해 설명하겠다. (깃허브https://github.com/WegraLee/deep-learning-from-scratch 에서 ch0.. 2020. 5. 12.
6-1. 학습 관련 기술들 6. 학습 관련 기술들 6장에서는 신경망 학습의 핵심 개념을 다룬다. 가중치 매개변수의 최적값을 탐색하는 최적화 방법, 가중치 매개변수 초깃값, 하이퍼파라미터 설정 방법 등이다. 오버피팅 대응책인 가중치 감소와 드롭아웃 등의 정규화 방법과 배치 정규화도 짧게 알아본다. 6.1. 매개변수 갱신 신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것이다. 이는 곧 매개변수의 최적값을 찾는 문제이며, 이 문제를 푸는 것을 최적화(optimization)라 한다. 신경망 최적화는 굉장히 어려운 문제다. 매개변수 공간은 매우 넓고 복잡해서 최적의 솔루션은 쉽게 찾을 수 없다. 심층 신경망에서는 매개변수의 수가 엄청나게 많아져서 더 어렵다. 지금까지 최적의 매개변수 값을 찾는 단서로 매개변수의.. 2020. 5. 11.
5-2. 오차역전파법 5.5. 활성화 함수 계층 구현하기 계산 그래프를 신경망에 적용하기 위해 신경망 계층을 클래스 하나로 구현한다. 우선 활성화 함수인 ReLU와 Sigmoid 계층을 구현한다. 5.5.1. ReLU 계층 활성화 함수로 사용되는 ReLU 수식은 아래와 같다. x에 대한 y의 미분은 다음처럼 구한다. 순전파 때의 입력인 x가 0보다 크면 역전파는 상류의 값을 그대로 하류로 흘린다. 순전파 때 x가 0 이하면 역전파 때는 하류로 신호를 보내지 않는다(0을 보낸다). 계산 그래프로는 아래처럼 그린다. ReLU 계층을 구현할 건데, 신경망 계층의 forward()와 backward() 함수는 넘파이 배열을 인수로 받는다고 가정한다. ReLU 계층을 구현한 코드는 common/layers.py에 있다. (깃허브htt.. 2020. 4. 9.
5-1. 오차역전파법 4장에서 신경망의 가중치 매개변수의 기울기(정확히는 가중치 매개변수에 대한 손실 함수의 기울기)는 수치 미분을 사용해 구했다. 수치 미분은 단순하고 구현하기 쉽지만 계산 시간이 오래 걸린다. 가중치 매개변수의 기울기를 효율적으로 계산하는 오차역전파법(backpropagation)을 알아보겠다. 오차역전파법을 이해하기 위해서는 수식이나 계산 그래프를 이용한다. 수식을 사용하면 정확하고 간결하게 이해할 수 있지만 시각적으로 이해하기 위해 계산 그래프를 사용한다. 5.1. 계산 그래프 계산 그래프(computational graph)는 계산 과정을 그래프로 나타낸 것이다. 여기서 그래프는 그래프 자료구조로, 복수의 노드(node)와 에지(edge)로 표현된다(노드 사이의 직선을 에지라고 한다). 5.1.1. .. 2020. 3. 31.
4-2. 신경망 학습 4.4. 기울기 앞 절에서는 x0 와 x1 의 편미분을 변수별로 따로 계산했다. 가령 x0 = 3, x1 = 4 일 때 (x0 , x1) 양쪽의 편미분을 묶어 계산한다고 생각해보자. 위처럼 모든 변수의 편미분을 벡터로 정리한 것을 기울기(gradient)라고 한다. 기울기는 다음과 같이 구현할 수 있다. def numerical_gradient(f, x): h = 1e-4 #0.0001 grad = np.zeros_like(x) #x와 형상이 같은 zero 배열 생성 for idx in range(x.size): tmp_val = x[idx] # f(x+h) 계산 x[idx] = tmp_val + h fxh1 = f(x) # f(x-h) 계산 x[idx] = tmp_val - h fxh2 = f(x) g.. 2020. 3. 25.