본문 바로가기

자연어처리(NLP)17

[LLM][기초] LLM의 Pre-Training Objective (Full, Prefix, Masked, Unified) LLM Pre-Training ObjectiveLLM의 Pre-training objective는 크게 아래 4가지 유형으로 나눌 수 있습니다. 1. Full Language Modeling이미 주어진 token을 가지고 미래의 token들을 예측하도록 하는 auto-regressive langue model objective입니다. 2. Prefix Language Modelingprefix는 random하게 선택되고, 남아있는 target token 만으로 loss를 계산합니다. 3. Masked Language Modeling토큰 또는 연속 토큰들이 random하게 마스킹 처리 되었을 때, 모델은 과거와 미래의 컨텍스트를 가지고 마스킹된 토큰을 예측하도록 학습됩니다. 4. Unified Langua.. 2024. 9. 11.
[LLM][기초] LLM의 Layer Normalization (PreNorm, DeepNorm) Layer Normalization이란?Layer Normalization은 트랜스포머에서 각 layer의 입력값을 정규화함으로써 학습 중인 파라미터가 빠르고 안정적으로 수렴하도록 해주는 방법입니다.  LLM에서는 기본적인 Layer Norm과 RMSNorm, 외에 pre-layer normalization을 멀티 헤드 어텐션 전에 적용합니다. 그 외에 LLM에서 사용하는 normalization은 PreNorm과 DeepNorm이 있습니다. 1) PreNorm : LLM에서 학습의 안정성을 높이는 방법으로 알려짐2) DeepNorm : pre-norm에서 gradient가 증가하는 이슈를 수정한 방법론  참고https://arxiv.org/pdf/2307.06435 2024. 9. 11.
[LLM][기초] LLM의 Attention (self, cross, sparse flash) 1. Attention의 역할?Attention은 중요도에 따라서 입력된 토큰에 가중치를 부여함으로써, 모델이 연관이 있는 토큰을 더 강조할 수 있도록 합니다. 트랜스포머의 Attention은 입력 시퀀스의 query, key, value를 계산한 후, query와 key를 곱해서 attention score를 얻습니다. attention score는 value를 에 가중치를 부여하는데 사용됩니다.  2. Attention 유형1) Self Attention : encoder 혹은 decoder의 같은 block으로부터 query, key, value를 사용하여 attention을 계산2) Cross Attention : encoder-decoder 아키텍처에서 사용되는 방법으로, encoder가 out.. 2024. 9. 11.
[LLM][기초] LLM의 Positional Encoding (absolute, relative, learned) 1. Positional Encoding이 필요한 이유?기본적으로 Transformer 모델은(1) 입력 시퀀스를 병렬적이면서 독립적으로 처리하고(2) 어텐션 모듈은 위치 정보를 잡아낼 수 없기 때문에단어의 순서에 따라서 달라지는 의미를 구분할 수 없습니다.즉, 아래 두 입력 시퀀스의 차이를 구분할 수 없습니다."The dog chased the pig""The pig chased the dog"따라서, 위치 정보를 추가해주는 Positional Encoding 작업이 필요합니다.즉, 아래 그림에서dog에 해당하는 단어 임베딩에2번째 위치를 의미하는 위치 임베딩을 넣어주는 작업을 진행합니다.이때, 위치 정보를 어떤 식으로 만들어내느냐에 따라 아래 2가지 유형으로 구분됩니다.2. Positional Enc.. 2024. 9. 11.
[INTRO] 프롬프트 러닝(Prompt Learning) 이란? "Prompt Learning" prompt learning이란 자연어처리 분야에서 최근 새롭게 등장한 분야로, ChatGPT의 등장과 함께 새로운 트렌드로 떠오르고 있습니다. 4월 2일자 기사에 따르면, 글로벌 교육 플랫폼 '유데미'에선 프롬프트 강의만 7667개에 달하고, 한글자막을 제공하는 콘텐츠에는 1000명씩 수강자가 이어지고 있다고 합니다. 그 외에도 프롬프트 전문 기업과 프롬프트 엔지니어라는 직종까지 생겨나고 있는데요. ✔ 'prompt'의 의미 프롬프트(prompt)라는 것은 언어모델에 전달하는 질문이나 요청을 사용자가 응답을 유도(prompt)한다는 의미에서 프롬프트(prompt)라고 합니다. 자연어 질문, 코드 스니펫, 명령어 등을 프롬프트로 사용할 수 있는데, 언어모델이 정확하게 태스.. 2023. 4. 24.
[논문리뷰] Fine-grained Post-training for Improving Retrieval-based Dialogue Systems. NAACL 2021 Fine-grained Post-training for Improving Retrieval-based Dialogue Systems[저자] Janghoon Han(Department of Computer Science and Engineering- Sogang University, LG AI Research), Taesuk Hong, Byoungjae Kim, Youngjoong Ko, and Jungyun Seo[게재] NAACL, 2021 June [pdf][인용수] 26회인용[요약] 대화 응답 선택 (Conversational Response Selection) 태스크의 대표 3가지 데이터셋(Ubuntu, Duoban, E-commerce)에서 아래 2가지를 적용한 'fine-grained post.. 2023. 1. 18.
[Faiss][Error] ERROR:in method 'IndexFlatCodes_add', argument 3 of type 'float const *' faiss index에 document embedding을 add를 하는 과정에서 아래와 같은 에러 발생 ERROR:in method 'IndexFlatCodes\_add', argument 3 of type 'float const \*' 구글링을 하니, faiss index 에 add 하는 embedding값은 float 64가 아니라 float32여야한다고 한다. 아래와 같이 변경하여 에러 해결 확인 embeddings = embeddings.astype(np.float32) 2023. 1. 11.
[NLP][RS] Response Selection 이란? (Retrieval-based dialogue system) Response Selection 이란? '대화' 라는 것을 무엇으로 정의할 것인가? 라고 했을 때 그 답변에 따라 여러가지 패러다임이 존재하지만, response selection는 현재 발화(utterance)에 대한 다음 발화(response)를 선택한다는 점에 초점을 두고 모델링을 한다고 할 수 있습니다. 논문에 나와있는 설명을 더하자면, "검색 기반 대화 시스템(Retrieval-based dialogue system)" 에서는 지난 대화 기록(history)이 주어졌을 때, 발화자의 발화(utterance)를 입력하여 가장 적당한 답변을 선택하는 대화 작업을 수행합니다. 이것이 "애드-혹 검색(ad-hoc retrieval)" 태스크로 분류된다면, "각각의 발화를 query로 취급하여 이 qu.. 2022. 12. 28.
[Faiss][Erorr] name 'GpuResourcesVector' is not defined name 'GpuResourcesVector' is not defined 특정 서버에서 이전에는 발생하지 않던 에러가 갑자리 발생 사용하는 2개의 가상환경 모두 동시에 발생 에러 로그가 찍힌 시점은, 위와 같이 faiss index를 gpu로 올릴 때 faiss_index = faiss.index_cpu_to_all_gpus(faiss_index) 그리고 faiss.get_num_gpus() 를 찍어보면 0이 나온다. 서버의 GPU의 문제일것이라 생각하여 상태를 체크했지만, 아무 문제 없음 - cuda.is\_available() : True - self.device : cuda:0 이것저것 시도해도 안되서 faiss 라이브러리를 재설치하는데 conda faiss 라이브러리 관련 경로가 오염되었다는 경고.. 2022. 12. 12.
[논문리뷰] Pre-training Methods Designed for IR 이 글은 "사전학습 언어모델을 이용한 정보 검색" 분야의 최신 이슈 및 연구 동향을 정리한 Suvey Paper인 "Pre-training Methods in Information Retrieval"의 내용 중 Section 6(Pre-training Methods Designed for IR) 을 정리한 글입니다. 제목 Pre-training Methods in Information Retrieval 저자 Yixing Fan, Xiaohui Xie, Yinqiong Cai, Jia Chen, Xinyu Ma, Xiangsheng Li, Ruqing Zhang and Jiafeng Guo 게재 일자 18 Aug 2022 인용 수 10회 인용 (2022.10.26 기준) 원본 https://arxiv.or.. 2022. 10. 26.
[Faiss] index.search() return negative value, KeyError: -1 faiss 라이브러리를 정상적으로 사용하는데, cpu_index.search(embedding, k) 결과 index값에 음수가 발생했다. 이후에 해당 document를 불러오는 과정에서 KeyErorr :-1 index값으로 음수를 반환하는 이유를 찾다가 embedding 값이 k보다 작음을 확인하였다. 즉 검색 가능한 문서는 k 건인데, 원하는 검색건수가 >k여서 일단 index를 -1로 반환한것 POC mode로 작게만들어서 test 하던 embedding을 원래 embedding으로 바꾼 뒤 정상적으로 작동함 확인하였다. 2022. 9. 2.
[Faiss] cpu_index.add() ValueError: too many values to unpack [Error] Traceback (most recent call last): File "Handler.py", line 39, in _service.indexing(model_path) File "Handler.py", line 22, in indexing self.cpu_index.add(emb) File "/home/lib/python3.6/site-packages/faiss/__init__.py", line 103, in replacement_add n, d = x.shape ValueError: too many values to unpack (expected 2) 이 Error log는 index.add의 input의 shape이 2차원이어야 하는데 3차원 이상이어서 발생한다! 실제로 찍어보니 -.. 2022. 8. 19.
[NLP][논문리뷰] Transformer-XL: Attentive Language ModelsBeyond a Fixed-Length Context https://arxiv.org/pdf/1901.02860.pdf 오늘 소개할 Transformer XL은 ACL 2019에 발표된 논문으로, 기존의 Transformer 모델이 가지고 있는 ‘고정된 길이의 문맥(fixed-length context)'이라는 한계점을 개선하되 시간적인 일관성(temporal coherence)을 파괴하지 않는 선에서 새로운 아키텍처를 제시한 논문입니다. 이 논문의 저자는 유명한 언어모델인 XLNET과 정확히 동일한 저자들이 작성하였는데요, XLNET은 당시 2019년 20개 NLP task에서 bert를 넘어섰고, 18개 task에서 SOTA를 달성했습니다. XLNET의 프리퀄로 알려진 transformer-XL을 살펴보겠습니다. 1. 등장 배경 1) 언어모델에서의 오래.. 2021. 6. 9.
[NLP][논문리뷰] XLNet: Generalized Autoregressive Pretrainingfor Language Understanding https://arxiv.org/pdf/1906.08237.pdf 최근 양방향 컨텍스트에 대한 모델링이 가능해짐과 함께, BERT와 같은 Denoising autoencoding 기반의 사전학습 방식은 Auto-regressive 언어 모델링 기반의 사전학습 방식보다 더 나은 성능을 달성하였습니다. 그러나 BERT의 경우 마스크로 입력값을 손상시켜 학습해야만 하는데, 이는 마스크 된 토큰들 간의 dependency를 반영하지 못하며, 또한 pretrain에 존재하는 [MASK] 심볼이 실제 데이터로 finetune할때는 존재하지 않는다는 문제도 존재합니다. 저자는 이러한 AR과 AE의 장단점을 고려한 Auto-regressive 사전훈련 방법인 XLNet을 제안하였습니다. (1) factorization.. 2021. 6. 9.
[NLP][기초개념] 사전 훈련(Pre-training) 언어 모델 아래 사이트의 글들을 참고하여 이해한 개념을 정리하였으며, wikidocs의 내용을 주로 참고하고, 언어모델과 관련된 개념들은 wikidocs의 글을 요약 정리한점을 미리 말씀드립니다. https://wikidocs.net/108730 https://www.analyticsvidhya.com/blog/2017/06/transfer-learning-the-art-of-fine-tuning-a-pre-trained-model/ http://jalammar.github.io/illustrated-bert/ 1. 사전훈련이란? - NLP 분야에서 많이 등장하는, '사전 훈련(Pre-trianing)' 개념에 대해서 이해하기 쉽게 설명해보고자 합니다. - 사전 훈련이라는 개념은 NLP분야에만 한정된 것이 아니라 .. 2021. 5. 29.