220v
젝무의 개발새발
220v
전체 방문자
오늘
어제
  • 분류 전체보기 (255)
    • AI (35)
      • ML, DL 학습 (30)
      • 논문 리뷰 (4)
      • 실습 및 프로젝트 (1)
    • Algorithm (145)
      • LeetCode (13)
      • 프로그래머스 (35)
      • 백준 (96)
      • 알고리즘, 문법 정리 (1)
    • Mobile, Application (17)
      • Flutter (10)
      • iOS, MacOS (7)
    • BackEnd (7)
      • Flask (1)
      • Node.js (5)
      • Spring, JSP..etc (1)
    • Web - FrontEnd (18)
      • JavaScript, JQuery, HTML, C.. (12)
      • React (6)
    • DataBase (1)
      • MySQL (1)
      • Firebase Firestore (0)
      • Supabase (0)
    • Git (1)
    • 기타 툴 및 오류 해결 (3)
    • 강의 (5)
      • Database (3)
      • 암호학 (2)
      • 알고리즘 (0)
    • 후기와 회고 (2)
    • 블로그 꾸미기 (1)
    • 일상과 이것저것 (20)
      • 맛집 (12)
      • 세상사는일 (4)
      • 도서리뷰 (1)
      • 이런저런 생각들 (잡글) (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • top-down
  • binary search
  • 위상 정렬
  • brute-Force
  • Lis
  • Mathematics
  • dp
  • dfs
  • Prefix Sum
  • simulation
  • topological sort
  • 다익스트라
  • 프로그래머스
  • IMPLEMENT
  • 오블완
  • 티스토리챌린지
  • 백준
  • implementation
  • union-find
  • BFS
  • REACT
  • disjoint set
  • Minimum Spanning Tree
  • Backtracking
  • Dynamic Programming
  • Priority Queue
  • Greedy
  • two pointer
  • bitmasking
  • 구현

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
220v

젝무의 개발새발

AI/ML, DL 학습

[ML/DL 스터디] <Classification - 3> Logisitic Regression, Kernel

2024. 9. 6. 23:44

Reference

https://iai.postech.ac.kr/teaching/machine-learning
https://iai.postech.ac.kr/teaching/deep-learning
위 링크의 강의 내용에 기반하여 중요하거나 이해가 어려웠던 부분들을 정리하여 작성하였고,
모든 강의 슬라이드의 인용은 저작권자의 허가를 받았습니다.

또한, 모든 내용은 아래 Notion에서 더 편하게 확인하실 수 있습니다.
>>노션 링크<<

 

Keywords

  • Logistic Regression
  • sigmoid, softmax
  • log likelihood
  • Kernel trick

 

Logistic Regression - Motivation

Perceptron → data들의 부호 ($g(x)=0$을 기준으로 어느 쪽에 위치해있는지) 에 따라,

SVM → data와 separator의 minimum distance(margin)에 따라 결정.
(각 class에서 separator와 가장 가까운 하나의 data point에 좌우됨.
minimum distance를 maximize하는 과정!)

 

모든 data point에 대한 거리 정보를 이용하여 Optimization을 하고 싶음
→ Logisitic Regression을 이용!

 

거리를 이용해 separator를 가운데로 놓도록.

만약 거리의 합을 이용하면? → 좌, 우 경우가 같은 결과를 가짐.

거리의 곱을 이용하면? → 왼쪽이 더 큼.

(아래의 산술기하평균부등식을 이용. 저 부등식이 같아지는 경우는 $h_1 = h_2$일 때. 따라서, maximize하는 Optimization 문제를 구성하면 → 같아질 때가 최대이므로, 딱 중간에 오도록 할 수 있음.)

 

두 개의 data point에서 확장하면 위와 같다.

동일하게 산술, 기하평균을 이용하여 계산.

$\Pi_i|h_i|$ 를 maximize하는 $g(x)=0$ ($\omega$)를 찾는 Optimization 문제가 된다.

(엄밀하게는 여러 변수에 대한 산술기하평균부등식의 maximization은 모든 거리가 같아야 하지만, 일단은 rough하게 이해하고 지나가면 될 듯.)

 

결국 두 class의 중간 지점을 찾는 문제!

 

결국 Logistic Regression은 모든 거리를 고려하기 때문에, SVM과 달리 Outlier 측으로 separator가 조금 더 이동. 영향을 받음.

 

Logistic Regression - Training

Sigmoid Function(Logistic Function)을 이용하게 된다. 이를 사용할 때의 장점은

  • Monotic하여 Optimization 문제를 바꾸지 않으며
  • 연속적이고, 미분가능하여 GD에 사용하기 좋음.
  • 확률로써 바라볼 수 있음.

 

마지막이 중요한데, 모든 값을 0~1 사이의 값으로 mapping하므로, 확률로써 바라볼 수 있다는 것이 장점.

예를 들어, 특정 input x에 대해 class 0일 확률이 $P(y=0 | x;\omega)$ 인 것.

(sigmoid를 적용하였을 때, 그 값이 0-1 사이 이므로...)

 

그러한 Sigmoid Function을 이용하여 parameter $\omega$를 fit(train)하는 식을 표현할 수 있다.

 

PDF의 첫 번째 식처럼 sigmoid를 $h_\omega(x)$로 표현하면 저렇게 나타낼 수 있다.

그 이후, 첫 번째 식의 두 줄을 아래의 두 번째 식처럼 간단히 나타낼 수 있는데, 저렇게 compactly describe할 수 있는 이유는 data point들에 대해 y값이 항상 0 or 1이기 때문이다.
(따라서, y=0이면 $(h_\omega(x))^y = 1$ 이 되어 앞의 항의 없어지고 뒤의 항만 남으며, 반대의 경우도 마찬가지.)

 

다음, 세 번째 식에서는 모든 data point에 대한 joint probability를 하나의 식으로 정리하는데,

모든 data point에 대해 probability가 independent하다고 가정하기 때문에, 모든 probability의 product로 표현이 된다.

data point의 i.i.d에 대해 부연설명 (학교 머신러닝 강의 교안)

 

최종 정리된 식은 아래와 같으나, 결국 개념적으로는 <모든 거리의 곱> 과 다를 것이 없다.

거리에 sigmoid 함수를 적용하여 확률적으로 바라본 설명일 뿐, 결국 모든 거리의 곱인 것!

 

위의 최종 정리된 식에서 0~1 사이의 수가 매우 많이 곱해지기 때문에, 값이 매우 작아질 것. (당연히.)

따라서 중간과 같이 log likelihood로 식을 변환.
(product에 log를 적용하여 제곱은 밑으로 내려오고, Product는 Summation으로 변환됨.)

 

마지막으로, log likelihood로 정리된 식 자체가 convex한 optimize function(loss function)이 된다.

(앞 PDF에서 개념적으로 모든 거리의 곱과 다를 것이 없다고 했으므로, 마찬가지로 log likelihood도 모든 거리의 곱과 같음. 우리가 하려고 했던 것은 모든 거리의 곱을 maximize하는 것. 따라서 이 $\ell(\omega)$를 maximize하는 것과 동일한 문제임!)

 

Gradient Descent

이러한 optimize function을 편미분하여 gradient를 계산하여 GD를 수행해야 한다.

 

(중간 식)

우선 하나의 data point에 대해 gradient를 계산하면, 저렇게 계산됨.

(아래 식)

따라서 이를 적용하여 m개의 data에 대해 gradient를 계산하게 되면, vectorize하여 다음과 같은 결과로 정리됨. (1개의 data에 대한 결과를 일반화하여 vector 형태로 표현)

또는, Chain Rule에 의해 미분하여 계산하는 방법도 있다.

 

최종적으로 다음과 같이 계산.

이러한 방식으로 GD 수행.

 

Non-linear / Multiclass Classification

Non-linear → Kernel 이용

Multiclass → Softmax 함수를 이용함을 기억.

위와 같은 non-linear separable한 data는 하나의 threshold로 분류될 수 없음. (1D 예시)

이러한 data를 $x→\{x, x^2\}$ 로 mapping하여 2D로 변환하면, linearly separable하게 된다.

 

위와 같이 mapping하는 방식으로도 수행할 수 있음 (또다른 예시)

이러한 방법으로 non-linear separable한 data를 linear separable한 데이터로 mapping하여 동일한 방식으로 linear classification을 수행할 수 있다!

 

    'AI/ML, DL 학습' 카테고리의 다른 글
    • [ML/DL 스터디] <ANN - 1> Artificial Neural Network (ANN) - 1
    • [ML/DL 스터디] <Dim. Reduction> Principal Component Analysis (PCA)
    • [ML/DL 스터디] <Classification - 2> Support Vector Machine (SVM)
    • [ML/DL 스터디] <Classification - 1> Perceptron
    220v
    220v
    DGU CSE 20 / Apple Developer Academy @ POSTECH 2nd Jr.Learner.

    티스토리툴바