๋จธ์ ๋ฌ๋์ ๋ฐฉ๋ฒ๋ก ์ ์ฆ cost ํจ์๋ฅผ ๊ตฌ์ฑํ์ฌ ํ์ต์ ์ํด ์ต์ข ๋ต์ ๊ตฌํ๋ ๊ณผ์ ์ด๋ค. ํ์ง๋ง ๋จธ์ ๋ฌ๋์ ์ํ ๊ฑฐ์ ๋๋ถ๋ถ์ ์์ ๋ ์ ํ ํ๊ท ๋๋ MNIST ๋ฌธ์์ธ์ ์์ ๋ก ๋๋ฐฐ๊ฐ ๋์ด ์์ผ๋ฉฐ, ๊ทธ๋ฐ์ ๊ด์ฌ์ ๊ฐ์ง๋งํ ์๊ธฐ ์ฌ์ด ์์ ๊ฐ ๋๋ฌผ์ด ๋ณด์ธ๋ค. ๊ณผ์ฐ ์ด ๋จธ์ ๋ฌ๋์ด ๋ญ๊ฐ ์ง๋ฅ์ด ์๋ ์ธ๊ณต์ง๋ฅ์ ์ผ๋ถ๊ฐ ๋ง๊ธฐ๋ ํ๊ฐํ๋ ์์ฌ์ด ๋ค ๋๊ฐ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฌ๋์ด ์ด๋ฑํ๊ต ๋๋ถํฐ ๊ณ ๋ฑํ๊ต๊น์ง์ ๊ต๊ณผ๊ณผ์ ์ ํตํด ์ฒด๊ณ์ ์ธ ์ํ๊ณผ์ ์ ํ์ตํ์๋ค๋ฉด ์ํ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ฏ์ด ๋จธ์ ๋ฌ๋๋ ๊ทธ๋ฌํ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํ์ง ์์๊น?
๊ทธ๋์ ๊ฐ์ง๊ฒ ๋ ์๋ฌธ์ค์ ํ๋๊ฐ 2์ 1์ฐจ ์ฐ๋ฆฝ ๋ฐฉ์ ์์ด๋ 2์ฐจ ๋ฐฉ์ ์์ ํด๋ฅผ ๊ณผ์ฐ ๋จธ์ ๋ฌ๋์ ํ์ต ๋ฐฉ๋ฒ์ ํตํด ๊ตฌํ ์ ์๋๊ฐํ๋ ๋จ์ํ ์๋ฌธ ์ ๊ธฐ์ด๋ค.
์ฌ๊ธฐ์๋ ๊ธฐ์กด์ ์ ํ ํ๊ท ๋ฌธ์ ๋ ๋ฌธ์ ์ธ์ ์์ ์๋ ๋ค๋ฅธ ์คํ๊ต ์์ค์ ์ํ ๋ฌธ์ ์ ๋ํด์ ๋จธ์ ๋ฌ๋์ด ์ด๋ป๊ฒ ๋ต์ ๊ตฌํ ์ ์๋์ง ์์๋ณด๊ธฐ๋ก ํ๋ค. ์ด๋ฏธ ๊ฑฐ๋ญ ๊ฑฐ๋ก ๋์์ง๋ง ๋จธ์ ๋ฌ๋์์ ๋ฌธ์ ์ ๋ต์ ๊ตฌํ๋ ๊ณผ์ ์ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๋ฐฉ์ ์์ ํธ๋ ๊ณผ์ ๊ณผ๋ ํ์ดํ๊ฒ ๋ค๋ฅด๋ค๋ ์ ์ด๋ค.
์ค๋ฑ ์ํ ์์ค์์ ๋ค๋ฃจ๋ 2์ 1์ฐจ ์ฐ๋ฆฝ ๋ฐฉ์ ์ ์์ ๋ ๋ถ๋ช ํ 4์น ์ฐ์ฐ์ ์ ์ฉํด ๋ฐฉ์ ์์ ํธ๋ ๊ณผ์ ์ ์ ์ ๋ก ํ๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ๋ก ์ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ ์์นํด์ ๋ฐฉ๋ฒ์ ์ํด ์ถฉ๋ถํ ์ฐ๋ฆฝ ๋ฐฉ์ ์์ ํ ์ ์๋๋ก ๊ตฌํ๋์ง๋ง ๋จธ์ ๋ฌ๋์์๋ ๋ฐ๋์ ์ ์ ํ cost ํจ์ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํด์ผํ๋ฉฐ ํ์ต์ ์ํด์๋ง ๋ต์ ๊ตฌํ ์ ์๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์์๋ ๋จธ์ ๋ฌ๋ ๋ฐฉ์์ ์ํด 2์ 1์ฐจ ์ฐ๋ฆฝ ๋ฐฉ์ ์์ ํ ์ ์๋๋ก ๊ธฐํํ์ ์ธ ์์ด๋์ด๋ก cost ํจ์๋ฅผ ๊ตฌ์ฑ ํ๋ ๋ฐฉ๋ฒ๊ณผ ์ต์์ ๊ณฑ๋ฒ (least square method)์ ์ ์ฉํด ํด๋ฅผ ๊ตฌํด๋ณด๊ธฐ๋ก ํ๋ค.
(x,y)ํ๋ฉด์์ 1์ฐจ ๋ฐฉ์ ์ Ax+By+C=0 ๊ณผ ํ๋ฉด์์ 1์ P (x0, y0) ์์ ์ต์ ๊ฑฐ๋ฆฌ d๋ ๊ทธ๋ฆผ์์์ฒ๋ผ ์ฃผ์ด์ง๋ค. ๋ฐ๋ผ์ 2์ 1์ฐจ ์ฐ๋ฆฝ ๋ฐฉ์ ์์ ํด๋ (x,y) ํ๋ฉด์์์ 2๊ฐ์ ์๋ก ๊ต์ฐจํ๋ ์ง์ ์ ๊ต์ ์ ๊ตฌํ๋ ๋ฌธ์ ๊ฐ ๋๋ค.
๊ทธ๋ฆผ์์์ฒ๋ผ P์ ์์ 2 ์ง์ ๋ค๊ณผ์ ์์ง ๊ฑฐ๋ฆฌ๋ d1๊ณผ d2 ์ด๋ฉฐ P ์ ์ ์์ง์ฌ ์ด 2๊ฐ์ ํฉ์ด 0 ์ด ๋๋ ์์น ์ขํ๊ฐ ๋ฐ๋ก 2 ์ง์ ์ ๊ต์ ์ด๋ฉฐ 2์ 1์ฐจ ์ฐ๋ฆฝ ๋ฐฉ์ ์์ ํด๊ฐ ๋๋ค. ๋ฐ๋ผ์ P์ ์์ 2 ์ง์ ๋ค๊ณผ์ ์์ง ๊ฑฐ๋ฆฌ์ธ d1๊ณผ d2 ์ ์ ๊ณฑ์ ํฉ์ cost ํจ์๋ก ์ ํํ์ฌ ๊ทธ ๊ฐ์ ์ต์ํ ํ๋๋ก ํ์.
๋จธ์ ๋ฌ๋์ ์์ํ๊ธฐ ์ํ ์ด๊ธฐ ์กฐ๊ฑด์ 1์ P (x0, y0) ์ ๊ฐ์ TensorFlow ์ ๋์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์์์ ๊ฐ ์ฆ (W , b )์์ ์์ํ๊ธฐ๋ก ํ๋ค. ์ฌ๊ธฐ์์ ์ฌ์ฉํ๋ W ์ b ๋ ์ ํํ๊ท ๋ถ์์์ ์ฌ์ฉํ๋ weight W ์ bias b ์๋ ๊ฐ๋ ์ด ๋ค๋ฅด๋ฉฐ ๋จ์ํ๊ฒ W๋ x ์ขํ x0 ์ด๋ฉฐ b๋ y ์ขํ y0 ๋ก ๋ณด๋ฉด ๋๋ค.
์ฃผ์ด์ง ๋ ์ง์ ์ ๋ฐฉ์ ์์ ๋ํด์ ์ฆ A, B, C, D, E,F ๊ฐ์ด ์ฃผ์ด์ง ์กฐ๊ฑดํ์์ ๋ค์๊ณผ ๊ฐ์ด cost ํจ์๋ฅผ ๊ตฌํด๋ณด์.
d1๊ณผ d2์ ์ ๊ณฑ์ ํฉ์ด ์์ ๊ฐ์ด ํํ๋๋ฉด TensorFlow ๋ชจ๋์ ์ฌ์ฉํ๋ linear regression ์์ ์ฝ๋๋ฅผ ๊ฐ๋จํ๊ฒ ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ ์ ์์์ ์ ์ ์๋ค. ๋ค์ ๋งํ์๋ฉด ์ ํํ๊ท ๋ถ์์์ ์ต์ ์ ๊ณฑ๋ฒ์ ์ ์ฉํ์ ๋์ ์ ์ฌํ๊ฒ W ์ b์ ๋ํด์ 2์ฐจ์ ํํ๋ฅผ ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
linear regression ์์ ์ฝ๋์์ hypothesis ์ cost ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋ฉ๋์์์ ์ฐฉ์ํ์.
hypothesis = x_train * W + b
์ฌ๊ธฐ์ x_train ๊ณผ y_train ์ ๊ฐ๊ฐ ๋ฆฌ์คํธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. ์ด ์ฝ๋ฉ์ ์ฐธ์กฐํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋ ํํ๋ฅผ ์์ ํ์.
hypothesis = A_train * W + B_train * b
์ฌ๊ธฐ์ A_train, B_train, C_train ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฆฌ์คํธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ฃผ์ด์ง๋ค.
์์ 1: A=1, B=1, C=-1 , D=-1, E=1, F=-1์ธ ์์น ์์ ๋ฅผ ๋ค๋ฃจ์ด ๋ณด์. ์ด ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ด 2๊ฐ์ ์ง์ ์ ๋ฐฉ์ ์์ ์๋ฏธํ๋ค. ์ฐ๋ฆฝํ์ฌ ํ๋ฉด ํด๋ ( 0.0, 1.0) ์ด ๋๋ค.
x + y โ 1 = 0,
-x + y โ 1 = 0
1/โ2 = 0.707 ๋ก ๋๋ฉด ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ด A_train = [ 0.707, -0.707 ], B_train = [ 0.707, 0.707 ], C-train = [ 0.707, 0.707] ๋ก ๊ณ์ฐ ๋๋ค.
์ฝ๋ ์คํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ฃผ์ํ ์ ์ ๋์ ๋ฐ์์ด ๊ทธ๋ ๊ทธ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ต์ข ๊ฒฐ๊ณผ๋ ๋์ผํ ์ง๋ผ๋ ์๋ ดํ๋ ๊ณผ์ ์ ๋ค์ ๋ค๋ฅผ ์๋ ์์์ ์ ์ํ๋ค. ์์ธ๋ฌ learning rate = 0.01 ๋ก ์ค์ ํ๋ค. ๋ง์ฝ ์ฌ๋ฌ๋ฒ ์ฝ๋๋ฅผ ์คํํด๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ถ๋ค๋ฉด ์ฝ๋ ์คํ ๋ ๋ง๋ค ๋์ ๋ฐ์์ด ํญ์ ๋์ผํ๊ฒ ์ ์ง๋ ์ ์๋๋ก TensorFlow์์ tf.set_random_seed(777) ๋ช ๋ น์ ์ฌ์ฉํ๋๋ก ํ๋ค.
๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด ๋ณด๋์ ํ์ด์ 2.7์ ์ฌ์ฉํดํด์ ์ป์ ์๋์ ๊ฒฐ๊ณผ๋ 500ํ ํ์ต ๊ณ์ฐ์ ๋ฐ๋ฅธ (W,b) ์ ๊ฐ์ 100ํ ๋ง๋ค ์ถ๋ ฅํด ๋ณด์๋ค. cost ํจ์๊ฐ ๋๋จํ ๋น ๋ฅด๊ฒ 0.0์ ์๋ ดํ๋ฉฐ 2์ 1์ฐจ ์ฐ๋ฆฝ ๋ฐฉ์ ์์ ํด (w, b)๊ฐ (0.0, 1.0) dp ์๋ ดํจ์ ํ์ธํ ์ ์๋ค.
๋จธ์ ๋ฌ๋์ ๋ฐฉ์ ์์ ํด๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ ์์ด์๋ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ํธ๋ ๊ฒ์ด ์๋๋ผ ํญ์ cost ํจ์๋ฅผ ๊ตฌ์ฑํ์ฌ ๊ทธ ๊ฐ์ด ์ต์ํ๊ฐ ๋๋๋ก weight ์ b ๊ฐ์ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค๋ ์ ์ด๋ค.
์์ 2: A=2, B=1, C=1 , D=1, E=2, F=-1์ธ ์์น ์์ ๋ฅผ ๊ณ ๋ คํ์. ์ด ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ด 2๊ฐ์ ์ง์ ์ ๋ฐฉ์ ์์ ์๋ฏธํ๋ค. ์ฐ๋ฆฝํ์ฌ ํ๋ฉด ํด๋ (-1.0, 1.0) ์ด ๋๋ค.
2x + y + 1 = 0,
x + 2y โ 1 = 0
1/โ5 = 0.447์ด๋ฉฐ, ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ด A_train = [ 0.894, 0.447 ], B_train = [ 0.447, 0.894 ], C-train = [ -0.447, 0.447] ๋ก ์ค์ ๋๋ค.
์ฝ๋ ์คํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค. learning rate = 0.05 ๋ก ์ค์ ํ๋ค. ์์์ ์ฝ๋์์ ํ์ต ๋ฐ์ดํฐ์ learning rate๋ฅผ ์์ ํ๋ฉด ์ถฉ๋ถํ๋ค.
600ํ ํ์ต ๊ณ์ฐ์ ๋ฐ๋ฅธ (W,b) ์ ๊ฐ์ 100ํ ๋ง๋ค ์ถ๋ ฅํด ๋ณด์๋ค. ์ต์ข ์ ์ธ (W,b)์ ๊ฐ์ (-1.0, 1.0) ์์ ์ ์ ์๋ค.
์ด์ ๊ฐ์ด ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฒ์ ์ต์์ ๊ณฑ๋ฒ์ ์ ์ฉํ์ฌ 2์ 1์ฐจ ์ฐ๋ฆฝ ๋ฐฉ์ ์์ ํด๋ฅผ ๊ตฌํ ์ ์์ผ๋ฉฐ 3์ 1์ฐจ ์ฐ๋ฆฝ ๋ฐฉ์ ์์ ๊ฒฝ์ฐ์๋ ๊ธฐํํ์ ์ธ ์์ด๋์ด๋ฅผ 3์ฐจ์์ผ๋ก ํ์ฅ ์ ์ฉํ๋ฉด ํด๋ฅผ ๊ตฌํ ์ ์์ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ทธ ๋ค์ ๋จ๊ณ๋ก ์คํ๊ต์์ ๋ฐฐ์ฐ๊ฒ ๋๋ 2์ฐจ ๋ฐฉ์ ์์ ์ธ๊ณต์ง๋ฅ์ ์์ ๋ถ๋ถ์งํฉ์ ํด๋นํ๋ ๋จธ์ ๋ฌ๋์ด ํ์ต์ ์ํด ํ์ด ๋ผ ์ ์์ ๊ฒ์ธ๊ฐ? ๊ณผ์ฐ ํ ์ ์๋ค๋ฉด ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก hypothesis ์ cost ํจ์๋ฅผ ์ค์ ํด์ผ ํ๋์ง ์ฐจํ์ ๊ทธ ๊ธธ์ ์ ์ํ ๊ณํ์ด๋ค.
์๋ ์ธํฐ๋ท ์ฃผ์์์ ํ์์ ๋ธ๋ก๊ทธ์์ ์ฐ๋ฆฝ๋ฐฉ์ ์์ ํ๊ธฐ ์ํ TensorFlow ํ์ด์ ์ฝ๋์์ ๋ฅผ ๋ค์ด ๋ฐ์ ์คํ์์ผ ๋ณด์. ํน ์คํ์์์ ๋งํ ์์ด ์ง์ ์ฐ๊ฒฐ์ด ์๋๋ ๊ฒฝ์ฐ ์ธํฐ๋ท ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ฐ๋ก ์ด์ด์ ์ฐพ์ผ๋ฉด ๋๋ค.