머신러닝,딥러닝/tensorflow

lec09 XOR 문제 딥러닝으로 풀기

mcdn 2021. 1. 24. 11:39
반응형

우선 0 0 을 넣었다. 

주어진 weight 5 5 와 bias 8 로 계산해보자. 

첫번쨰 보라색은 계산 시 -8이 된다. sigmoid(-8) 해보면 대략 0이 된다. 

두번째 그린색 -7 -7에 입력시 0+ 3이니까 3이 된다. sigmoid(3) 하면 1 이 된다. 

y값 0 1 을 집어 넣으면 -11 -11  -11 + 6 = -5 

 

위 결과로 나온다. 

 

다음으로는 x값이 각각 0 1 인 경우. 계산해보면 

+ 6 

또 다음으로 1 0  

계속 계산하면 나온다. 

결국 XOR 값이 나오게 되는 것 

 

그림으로 간략하게 표현하면 이렇게 되겠지 

이 때 can you find another w and b for the XOR ? 

 

 

weight은 이차원 배열이 되고 bias는 두개 늘어진다. 

 

이해를 돕기 위해 코드도 제시 

 

how can we learn w1 w2 b1 b2 from training data? 

지금 현재는 주어진 값인데 어떻게 계산할 수 있는가??

 

 

 

======미분 특별 강의 

 

미분은 이렇게 표현한다 간단하게 말하면 df/dx로도 쓰인다. 

다른 말로는 순간변화율. 기울기를 나타내는 것이고 그래서 gradient descent에서 필수적이었다. 

 

f(x) = 3 

f(x + 0.01 ) - f(x) / 0.01  = 3-3/0.01 = 0/0.01 = 0 

f(x) = x 

f(x + 0.01 - f(x) / 0.01 = x + 0.01 - x / 0.01 = 0.01 / 0.01 = 1 

그래서 x이면 미분은 1이다. 

f(x) = 2x 

2(x + 0.01) - 2x / 0.01 = 2 * 0.01 / 0.01 = 2 

앞의 상수는 그대로 따라간다. 

 

 

partial derivative consider other variables as constants 

 

f(x) = 2x df/ dx = 2

 

f(x, y) = xy * f /x y

 

f(x, y) = xy f/ y = x 

 

마지막으로 

f(x) = 3 

f(x) = 2x f(x) = x + x 

f(x) = x + 3

1

f(x, y) = x + y f/x

1

f(x, y) = x + y f/y 

1

 

 

복잡하면 f(g(x)) 

 

 

======================

weight bias 값이 주어졌는데 자동적으로 학습할 수 있을지가 이번 강의 내용 

 

G라는 변수 사용 

이건 gradient descent 

cost 함수가 밥그릇 모양이면 w점이 어디서 시작하든지 상관없이 그 점에서 기울기를 구하면서 계속 내려가면 

결국 원하는 최저값으로 도달하게 된다. cost최소화하는 알고리즘 

이걸 이용하려면 미분 계산해야하는데 

 

이게 neural network로 가면서 복잡해지는 것. 

x1 ->y 영향을 알아야 w를 조절할 수 있는데 너무 어렵다. 

 

perceptron 책에서도 아무도 할 수 없다고 말하기도 했었죠? 

backpropagaition 등장 앞으로갔다 뒤로 돌아가는 알고리즘 

실제 예를 통해 한번 살펴보자

 

위의 세 수식을 그래프로 옮기면 이렇게 되겠지. 

w,x, b 가 미치는 영향을 알고 싶지 

 

두가지 방식으로 나뉜다. 

1. forward(w = -2, x = 5, b = 3) 

2. backward 

 

1. 주어진거 그대로 적용해서 g, f를 계산해서 구할 수 잇다. 

미분을 미리한다. g는 w 로 미분하면 x / x로 미분하면 w 된다. 

g가 f에 미치는 영향 아까 계산한 결과 1 b 역시 1 

f = g + b 부분을 미분 

??? 간단하게 미분 함 

 

 

 

 

 

 

정리하면 이렇게 

 

 

 

그렇다면 이 미분 값은 어떻게 사용되는가? 

g = x * y 일 때 x, y 의 미분은 이렇게 표현가능 

g 역시 f / g 로 표현가능 

하나하나 계산해서 계속 동그라미 이루어지고 그게 나중에 f로 이어지는데 

x미분 값은 g를 미분한 값에 g에서의 x 미분 값을 곱해서 도출 가능 (g 에서의 x미분 값은 local 미분이라 부름)

따라서 이걸 계속 곱해서 확인 가능 ???? 

최종 출력값 간의 미분 값을 확인할 수 있는 것 (f에서의 x 미분 값)

 

다른 것도 마찬가지. 

 

 

sigmoid 함수

 

tensorflow는 그래프로 만들었지 왜? 

미분 구하기 위해서????? 

 

어쨌든 이 방식으로 최종값에서의 미분 값을 알 수 있게 된다고... 

tensorboard 사용하는 코드 ... 

 

 

반응형