반응형

분류 전체보기 502

[논문 요약] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

NLP RAG Paper Review 이번 글에서는 Open Domain Question Answering(ODQA) 분야에 Generative Reader를 도입하여 성능 향상의 큰 획을 그은 RAG 논문에 대한 요약을 진행해보도록 하겠습니다. 논문의 제목은 "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"이며, NeurIPS 2020에 등재된 paper입니다. 실험 배경 Extractive Reader vs Generative Reader 이전까지의 Retrieval-Reader 기반 ODQA 프레임워크에서 Reader의 구조로는 문단 내에서 답변의 시작과 끝 위치를 맞추는 Extractive Reader 구조를 택해왔었습니다. 여..

[Pytorch] 파이썬 파이토치 데이터 병렬 처리 적용 예제 : nn.DataParallel

Python torch data parallelism 사용법 파이토치에서 데이터 병렬 처리를 적용하는 방법에 대한 예제를 살펴보도록 하겠습니다. 해당 글은 아래 링크의 파이토치 공식 사이트의 글을 기반으로 작성되었으며, 좀 더 자세한 설명이 필요하시다면 해당 글을 참고해주세요. 선택 사항: 데이터 병렬 처리 (Data Parallelism) 글쓴이: Sung Kim and Jenny Kang 번역: ‘정아진 ’ 이 튜토리얼에서는 DataParallel(데이터 병렬) 을 사용하여 여러 GPU를 사용하는 법을 배우겠습니다. PyTorch를 통해 GPU를 사용하는 tutorials.pytorch.kr 상황 가정 우선, 아래와 같이 파라미터 수가 많은 네트워..

Python/Pytorch 2022.07.14

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 해결법

if문 넘파이 배열 비교 연산자 ValueError 디버깅 비교문에서 numpy array 등 자료형에 대한 ==, != 연산 적용 시 등장할 수 있는 "ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()" 오류에 대하여 원인과 해결 방안을 다루어보도록 하겠습니다. (참고 : 판다스 시리즈 등 자료형에서도 비슷한 종류의 오류 발생이 가능합니다.) 에러 원인 아래는 두 넘파이 배열이 같은지를 if문 내에서 비교하려는 예시입니다. import numpy as np a = np.array([1, 2, 3, 4]) b = np.array([1, 2, 3, 4]) if a == b..

Python/Debugging 2022.07.14

파이썬 자료형별 '같다'의 기준 정리(비교연산자 == 기준), 클래스에서 == 및 != 구현 방법(__eq__, __ne__)

Python ==, != 자료형별 기준 및 클래스 내 구현 예제 파이썬에서 숫자형, 문자열, 리스트 및 딕셔너리 등 여러 자료형의 비교 연산자에서 같음이 성립하는 기준을 정리해보고, 직접 구현된 클래스 객체 간의 비교 연산자 결과를 구현해보는 예제를 다루어보도록 하겠습니다. 자료형별 '같다'의 기준(== 결과 True) 예제 1. 정수형 a = 1 b = 1 c = 2 print(a == b) # True print(a == c) # False 정수형의 경우 같은 숫자라면 True, 다른 숫자라면 False가 반환됩니다. 2. 실수형 a = 0.1 b = 0.10000000000000 c = 0.10000000000001 print(a == b) # True print(a == c) # False 실수형..

[Scipy] 파이썬 p-value 찾기 방법 정리(T-test, 회귀 분석)

Python t검정, 회귀 분석 p value 값 구하기 방법 요약 파이썬에서 p-value 값을 계산해내는 방법들을 t-test와 회귀 분석의 경우에 대하여 간략하게 정리해보도록 하겠습니다. p-value 값 찾기 : t-검정의 경우 ttest 함수 실행 후 반환 결과의 1번 인덱스(두 번째) 값에 p-value가 들어있으므로, 해당 값을 인덱싱해주시면 됩니다. from scipy import stats import numpy as np X = np.random.random(50) # 데이터 가정 # X의 평균이 0인 경우에 대한 p-value stats.ttest_1samp(X, 0)[1] # 4.530894030802283e-17 # X의 평균이 0.5인 경우에 대한 p-value stats.tte..

Python/Scipy 2022.07.13

[논문 요약] REALM: Retrieval-Augmented Language Model Pre-Training

