인공지능/자연어 처리

세미나 정리 8-29

이게될까 2024. 8. 29. 17:52
728x90
728x90

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조차 한국어에 패널티가 있다.

편향은 어디에나 존재한다.

728x90