AI 모델(딥러닝 기초)/3. 신경망 학습
-
3. 신경망 학습(7)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 15. 11:45
※ 미니배치 학습 구현 신경망 학습(6)을 통해 구현해 둔 TwoLayerNet class를 사용하여 MNIST 데이터셋을 미니배치로 구현해 보자. import numpy as np from dataset.mnist import load_mnist from two_layer_net import TwoLayerNet import matplotlib.pylab as plt # 데이터 읽기 (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, one_hot_label=True) network = TwoLayerNet(input_size=784, hidden_size=50, output_size=10) # 하이퍼파라미터 iters_num = 100..
-
3. 신경망 학습(6)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 15. 10:56
전반적인 신경망에 대한 공부와 신경망학습에 대한 공부를 진행한 상태이기 때문에 간단한 2층 신경망의 학습 알고리즘을 구현해보자. ※ 신경망 학습의 기본단계 1. 미니배치 - 훈련 데이터 중 일부를 무작위로 가져와서 선별한 데이터, 미니배치의 손실함수를 줄이는 것이 최종 목표 2. 기울기 산출 - 각 가중치 매개변수의 기울기를 구하여 손실함수의 값을 가장 작게 하는 방향으로 손실함수를 줄인다.(최적값 찾기) 3. 매개변수 갱신 - 가중치 매개변수를 기울기 방향으로 조금씩 갱신한다. 4. 반복 - 1~3 과정을 계속해서 반복한다.(최적값을 구할 때까지, 즉 손실함수가 가장 작을 때 까지) ■ 확률적 경사 하강법 : 미니배치로 무작위로 골라낸 데이터에 대해 경사하강법으로 매개변수를 갱신하는 방법. 딥러닝 프레..
-
3. 신경망 학습(5)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 10. 13:42
※ 신경망에서의 기울기 형상 2×3 행렬, 가중치 W, loss function이 L인 신경망을 생각해보자. 이와 같은 W 행렬을 통해 기울기를 구현해보면 이와 같은 편미분 행렬을 구해낼 수 있을 것이다. 여기서 1행 1번째 원소의 경우 w11을 변경했을 때 손실 함수 L이 얼마나 변화하느냐를 나타낸다. 또한, 미분을 적용한 행렬의 형상이 기존 W 행렬과 같은 2×3 행렬이라는 점을 알 수 있다. import sys, os sys.path.append(os.pardir) import numpy as np def softmax(a): c = np.max(a) exp_a = np.exp(a-c) sum_exp_a = np.sum(exp_a) y = exp_a / sum_exp_a return y def nu..
-
3. 신경망 학습(4)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 9. 14:47
※ 기울기(Gradient) - 모든 변수의 편미분을 벡터로 정리한 것을 의미함 import numpy as np import matplotlib.pylab as plt from mpl_toolkits.mplot3d import Axes3D def _numerical_gradient_no_batch(f, x): h = 1e-4 # 0.0001 grad = np.zeros_like(x) # x와 형상이 같은 배열을 생성 for idx in range(x.size): tmp_val = x[idx] # f(x+h) 계산 x[idx] = float(tmp_val) + h fxh1 = f(x) # f(x-h) 계산 x[idx] = tmp_val - h fxh2 = f(x) grad[idx] = (fxh1 - fx..
-
3. 신경망 학습(3)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 7. 17:44
※ 수치 미분 일반적으로 우리는 미분 자체를 순간의 변화량으로 판단한다. 위와 같이 흔히 표현하며 이를 전방 차분이라고 부른다. 하지만, 코드로 위의 식을 구현할 때 몇 가지 고려할 점이 생긴다. 1. lim 표현을 위해 h를 아주 작은 값을 대입하는 방식을 사용하는데, 반올림 오차를 고려하여 이를 e^(-4) 정도로 하는 것이 적당하다. 2. x+h와 x 사이의 함수 f의 차분을 계산하는데, 이 계산에 오차가 존재한다. -> 진정한 미분은 x 위치의 함수의 기울기에 해당하지만 x+h와 x 사이의 차분을 계산하므로 오차가 발생함. 이 두가지 고려사항들을 통해 일반적으로 중심 차분 or 중앙 차분이라고 부르는 방식으로 코드를 구현한다. 이렇게 표현하는 미분 방식도 눈에 꽤 익숙할 것이다. 중앙 차분으로 코..
-
3. 신경망 학습(2)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 7. 16:54
※ 미니 배치 학습 ■ 미니 배치 학습이란? - 훈련 데이터가 엄청나게 방대해 질 경우 데이터 일부를 추려서 학습시키고 전체의 근사치로 이용하는 방법 앞에서 사용했던 MNIST 데이터셋을 통해 미니 배치를 구현해보자. import sys, os sys.path.append(os.pardir) import numpy as np from dataset.mnist import load_mnist (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, one_hot_label=True) print(x_train.shape) print(t_train.shape) (60000, 784) (60000, 10) train_size = x_train.shap..
-
3. 신경망 학습(1)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 5. 15:26
■ 학습이란? - 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것 데이터 주도 학습은 크게 세가지로 분류할 수 있다. 1. 사람이 생각한 알고리즘을 통한 학습 2. 사람이 생각한 특징 + 머신러닝(SVM, KNN)을 통한 학습 3. 신경망(딥러닝)을 통한 학습 신경망을 통한 학습은 종단간 기계학습이라고도 하면 처음부터 끝까지 모든 작업을 기계가 하는 것이다. 사람의 영역 자체가 없는 인공지능 그 자체이다. 우리는 신경망 학습을 위해 필요한 몇 가지 지표들을 알아보려고 한다. ※ 손실함수(loss function), 비용함수(cost function) 둘 다 같은 말을 뜻한다. 일반적으로 오차제곱합(SSE)와 교차 엔트로피 오차를 사용한다. ■ 오차제곱합(SSE) - 현재의 신경망 성능의..