DeepML. Neural Network - 1

괴도소녀·2021년 8월 2일
0

DeepML

목록 보기
6/9

scores function

s=f(x;W)=Wxs = f(x; W) = Wx
ss는 score vector(output)이며 xx는 input이다.

SVM loss

Li=jyimax(0,sjsyi+1)L_i = \sum_{j \ne y_i} \text{max}(0, s_j - s_{y_i} + 1)

data loss + regularization

L=1Ni=1NLi+kWk2L = \begin{matrix} 1 \over N \end{matrix} \sum_{i=1}^N L_i + \sum_k W_k^2

여기서 우리가 원하는 것은

WL\bigtriangledown_W L

최적의 loss를 갖게하는 파라미터 WW를 찾는것이다.

Optimization

최적의 WW를 찾는 것이다.

gradient가 음수인 방향, 즉 경사가 하강하는 방향을 반복적으로 구해 아래로 나아갈 수 있고, 가장 낮은 loss를 찾게 될 것이다.

[Vanilla Gradient Descent]

while True:
	weights_grad = evaluate_gradient(loss_fun, data, weights)
    	weights += -step_size * weights_grad

Gradient descent

df(x)dx=limh0f(x+h)f(x)h\begin{matrix} df(x) \over dx \end{matrix} = \lim_{h \rightarrow 0} \begin{matrix} f(x+h) - f(x) \over h \end{matrix}
  • Numerical gradient : slow, approximate, easy to write
  • Analytic gradient : fast, exact, error-prone

Computational graphs

임의의 복잡한 함수를 통해 어떻게 analytic gradient를 계산하는지에 대해 이야기 할 것이며, computational graph라는 기법을 사용할 것이다.

위의 예제는 input이 xx, WW인 linear classifier이다.

Computational graphs를 사용해서 함수를 표현하게 됨으로써 backpropagation이라고 부르는 기술을 사용할 수 있게 되며, backpropagation은 gradient를 얻기위해 computational graph 내부의 모든 변수에 대해 chain rule을 재귀적으로 사용한다.

Convolutional Network

[AlexNet]

[Neural Turing Machine]


Backpropagation sample example 1

f(x,y,z)=(x+y)zf(x, y, z) = (x+y)z

eg. x=-2, y=5, z=-4

function f의 출력에 대한 어떤 변수의 gradient를 찾길 원한다.

q=x+yqx=1,qy=1q = x + y \qquad \begin{matrix} \begin{matrix} \partial{q}\over\partial{x} \end{matrix} = 1, \begin{matrix} \partial{q}\over\partial{y} \end{matrix} =1 \end{matrix}
f=qzfq=z,fz=qf= qz \qquad \begin{matrix} \begin{matrix} \partial{f}\over\partial{q} \end{matrix} = z, \begin{matrix} \partial{f}\over\partial{z} \end{matrix} =q \end{matrix}

우리는 fx\partial{f}\over\partial{x},fy\partial{f}\over\partial{y},fz\partial{f}\over\partial{z} 을 구하고 싶다.

backpropagation은 chain rule의 재귀적인 응용이므로 뒤에서부터 시작한다.

fz\partial{f}\over\partial{z}

fq\partial{f}\over\partial{q}

fy\partial{f}\over\partial{y}

ffyy에 직접적으로 영향을 미치지 않으므로 미분식을 변경하여 나타냈다.

fx\partial{f}\over\partial{x}

ffxx에 직접적으로 영향을 미치지 않으므로 미분식을 변경하여 나타냈다.

정리

Backpropagation sample example 2

f(w,x)=11+e(w0x0+w1x1+w2)f(w,x) = \begin{matrix} 1\over 1+ e^{-(w_0x_0 + w_1x_1+w_2)} \end{matrix}

위 식에 sigmoid와 같은 함수를 씌울 수도 있다.

pattern in backward flow

위 노드들의 연산들을 간략하게 정리해보면 아래와 같다.

  • add : gradient distributor
  • max : gradient router
  • mul : gradient switcher

이번 포스팅은 scaler 일 때의 경우이고 다음 포스팅은 vector일 경우의 연산을 알아보겠다.

0개의 댓글