SlideShare a Scribd company logo
선형회귀분석
딥러닝을 위한 신경망 기초
nonezerok@gmail.com
산포된 데이터를 정합하는 직선을 찾는 것으로 이해해도 무방합니다.
주어진 데이터를 이용해 기울기와 절편을 구하는 방법입니다.
먼저 행렬연산을 통해 구하는 방법을 설명합니다.
그리고 퍼셉트론에 사용된 것과 같은 방법을 다시 설명하므로 선택적으로 듣기 바랍니다.
설명된 예제에 대한 C 언어 코드를 제공합니다.
Tensorlow 코드는 정합 과정을 시각화하여 보여줍니다.
2
회귀분석; regression
키 몸무게
84 60
95 62
140 64
155 66
119 68
175 70
145 72
197 74
150 76

̅
3

̅
독립변수
종속변수
직선정합; 선형 회귀분석
정합이라고 생각하면 편하다.
4
(, )
(, )
(, )
예제
5
 =  + (, )
(, )
(, )
(̅, )
회귀직선은 표본평균을 지난다
6
 =
∑  − ̅  − 
∑  − ̅ 

 =  − ̅
(0,1)
(1,3)
(2,2)
̅,  = 0 + 1 + 2
3 , 1 + 3 + 2
3 = 1,2
1알려진 계산공식을 이용해서 풀기
covariance, variance
 =
 
 

=
 
 
 =
1
 − 
 −
− 
 
 
×
  
  
=
 +   +   + 
 +   +   + 

 =
1 0
0 1
7
2
 +  = 
 +  = 
 +  = 
0 1
1 1
2 1


=
1
3
2
 = 

 

  = 
 


 = 
 


 1
 1
 1


=




=
0 1 2
1 1 1
8
 = 
 

 = ?


=  =
1
2
3
2
pseudo inverse; least square method
error3
error2
error1
 =  + (, )
(, )
(, )
 =
1
2
  −  


9
 =
1
2
 +  − 

+  +  − 

+  +  − 

(̅, )
세 번째 방법
주어진 데이터의 평균을
지나는 직선과의 y(종속변수) 값
차이(error)가
전체적으로 최소가 되도록 하는
직선을 구한다.
즉, a, b를 구한다.
차이에 관한 식
3
10
(, ) =
1
2
  −  


 =  + 
이 값을 최소화하는 a, b를 구하자
11
• 를 임의의 값으로 설정
• 를 계속 바꾸어 본다
 ←  + ∆
해결방법
12
• 무작위로 바꾸면 정답을 언제 찾을지 장담 할 수 없음
• 그래서, 다음과 같이 계산
 ←  + ∆
∆ = 0. 1 ×  −  × 
 ←  + ∆
∆ = 0. 1 ×  −  × 1
다음과 같이 갱신한다
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
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
(, ) =
1
2
  −  


동작하는 이유
• 는 에 관한 2차 식
16
()
E 그래프의 모양
17
()



∆ =음수 for 
∆ =양수 for 
갱신 방향
18
+-()



기울기; gradient
19
+-()

기울기-∆ =


갱신방향 판정
20
기울기×아주 작은값-∆ =
+-()



갱신 크기
21
+-()



∆ = −


경사하강법; gradient descent method
22


=


1
2
  −  

=
1
2



 −  

=
1
2
 2  − 


 − 

=   − 


 −  − 

=   −  −

 ←  + ∆
∆ = −


=    −  



=   −  (−1)

 ←  + ∆
∆ = −


=    − 

23
1





  
  = 

Input layer output layer
선형함수
24



잔차
회귀
참고로 회귀는 평균으로 돌아간다는 것을 의미한다.
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
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)
27
for step in range(8):
sess.run(train)
print(step, sess.run(W), sess.run(b))
print(step, sess.run(loss))
#Graphic display
plt.plot(x_data, y_data, 'ro')
plt.plot(x_data, sess.run(W) * x_data + sess.run(b))
plt.xlabel('x')
plt.xlim(-2,2)
plt.ylim(0.1,0.6)
plt.ylabel('y')
plt.legend()
plt.show()

More Related Content

What's hot

세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
Suhyun Park
 
