-
[PyTorchZerotoAll 내용정리] 02 Linear ModelML&DL 이야기/Pytroch 2023. 8. 15. 14:36
Supervised Learning
supervised learning이란 지도학습으로 답이 이미 존재하는 labled dataset으로 모델을 훈련시키는 경우를 의미한다.
지도 학습 알고리즘의 일반 유형 지도 학습 알고리즘에는 크게 두 가지 유형이 있다.
1. 분류 기법(Classification techniques) 분류 기법은 입력 데이터를 특정 클래스 또는 그룹의 구성원으로 식별하기 위해 알고리즘에 이산 값을 예측하도록 요청한다.
다음과 같은 알고리즘의 예시가 있다
1.1) 로지스틱 회귀
1.2) 선형 분류
1.3) KNN 알고리즘
1..4) 트리
1.5) SVM
2. 선형 회귀 (Linear regression) 선형 회귀분석은 연속 데이터를 사용한다. 대수학 문제처럼 x의 값을 알고 있다면, y 변수의 값을 얼마로 예상할 것인가와 같은 문제를 푼다
Linear model(선형 모델)
선형 모델의 경우 모델이 선형(linear)한 관계를 가지고 있다고 가정하고 학습시키는 것이다.
여기서 Linear이란 다음과 같이 정의된다.
미분적분학(Calculus)에서의 정의: $y= a*x + b $ 형테의 직선의 방정식으로 나타낼 수 있는 함수로, 상수함수 혹은 1차함수를 의미한다. 함수 관점에서 선형함수는 직선의 형태를 띈다.
선형대수학(Linear Algebra)에서의 정의:
$ f(x+y) = f(x) + f(y) $:가산성
$ f(cx) = c*f(x) $: 동치성
을 만족할 때, linearity를 만족한다고 한다.
즉, $y= a*x + b $ 형태에서 b=0인 경우만 선형함수라고 한다. 원점을 지나지 않는 경우에 있어서는 Affine Function이라고 한다.
그렇다면 선형 모델은 어떤 정의를 따르는 것일까??
선형모델이란 보통 미분적분학에서의 정의를 따른다. 또한 이때 주의해야할 점이 선형성을 판정할 때, 선형이란 독립변인과(x) 종속변인(y) 사이의 관계라는 것이다.
예를 들어 종속변인(y)와 독립변인(x)의 관계를 y=ax^2+bx+c로 정의한다면 이는 polynomial regression이다.
여기에 trick을 적용하여 X=(x1, x2)=(x^2, x) 라는 형태로 독립변인을 변환하여 표현한 후, "종속변인(y)와 독립변인(x)의 관계"가 아닌 "종속변인(y)와 독립변인(X=(x1,x2)=(x^2,x))의 관계를 y=ax1+bx2+c"로 표현한다면 multivariate linear regression 문제로 해석가능하다.
즉, a,b,c와 y의 관계가 linear 해서가 아니라 독립변인의 정의가 변화함으로 인해 문제는 재정의되어 linear regression이 된다.
다만 이는 multivariate linear regression의 special case라 표현가능한데, 일반적인 multivariate linear regression에서는 독립변인 X=(x1, x2, ..., xN)사이의 dependency가 없는 반면, y=ax^2+bx+c를 linear regression 문제로 변환하기 위해 수행하는 X=(x1, x2)=(x^2, x) 절차에서는 x1, x2 사이에 dependency가 존재(또는 자유도의 구속)한다라는 면에서 special case이라 할 수 있다.
내용추가 24.1.23
선형모델 linear model이라고 하면, input변수의 선형성을 보장하지 않아도 괜찮다.
다만 모델의 parameter들이 선형성을 만족하면 된다.
아래의 수식이 있는 그림을 보자.
특히 2번째 수식을 보면 x에 관해서 k(x)식이 비선형 식이어도 h(x)는 선형모델이라고 할 수 있다. 왜냐하면 각 parameter theta에 관해서는 선형성을 만족하기 때문이다.즉, 아래의 Feature Organization을 통해 input x가 변형되더라도 parmaeter들의 관계가 선형성이냐가 model의 선형성을 결정한다고 볼 수 있다
How to optimize Linear model
w라는 가중치를 최적화하려면 loss function의 값을 minimize하는 문제를 풀면 된다.
여기서 loss를 구한 방식은 MSE 방식을 이용했지만, loss는 다양한 방식으로 정의가능하다(https://secundo.tistory.com/40)
w에 따른 loss를 그래프로 표현하면 위와 같이 표현되는데, 이 그래프를 통해 가장 작은 값을 가지는 w를 찾는 것이 목적임을 쉽게 확인가능하다(실제 w를 찾는 방법은 여러가지가 있지만 보통 다음 글의 back propagation 방법을 이용한다)
동시에 loss graph의 w의 min이 존재하는 것은 MSE 함수가 covex function이기 때문인데 이에 관해서는 차후에 OR내용을 정리하면서 다시 작성할 것 같다.
Code 실습
https://colab.research.google.com/drive/1QB72fSRQTZihbzbp8qf7cf-jRWZFy4Ax#scrollTo=vxW_zUBZaeWd
'ML&DL 이야기 > Pytroch' 카테고리의 다른 글
[PyTorchZerotoAll 내용정리] 06 Logistic(sigmoid) Regression = Linear classification (0) 2023.08.27 [PyTorchZerotoAll 내용정리] 05 Linear Regression in pytorch(pytorch Project 개발순서 익히기) (0) 2023.08.23 [PyTorchZerotoAll 내용정리] 04 Back propagation (0) 2023.08.16 [PyTorchZerotoAll 내용정리] 03 Gradeint Descent (0) 2023.08.15 [PyTorchZerotoAll 내용정리] 01 Overview (0) 2023.08.10