산포된 데이터를 정합하는 직선을 찾는 것으로 이해해도 무방합니다. 주어진 데이터를 이용해 기울기와 절편을 구하는 방법입니다.
먼저 행렬연산을 통해 구하는 방법을 설명합니다. 그리고 퍼셉트론에 사용된 것과 같은 방법을 다시 설명하므로 선택적으로 듣기 바랍니다.
설명된 예제에 대한 C 언어 코드를 제공합니다. Tensorlow 코드는 정합 과정을 시각화하여 보여줍니다.
1 of 27
Downloaded 28 times
More Related Content
[신경망기초] 선형회귀분석
1. 선형회귀분석
딥러닝을 위한 신경망 기초
nonezerok@gmail.com
산포된 데이터를 정합하는 직선을 찾는 것으로 이해해도 무방합니다.
주어진 데이터를 이용해 기울기와 절편을 구하는 방법입니다.
먼저 행렬연산을 통해 구하는 방법을 설명합니다.
그리고 퍼셉트론에 사용된 것과 같은 방법을 다시 설명하므로 선택적으로 듣기 바랍니다.
설명된 예제에 대한 C 언어 코드를 제공합니다.
Tensorlow 코드는 정합 과정을 시각화하여 보여줍니다.
11. 11
• 를 임의의 값으로 설정
• 를 계속 바꾸어 본다
← + ∆
해결방법
12. 12
• 무작위로 바꾸면 정답을 언제 찾을지 장담 할 수 없음
• 그래서, 다음과 같이 계산
← + ∆
∆ = 0. 1 × − ×
← + ∆
∆ = 0. 1 × − × 1
다음과 같이 갱신한다
13. 13
[code in C]#include <stdio.h>
#include <conio.h>
void main()
{
double a, b;
double X[] = { 0, 1, 2 };
double Y[] = { 1, 3, 2 };
double lr = 0.1;
a = 0.1;
b = 0.0;
double delta_a;
double delta_b;
int n = 0;
double previous_error = 999.0; // DBL_MAX;
while (1)
{
delta_a = 0;
delta_b = 0;
for (int i = 0; i < 3; i++)
{
double y;
y = a * X[i] + b;
delta_a += (Y[i] - y)*X[i];
delta_b += (Y[i] - y);
}
a = a + lr * delta_a;
b = b + lr * delta_b;
처음 임의의
값으로 설정
마법의
작은 수
14. 14
double error;
error = 0.0;
for (int i = 0; i < 3; i++)
{
double d;
d = (Y[i] - a*X[i] - b)*(Y[i] - a*X[i] - b);
error += d;
}
error = error / 3.0;
n++;
printf("%d t %1.6f t %1.2f t %1.2f n", n, error, a, b);
if ((previous_error - error) < 0.000001) break;
previous_error = error;
} // while
}
a=.5 b=1.5
종료 조건
15. • 아래 식에서 출발
15
(, ) =
1
2
−
동작하는 이유
25. 25
import numpy as np
num_points = 1000
vectors_set = []
for i in range(num_points):
x1= np.random.normal(0.0, 0.55)
y1= x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.03)
vectors_set.append([x1, y1])
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]
import matplotlib.pyplot as plt
#Graphic display
plt.plot(x_data, y_data, 'ro')
plt.legend()
plt.show()
[code in Python]
http://www.jorditorres.org/TensorFlow/
26. 26
import tensorflow as tf
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)