[머신러닝] 분류 알고리즘 쉽게 알기(퍼셉트론, 아달린, 로지스틱회귀)

KWAK-JINHO·2025년 2월 4일
post-thumbnail

LangChain이란 LLM을 더 쉽게 활용할 수 있도록 만들어진 Python의 프레임 워크인데
이번에 진행했던 토이프로젝트가 이전에 만들었던 쇼핑몰에 LangChain을 사용해서 챗봇을 달아보는 프로젝트를 였다. 이번 프로젝트를 진행하면서 AI = GPT 라는 1차원적인 생각을 가지고 있던 나의 편협한 사고가 깨졌고, 동작원리가 궁금해졌다.

때문에 프로젝트가 끝나자마자 머신러닝의 바이블인 머신러닝 교과서를 바로 사서 빠르게 훑어보았고(다른 공부할게 너무 많아 딥하게 파지는 못했다 ㅜㅜ..) 최대한 쉽게 정리해서 기록해둔다.
( 공학수학을 마지막으로 10년이 지난 지금 삼각함수도 잘 기억나지 않는 나는 원리를 알기 위해 수학공부를 하는 불상사가 발생하였다.. )

머신러닝이란?

머신러닝(Machine Learning)은 데이터에서 패턴을 학습하고 이를 기반으로 예측, 결정을 내리는 알고리즘을 의미한다. 머신러닝은 크게 "분류", "회귀", "강화 학습"으로 나눌 수 있지만 강화학습은 잘 쓰이지 않는다.
분류는 어떤 이미지를 주었을 때, 이 이미지가 "강아지"인지 "고양이"인지 판별하기 위해서 강아지와 고양이 사진을 작은 단위로 쪼개 학습시킨다고 생각하면 된다. 회귀는 연속적인 값을 예측하는 문제로, 예를 들면 부동산 가격 예측을 위해 과거의 데이터를 학습시킨다고 생각하면 된다.

🤖 알고리즘 간단요약

(퍼셉트론, 아달린, 로지스틱회귀에 대해서만 다루겠습니다.)

각 알고리즘들의 프로세스는 동일하다.

1.최종 입력값을 계산한다

(가중치 x 데이터)의 모든 합(sum) + 편향
= 가중치(1번) x 데이터(1번) + 가중치(2번) x 데이터(2번) + 가중치(3번) x 데이터(3번) + .. (전부) .. + 편향

이렇게 하겠다는 의미인데 이유가 모든 데이터가 결과에 영향을 미치기 때문에 모든 데이터의 가중치를 업데이트 하고 나서 결과를 내려고 하기 위함이다.

2.결정함수에 위에서구한 최종입력값을 넣고 계산해서 출력값을 구한다.

각 알고리즘마다 결정함수가 다르다.

  • 퍼셉트론: 출력값이 -1과 1로 뚝뚝 끊기는 그림이 된다.
  • 아달린: 선형(직선이라는 뜻)함수로 출력값이 실수이다.
  • 로지스틱회귀: 시그모이드 (출력값이 0 과 1사이의 수 입니다 즉 확률을 의미!)

3.내가 예측한값과 계산한 값의 차이(이걸 손실 함수 즉 오차를 구하기 위한함수 라고 한다.)를 구한다

각 알고리즘마다 손실 함수가 다르다.

  • 퍼셉트론: 값이 1이냐 -1이냐만 따지기 때문에 맞냐 틀리냐만 있다.
  • 아달린: 평균 제곱 오차 라는 식으로 구한다. 2차식이라서 아래로 볼록한 그림이 된다.
  • 로지스틱: 크로스 앤트로피 (확률 분포를 비교하기 위한 함수라는것만 알아주자.)

4.반복

3번에서 구한 값에 미분값 (미분을하면 기울기를 구할 수 있는데 이 기울기가 가중치의 변화량 즉 가중치를 얼마나 바꿀거냐를 알 수 있다고 생각해주면 된다) 으로 가중치를 업데이트하고 편향도 업데이트(편향은 데이터랑 상관없이 항상 일정하게 업데이트 된다.) 하는것이다. 위 1234과정을 반복하면서 손실함수를 줄여나가다가 오차가 0이 되면 예측 성공.

각 알고리즘마다 가중치 업데이트 방식이 다르다.

  • 퍼샙트론: 학습률(사람이 외부에서 정해주는 하이퍼파라미터 값)에 따라 업데이트. 잘못된 예측일 때만 업데이트 한다.
  • 아달린: 경사하강법으로 기울기를 계속 내려가면서 최소전역값(타깃값)을 찾을때까지 한다.
  • 로지스틱: 얘도 경사하강법을 사용하는데 로지스틱의 손실함수는 확률을 구한다는게 아달린이랑 다르다.

마무리

이후에는 경사 하강법의 로컬 미니마 문제를 해결하는 다양한 방법, 그리고 퍼셉트론을 확장한 서포트 벡터 머신(SVM) 등의 알고리즘이 등장한다. 또한, 텍스트의 키워드를 기반으로 감성이 긍정적인지 부정적인지를 분류하는 감성 분석(Sentiment Analysis) 을 학습하면서 머신러닝의 대표적인 분류 알고리즘들을 정리할 수 있었다. 하지만 머신러닝 모델을 직접 학습시켜 쓸만하게 만드는 것은 많은 비용과 시간이 들기 때문에, 상황에 맞게 이미 학습된 모델을 잘 선택하여 활용하는 것이 중요할 것이다.

책의 내용 자체는 어려웠지만 매우 흥미로웠고, 후에 기회가 된다면 내가 직접 훈련시킨 머신러닝 모델을 실제 프로젝트에 적용해보고 싶다.

참고자료

머신러닝 교과서 with 파이썬, 싸이킷런, 텐서플로 3판
유튜브 혁펜하임 https://www.youtube.com/@hyukppen/videos
https://www.youtube.com/playlist?list=PLblh5JKOoLUK0FLuzwntyYI10UQFUhsY9

알고리즘의 완벽한 이해를 원한다면 혁펜하임님의 강의를 매우 추천한다. 👍

profile
매일 더 나은 내가 되자

1개의 댓글

comment-user-thumbnail
2025년 2월 11일

전 부먹파인데요 -_-

답글 달기