본문 바로가기

자연어처리(NLP)12

[INTRO] 프롬프트 러닝(Prompt Learning) 이란? "Prompt Learning" prompt learning이란 자연어처리 분야에서 최근 새롭게 등장한 분야로, ChatGPT의 등장과 함께 새로운 트렌드로 떠오르고 있습니다. 4월 2일자 기사에 따르면, 글로벌 교육 플랫폼 '유데미'에선 프롬프트 강의만 7667개에 달하고, 한글자막을 제공하는 콘텐츠에는 1000명씩 수강자가 이어지고 있다고 합니다. 그 외에도 프롬프트 전문 기업과 프롬프트 엔지니어라는 직종까지 생겨나고 있는데요. ✔ 'prompt'의 의미 프롬프트(prompt)라는 것은 언어모델에 전달하는 질문이나 요청을 사용자가 응답을 유도(prompt)한다는 의미에서 프롬프트(prompt)라고 합니다. 자연어 질문, 코드 스니펫, 명령어 등을 프롬프트로 사용할 수 있는데, 언어모델이 정확하게 태스.. 2023. 4. 24.
[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.
[NLP][논문리뷰] ALBERT: A lite BERT for self-supervised learning of language representations 이번 글에서는 구글과 도요타에서 작년 2020년 ICLR에 발표한 논문인 'ALBERT: A lite BERT for self-supervised learning of language representations'에 대해서 리뷰하도록 하겠습니다. ALBERT: A Lite BERT for Self-supervised Learning of Language Representations Increasing model size when pretraining natural language representations often results in improved performance on downstream tasks. However, at some point further model increases becom.. 2021. 5. 29.
[NLP] BERT(버트) 이번 글에서는 BERT의 원리에 대해서 깊게 살펴보고자 합니다. 이번 글을 작성하기위해서 참고한 글 리스트는 아래와 같습니다. 1) KoreaUniv DSBA 08-5: BERT https://www.youtube.com/watch?v=IwtexRHoWG0 2) http://jalammar.github.io/illustrated-bert/ 1. BERT(Bidirectional Encoder Representations from Transformers)란? 1.1 등장 배경 - 트랜스포머의 등장으로 인한 기계번역 분야에서의 성과로 인해서, 트랜스포머는 다른 분야에서도 LSTM을 대체할 수 있는 후보로 대두되었습니다. - 그러나 트랜스포머의 인코더-디코더 구조는 기계번역 task에는 아주 완벽하지만, 만약.. 2021. 5. 26.