본문 바로가기

DEVELOP_NOTE/ML

Vector DB란 무엇일까? 그리고 어떤 Vector DB를 사용해야할까? (2) 이전 글에서는 Vector DB가 무엇인지와 Vector DB에서 데이터를 검색하기 위한 방법들에 대해서 알아보았다. 오늘은 Vector DB의 종류들과 특성, 장단점에 대해 분석해보려 한다. 3. 어떤 Vector DB를 사용해야할까? VectorDB를 선택할때는 현재 진행하는 서비스 또는 프로젝트의 상황과 환경에 비추어 적절한 DB를 선택할 수 있어야 한다. 따라서, Vector DB의 여러 요소들을 살펴, 적합한 DB를 선택해야하는데, 아래 기준들을 면밀히 살펴봐야한다. 1) 성능과 속도 : 검색 속도 대규모 데이터셋에서 검색 속도는 가장 중요한 요소 중 하나이다. 검색 알고리즘의 효율성과 데이터 인덱싱 방법이 검색 속도에 큰 영향을 미치게 된다. : 삽입 및 업데이트 속도 데이터의 삽입과 업데이트.. 더보기
Vector DB란 무엇일까? 그리고 어떤 Vector DB를 사용해야할까? (1) 오늘은 VectorDB의 종류와 장단점에 대해서 살펴보려 한다.먼저 VectorDB는 다른 DB들과 어떻게 다른지 간단하게 정리하고 vector DB에 대해 자세히 알아보도록 하자.  1. DataBase의 종류DataBase는 크게 '관계형 데이터베이스', '비관계형 데이터베이스', 그리고 최근에 주목받고 있는 '벡터 데이터베이스'로 분류할 수 있다.  1) 관계형 데이터베이스(RDBMS)관계형 DB는 데이터를 테이블로 구성하여 관리하는 데이터베이스를 의미한다.SQL(Structured Query Language)을 사용하여 데이터를 쿼리하고 조작하며, 강력한 데이터 무결성을 가지며,복잡한 쿼리 처리 능력, 트랜잭션 관리 등이 가능한 DB형태를 가진다.대표적으로는 MySQL, PostgreSQL, Or.. 더보기
이제 Tabular Data는 MLP 대신 FT-Transformer를 써야하는 이유! 최근 vision과 NLP등 ML Task에서는 거의 모든 task에서 Deep learning Architecture가 활용되며 다양한 아이디어의 모델들이 제안되고, 연일 해당 Task의 SOTA를 갱신하고 있다. DL architecture의 경우, loss를 통한 weight 와 bias의 미분 값을 계산하고 업데이트하는 방식을 자동으로 구현한, AutoGrad를 통해 End-to-End방식의 다양한 구조의 모델을 유연하게 결합하며 다양한 Task에서 좋은 성능을 내고있다. 하지만 Tabular Data를 다루는 분야에서는 여전히 딥러닝 보다는 GBDT계열의 모델들이 여전히 강세를 보이는데, 이따금 GBDT계열의 모델보다 좋은 성능을 보이는 딥러닝 모델이 있다 하더라도, 그 차이가 미미하거나, 다양.. 더보기
Weight initialization(He, Xavier, LeCun) 최근 딥러닝 개발을 진행할때 사용하는 현대의 딥러닝 라이브러리에서는 대부분 가중치 초기화 과정을 자동으로 제공하도록 라이브러리 자체에 기능을 내장하고 있다. 대표적으로 Pytorch에서 제공하는 linear layer(nn.Linear)는 내부에 가중치 초기화 기능을 내장하고 있다. (물론, torch.nn.init 모듈 내에서 default 가중치 초기화 방식을 변경할 수 있다) 그래서, 딥러닝 개발과정에서 가중치 초기화 과정에 대해 전혀 관여하지 않고 모델을 개발하는 경우가 많다. 다만, 그렇다고 가중치 초기화 작업이 중요하지 않다는 것은 아니다. 딥러닝 라이브러리의 버전이나 종류에 따라서 가중치 초기화는 각각 다른 방법을 채택하고 있을 수 있고, 데이터의 특성 또는 과제의 특성에 따라 이에 적합한 .. 더보기
Pytorch의 'AutoGrad' 과정을 하나하나 뜯어보자! 우리는 보통 딥러닝 모델을 학습할때, Pytorch, TensorFlow, Keras와 같은 딥러닝 라이브러리를 사용한다. 딥러닝 라이브러리들을 사용할때의 장점은 아래의 몇가지로 요약해볼 수 있다. 1) 복잡한 수학적 연산을 간편한 API 구조 뒤에 숨김으로써, 딥러닝 모델의 학습 및 개발 과정을 단순화 해준다. 2) 모델 파라미터를 업데이트하기 위한 미분과정에 대한 자동화 기능을 제공한다. 3) GPU를 사용한 데이터의 batch 처리, 멀티스레딩, 데이터 로딩등의 기능을 지원한다. 그 중에서도 딥러닝 라이브러리를 사용하는 가장 주된 이유는 2번에 해당하는 'AutoGrad' 기능일 것이다. 먼저, 딥러닝 모델이 데이터를 통해 학습을 진행하는 과정을 간단하게 요약하면, 1) 먼저 예측값을 도출하고, 예.. 더보기
[Norm] L2 Norm? L1 Norm? 이제 제대로 알고 사용하자! 오늘은 L1 Norm과 L2 Norm에 대해서 구체적으로 분석해보려한다. Norm?먼저 Norm(놈, 노름)은 뭘까?선형대수학에서 Norm은 벡터의 크기(magnitude) 또는 길이(length)를 측정하는 방법을 의미하다.여기서 길이(length)는 차원(dimension)과는 다른 의미라는 것을 알자. 예를들어 다음과 같은 열벡터가 있다고 가정해보자.이 벡터의 차원은 3이고, 길이가 3인것이 아니다.그리고, 차원이 3이라는것은 3차원공간에 아래와 같이 벡터를 그릴 수 있다는 의미이다.이때, 빨간선에 해당하는 벡터의 길이를 구하는것이 바로 오늘 다룰 Norm으로 수행할 수 있는것이다.그런데, 왜 벡터의 길이를 구해야하는것이고, 또 왜 Norm을 활용해야하는 걸까? Norm은 머신러닝에서 아래 과정에서.. 더보기
[Imbalance Data] 불균형데이터를 극복하고 모델을 학습하는 방법 real world의 데이터를 분석하고 모델링을 하다보면, 가장 흔하게 발생하는 문제중 하나가 바로 'Imbalance Dataset'이다. 머신러닝 모델이 적절하게 학습하기 위해서는, 학습데이터가 예측하고자 하는 목적과 카테고리에 부합한 데이터가 균형있게 분포해야하고, 또 학습하기에 충분한 양을 가져야한다. 하지만 real world데이터에서는 불균형한 데이터의 사례가 매우 많다. 대표적으로 '이상거래 탐지(Fraud Detection)'를 예로들 수 있다. 횡령이나, 보이스피싱으로 발생하는 이상거래는 전체 거래중 0.1%도 되지않아, 대표적인 데이터불균형 사례로 꼽힌다. 이런 과제의 경우, 모델을 개발하고 정확도를 높이기 이전에, 불균형 데이터를 어떻게 처리할 것인지가 관건이 된다. 오늘은 이러한 불.. 더보기
[AutoML] AutoGluon으로 빠르게 여러 ML모델들을 비교 테스트해보자! ML 프로젝트를 진행할때, 가장 많은 시간이 소요되는 스텝을 꼽아본다면, 아래 과정들을 떠올릴 수 있다. 1) 데이터 전처리 2) 최적의 성능을 담보할 수 있는 model Architecture를 테스트하고 확정하는 과정 * AutoML이 많은 사용자들에게 관심받기 시작한 것도, 바로 이러한 과정을 자동화해야할 필요가 있었기때문이다. ...현실의 머신러닝 모델링은 문제 정의 과정에서부터 데이터 수집, 전처리, 모델 학습 및 평가를 거쳐 서비스 적용에 이르기까지에는 여러 분야 전문가들의 많은 시간과 노력이 요구된다. AutoML은 머신러닝을 적용 할 때 마다 이러한 과정을 되풀이하면서 발생하는 비효율적인 작업을 최대한 자동화하여 생산성과 효율을 높이기 위하여 등장하였습니다. 특히, 데이터 전처리 과정에서부.. 더보기