목록소프트웨어/Deep Learning (딥러닝) (7)
julia coding story

미분 ▶ 나쁜 구현 예시 def numerical_diff(f,x): h = 1e-50 return(f(x+h)-f(x))/h - 개선점 1) h에다가 작은 값을 넣으려고 h = 1e-50로 설정하였는데, 여기에서 반올림 오차(rounding error)발생함 -> 1e-4정도로 이용 2) 미분은 (x + h)와 x 사이의 기울기에 해당함, 엄밀히는 일치하지 않음, 이는 h를 무한히 0으로 좁히는 것이 불가능해 새익는 한계임 -> 중심(중앙) 차분을 계산함 ▶ 개선한 코드 def numerical_diff(f,x): h = 1e-4 return(f(x+h)-f(x-h))/ 2*h 수치미분 - 수치 미분 : 아주 작은 차분으로 미분하는 것 - 해석적 : 수식을 전개해 미분하근 것 ▶ 수치 미분 예시 # c..

이 손실 함수의 결과값을 가장 작게 만드는 가중치 매개변수를 어떻게 찾을까? -> 함수의 기울기를 활용하는 경사법 * 학습: 훈련 데이터로 부터 가중치 매개변수의 최적값을 자동으로 획득하는 것 * 손실 함수 : 신경망이 학습 할 수 있도록 해주는 지표인 함수 데이터에서 학습한다 - 신경망은 데이터를 보고 학습 할 수 있음 - 가중치 매개변수의 값을 데이터를 보고 자동으로 결정함 - 직선도 분리할 수 있는 문제라면 데이터로부터 자동으로 학습 가능함. 선형 분리 가능 문제는 유한 번의 학습을 통해 풀 수 있다는 사실이 퍼셉트론 수렴 정리로 증명됨. BUT, 비선형 문제는 자동으로 학습할 수 없음 데이터 주도 학습 - 기계학습 : 데이터에서 답을 찾고 데이터에서 패턴을 발견하고 데이터로 이야기를 만드는 것 :..

손글씨 숫자 인식 - 이미 학습된 매개변수를 사용하여 학습 과정은 생략하고, 추론 과정만 구현할 예정 - 순전파(forward propagation) : 추론 과정 = 학습한 매개변수를 사용하여 입력데이터를 분류함 1. MNIST 데이터셋 - MNIST : 기계 학습 분야에서 아주 유명한 데이터셋, 손글씨 숫자 이미지 집합,실험용 데이터 1.1 MNIST 데이터셋 다운로드 - 데이터셋 다운로드 링크 : https://github.com/WegraLee/deep-learning-from-scratch GitHub - oreilly-japan/deep-learning-from-scratch: 『ゼロから作る Deep Learning』(O'Reilly Japan, 2016) 『ゼロから作る Deep Learnin..

3층 신경망 구현하기 - W 오른쪽 아래의 인덱스 번호는 '다음 층 번호, 앞 층 번호' 순으로 적음 1. 각 층의 신호 전달 구현하기 단계 1 : 0층에서 1층으로 ▶단계 1 Python으로 구현하기 import numpy as np X = np.array([1.0,0.5]) W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) B1 = np.array([0.1,0.2,0.3]) print(W1.shape) print(X.shape) print(B1.shape) A1 = np.dot(X,W1) + B1 #그림1을 식으로 구현 print(A1) ''' 출력 (2, 3) (2,) (3,) [0.3 0.7 1.1] ''' 단계 2 : 0층에서 1층으로 - 은닉층에서의 가중치 합(가..

1. 다차원 배열의 계산 1.1 다차원 배열 - 다차원 배열은 '숫자의 집합' ▶1차원 import numpy as np A = np.array([1,2,3,4]) print(A) np.ndim(A)#배열의 차원수 #출력 : 1 A.shape#배열의 형상 인덱스, 튜플을 반환해야함 why? 다차원 배열일 때와 통일된 형태로 결과를 반환하기 위함 # 출력 : (4,) A.shape[0] #출력 : 4 ▶2차원 - B는 3 x 2 배열 - 2차원 배열은 행렬이라고 부름 - 배열의 가로 방향으로 행, 세로 방향으로 열이라고 함 1.1 행렬의 곱 - A의 1행과 B의 열을 곱한 값은 행렬의 1행 1번째 원소가 되고, A의 2행과 B의 1열을 곱한 결과는 2행 1번째 원소가 된다. ▶ 행렬 곱 by Python ..

1. 퍼셉트론에서 신경망으로 - 퍼셉트론의 단점 : 가중치를 인간이 수동으로 설정해야함 - 퍼셉트론의 단점을 신경망 구조에서 보완함 - 입력층에서 출력층 방향으로 차례로 0, 1, 2층이라고 하자. - Perceptron(퍼셉트론)과 차이 : 편향이 없음 - 가중치가 b이고 입력이 1인 뉴런이 추가되었다고 하면, x1, x2, 1이라는 3개의 신호가 뉴런에 입력 -> 각 신호에 가중치 곱함 -> 그 신호들을 더함 -> 합이 0을 넘으면 1출력, 그렇지 않으면 0 출력 - 위의 예시를 정리하여 수식으로 나타나면 왼쪽 수식과 같이 표현됨 2. 활성화 함수 - 활성화 함수 : 입력 신호의 총합을 출력 신호로 변환하는 함수 (= h(x)) 2.1 계단 함수(step function) 구현 - 계단 함수는 입력이..

1. 퍼셉트론이란? - 퍼셉트론은 다수의 신호를 입력받아 하나의 신호를 출력하는 알고리즘이다. - 퍼셉트론이 신경망(딥러닝)의 기원이 되는 알고리즘이라 중요하다. - x1,x2 .... 은 모두 입력신호이고 w1, w2, ...은 모두 가중치이다. - 입력신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다. - 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력하고 나머지는 0이다. 2. 단순한 논리 회로 import numpy as np x = np.array([0, 1]) #입력 w = np.array([0.5, 0.5]) # 가중치 b = - 0.7 #편향 2.1 AND 게이트 - 두 입력이 모두 1일 때만 1을 출력하고 그 외에는 0을 출력함 ▶ AND게이트를 퍼셉트론으로 표..