본문 바로가기

신경망5

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.
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.
4-1. 신경망 학습 4. 신경망 학습 학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다. 4장에서는 신경망이 학습할 수 있도록 해주는 지표인 손실 함수를 다뤄본다. 손실 함수의 결괏값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표다. 이번 장에서는 손실 함수의 값을 가급적 작게 만드는 기법으로 함수의 기울기를 활용하는 경사법을 살펴본다. 4.1. 데이터에서 학습한다. 신경망의 특징은 데이터를 보고 학습할 수 있다는 점이다. 데이터에서 학습한다는 것은 가중치 매개변수의 값을 데이터를 보고 자동으로 결정한다는 뜻이다. 실제 신경망에서 매개변수를 수작업으로 정한다는 것은 불가능하다. 신경망 학습에 대해 살펴보고 파이썬으로 MNIST 데이터셋의 손글씨 숫자를 학습하는 코드를 구현해본.. 2020. 3. 16.
3-2. 신경망 3.4. 3층 신경망 구현하기 3층 신경망에서 수행되는, 입력부터의 출력까지의 처리(순방향 처리)를 구현하겠다. 넘파이의 다차원 배열을 사용한다. 3.4.1. 표기법 설명 3.4.2. 각 층의 신호 전달 구현하기 입력층에서 '1층의 첫 번째 뉴런'으로 가는 신호를 보겠다. 편향을 뜻하는 뉴런ⓛ이 추가됐다. 가중치를 곱한 신호 두 개와 편향을 합하면 다음과 같이 계산한다. 여기에서 행렬의 곱을 이용하면 1층의 '가중치 부분'을 간소화할 수 있다. 행렬들은 각각 다음과 같다. 넘파이의 다차원 배열을 사용해서 간소화된 식을 구현해본다. 입력 신호, 가중치, 편향은 적당한 값으로 설정한다. X = np.array([1.0, 0.5]) W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, .. 2020. 3. 9.
3-1. 신경망 앞장에서 배운 2. 퍼셉트론 관련해서는 좋은 점과 나쁜 점이 존재한다. 좋은 점은 퍼셉트론으로 복잡한 함수도 표현할 수 있다는 것이다. (ex. 컴퓨터가 수행하는 복잡한 처리도 이론상으로는 퍼셉트론으로 표현 가능하다) 그러나 나쁜 점은 가중치를 설정하는 작업을 여전히 사람이 수동으로 한다는 것이다. 신경망은 이 나쁜 점을 해결해준다. 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 신경망의 중요한 성질이다. 3.1. 퍼셉트론에서 신경망으로 3.1.1. 신경망의 예 신경망을 그림으로 나타내면 아래와 같다. 여기서 가장 왼쪽 줄을 입력층, 맨 오른쪽 줄을 출력층, 중간 줄을 은닉층이라고 한다. 은닉층의 뉴런은 (입력층이나 출력층과 달리) 사람 눈에는 보이지 않는다. 그래서 '은닉'이다. .. 2020. 3. 7.