[RAG] RAG 시스템에서 BM25를 사용한 벡터 DB 구현하기
·
AI/ML/RAG
1. BM25 검색의 기본 원리RAG(Retrieval-Augmented Generation) 시스템에서 가장 널리 사용되는 키워드 기반 검색 알고리즘 중 하나가 BM25(Best Matching 25)입니다. BM25는 TF-IDF(Term Frequency-Inverse Document Frequency)를 개선한 알고리즘으로, 문서 길이를 고려하여 더욱 정교한 키워드 매칭을 가능하게 합니다.BM25의 주요 특징TF-IDF를 기반으로 한 향상된 키워드 검색 성능문서 길이에 따른 정규화 지원여기서 각 파라미터의 의미는:IDF(qi): 역문서 빈도f(qi,D): 문서 D에서 단어 qi의 출현 빈도|D|: 문서 D의 길이avgdl: 평균 문서 길이k1: 항 빈도에 대한 가중치 (일반적으로 1.2~2.0)b..
[NLP] Something of Thoughts 프롬프트 테크닉 (CoT, ToT)
·
AI/ML/NLP
0. IntroLLM의 추론 능력(reasoning)을 향상하기 위한 다양한 프롬프트 테크닉이 연구되고 있습니다. 그중 Something of thoughts 시리즈들을 알아보려고 합니다. 이번에 소개해드릴 것은 2가지입니다.Chain of Thought (CoT)Tree of Thoghts (ToT)1. Chain of ThoughtChain of Thoughts (CoT)는 중간에 추론 단계를 둠으로써 LLM이 복잡한 추론을 가능하게 해 줍니다. 예시에서는 few-shot으로 계산 과정을 단계적으로 알려줬습니다. 비교적 간단한 방법이고 LLM이 문제를 해결해 가나는 과정을 알 수 있다는 장점이 있는 것 같습니다. 또한 zero-shot으로 "천천히 한 단계씩 생각해 보자"라고 한 줄 추가함으로써 Co..
[Paper Review] 생성 AI로 만들어졌는지 판단하기 (DetectGPT)
·
AI/ML/NLP
0. Intro 인터넷상에 있는 수많은 글, 뉴스 또는 학생이 제출한 과제 등이 ChatGPT, Bard로부터 생성된 글인지 어떻게 판별할 수 있을까요? 당장 생각나는 방법은 글을 N-그램과 같이 통계적 기법으로 분석하여 인간의 글과 생성 AI의 글 사이의 관계를 찾는 것이고 또는 BERT와 같은 모델을 분류기로 사용하여 한 가지 주제 또는 프롬프트에 대하여 인간의 글과 생성 AI의 글을 분류하는 모델을 만드는 것입니다. 이 방법들은 인간의 글과 생성 AI의 글을 학습데이터로 확보해야 하기에 시간과 비용이 들 수밖에 없습니다. 이 글에서 소개해드릴 DetectGPT는 이런 비용 없이 비교적 작은 모델(T5)을 활용하여 생성 AI로부터 만들어졌는지 판단합니다. 1. Introduction 방법은 다음과 같..
[RecSys] 언어모델을 추천시스템에 활용한 연구
·
AI/ML
최근 나온 생성 모델들을 추천시스템에도 활용할 수 있지 않을까 생각하던 중 A Survey on Large Language Models for Recommendation 이 논문에서 지금까지 나왔던 언어모델들을 추천시스템에 적용한 연구들을 잘 정리해 두어 이를 참고하여 어떻게 적용했는지 정리해보려고 합니다. 1. 추천시스템을 위한 언어모델 추천을 위한 언어모델은 크게 2가지로 분류할 수 있습니다. Discriminative LLM은 BERT와 같은 사전훈련된 언어모델을 파인튜닝하여 사용합니다. 유저-아이템 행동정보를 입력으로 받아 상품을 추천하는 방식이고 관련 연구도 많고 성능도 괜찮게 나오는 편입니다. 하지만 제가 요새 관심을 가지는 것은 Generative LLM쪽입니다. 적절한 프롬프트를 활용해서 ..
[Paper Review] LoRA: Low-Rank Adaptation of Large Language Models
·
AI/ML/NLP
1. Introduction 언어모델(Pretrained-language model)들의 파라미터가 기하급수적으로 늘어나면서 전체 파라미터를 파인튜닝시키는 것이 자원적으로 많은 부담이 되고 있습니다. 이러한 문제점을 보완하기 위해 사전학습 모델의 파라미터는 학습을 시키지 않고(freeze) 모델에 새로운 레이어를 추가하고 그 레이어만 학습하는 방식이 연구되고 있습니다. 대표적으로 LSTM구조의 prompt encoder를 붙인 p-tuning과 이번에 소개할 LoRA(Low-Rank Adaptation)가 있겠습니다. LoRA는 레이어 중간중간에 low-rank matrice들을 삽입함으로써 파라미터를 효율적으로 학습하는 방법을 제안했습니다. 그림과 같이 파란색 부분은 학습시키지 않고 $A(r*k)$ 와..
[Paper Review] Dropout: A Simple Way to Prevent Neural Networks fromOverfitting
·
AI/ML
1. Introduction 여러 개의 비선형 은닉층을 가지는 신경망은 복잡한 관계를 학습할 수 있지만 훈련데이터가 부족한 상황에서는 과적합으로 이어질 수 있습니다. 따라서 과적합을 막기 위해 검증 세트의 성능이 떨어지기 전에 학습을 멈춘다던지, L1 및 L2 정규화 같은 가중치에 페널티를 도입하는 등의 방법이 개발되었죠. 또한 서로 다른 구조의 모델을 조합하는 Model Combination도 성능 향상에 도움이 되지만 연산량이 커진다는 단점이 있습니다. Dropout은 이런 overfitting을 방지하면서, 서로 다른 신경망을 지수적으로 결합(model combination)할 수 있게 해 줍니다. Dropout은 학습 시 신경망의 뉴런을 부분적으로 생략하는 것을 의미합니다. 학습 시 확률 $p$에..
[Paper Review] Don’t Stop Pretraining
·
AI/ML/NLP
보편적으로 NLP분야에서는 대용량의 데이터로 사전 학습된 모델을 가져다가 fine-tuning을 진행을 하는 방식으로 task를 해결합니다. 실제로 160GB 이상의 데이터로 사전학습을 한 RoBERTa는 다양한 task에서 좋은 성능을 보여줍니다. 하지만 이렇게 사전 학습된 모델이 특정 도메인(biomedical, computer science, review)에서도 성능이 잘 나올지는 의문입니다. 따라서 해당 논문에서는 사전학습된 모델이 특정 도메인에 여전히 효과가 좋은지에 대해 다루었습니다. 이 논문의 결론은 간단합니다. 특정 도메인에서 fine-tuning만 하지 말고 MLM(Masked language modeling)도 하면 성능이 잘 나온다입니다. 간단하지만 이것이 작동하는 이유와 실험 과정을..
[Review] OpenAI의 DALL-E2 공개
·
AI/ML/NLP
1. Intro DALL-E의 이름은 윌-E(WALL-E)와 화가 살바도르 달리(Salvador Dali)에서 온 것으로 text to image generation 모델입니다. 자연어를 입력으로 받아 이미지를 생성하는 모델을 말하는 건데, 이번 OpenAI에서 발표한 DALL-E2는 2021년 초에 발표한 DALL-E의 후속 버전으로 당시 아보카도 의자로 많은 관심을 받았었습니다. DALL-E2에서는 해상도가 4배 높아지고 편집 기능도 제공한다고 하는데 어떻게 발전했는지 한 번 알아봤습니다. 2. DALL-E2 입력한 자연어에 대해 DALL-E2가 만들어낸 이미지들입니다. 놀라우리만큼 사실적이고 세상에 없는 이미지를 여러 장 만들어냈습니다. 또한 편지 기능도 주위의 그림자, 반사, 질감을 고려하면서 요..