도비LOG(跳飛錄)

도비의 AI 엔지니어 도전기

분류 전체보기 84

[Paper Review] LLM-Rec: Personalized Recommendation via Prompting Large Language Models (Lyu et al., 2024)

- LLM-Rec는 LLM을 활용하여 아이템 설명을 풍부하게 하고, 이를 통해 개인화 추천 시스템의 성능을 크게 향상시킨다. LLM-Rec를 적용한 단순한 MLP 모델은 복잡한 모델보다 우수한 성능을 보인다.- paraphrasing, recommendation, engagement, 전략 결합의 네 가지 프롬프트 전략을 도입하여, 아이템의 특성과 사용자의 선호도를 효과적으로 반영한다.- 영화, 레시피 등 다양한 도메인에서 적용 가능하다. Abstractitem description의 불완전함을 해결하기 위해 네 가지의 프롬프트 전략을 통해 text를 풍부하게 만드는 방법을 제안한다.LLM으로 증강된 텍스트를 사용하면 단순한 MLP 모델도 기존의 복잡한 콘텐츠 기반 추천 시스템보다 우수한 성능을 달성할..

NLP 2025.03.09

[Paper Review] RAGAS: Automated Evaluation of Retrieval Augmented Generation

세 줄 요약RAG 시스템을 평가하기 위한 RAGAS라는 시스템을 소개한다.Faithfulness, Answer relevance, Context relevance라는 metric을 소개한다.RAGAS 평가 방식은 GPT score, GPT Ranking 방법론보다 사람의 직관에 좀 더 잘 맞는다. 1. IntroductionRAG는 LLM의 한계(학습 이후의 사건을 모른다는 점, 학습 코퍼스에 드물게 출현한 지식을 기억하지 못하는 것)를 해소해왔다. RAG 시스템은 perplexity를 측정하는 것과 같은 방법으로 language modeling task 자체로 평가되어왔다.그러나 이러한 평가 방식은 하위 task의 성능을 항상 정확히 예측하는 것은 아니며, 파라미터가 비공개된 모델(ChatGPT 등)에..

NLP 2025.01.15

[Paper Review] When Not to Trust Language Models: Investigating Effectiveness of Parametric and Non-Parametric Memories 리뷰 (Adaptive RAG)

1. IntroductionLLM은 다양한 작업에서 뛰어난 성능을 보이지만, 여전히 세상 지식을 요구하는 작업에서는 어려움을 겪는다. 이는 세상 지식의 방대한 양을 파라미터에 인코딩하는 데 어려움이 있음을 시사한다.본 논문에서는 성능을 향상시키고 추론 비용을 줄이기 위해 필요한 경우에만 non-parametric memory를 검색하는 새로운 Retrieval augmentation 기법을 제안한다.본 논문은 사실 지식(Factual knowledge)을 기억하는 LLM의 강점과 한계를 이해하기 위해 다음과 같은 Research Question을 풀고자 한다.RQ1. LLM이 얼마나 많은 사실 지식을 기억하고 있으며, 기억에 영향을 미치는 요인은 무엇인가?RQ2. non-parametric 메모리가 LL..

NLP 2024.12.11

[Paper Review] Retreival-Augmented Generation for Knowledge-Intensive NLP Tasks (RAG) 리뷰

1. Introductionpre-trained 언어 모델(GPT2, BART)은 방대한 데이터로부터 상당한 양의 지식을 파라미터화하여 암묵적으로 저장한다. 이를 통해 언어 모델은 외부에 존재하는 메모리에 접근하지 않고도 task를 수행할 수 있다.그러나, 학습한 모델의 메모리를 확장하거나 수정할 수 없기 때문에, hallucination을 생성할 수도 있다.non-paramateric 메모리를 통합시켜, 지식을 직접적으로 수정하거나 확장할 수 있다. 검색을 기반으로 한 메모리의 통합은 해석 가능성도 갖는다. RAG에서 parametric memory란 pre-trained seq2seq transformer모델을 말하며, non-parametric memory란 pre-trained retriever로..

NLP 2024.12.03

[Paper Review] REALM: Retrieval-Augmented Language Model Pre-Training 리뷰

