본문 바로가기
2024 Study Plan/머신러닝&딥러닝

3

by 0_mini 2025. 1. 21.

Classification

첫번째에서 얘기한 연속적인 데이터와 달리 categorical한 데이터는 classification으로 처리한다.

Linear regression을 적용해보면 0 or 1 이런 식으로 나오기 때문에 관계를 선형적으로 나타냈을때 좋지 않은 결과가 나온다. 또한 결과값이 3개 이상이거나 각각의 결과에 당선 낙선같은 의미가 있다면 그런 부분을 반영하지 못하기 때문에 비선형적인 관계인 categorical 데이터에 linear regression은 적합하지 않다.

따라서 이런 것을 위해 Logistic regression이란 것을 개발했다.

Logistic Regression

Sigmoid 함수가 이번 케이스에서 원하는 모양이기 때문에 사용해보겠다.

계산을 하다보면 양 변에 로그를 취해야 하는 경우가 생기는데 이때 좌변은 일어날 확률/일어나지 않을 확률인데 이러면 일어날 확률이 높아지면 값이 커진다. 이 식을 완성하면 결과값은 선형관계가 있는데 이를 logistic regression이라고 한다.

Likelihood의 정의

  • 특정 파라미터 값에서 데이터가 관측될 확률로 정의됩니다.
  • 이는 확률의 관점에서 조건부 확률로 표현할 수 있습니다: L(θ∣X)=P(X∣θ)L(\theta | X) = P(X | \theta) 여기서:
    • θ\theta: 모델의 파라미터
    • XX: 관측된 데이터
    • P(X∣θ)P(X | \theta): 모델 파라미터 θ\theta가 주어졌을 때 데이터 XX가 관측될 확률

Maximum Likelihood Estimation (MLE)

Likelihood는 모델 파라미터를 추정하는 데 사용됩니다.
MLE는 관측된 데이터를 가장 잘 설명하는 파라미터 θ\theta를 찾는 방법입니다.

θ^=arg⁡max⁡θL(θ∣X)\hat{\theta} = \arg\max_{\theta} L(\theta | X)

예시: 동전 던지기

  • 동전을 10번 던졌는데, 앞면이 7번 나왔다고 합시다.
  • 모델의 파라미터 θ\theta는 동전이 앞면이 나올 확률(0~1 사이)입니다.
  • L(θ∣X)=θ7(1−θ)3L(\theta | X) = \theta^7 (1 - \theta)^3.
    이는 특정 θ\theta 값에서 이 결과가 나올 가능성을 나타냅니다.
  • MLE는 θ\theta 값을 최대화하는 값을 찾는 과정입니다.

어떤 식을 최대로 만들어주는 input(beta)값을 찾고싶은데 구조적으로 찾을수 없는 한계가 있다.

따라서 optimization인 Gradient Descent를 알아보자.

먼저 optimization의 가장 간단한 형태를 알아보면 찾고싶은 값이 있고 제약조건이 있을때 그 안에서 최적의 값을 찾는 것이다.

여러가지 방법을 생각해보면 다양한 베타값을 넣어보고 최적의 값을 찾는 것인데 값이 크면 힘들것같다.

랜덤한 값을 넣어보는 방법도 있는데 차원이 커지면 이 방법도 어렵다.

시각화 방법도 변수가 많아지면 힘들다.

 

그래서 생각해낸 방식이 경사하강법인데 쉽게 설명하자면 산을 내려올때 눈을 가리고 내려오는데 발로 짚어서 내리막인 곳을 알아내 한발짝 가고 또 다시 짚어서 내리막인 방향으로 꺾어서 한발짝 가는 방식으로 하다보면 평평한 곳에 도달해 그 곳이 평지라고 생각하는 방식이다. 이 방식은 어디서 출발해도 결국 바닥에 도착한다.

미분하면 기울기가 나오는데 시작점의 기울기가 음수였다면 양수 방향으로 가야하고 양수였다면 음수로 가야한다.

예시로 돌아가서 보폭을 결정해야 하는데 점프를 하며 큰 보폭으로 간다면 다칠 위험이 크고 안전하게 정말 조금씩 간다면 한참 걸릴것이다. 따라서 적절한 보폭으로 가야하는데 alpha가 그 보폭을 결정한다.

새 베타값은 기존 베타값에서 베타값을 미분한 기울기에 보폭을 곱한 값을 빼면 된다.

 

이 방법이 항상 맞으면 좋겠지만 현실 세계에선 차원수가 큰 문제를 해결해야하는데 그럴땐 0이 되는 점이 많아진다.

local optima, saddle point

또한 미분하지 못하는 식이 세상에 많다.

이 방식도 굉장히 오래 걸린다.

 

이런 점을 보완해 만든 것이

Stochastic Gradient Descent이다.

이 방식은 샘플 문제를 학습시켜 적용하는건데 얼마나 학습시킬지 정하는 것이 관건이다. 많이 학습시키면 당연히 성능은 좋겠지만 그만큼 오래 걸리고 자원이 많이 들기도 하고 10개에서 하나 추가되는 데이터의 소중함과 10000개에서 하나 추가되는 데이터의 소중함이 다르기 때문에 갈수록 데이터 하나하나의 귀중함이 떨어지는 diminishing returns문제가 있어 얼마나 학습시킬지 정하는 것이 (minibatch) 중요하다.

 

supervised learning에서 베타값을 찾는 3번이 바뀌었는데 베타를 있다고 치고 x값을 넣어 예측하고 정답이랑 비교해 얼마나 틀렸는지 찾는다.(loss function) 얼마나 틀렸는지 보고 정답을 맞출때까지 베타를 움직인다.

실제 해보면 전체적인 그래프는 잘 가지만 중간중간에 꺾이는 부분이 있는데 이유는 full batch가 아니기 때문이다. 다 학습시켰으면 완벽하게 가겠지만 minibatch기 때문에 중간중간 틀리는 부분이 생긴다. 또한 언제 멈추냐면 값이 비슷하게 몇개 이상 나올때나 횟수를 정해놓고 그때까지 돌리거나 한다.

 

로지스틱에서 세개이상의 클래스를 구할때 식을 유도해보면 softmax 함수가 나온다.

'2024 Study Plan > 머신러닝&딥러닝' 카테고리의 다른 글

2  (0) 2025.01.21
1  (1) 2025.01.17
[딥러닝1] 3강. 인공신경망  (7) 2024.07.25
[딥러닝1] 2강. 활성화 함수  (1) 2024.07.23
[딥러닝1] 1강. 퍼셉트론  (1) 2024.07.18