REALM Paper Review 이번 글에서는 Open-Domain QA(ODQA) 분야에 한 획을 그었던 REALM 논문에서 설명했던 기법을 간략하게 요약하여 다루어보도록 하겠습니다. 참고로, 해당 논문의 제목은 "REALM: Retrieval-Augmented Language Model Pre-Training"이며, ICML 2020 학회에 등재되었던 paper입니다. 실험 배경 트랜스포머 기반 언어 모델의 pre-train 과정은 성능에 있어 매우 중요하다는 것이 밝혀졌으며, 이 pre-train하는 과정에서는 지식들이 implicit한 방식으로 파라미터 내에 저장됩니다. 그러나 만일 언어 모델이 explicit하게 관련된 지식들을 먼저 찾을 수 있게 학습한 뒤, 해당 관련 지식을 참조하여 최종 ..

[Pandas] 파이썬 데이터프레임 행/열 순서(위치) 변경 방법 정리

Python 판다스 행, 열 순서 바꾸기 예제 파이썬 판다스 모듈에서 데이터프레임 내 행 및 열의 위치를 원하는대로 변경하는 방법들을 정리해보도록 하겠습니다. 용이한 이해를 위하여 아래와 같은 데이터프레임 df를 예시로 들어 설명드려 보겠습니다. import pandas as pd a = {'A' : ['0', '1', '2', '3', '4'], 'B' : ['00', '11', '22', '33', '44'], 'C' : ['000', '111', '222', '333', '444'], 'D' : ['0000', '1111', '2222', '3333', '4444']} df = pd.DataFrame(a) df 데이터프레임 행 위치 바꾸기 1. reindex 함수를 사용하는 방법 df.reindex..

Python/Pandas 2022.07.10

[논문 요약] Improving language models by retrieving from trillions of tokens

NLP RETRO Paper Review 2022년 구글 딥마인드에서 공개된 RETRO 논문의 핵심 내용들을 요약해보도록 하겠습니다. 논문의 제목은 "Improving language models by retrieving from trillions of tokens"입니다. 실험 배경 기존의 GPT-3 등의 대규모 언어 모델(LLM)들은 지속적으로 파라미터의 수와 데이터셋의 크기를 증가시키는 방향으로 성능 향상을 도모해왔습니다. 그러나 외부의 Knowledge base(KB)의 도움을 받게된다면 비교적 적은 수의 파라미터로도 언어 모델의 성능을 크게 향상시킬 수 있다는 발상을 했었으며, RETRO에서는 7B 정도의 파라미터로도 100B 이상의 LLM에 맞먹는 성능을 기록했었습니다. 위 Figure 1의 ..

[논문 요약] Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering

Fusion-in-Decoder Paper Review 이번 글에서는 Open Domain QA 분야에서 강력한 성능을 보이는 Reader 구조인 Fusion-in-Decoder(FiD) 모델에 대한 논문의 내용을 요약해보도록 하겠습니다. 논문의 제목은 Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering이며, EACL 2021 학회에 등재된 페이퍼입니다. 실험 배경 수 많은 문단 중 질문과 관련된 문단을 먼저 탐색하고, 여기서 답변을 찾아야 하는 Open Domain QA(ODQA) 분야에서 문단 탐색(Retrieval)-찾은 문단에서 답변 탐색(Reader) 의 2단계 구조로 이루어진 모델 들이 강력..

파이썬 로또 번호 추출, 당첨 등수 구하기 및 구매 시뮬레이션 구현 예제

Python 로또 프로그램 구현 실습 파이썬으로 로또(Lotto) 복권의 당첨 번호를 추출하고 주어진 상황의 등수를 구해보며 여러 번 구매하는 시뮬레이션의 결과를 출력하는 과정들을 구현하여 간단한 로또 프로그램을 만들어보는 예시를 다루어 보겠습니다. 로또 당첨 번호 추출 1~45 번호 중 중복 없이 7개를 뽑아 6개는 당첨 번호, 1개는 보너스 번호로 사용하게 됩니다. 이는 넘파이 모듈의 np.random.choice 함수를 활용하면 쉽게 번호를 뽑을 수 있습니다. import numpy as np numbers = np.random.choice(np.arange(1, 46), 7, replace = False) # 1~45 중 7개 추출 win_numbers = numbers[:-1] # 당첨 번호 6..

반응형