1. IntroductionREALM (Retrieval-Augmented Language Model pre-training): latent knowledge retriever를 이용한 pre-training, fine-tuning최근 언어 모델(BERT, RoBERTa, T5 등) pre-training은 방대한 코퍼스를 학습하여 놀라운 수준의 세상 지식을 암묵적으로 습득한다. 그러나 이러한 지식은 신경망 파라미터에 저장되므로 해석하기 어렵고, 더 많은 지식을 학습하기 위해서는 신경망의 크기를 확장해야 하므로 비효율적이다.REALM은 모델이 활용하는 지식에 대한 해석 가능성을 높이기 위해 학습된 knowledge retriever를 활용한다. 즉, 파라미터에 암묵적으로 지식을 저장하는 대신, 모델이 어..

NLP 2024.12.02

[전문가를 위한 파이썬] 13장 연산자 오버로딩: 제대로 하기

13.1. 연산자 오버로딩 기본 지식- 파이썬은 다음과 같은 제한을 두어 융통성, 사용성, 안전성을 적절히 유지한다.1. 내장 자료형에 대한 연산자는 오버로딩할 수 없다.2. 새로운 연산자를 생성할 수 없으며, 기존 연산자를 오버로딩만 할 수 있다.3. is, and, or, not 연산자는 오버로딩할 수 없다(그러나 &, |, ~ 비트 연산자는 가능하다).  13.2. 단항 연산자- (__neg__): 단항 산술 부정. x가 -2이면 -x는 2이다.+ (__pos__): 단항 산술 덧셈. 일반적으로 x와 +x는 동일하지만, 그렇지 않은 경우도 있다.~ (__invert__): 정수형의 비트 반전. ~x는 -(x+1)로 정의된다(~x == -(x+1)). x가 2면, ~x는 -3이다. - 단항 연산자는 ..

Python 2024.09.08

[전문가를 위한 파이썬] 12장 내장 자료형 상속과 다중 상속

12.1. 내장 자료형의 상속은 까다롭다- 파이썬 2.2 이후 버전부터 내장 자료형을 상속할 수 있게 되었다. 그러나 C언어로 작성된 내장 클래스의 코드는 사용자가 오버라이드한 코드를 호출하지 않으므로 주의가 필요하다. class DoppelDict(dict): def __setitem__(self, key, value): super().__setitem__(key, [value] * 2) dd = DoppelDict(one=1) # dict클래스의 __init__() 메서드는 __setitem__()이 오버라이드되었다는 사실을 무시하므로, 'one'의 값을 중복하지 않고 그대로 저장한다.print(dd)# {'one': 1}dd["two"] = 2 # [] 연산자는 오버라이드한 __setit..

Python 2024.08.31

[전문가를 위한 파이썬] 11장 인터페이스: 프로토콜에서 ABC까지

11.1. 파이썬 문화에서의 인터페이스와 프로토콜- 인터페이스: 시스템에서 어떤 역할을 할 수 있게 해주는 객체의 공개 메서드의 일부- 프로토콜: 어떤 역할을 완수하기 위한 메서드 집합으로서의 인터페이스  11.2. 파이썬은 시퀀스를 찾아낸다- 파이썬은 __gititem__() 메서드만 구현하더라도 __gititem__() 메서드를 호출해서 객체를 반복하고 in 연산자를 사용할 수 있게 해준다.  11.3. 런타임에 프로토콜을 구현하는 멍키 패칭import collectionsfrom random import shuffleCard = collections.namedtuple("Card", ["rank", "suit"])class FrenchDeck: ranks = [str(n) for n in rang..

Python 2024.08.31

[전문가를 위한 파이썬] 10장 시퀀스 해킹, 해시, 슬라이스

10.1. Vector: 사용자 정의 시퀀스형- 상속이 아니라 구성을 이용해서 벡터를 구현하고자 함.- 요소들을 실수형 배열에 저장하고, 벡터가 불변 균일 시퀀스처럼 작동하게 만들기 위한 메서드들을 구현할 것임. 10.2. Vector 버전 #1: Vector2d 호환첫 번째 버전from array import arrayimport reprlibimport mathclass Vector: typecode = 'd' def __init__(self, components): self._combpnents = array(self.typecode, components) # '보호된' 객체 속성인 self._components는 벡터 요소를 배열로 저장한다. def __iter__(self): r..

Python 2024.07.21

[프로그래머스 두 원 사이의 정수 쌍] 파이썬 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 요약반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return※ 각 원 위의 점도 포함하여 센다. 풀이1. 1사분면만 고려하고 계산한 뒤 나중에 4를 곱한다.2. x좌표를 0부터 r2까지 순회하면서,    2.1. 각 x에 대해 r1     2.2. y의 상한과 y의 하한을 구한다.3. x축과 y축 상의 중복 계..

알고리즘 2024.06.23