2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차
Moonki Choi
 
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
Suhyun Park
 
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Suhyun Park
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number Theory
Jae-yeol Lee
 
해커에게 전해들은 머신러닝 #3
해커에게 전해들은 머신러닝 #3해커에게 전해들은 머신러닝 #3
해커에게 전해들은 머신러닝 #3
Haesun Park
 
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
NAVER D2
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
NAVER D2
 
HI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceHI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute Force
Jae-yeol Lee
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
Jae-yeol Lee
 
해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4
Haesun Park
 
How to Study Mathematics for ML
How to Study Mathematics for MLHow to Study Mathematics for ML
How to Study Mathematics for ML
Dataya Nolja
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)
beom kyun choi
 
해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1
Haesun Park
 
Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)
강민국 강민국
 
Digit recognizer
Digit recognizerDigit recognizer
Digit recognizer
Chul Ju Hong
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
Jae-yeol Lee
 
해커에게 전해들은 머신러닝 #2
해커에게 전해들은 머신러닝 #2해커에게 전해들은 머신러닝 #2
해커에게 전해들은 머신러닝 #2
Haesun Park
 
2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차
Moonki Choi
 
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
NAVER D2
 

What's hot (20)

세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
 
2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차
 
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
퍼시스턴트 세그먼트 트리 - Sogang ICPC Team, 2020 Winter
 
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
Lazy Propagation on Segment Trees - Sogang ICPC Team, 2019
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number Theory
 
해커에게 전해들은 머신러닝 #3
해커에게 전해들은 머신러닝 #3해커에게 전해들은 머신러닝 #3
해커에게 전해들은 머신러닝 #3
 
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
 
HI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceHI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute Force
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4
 
How to Study Mathematics for ML
How to Study Mathematics for MLHow to Study Mathematics for ML
How to Study Mathematics for ML
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)
 
해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1
 
Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)
 
Digit recognizer
Digit recognizerDigit recognizer
Digit recognizer
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
 
해커에게 전해들은 머신러닝 #2
해커에게 전해들은 머신러닝 #2해커에게 전해들은 머신러닝 #2
해커에게 전해들은 머신러닝 #2
 
2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차
 
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
 

Similar to [신경망기초] 선형회귀분석

3.neural networks
3.neural networks3.neural networks
3.neural networks
Haesun Park
 
Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2
Kwangsik Lee
 
Ch11
Ch11Ch11
Ch11
Hankyo
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
Han Sung Kim
 
파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기
Yong Joon Moon
 
Mathematics
MathematicsMathematics
Mathematics
skku_npc
 
[170517 5주차]C언어 A반
[170517 5주차]C언어 A반[170517 5주차]C언어 A반
[170517 5주차]C언어 A반
arundine
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
SANG WON PARK
 
Day by day iPhone Programming
Day by day iPhone ProgrammingDay by day iPhone Programming
Day by day iPhone Programming
Young Oh Jeong
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagation
JinSooKim80
 
2012 Ds B2 05
2012 Ds B2 052012 Ds B2 05
2012 Ds B2 05chl132435
 
부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리suitzero
 
Auto-Encoders and Variational Auto-Encoders
Auto-Encoders and Variational Auto-EncodersAuto-Encoders and Variational Auto-Encoders
Auto-Encoders and Variational Auto-Encoders
Jinho Lee
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
Haesun Park
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexity
skku_npc
 
Automatic Grid Pattern Recognition for Camera Calibration
Automatic Grid Pattern Recognition for Camera CalibrationAutomatic Grid Pattern Recognition for Camera Calibration
Automatic Grid Pattern Recognition for Camera Calibration
Lee Young Min
 
자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서KimChangHoen
 

Similar to [신경망기초] 선형회귀분석 (20)

3.neural networks
3.neural networks3.neural networks
3.neural networks
 
R_datamining
R_dataminingR_datamining
R_datamining
 
Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2
 
Ch11
Ch11Ch11
Ch11
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기
 
Mathematics
MathematicsMathematics
Mathematics
 
[170517 5주차]C언어 A반
[170517 5주차]C언어 A반[170517 5주차]C언어 A반
[170517 5주차]C언어 A반
 
