Data Science

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 6장 학습 관련 기술들 I]

최적화(optimization) 이란 loss function의 값을 낮추는 매개변수의 최적값을 찾는 과정이다 확률적 경사 하강법(SGD)-> 매개변수의 기울기를 구하여 기울어진 방향으로 매개변수값 갱신 W: 갱신할 가중치 매개변수 ∂L/ ∂W: W에 대한 손실 함수의 기울기 η: learning rate(0.01또는 0.001) class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, params, grads):#딕셔너리 형태의 변수 for key in params.keys(): params[key] -= self.lr * grads[key] update 메서드 SGD과정에서 반복함. params['W1'], grads['W1'] 와 ..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 5장 오차역전파법 II]

Affine/Softmax 계층 구현 Affine 계층 어파인계층은 행렬의 곱을 사용하여 계산한다. X는 ∂L/ ∂X과 같은 형상이고, W는 ∂L/ ∂W와 같은 형상이다. 행렬의 곱의 역전파는 대응하는 차원의 원소수가 일치하도록 곱을 조립한다. 배치용 Affine 계층 데이터N개를 묶어 순전파 하는 경우에는, 배치용 affine 계층을 생각해볼 수 있다. 순전파 때의 편향 덧셈은 X*W 에 대한 편향이 각 데이터에 전해진다. 예를들어 N=2 일 경우, 편향이 두개의 데이터 각각에 더해진다. X_dot_W = np.array([[0,0,0], [10,10,10]]) B = np.array([1,2,3]) X_dot_W array([[ 0, 0, 0], [10, 10, 10]]) X_dot_W + B arr..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 5장 오차역전파법 I]

연쇄법칙 순전파는 왼쪽 -> 오른쪽으로 전달 역전파는 국소적인 미분을 반대로 오른쪽에서 왼쪽으로 전달함 계산 그래프의 역전파 신호 E에 노드의 국소적 미분(∂y/ ∂x)을 곱한 후 다음 노드로 전달 만약 y = f(x) = x^2 이라면 ∂y/ ∂x = 2x 값을 E에 곱하여서 앞 노드로 전달한다. 덧셈노드 역전파는 입력신호는 다음 노드로 그대로 전달함 곱셈노드 역전파는 입력신호들을 서로 바꾼값을 곱해서 보낸다 더하기는 1.1를 그대로 보내주고 곱하기의 역전파는 1.1*150(반대편 순전파의 값) =165를 반대편 역전파에 대입해준다. 곱셈계층에 대한 코드 class MulLayer: def __init__(self): #x,y를 초기화 , 순전파 시의 입력값 유지 self.x = None self.y ..

Deep Learning/from scratch I

밑바닥부터 시작하는 딥러닝 - 4장 신경망 학습 II]

학습 알고리즘 구현하기 신경망학습의 절차 1단계- 미니배치 : 훈련 데이터를 무작위로 가져옴 2단계 - 기울기 산출 : loss funciton을 줄이기 위해 가중치 매개변수의 기울기를 구하고, 기울기는 손실함수 값을 가장 작게하는 방향으로 한다. 3단계 - 매개변수 갱신 : 가중치 매개변수를 기울기 방향으로 갱신 1-3 단계 반복 확률적 경사하강법(SGD)-> 확률적으로 무작위로 골라낸 데이터에 대해 신경망 학습 수행 import sys,os sys.path.append(os.pardir) import numpy as np from common.functions import * from common.gradient import numerical_gradient class TwoLayerNet: def ..

Deep Learning/from scratch I

밑바닥부터 시작하는 딥러닝 - 4장 신경망 학습 I]

손실함수(loss function) 1. 오차제곱합 yk -> 신경망의 출력값 tk -> 정답 레이블 k -> 데이터의 차원수 출력값에서 정답레이블의 차를 구한 후, 이의 제곱합을 구한 후 2로 나눠준다. def sum_squares_error(y,t): return 0.5 * np.sum((y-t)**2) import numpy as np t = [0,0,1,0,0,0,0,0,0,0] # 원핫인코딩으로 나타낸 정답 레이블 #1 y = [0.1,0.05,0.6,0.0,0.05,0.1,0.0,0.1,0.0,0.0] # 출력값 print(sum_squares_error(np.array(y),np.array(t))) #2 y = [0.1,0.05,0.1,0.0,0.05,0.1,0.0,0.6,0.0,0.0] #..

자료구조

알고리즘 기초

출처: do it 자료구조와 함께 배우는 알고리즘 입문 1. 가로 세로 길이가 정수이고 넓이가 area인 직사각형에서 변의 길이 나열하기 area = int(input("직사각형의 넓이를 입력하세요.:")) for i in range(1,area+1): if i * i > area: break if area % i: continue print(f'{i} * {area // i}') 직사각형의 넓이를 입력하세요.:32 1 * 32 2 * 16 4 * 8 2. 10~99 사이의 난수 n개 생성하기(13이 나오면 중단) import random n = int(input("난수의 갯수를 입력하세요:")) for _ in range(n): r = random.randint(10,99) print(r,end=' '..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 3장 신경망]

y= h(b+w1x1+w2x2) 가중치곱에 편향을 더한후 활성화 함수를 거쳐 output으로 출력됨. 활성화 함수는 말 그대로 입력신호의 총합이 활성화를 일으키는지를 정하는 역할을 함. 활성화 함수는 비선형함수로 분류됨 활성화 함수 1. 시그모이드 함수 신경망에서 자주이용되는 함수이다 def sigmoid(x): return 1/ (1+np.exp(-x)) 2. 계단함수 0이하는 0, 양수는 1로 나타나는 함수다. 넘파이 배열에 관하여 다음과 같이 구현함 def step_function(x): y = x>0 return y.astype(np.int) return y.astype(np.int)는 boolean 형태로 true false가 나올때, 이것을 1,0으로 변환함 시각화 하면 다음과 같이 나온다 i..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 2장 퍼셉트론]

가중치 w1과 w2는 각 입력신호가 결과에 영향을 주는 영향력(중요도) 조절 편향(b) 는 뉴런이 얼마나 쉽게 활성화(결과를 1로 출력) 하느냐를 조정하는 매개변수 AND 게이트 전리표 x1 x2 y 0 0 0 1 0 0 0 1 0 1 1 1 def AND(x1,x2): w1,w2,theta = 0.5,0.5,0.7 tmp = x1*w1 + x2*w2 if tmp = theta: return 1 NAND 게이트 전리표 (AND의 반대) x1 x2 y 0 0 1 1 0 1 0 1 1 1 1 0 def NAND(x1,x2): x= np.array([x1,x2]) w= np.array([-0.5,-0.5]) b=0.7 tmp = np.sum(w*x)+b if tmp

해파리냉채무침
'분류 전체보기' 카테고리의 글 목록 (10 Page)