cubonguilty / jiseon

0 stars 0 forks source link

LLM study #3

Open cubonguilty opened 1 week ago

cubonguilty commented 1 week ago

거대언어모델(Large Language Model, LLM)

대규모 데이터셋으로 학습되었으며 대규모 파라미터를 가진 언어 모델 기존의 PLM들을 대규모로 확장하면 성능이 늘어난다는 것을 확인하며, LLM 경쟁이 심화되었음

*언어 모델에서 파라미터 뜻 : 모델 내부에서 결정되는 변수. 그 값은 데이터로부터 결정 Ex)KoGPT 모델이 60억 개의 파라미터를 가지고 있다는 것은 한국어 데이터를 넣어 어떤 예측값을 만들기 위해 사용하는 가중치, 편향 등이 60억 개

LLM에서 자주 사용하는 용어

단어 임베딩 : 단어들을 고차원 벡터로 표현하여 각 단어 간의 유사성과 관계를 캡처하는 기술. 단어 > 토큰화 > 토큰을 숫자로 처리할 수 있도록 정수에 매칭 image 자연어(문장)의 길이는 샘플마다 다 달라 패딩도 추가

주의 메커니즘(Attention Mechanism) : 각 언어들의 관계성(상관관계)을 찾아냄. 언어의 구조에 대한 이해. 더 가중치를 줌

Transformer : 주의 메커니즘을 기반으로 한 인코더와 디코더 구조의 신경망 모델로, 길이가 다른 시퀀스를 처리하는 데 탁월한 성능

Fine-tuning LLM's : 사전 학습된 대규모 언어 모델을 특정 작업에 적용하기 위해 추가 학습하는 과정

Prompt engineering : 모델에 입력하는 질문이나 명령을 구조화하여 모델의 성능을 향상시키는 과정

Bias : 모델이 학습 데이터의 불균형이나 잘못된 패턴을 포착하여 실제 세계의 현실과 일치하지 않는 결과를 내놓는 경향

해석 가능성 : LLM이 가진 복잡성을 극복하고 AI 시스템의 결과와 결정을 이해하고 설명할 수 있는 능력

LLM 작동 방식 및 원리

cubonguilty commented 1 week ago

seq2seq : 한 시계열 데이터를 다른 시계열 데이터로 변환 RNN기반 모델 두 개를 연결해서 구현. 이것을 encoder-decoder 모델이라고 함.

RAG 작동 방식

image

외부 데이터 생성 API, 데이터베이스, 문서 등의 다양한 데이터 소스에서 원하는 데이터를 가져온다. 데이터는 파일, 데이터베이스 레코드, 텍스트 등 여러 형식이 가능하다. LLM이 이해할 수 있도록 복잡한 데이터를 임베딩 언어 모델을 사용하여 벡터 형태로 변환한다. 변환된 벡터 데이터를 벡터 데이터베이스에 저장하여 LLM이 이해할 수 있는 지식 라이브러리를 생성한다.

관련 정보 검색 사용자가 프롬프트(질문 또는 쿼리)를 입력하면, 질의 인코더(Query Encoder)가 사용자 프롬프트를 벡터 형태로 인코딩한다. 인코딩된 프롬프트와 관련된 정보를 벡터 데이터베이스에서 검색하여 가져온다. 관련 정보를 검색하기 위해 다음과 같은 방법을 사용할 수 있다. 검색 키워드가 많이 포함된 문서를 찾는 키워드 검색, 의미를 분석하여 벡터 간의 유사도를 계산하는 시맨틱 검색, 이 두 방법을 결합한 하이브리드 검색 방법이다.

LLM 프롬프트 확장 검색된 데이터를 컨텍스트(Context)에 추가하여 사용자 프롬프트를 보강한다. 이렇게 확장된 프롬프트를 LLM에 전달하면, LLM이 검색된 데이터를 활용하여 답변을 생성한다.

외부 데이터 업데이트 최신 데이터를 유지하기 위해 문서를 비동기적으로 업데이트한다.

cubonguilty commented 1 week ago

라그 + 프로포트 엔지니어링 필수 데이터베이스에서 검색 어떻게 할 것인지(유클리드, 코사인, 두개 합친거, 자카드 유사도)

분석 계획서 작성

  1. 어떤 RAG 시스템 사용할지 외부db구축 >json>db(인덱싱)>검색한 후에 증강
  2. 검색 방법은 어떻게 할지
  3. 추가 데이터 어떻게 사용할지(AI 허브, 크롤링)
  4. LLM기반 추천시스템 만드는 논문 두개씩 (정리)
  5. 기타평가 -> 사용자 만족도 높이는 논문 하나씩 (정리)
  6. 데이터 전처리 어떻게 할지
cubonguilty commented 1 week ago

음식점. 가격대.건수.현지인 비율.나이대별 선호도 각 음식점별 관심도(요일.월)

cubonguilty commented 6 days ago
  1. 어떤 임베딩 DB를 사용할것인지(라이브러리 아님).
  2. 검색 방법을 어떻게 할것이냐.
  3. 우리가 가진 데이터를 그래서 어떻게 변환 할것인지-> 어떻게 임베딩하고 등등

2 번은 RAG 시스템을 어떻게 작동할껀지에 대한 방법론 부분이고 3번은 우리가 가진 CSV데이터를 그래서 어떻게 변환할것인가에 대한거

TF-IDF+코사인 유사도 여러 문서로 이루어진 문서 집합이 있을 때 각 단어가 특정 문서 의 내용을 얼마나 나타내는지를 수치로 계산하는 방법 코사인 유사도를 구할 때, 임베딩 방법을 TF-IDF로

llm 구현 단계(정형 데이터라고 가정하고)

  1. 데이터 수집 - rag에 사용할 데이터베이스 수집+토큰화(필요하면)
  2. 임베딩 생성 - TF-IDF로 단어가 문서 내에서 얼마나 중요한지 수치화된 벡터 생성. 백터DB에 저장하기 위해 변환, Faiss, pinecon과 같은 벡터DB사용 faiss인 경우 벡터를 인덱싱하기 ㅜ이해 인덱스 구조(ivf, hnsw) 사용
  3. 유사도 계산
  4. 모델 아키텍처 서계
  5. 추천 생성 및 평가
  6. 실시간 서비스 통

문제점 단어의 빈도 기반으로 해서 문맥적의미를 반영 못 할 수 있음. Bert와 같은 문맥 기반 임베딩 사용하는게 나을수도 있다.