Rdatamining
Rdatamining Rdatamining
Rdatamining
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
Day by day iPhone Programming
Day by day iPhone ProgrammingDay by day iPhone Programming
Day by day iPhone Programming
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagation
 
자구5번
자구5번자구5번
자구5번
 
2012 Ds B2 05
2012 Ds B2 052012 Ds B2 05
2012 Ds B2 05
 
부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리
 
Auto-Encoders and Variational Auto-Encoders
Auto-Encoders and Variational Auto-EncodersAuto-Encoders and Variational Auto-Encoders
Auto-Encoders and Variational Auto-Encoders
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexity
 
Automatic Grid Pattern Recognition for Camera Calibration
Automatic Grid Pattern Recognition for Camera CalibrationAutomatic Grid Pattern Recognition for Camera Calibration
Automatic Grid Pattern Recognition for Camera Calibration
 
자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서
 

More from jaypi Ko

CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic ModelCVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
jaypi Ko
 
개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)
jaypi Ko
 
[신경망기초]오류역전파알고리즘구현
[신경망기초]오류역전파알고리즘구현[신경망기초]오류역전파알고리즘구현
[신경망기초]오류역전파알고리즘구현
jaypi Ko
 
파이썬설치
파이썬설치파이썬설치
파이썬설치
jaypi Ko
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것
jaypi Ko
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
jaypi Ko
 
C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것
jaypi Ko
 
[확률통계]04모수추정
[확률통계]04모수추정[확률통계]04모수추정
[확률통계]04모수추정
jaypi Ko
 
MFC 프로젝트 시작하기
MFC 프로젝트 시작하기MFC 프로젝트 시작하기
MFC 프로젝트 시작하기
jaypi Ko
 
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기
jaypi Ko
 
13 사용자 메세지 처리
13 사용자 메세지 처리13 사용자 메세지 처리
13 사용자 메세지 처리
jaypi Ko
 
12 컨트롤에서의 메세지 처리
12 컨트롤에서의 메세지 처리12 컨트롤에서의 메세지 처리
12 컨트롤에서의 메세지 처리
jaypi Ko
 
11 노티피케이션코드
11 노티피케이션코드11 노티피케이션코드
11 노티피케이션코드
jaypi Ko
 
10 컨트롤윈도우
10 컨트롤윈도우10 컨트롤윈도우
10 컨트롤윈도우
jaypi Ko
 
09 윈도우스타일
09 윈도우스타일09 윈도우스타일
09 윈도우스타일
jaypi Ko
 
08 부모윈도우 자식윈도우
08 부모윈도우 자식윈도우08 부모윈도우 자식윈도우
08 부모윈도우 자식윈도우
jaypi Ko
 
07 윈도우 핸들
07 윈도우 핸들07 윈도우 핸들
07 윈도우 핸들
jaypi Ko
 
06 일반적 유형의 프로그램
06 일반적 유형의 프로그램06 일반적 유형의 프로그램
06 일반적 유형의 프로그램
jaypi Ko
 
05 윈도우 프로그램 유형
05 윈도우 프로그램 유형05 윈도우 프로그램 유형
05 윈도우 프로그램 유형
jaypi Ko
 
04 이벤트처리
04 이벤트처리04 이벤트처리
04 이벤트처리
jaypi Ko
 

More from jaypi Ko (20)

CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic ModelCVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
 
개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)
 
[신경망기초]오류역전파알고리즘구현
[신경망기초]오류역전파알고리즘구현[신경망기초]오류역전파알고리즘구현
[신경망기초]오류역전파알고리즘구현
 
파이썬설치
파이썬설치파이썬설치
파이썬설치
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
 
C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것
 
[확률통계]04모수추정
[확률통계]04모수추정[확률통계]04모수추정
[확률통계]04모수추정
 
MFC 프로젝트 시작하기
MFC 프로젝트 시작하기MFC 프로젝트 시작하기
MFC 프로젝트 시작하기
 
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기
 
13 사용자 메세지 처리
13 사용자 메세지 처리13 사용자 메세지 처리
13 사용자 메세지 처리
 
12 컨트롤에서의 메세지 처리
12 컨트롤에서의 메세지 처리12 컨트롤에서의 메세지 처리
12 컨트롤에서의 메세지 처리
 
