본문 바로가기
CS/3-2 딥러닝

[비디오이미지프로세싱] 05~07. Stochastic Gradient Descent, K-Nearest Neighbors

by 이지이즤 2022. 10. 19.

Lecture 5

• Gradient Descent (GD) Continued (Extension to Higher Dimension)
Stochastic Gradient Descent (SGD) 확률적 경사 하강법

Lecture 6

• Traditional Classification Methods
K-Nearest Neighbors (KNN)

Lecture 7

• Tutorials of
   Linear Regression

 

 


Stochastic Gradient Descent (SGD) 확률적 경사 하강법

밑시딥 6.1.2장 p.190~191
모두딥 9장 p.122~123
나의첫 5.8.5장 p.208~209
https://everyday-deeplearning.tistory.com/m/entry/SGD-Stochastic-Gradient-Descent-%ED%99%95%EB%A5%A0%EC%A0%81-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95


매개변수의 기울기를 구해, 기울어진 방향으로 매개변수 값을 갱신하는 일을
몇 번이고 반복해서 점점 최적의 값에 다가가는 방법

 

 

 

경사 하강법은 정확하게 가중치를 찾아가지만, 한 번 업데이트할 때마다 
전체 데이터를 미분해야 하므로 계산량이 매우 많다는 단점이 있음.
불필요하게 많은 계산량은 속도를 느리게 할 뿐 아니라, 최적 해를 찾기 전에 최적화 과정이 멈출 수도 있음.

확률적 경사 하강법은 경사 하강법의 이러한 단점을 보완한 방법임.
전체 데이터를 사용하는 것이 아니라, 랜덤하게 추출한 일부 데이터를 사용함.
일부 데이터를 사용하므로 더 빨리 그리고 자주 업데이트를 하는 것이 가능해짐.

랜덤한 일부 데이터를 사용하는 만큼 확률적 경사 하강법은 중간 결과의 진폭이 크고
불안정해 보일 수도 있지만, 속도가 확연히 빠르면서도 최적 해에 근사한 값을 찾아낸다는 장점이 있음.

 


 


K-Nearest Neighbors (KNN) k-최근접 이웃

2차과제
나의첫 4.2장 p.33~56
https://dad-rock.tistory.com/m/990
https://rebro.kr/m/184
https://skyil.tistory.com/m/107


데이터 분류에 사용되는 아주 간단한 지도학습 알고리즘.

* 데이터 분류
 : 새로운 데이터를 기존 데이터의 레이블 중 하나로 분류하는 작업

ex) 손글씨 인식
  : 숫자 인식 모델을 학습시킬 때 학습할 데이터와 함께 그 데이터가 무슨 숫자를 의미하는지
    명시적인 레이브로가 함께 학습시킴(지도학습).
    학습이 완료된 모델은 입력된 손글씨 숫자에 대해 분류를 진행하는데,
    이 분류값은 학습에 사용됐던 기존 데이터들의 레이블 중하나에 해당함(데이터 분류).


k-최근접 이웃 알고리즘이란
현재 테이터를 특정값으로 분류하기 위해, 기존의 데이터 안에서
현재 데이터로부터 가까운 k개(탐색할 이웃)의 데이터를 찾아 k개의 레이블 중 가장 많이 분류된 값으로
현재의 데이터를 분류하는 알고리즘임.

ex) 서울 어딘가에 데려다 놓고, '이곳이 강남일까요, 강북일까요?'라고 물어보면 어떻게 현재의 위치를 알 수 있을까?
한 가지 방법은 주변에 보이는 가까운 사람들에게 똑같은 질문을 던져서 많은 답을 얻은 쪽으로 대답하는 것임.
주변사람 5명(k=5)중에 4명이 강남, 1명이 강북이라고 대답했다면 현재 위치가 강남이라고 예측할 수 있음.

 

 

 

* K값?
k는 보통 2이상의 홀수로 지정함.
최적의 k를 찾기 위해서는 보통 검증 데이터를 통해 가장 정확도가 높은 k를 선정함.


* Distance Metric?

 

=> Setting Hyperparameters

 


활용 예시

MNIST 데이터베이스 (Modified National Institute of Standards and Technology database)는
손으로 쓴 숫자들로 이루어진 대형 데이터베이스
-> running a simple k-nearest neighbor (kNN) on this simple MNIST data was very slow (Computationally heavy).

 


kNN Summary

The k-Nearest Neighbor (kNN) algorithm belongs to "supervised learning," in which all the labels exist.

The kNN algorithm allocates new data to the nearest neighbor class.
k is better to be odd (to avoid the “tie”).

The kNN algorithm doesn't require any kind of training or preparation time,
but it does need a lot of memory space and computational time to find your closest neighbor.

Distance metric and K are hyperparameters
Choose hyperparameters using the validation set; only run on the test set once at the very end

goal = mimin brain

 

 

댓글