본문 바로가기

합성함수7

7. 2차원 행렬을 입력받는 합성함수의 도함수(실습) 저번시간에 입력이 2차원인 합성함수의 도함수를 구하였다. 1. 다시 복습을 해보자. 입력 X, W는 아래와 같다. g(X, W)함수를 아래와 같이 정의한다. σ(X) 함수를 아래와 같이 정의한다. h(X) 함수를 아래와 같이 정의한다. 합성함수 f(X, W) = h(σ(g(X, W)))를 정의한다. 합성함수의 정의와 연산의 결과는 아래와 같다. 이 때 도함수 ∂f/∂X 는 아래와 같이 성립한다고 유도하였다. ∂f/∂W 는 아래와 같다. 이번 실습은 ∂f/∂X 으로 진행한다. 2. 합성함수의 도함수 계산이 맞는지 직접 계산하여 확인해보기 위의 식을 numpy를 이용하여 적은 것이다. f(X, W)는 forward 함수, ∂f/∂X는 backward 함수로 정의하였다. import numpy as np # .. 2021. 12. 31.
6. 2차원 행렬을 입력받는 합성함수의 도함수(이론) 1. 2차원 행렬을 입력받는 합성함수의 정의 입력이 2차원인 경우에는 도함수를 어떻게 구할 수 있을까? 일단 합성함수부터 정의하자. 입력 X, W는 아래와 같다. g(X, W)함수를 아래와 같이 정의한다. σ(X) 함수를 아래와 같이 정의한다. h(X) 함수를 아래와 같이 정의한다. 합성함수 f(X, W) = h(σ(g(X, W)))를 정의한다. 합성함수의 정의와 연산의 결과는 아래와 같다. 딥러닝에서 상당히 유사하게 사용하는 forward 연산이다. g -> σ -> h 정방향 순서대로 연산하여 출력한다. 2. 도함수 구하기 도함수는 체인룰을 사용하여 forward 연산과 반대로 h -> σ -> g 순서대로 구한다. 그래서 backward 연산이다. 우리는 X의 변화에 따른 최종출력 f의 변화가 궁금.. 2021. 12. 31.
5. 벡터 합성함수의 도함수 표현 벡터로 이루어진 합성함수의 도함수는 어떻게 표현할 수 있는지 알아보자. 지난 시간에 벡터 X, W에 대한 합성함수 f(X, W)를 아래와 같이 정의했었다. 1. 도함수 ∂f/∂X , ∂f/∂W 구하기 입력 변수는 X, W 두개이므로 각각에 대한 도함수 ∂f/∂X , ∂f/∂W 를 구하면 된다. 체인룰을 이용하여 구해보자 즉, ∂g/∂X , ∂g/∂W 를 구해야 한다는 것이다. (앞의 부분은 sigmoid 자체를 미분하면 되므로 쉽다) ∂g/∂X 에 대하여 각 요소를 구해보면 이렇게 표현할 수 있으므로 ∂g/∂X 를 구해보면 X에 대한 편미분이므로 W를 상수취급한다. 즉 결과는 아래와 같다. W행렬의 전치행렬(transpose matrix)이다. 즉, W의 shape가 (a, b)였다면 W의 전치행렬은 (.. 2021. 12. 29.
4. 벡터 입력에 대한 합성함수 표현 벡터 입력에 대한 합성함수와 도함수 표현을 알아보자. 벡터를 행렬로 표현하여 곱셈, 합성함수와 도함수를 어떻게 표현할 것인지 알아볼 것이다. 1. 벡터의 곱 연산 벡터 입력에 대해 다음과 같은 출력을 가정해 보자.(딥러닝에서 본 것 같지 않나요?) 이를 파이썬 코드로 표현해보면 다음과 같다. import numpy as np X = np.array([[1, 2, 3]]) W = np.array([[3], [2], [1]]) print('x.shape', X.shape) print('w.shape', W.shape) def matmul_forward(X, W): return np.dot(X, W) print('matmul_forward ', matmul_forward(X, W)) 행렬의 곱셈을 복습해보자... 2021. 12. 29.