11 노티피케이션코드
11 노티피케이션코드11 노티피케이션코드
11 노티피케이션코드
 
10 컨트롤윈도우
10 컨트롤윈도우10 컨트롤윈도우
10 컨트롤윈도우
 
09 윈도우스타일
09 윈도우스타일09 윈도우스타일
09 윈도우스타일
 
08 부모윈도우 자식윈도우
08 부모윈도우 자식윈도우08 부모윈도우 자식윈도우
08 부모윈도우 자식윈도우
 
07 윈도우 핸들
07 윈도우 핸들07 윈도우 핸들
07 윈도우 핸들
 
06 일반적 유형의 프로그램
06 일반적 유형의 프로그램06 일반적 유형의 프로그램
06 일반적 유형의 프로그램
 
05 윈도우 프로그램 유형
05 윈도우 프로그램 유형05 윈도우 프로그램 유형
05 윈도우 프로그램 유형
 
04 이벤트처리
04 이벤트처리04 이벤트처리
04 이벤트처리
 

[신경망기초] 선형회귀분석

  • 1. 선형회귀분석 딥러닝을 위한 신경망 기초 nonezerok@gmail.com 산포된 데이터를 정합하는 직선을 찾는 것으로 이해해도 무방합니다. 주어진 데이터를 이용해 기울기와 절편을 구하는 방법입니다. 먼저 행렬연산을 통해 구하는 방법을 설명합니다. 그리고 퍼셉트론에 사용된 것과 같은 방법을 다시 설명하므로 선택적으로 듣기 바랍니다. 설명된 예제에 대한 C 언어 코드를 제공합니다. Tensorlow 코드는 정합 과정을 시각화하여 보여줍니다.
  • 2. 2 회귀분석; regression 키 몸무게 84 60 95 62 140 64 155 66 119 68 175 70 145 72 197 74 150 76  ̅
  • 5. 5  =  + (, ) (, ) (, ) (̅, ) 회귀직선은 표본평균을 지난다
  • 6. 6  = ∑  − ̅  −  ∑  − ̅    =  − ̅ (0,1) (1,3) (2,2) ̅,  = 0 + 1 + 2 3 , 1 + 3 + 2 3 = 1,2 1알려진 계산공식을 이용해서 풀기 covariance, variance
  • 7.  =      =      = 1  −   − −      ×       =  +   +   +   +   +   +    = 1 0 0 1 7 2
  • 8.  +  =   +  =   +  =  0 1 1 1 2 1   = 1 3 2  =        =       =       1  1  1   =     = 0 1 2 1 1 1 8  =      = ?   =  = 1 2 3 2 pseudo inverse; least square method
  • 9. error3 error2 error1  =  + (, ) (, ) (, )  = 1 2   −     9  = 1 2  +  −   +  +  −   +  +  −   (̅, ) 세 번째 방법 주어진 데이터의 평균을 지나는 직선과의 y(종속변수) 값 차이(error)가 전체적으로 최소가 되도록 하는 직선을 구한다. 즉, a, b를 구한다. 차이에 관한 식 3
  • 10. 10 (, ) = 1 2   −      =  +  이 값을 최소화하는 a, b를 구하자
  • 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   −     동작하는 이유
  • 16. • 는 에 관한 2차 식 16 () E 그래프의 모양
  • 17. 17 ()    ∆ =음수 for  ∆ =양수 for  갱신 방향
  • 22. 22   =   1 2   −    = 1 2     −    = 1 2  2  −     −   =   −     −  −   =   −  −   ←  + ∆ ∆ = −   =    −      =   −  (−1)   ←  + ∆ ∆ = −   =    −  
  • 23. 23 1           =   Input layer output layer 선형함수
  • 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)
  • 27. 27 for step in range(8): sess.run(train) print(step, sess.run(W), sess.run(b)) print(step, sess.run(loss)) #Graphic display plt.plot(x_data, y_data, 'ro') plt.plot(x_data, sess.run(W) * x_data + sess.run(b)) plt.xlabel('x') plt.xlim(-2,2) plt.ylim(0.1,0.6) plt.ylabel('y') plt.legend() plt.show()