본문 바로가기
반응형

역전파4

1~5단계) Variable 클래스 , Function 클래스 , 수치 미분 , 역전파 이론 1. Variable 클래스 구현 함수 __init__에 주어진 인수를 인스턴스 변수에 해당 데이터에 대입하여 다른 곳에서도 접근할 수 있도록 한다. class Variable: def __init__(self, data): self.data = data 예를 들어, import numpy as np data = np.array(1.0) x = Variable(data) print(x.data) #1.0 머신러닝 시스템은 기본 데이터 구조로 다차원 배열을 사용하며 넘파이의 다차원 배열 클래스는 numpy.ndarray이다. 배열의 차원을 확인할 때는 n.dim을 사용할 수 있다. import numpy as np x = np.array(1) print(x.dim) #0 x = np.array([1, 2,.. 2021. 5. 10.
딥러닝) Affine , Softmax , Cross Entropy Error 계층 구현 1. Affine 계층 신경망의 feed-forward를 위해 입력값 X와 가중치 W와 편향 B를 Y = np.dt(X, W) + B와 같이 계산한 후 Y를 활성화 함수로 변환하여 다음 Layer로 전파하였다. 기하학에서는 순전파 때 수행하는 행렬의 곱을 어파인 변환(Affine transformation)이라고 한다. 어파인 변환은 대응하는 차원의 원소의 수를 일치시키는 것이 핵심이다. 위에서는 데이터 하나만 고려한 Affine계층을 보았는데, 이제 데이터 N개를 묶어서 순전파하는 Affine계층을 다룰 것이다. 순전파에서는 matrix인 X·W 와 vector인 B 를 더하기 위해서 vector인 B 에 repeat을 적용하여 matrix로 만들어 '+' 노드를 실행하고, 역전파에서는 matrix인 .. 2021. 3. 16.
딥러닝) 활성화 함수 ReLU 계층 , Sigmoid 계층 구현 1. ReLU 계층 구현 (forward/ backward) 활성화 함수 중 하나인 ReLU함수는 아래와 같다. 순전파에서 입력이 x > 0이면 역전파에서 upstream 값을 그대로 downstrem으로 보내는 반면, 입력이 x 2021. 3. 15.
딥러닝) 오차 역전파 backpropagation , 연쇄법칙 chain rule , 기울기 효율적으로 구하기 신경망 모델을 최적화 하기 위해서는 손실 함수의 값을 최소화하는 가중치 매개변수를 찾아야 한다. 복잡한 손실 함수에서 더 좋은 가중치를 찾기 위해 경사하강법(Gradient Descent)을 이용하여 가중치를 갱신하고자 하는데 이때 필요한 것이 기울기이다. 그 이유는 기울기가 이 경사 하강법에서 기울기가 손실 함수의 값을 줄일 수 있는 방향을 제시해주는 지표이기 때문이다. 이전 포스팅에서는 기울기를 구하기 위해 아래와 같이 수치 미분을 통해 기울기를 구하였다. 즉 도함수의 정의로 계산하였다. 그러나 수치 미분은 구현하기는 쉬우나 모든 가중치 매개변수에 대해 하나하나 일일이 계산해야 하므로 시간이 오래 걸리며 비효율적이다. 따라서 가중치 매개변수의 기울기를 효율적으로 구하기 위해 '오차역전파(backpro.. 2021. 3. 8.
728x90
반응형