목록공부/딥러닝 (21)
Broccoli's House
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 신경망 학습 : 경사 하강법 경사법 - 경사법(Gradient Method) : 머신러닝 모델은 학습 시에 최적의 매개변수(가중치와 편향)를 찾는다. 최적이란, 손실 함수가 최솟값이 될 때의 매개변수 값이다. 따라서 기울기를 이용하여 손실 함수의 최솟값을 찾으려는 것이 바로 경사법이다. 일반적으로 기계 학습을 최적화하는데 사용되고, 특히나 신경망 학습에 많이 사용된다. - 손실함수의 첫 위치에서 기울기를 구한다. 기울기가 (+)이면 음의 방향으로, (-)이면 양의 방향으로 일정 거리만큼 이동한 다음, 그 위치에서의 기울기를 다시 구한다. 그리고 그것을 토대로 다시 일정 거리를 이동하는 것을 반복하여, 손실 함수의 값을 점차적으로 줄여나가는 것이 ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 신경망 학습 : 손실 함수 손실 함수 - 손실 함수(cost function) : 손실 함수란 신경망이 학습할 수 있도록 해주는 지표이다. 머신러닝 모델의 출력값과 사용자가 원하는 출력값의 차이, 즉 오차를 말한다. 이 손실 함수 값이 최소화되도록 하는 가중치와 편향을 찾는 것이 바로 학습이다. 일반적인 손실 함수로 평균 제곱 오차나 교차 엔트로피 오차를 사용한다. 평균 제곱 오차 - 평균 제곱 오차(Mean Squared Error : MSE) : 계산이 간편하여 가장 많이 사용되는 손실 함수이다. 기본적으로 모델의 출력 값과 사용자가 원하는 출력 값 사이의 거리 차이를 오차로 사용한다. 그러나 오차를 계산할 때 단순히 거리 차이를 합산하여 평..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 신경망 학습 학습 - 학습(Learning) : 신경망의 각 노드들은 입력에 가중치를 곱하여 편향을 더한 값을 활성화 함수를 거쳐 출력한다. 학습이란, 신경망 모델의 출력이 사용자가 원하는 값에 수렴하도록 수많은 노드들이 가지고 있는 각각의 가중치와 편향들을 자동으로 획득하는 것을 말한다. 즉, 사용자가 원하는 출력과 모델의 출력이 동일시되거나 수긍할만한 오차에 수렴하는 가중치와 편향을 알아서 찾아가는 것이 바로 머신러닝의 학습이다. - 손실함수(cost function) : 손실 함수는 신경망이 학습할 수 있도록 해주는 지표이다. 사용자가 원하는 출력과 머신러닝 모델 출력 값의 차이 즉, 오차를 말한다. 일반적으로 이 손실 함수 값이 최소화되도..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. MNIST 손글씨 숫자 인식 MNIST 데이터 세트 - MNIST(Modified National Institute of Standards and Technology database) : MNIST는 기계학습 분야에서 매우 유명한 데이트 세트로, 손으로 쓴 숫자들로 이루어진 대형 데이터베이스이다. 일반적으로 기계 학습 분야의 훈련과 테스트에 널리 사용된다. 60,000개의 훈련 이미지와 10,000개의 테스트 이미지를 포함하고 있다. - 데이터 세트 불러오기import numpy as np import pickle import sys,os sys.path.append(os.pardir) from dataset.mnist import load_mn..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 출력층 설계 항등 함수 - 신경망은 회귀와 분류 모두에 이용될 수 있으나, 다만 문제의 유형에 따라 출력층에 사용되는 활성화 함수에서 차이를 보인다. 일반적으로 회귀에는 항등 함수, 분류에는 소프트맥스(Softmax) 함수를 사용한다. 특히나 다중 분류에서 소프트맥스 함수를 사용한다. - 항등 함수(Identity Function) : 항등 함수는 입력을 그대로 출력하는 함수이다. 입력과 출력이 항상 같기 때문에, 출력층에 항등 함수를 사용하면 입력 신호가 그대로 출력 신호가 된다. 회귀 문제의 특성상 데이터 간의 연속적인 관계가 있어야하기 때문에, 값을 0과 1에 가깝게 분류하는 시그모이드, 계단 함수 등의 활성화 함수가 필요가 없는 것이다. ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 3층 신경망 구현 신호 전달 구현 - 입력층(Input Layer, 0층)은 2개, 첫 번째 은닉층(First Hidden Layer, 1층)은 3개, 두 번째 은닉층(Second Hidden Layer, 2층)은 2개, 출력층(Output Layer, 3층)은 2개의 노드로 구성된 3층 신경망이다. (1) 입력층에서 1층으로의 신호 전달 - 가중치 계산X = np.array([1.0, 0.5]) # 입력값 W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]) # 가중치(weight) B1 = np.array([0.1, 0.2, 0.3]) # 편향(bias) A1 = np.dot(X, W1) + B1 # X와 ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 활성화 함수 활성화 함수 - 활성화 함수(Activation Function) : 퍼셉트론 알고리즘에서, 입력 신호에 가중치를 곱한 값을 임계치와 비교하여 그보다 크면 1을, 작으면 0을 반환한다. 이 때 임계치와 비교하여 0또는 1을 출력하는 함수를 활성화 함수라한다. 즉, 활성화 함수란 입력 신호의 총합을 출력 신호로 변환하는 함수이다. 입력 신호의 총합이 활성화를 일으키는지 정하는 역할을 한다. 다음은 입력 신호의 총합 a를 출력 신호 y로 변환하는 활성화 함수 h이다. 계단 함수 - 계단 함수(Step Function) : 임계치를 경계로 출력이 바뀌는 함수이다. 즉, 0을 경계로 출력이 0에서 1, 또는 1에서 0으로 바뀌는 함수이다. ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 신경망(Neural Network) 신경망 - 인공 신경망(Artificial Neural Network) : 머신러닝에서 생물의 중추 신경계, 그 중에서도 뇌에서 영감을 얻은 통계학적 학습 알고리즘이다. 인공 뉴런(노드)이 서로 연결되어 네트워크를 형성하고, 각각의 뉴런이 학습을 통해 가중치를 변화시켜 문제 해결 능력을 가지는 모델 전반을 가리킨다. - 퍼셉트론 알고리즘의 경우, 복잡한 함수를 표현할 수는 있지만 가중치를 설정하는 작업은 사람이 수동으로 해야한다. 그러나 신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력을 가지고 있다. - 신경망은 입력 신호가 들어가는 입력 노드가 층을 이루고 있는 입력층(Input L..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 퍼셉트론 : XOR 게이트 XOR 게이트 - XOR 게이트(Exclusive-OR) : 배타적 논리합. 입력이 같을 때는 0을, 입력이 다르면 1을 출력한다. x1x2y 000 101 011 110 - 퍼셉트론은 직선으로 나뉘는 두 영역을 만든다. 직선으로 나뉜 한쪽 영역은 1을 출력하고, 다른 한쪽은 0을 출력한다. 그러나 XOR 게이트의 경우 직선 하나로 영역을 나누는 것은 불가능하다. 따라서 선형 영역으로는 불가능하고, 곡선으로 나누는 비선형 영역에서는 가능하다. 즉, 단층 퍼셉트론으로는 비선형 영역을 분리할 수 없는 것이다. 다층 퍼셉트론 - 다층 퍼셉트론(Multi-Layer Perceptron) : 여러 개의 퍼셉트론을 층으로 쌓아 만..