NLP lab

NLP lab/파이썬

[pytorch] Batch 연산하면 값이 달라지는 이유

문제 상황 pytorch에서 텐서 연산 시 빠른 처리를 위해 batch로 연산하는 경우가 많다. 그런데 하나씩 하나씩 연산하는 것과, 배치로 한꺼번에 연산하면 결과값이 미세하게 달라지는 현상을 발견했다. 다음은 전체 코드이다. 코드 import torch from torch.nn import Linear, Module class NN(Module): def __init__(self): super().__init__() self.fc1 = Linear(64, 2) def forward(self, x): x = self.fc1(x) return x def main(): batch_size = 10 x = torch.rand((batch_size, 64)) nn = NN() # one by one l = []..

NLP lab/파이썬

[Solved] device-side assert triggered, Assertion `t >= 0 && t < n_classes` failed.

1. 에러 코드 RuntimeError: CUDA error: device-side assert triggered. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. /opt/conda/conda-bld/pytorch_1656352657443/work/aten/src/ATen/native/cuda/Loss.cu:271: nll_loss_forward_reduce_cuda_kernel_2d: block: [0,0,0], thread: [0,0,0] Assertion `t >= 0 && t = 0 && t = 0 && t = 0 && t = 0 && t = 0 && t

NLP lab/수학

로지스틱 일반화, 소프트맥스 유도하기

이 글에서는 로지스틱 함수를 일반화하여 소프트맥스 함수를 유도하는 과정을 살펴봅니다. 읽기 전에 선형 회귀, 로지스틱 회귀와 소프트맥스 함수의 활용에 대해 알아야 합니다. 선형 회귀를 분류에 적용하기 우리가 아는 일반적인 선형 회귀는 다음 그림이다. 이는 독립변수가 하나일 때의 모형이다. 독립변수가 여러 개일 때의 multiple linear regression의 식은 다음과 같다. $$ \large{y={\beta}_0+{\beta}_1x_1+...+{\beta}_nx_n} $$ 이를 분류(classification)에 활용하기 위해, 간단히 \(y\)를 \(p\)로 바꿔보자. $$ \large{p={\beta}_0+{\beta}_1x_1+...+{\beta}_nx_n} $$ 이 식의 문제점은 \(p\..

NLP lab/강화학습

02. 다중 선택 문제와 행동 가치 방법 [CH2 다중 선택]

비연합(nonassociatiive) 구조: 하나의 상황에 대해서만 행동을 학습하는 단순화된 구조. 다중 선택 문제(k-armed bandit problem) k개의 서로 다른 옵션이나 행동을 중에 한 가지를 선택하는 문제. 매 선택 후에는 보상이 주어진다. 이 보상은 행동에 따라 결정되는 정상확률분포(stationary probability distribution)로부터 얻어진다. 예를 들어, 1000번 선택할 때 주어지는 보상 총량의 기댓값을 최대화하는 것이 목표이다. 가치(value): 다중 선택 문제에서 k개의 행동 각각에 할당된, 그 행동이 선택되었을 때 기대할 수 있는 평균 보상값. $$ q_*(a)= \mathbb{E}[R_t|A_t=a] $$ \( A_t \)는 시간단계 \( t \)에서 ..

NLP lab/논문 정리

PaLM: Scaling Language Modeling with Pathways

내 코멘트 2022년 4월에 구글에서 나온 따끈따끈한 거대 언어 모델 논문이다. 성능 향상을 위해 모델의 크기를 늘리는 방법이 어떤 결과를 가져오는지 알 수 있다. 또한 프롬프트를 이용한 단계적 추론으로 마치 모델이 사람처럼 생각하는 듯한 모습 또한 볼 수 있다. 실험 결과 파라미터의 개수를 늘리는 방식으로 성능을 더 높일 수 있을 것으로 예측된다. 하지만 강력한 성능의 거대 언어 모델도 한계가 있었다. 모델이 너무 많은 웹 상의 데이터를 가지고 학습했기 때문에 벤치마크 시 성능이 과장됐다는 지적도 받을 수 있다. 이 때문에 벤치마크 결과를 정당화하기 위한 챕터도 흥미롭다. 기존 논문의 4, 5장은 거대한 언어 모델을 어떻게 효율적으로 훈련했는지에 대한 최적화 방법을 논하고 있기 때문에 여기서는 필요없을..

NLP lab/강화학습

01. 틱택토로 알아보는 강화학습 [CH1 소개]

☆ 이 글은 '단단한 강화학습(리처드 서튼, 앤드류 바르토, 옮긴이 김성우)' 책 내을 요약합니다. 틱택토 게임에서 강화학습하기 틱택토 게임은 설명하지 않아도 될 것 같다. 유저가 X로 먼저 시작하고 상대방은 늘 최선의 수는 두지 않는다고 가정하자. 그리고 무승부도 패배로 간주한다. 보드판에서 가능한 모든 경우의 수에 대해 해당 상황에서의 승리 확률 표를 가치(value)로 정의한다. 가치의 초기 값은 모두 0.5이다.(승리 확률 반반) 게임을 하는 동안 나는 가치를 변화시키며 가치가 승리 확률에 대한 정확한 추정이 필요하다. 이때 항상 최적의 선택을 하는 것이 아니라 무작위의 선택을 할 수도 있는데, 이를 탐험적(exploratory) 선택이라고 한다. 그리디 서치로 행동을 선택한다. 이때 선택 이전의..

NLP lab/강화학습

00. 강화학습 용어 한국어 번역 정리

김성우 번역자님의 책인 '단단한 강화학습' 에서 사용된 번역을 정리한 글입니다. 신뢰 할당 메커니즘 ☆ credit assignment mechanism 단일 선택 ☆ one-armed bandit 다중 선택 ☆ k-armed bandit 행동자-비평자 구조 ☆ actor-critic architecture 정상 확률 분포 ☆ stationary probability distribution 연관 탐색 ☆ associative search 맥락적 다중 탐색 ☆ contextual bandits

NLP lab/엔엘피

GPT-1, GPT-2, GPT-3

Language Model 이전 글에서 Generative Model과 Discriminative Model 각각의 방법론에 대해 알아봤다. GPT의 G는 Generative Model을 뜻한다. GPT는 Language Model을 사용한다. Language Model의 training 방법은 둘 중에 전자를 택했다. 언어 모델은 단어 시퀀스에 확률을 할당하는 일을 하는 모델을 뜻한다. 가장 보편적으로 사용되는 언어 모델은 이전 단어들이 주어졌을 때 다음 단어를 예측하도록 하는 것이다. GPT1의 핵심은 Language model의 학습 방법으로, 엄청난 데이터를 통해 뛰어난 모델을 만드는 것이 핵심이다. 또한 GPT는 순방향 언어 모델이다. 이는 이전 단어들(컨텍스트)이 주어졌을 때 다음 단어를 맞히..

NLP lab/엔엘피

Generative model, Discriminative model

Generative model vs Discriminative model 분류 모델의 방법론은 크게 Generative model과 Discriminative model로 나뉜다. 각각의 방법론에 대해 알아보자. Discriminative model 어떤 입력값(input) \(x\)가 주어졌을 때, 그 결과값(label)이 \(y\)일 확률, 즉 조건부확률 $$P(y|x)$$를 알아내는 방법이다. 이 방식의 머신러닝은 아래의 방법으로 이루어진다. 특정 입력값 $x$에 대한 조건부확률분포를 만들어낸다. 조건부확률분포에 근거해서 $x$와 $y$에 대한 벡터를 만들어낸다. $x$값들에 대한 성질을 가장 잘 구분할 수 있는 구분선(decision boundary)를 만든다. 만들어진 선을 기반으로 얼마나 멀리..

heavyteil
'NLP lab' 카테고리의 글 목록