
LangChain이란 LLM을 더 쉽게 활용할 수 있도록 만들어진 Python의 프레임 워크인데
이번에 진행했던 토이프로젝트가 이전에 만들었던 쇼핑몰에 LangChain을 사용해서 챗봇을 달아보는 프로젝트를 였다. 이번 프로젝트를 진행하면서 AI = GPT 라는 1차원적인 생각을 가지고 있던 나의 편협한 사고가 깨졌고, 동작원리가 궁금해졌다.
때문에 프로젝트가 끝나자마자 머신러닝의 바이블인 머신러닝 교과서를 바로 사서 빠르게 훑어보았고(다른 공부할게 너무 많아 딥하게 파지는 못했다 ㅜㅜ..) 최대한 쉽게 정리해서 기록해둔다.
( 공학수학을 마지막으로 10년이 지난 지금 삼각함수도 잘 기억나지 않는 나는 원리를 알기 위해 수학공부를 하는 불상사가 발생하였다.. )
머신러닝(Machine Learning)은 데이터에서 패턴을 학습하고 이를 기반으로 예측, 결정을 내리는 알고리즘을 의미한다. 머신러닝은 크게 "분류", "회귀", "강화 학습"으로 나눌 수 있지만 강화학습은 잘 쓰이지 않는다.
분류는 어떤 이미지를 주었을 때, 이 이미지가 "강아지"인지 "고양이"인지 판별하기 위해서 강아지와 고양이 사진을 작은 단위로 쪼개 학습시킨다고 생각하면 된다. 회귀는 연속적인 값을 예측하는 문제로, 예를 들면 부동산 가격 예측을 위해 과거의 데이터를 학습시킨다고 생각하면 된다.
(퍼셉트론, 아달린, 로지스틱회귀에 대해서만 다루겠습니다.)
각 알고리즘들의 프로세스는 동일하다.
(가중치 x 데이터)의 모든 합(sum) + 편향
= 가중치(1번) x 데이터(1번) + 가중치(2번) x 데이터(2번) + 가중치(3번) x 데이터(3번) + .. (전부) .. + 편향
이렇게 하겠다는 의미인데 이유가 모든 데이터가 결과에 영향을 미치기 때문에 모든 데이터의 가중치를 업데이트 하고 나서 결과를 내려고 하기 위함이다.
각 알고리즘마다 결정함수가 다르다.
각 알고리즘마다 손실 함수가 다르다.
3번에서 구한 값에 미분값 (미분을하면 기울기를 구할 수 있는데 이 기울기가 가중치의 변화량 즉 가중치를 얼마나 바꿀거냐를 알 수 있다고 생각해주면 된다) 으로 가중치를 업데이트하고 편향도 업데이트(편향은 데이터랑 상관없이 항상 일정하게 업데이트 된다.) 하는것이다. 위 1234과정을 반복하면서 손실함수를 줄여나가다가 오차가 0이 되면 예측 성공.
각 알고리즘마다 가중치 업데이트 방식이 다르다.
이후에는 경사 하강법의 로컬 미니마 문제를 해결하는 다양한 방법, 그리고 퍼셉트론을 확장한 서포트 벡터 머신(SVM) 등의 알고리즘이 등장한다. 또한, 텍스트의 키워드를 기반으로 감성이 긍정적인지 부정적인지를 분류하는 감성 분석(Sentiment Analysis) 을 학습하면서 머신러닝의 대표적인 분류 알고리즘들을 정리할 수 있었다. 하지만 머신러닝 모델을 직접 학습시켜 쓸만하게 만드는 것은 많은 비용과 시간이 들기 때문에, 상황에 맞게 이미 학습된 모델을 잘 선택하여 활용하는 것이 중요할 것이다.
책의 내용 자체는 어려웠지만 매우 흥미로웠고, 후에 기회가 된다면 내가 직접 훈련시킨 머신러닝 모델을 실제 프로젝트에 적용해보고 싶다.
참고자료
머신러닝 교과서 with 파이썬, 싸이킷런, 텐서플로 3판
유튜브 혁펜하임 https://www.youtube.com/@hyukppen/videos
https://www.youtube.com/playlist?list=PLblh5JKOoLUK0FLuzwntyYI10UQFUhsY9
알고리즘의 완벽한 이해를 원한다면 혁펜하임님의 강의를 매우 추천한다. 👍
전 부먹파인데요 -_-