RAG - 검색해서 쿼리로 그 문맥 넣기 == 결국 검색이랑 큰 차이 없다.
IR을 기본적으로 알긴 해야 된다.
BM -25 기본 검색 모델
reranking - 사용자가 진짜로 원하는 답변을 뽑아주기
색인이 잘 되어야 검색도 !
Dense모델은 임베딩을 잘 만들어야 된다. - 상위 랭킹이 잘 안보인다 == sparse 모델과 같이 써서 진행
문서 단위로 검색하면 우리가 보여주는 것이 진짜 검색이 잘 된 것인가, 얼마 단위로 잘라야 잘 보여주는 것인가
RAG 입력 - PDF로 입력
PDF는 정형적이지(정리되지) 않은 형태다 - 본문 주변에 계속 다른 말들이 적혀있다 == 합쳐진다. -> 정보에 노이즈 첨가 == 전처리가 필수
PDF 전처리기가 필요하다! - 입력이 확실하게 나눠서 들어가도록
쿼리를 재 조합하거나 확장해준다. 씨 쏠로스?
thesaurus - 사전 : 단어에 대한 관련어를 설명, 상위 하위 단어에 대한 정보를 담고 있다. -> 쿼리에 대한 유사어를 전부 넣어준다.
ex) 사람 -> 인간, 인류
검색 -> 가장 유사한 문서를 통해 키워드, 개념을 쿼리에 다시 집어넣어 검색
==> 발전된 RAG
- Not all Layers of LLMs are Necessary during Inference
추론 때 모든 레이어가 필요 없다!!
LLM pruning - 추론 때 레이어, 파라미터를 건들여서 위험하게 연산 과정을 줄이는 것
파라미터를 변경하지 말고 해보자! -> 모든 레이어를 쓰지 말자
쉬운 테스크에서는 좀 더 빨리 높은 성능에 도달 가능함 MMLU는 어렵다
분류기 - 통계적 방법
갭과 탑 프로브 - 정답이면 1, 아니면 0으로 학습
깊은 레이어가 오히려 성능에 방해가 된다..
단일 토큰만 생성한다.... -> 생성 쪽에서 쓸 수 있을까?
여기서 Gap의 임계치는 어떻게 생성 되었을까>?
레이어 스킵 논문? - 뒷 부분이 스킵 된다. == 중간에서 끝내고 마무리 레이어로 간다.
인간의 사고 과정에서 영감? - 이게 진짜 맞는지, 사람의 사고 과정에서 어떻게 되는지
전문가와 신입생의 활동영역이 다르고, 그들만의 공통점이 있다.
-> 사람은 자동적으로 활동 영역을 줄이지만, 여기는 2가지 파라미터를 통해 조절한다.
사람을 그대로 신경망 모델에 적용할 필요는 없다. 참고 정도, 아이디어 정도로 생각해보자
- PLUG: Leveraging Pivot Language in Cross-Lingual Instruction Tuning
대부분은 영어로 학습이 되어있다. -> 다른 언어를 사용하면 성능이 향상되지 않는다.
피봇 렝귀지 - 중계 언어? 가장 많은 양으로 학습된 언어! DATA가 풍부한 언어
파인튜닝할 때 피봇 단어로 번역본 생성, 피봇 단어 답변 생성, 특정 언어로 다시 변환이다
1. 영어로만 하기
2. 언어 섞어서 하기
3. 입력과 출력 언어 섞어서 사용하기
4. 번역 테스크 추가
5. PLUG - 피폿으로 먼저 진행하고, 타겟으로 바꾸기 == 단순한 concat으로 진행했지만 성능이 엄청 높았다.
한국어에서 성능이 좋다
-> 한국어 데이터가 적은가?
학습 잘 된 피봇 렝귀지를 통해 그 덕을 봐 타겟 렝귀지의 성능을 늘려보자
그럼 인스트럭션과 피봇으로 번역된 인스트럭션을 같이 넣어서 피봇 리스폰스와 타겟 리스폰스를 뱉도록 만들어주면....?
프리트레이닝 때 진행해도 괜찮을까?
일단 코스트는 엄청나게 들어갈 듯
- Self-Alignment with Instruction Backtranslation
자체적 데이터 증강
back translation : 번역 학습을 위해선 병렬 데이터가 필요하다! -> 위키에 단일 데이터가 많다!
기존에 가진 번역기를 통해 데이터를 증강 시킨다 -> 성능이 좋아졌다.
사람 데이터 없이 증강해보자!
self-augmentation - 데이터 셋을 만들기 == 만들어진 데이터의 성능 모른다.
self-curate - 데이터를 평가하여 좋은 데이터만 거르기
응답을 주고 인풋으로 받는 학습 과정 -> 데이터 증강이 가능하다 -> curation을 진행하여 좋은 데이터 선별
라운드 2번을 돌린 이유는 ? WHY?
y주고 x를 여러 개 뽑아서 평가해서 좋은 것만 넣기!
데이터의 품질이 중요하다! 그냥 양만 많아봤자 큰 성능 X
증류 데이터 - GPT, 거대 모델을 통해 데이터 생성 == 증류된 데이터가 성능이 좋다.
엄청 쉬운 방법이었다. 연구진행할 때 처음 부터 잘 고민해서 생각해보기
- Self-Rewarding Language Models
SFT -> DPO 증강
인간의 선호도로 보상 모델을 학습한다.
보상 모델을 지속적으로 업데이트하는 학습 모델!
프롬프트 생성 -> 응답 생성 -> 평가
프롬포트에 점수를 어떻게 주는지 들어간다.
라마2 챗 모델로 프롬프트 생성
AIFT 데이터로
최고 winner, 최저 loser , winner == loser인 경우 버린다.
편향!!!!!!!!!!!!11
데이터 필터링 기법에도 평향이 있다. - 아시아권 데이터가 필터링에서 많이 걸러진다.
- Aboutme: Using Self-Descriptions in Webpages to Document the Effects of English Pretraining Data Filters
조직, 위치, 지역, 흥미 등 메타 정보에 따라 어떤 특성인 데이터가 걸러지나 확인한다.
영어 데이터만 !
개인과 조직 - 특정 단어 추출
흥미 - kmeans를 통해 클러스터 생성 하여 tagging
직업 - 분류기를 통해 메타 데이터 뽑기
지역 - 글을 통해 지역 정보 뽑는 모델 사용
다양한 필터링 방법 적용
이러한 필터링을 통해 선호하는 데이터가 존재하는 것을 확인할 수 있다.
- Language Model Tokenizers Intriduce Unfairness Between Languages
한글은 토크나이저가 너무 많이 먹는다 - 여기선 5배
또 다른언어는 10 ~ 25배까지 차이나기도 한다. -> 이해와 생성에서 불이익이 너무 크다.
동일한 의미를 가진 두 문장에서 언어에 따른 토큰 길이의 비율을 평가 기준으로 가져간다.
한국어로 학습된 LLM조차 한국어에 패널티가 있다.
편향은 어디에나 존재한다.
'인공지능 > 자연어 처리' 카테고리의 다른 글
자연어 처리 복습 4 - seq2seq, ELMo, Transformer, GPT, BERT (0) | 2024.09.03 |
---|---|
자연어 처리 복습 3 - 토큰화, 임베딩, 언어 모델 (2) | 2024.09.03 |
자연어 처리 복습 2 - NLP Task, token, 데이터 전처리 (0) | 2024.08.27 |
자연어 처리 복습 1 - transformer, token, attention (0) | 2024.08.26 |
학습한 모델 웹사이트 챗봇으로 시각화 하기! - 모델 서빙하기 2 (0) | 2024.08.14 |