최신 글
파이썬

[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 = []..

예서리뷰

[AKG K361 리뷰] 밀폐형 헤드폰이 예쁘기까지

구매하기까지 써본 헤드폰으로는 크리에이티브 오르바나 라이브 베이어다이나믹 DT770 pro 32옴 Koss KSC75 로 그렇게 많지 않다. 연구실에서 쓸 거라서 패시브 노이즈캔슬링이 필요했고 그래서 밀폐형 중에 열심히 알아봤다. HD569, K371과 고민하다가 K361로 결정했다. HD569는 호불호가 많이 갈리는 소리라는 리뷰가 꽤 많았고, K371보다도 K361이 더 괜찮았다는 리뷰가 있어서,,, 그리고 5만원정도 더 싸서 고르게 되었다. K361은 블루투스 모델과 유선 모델이 있는데 이것도 5만원정도 싸고 유선모델이 가벼우니까 착용감이 더 좋을 거라고 생각해서 유선으로 골랐다. 블루투스 모델이었으면 배터리에 조금이라도 신경을 써야 한다는 점이 거슬릴 것 같아서 유선이 오히려 좋았다. 소리 해상력..

컴퓨터구조

부동소수점 연산이 어떨 때는 맞고 어떨 때는 틀리는 이유

1.1+0.1과 1.1+0.2의 차이 사진은 파이썬 콘솔에서 실행한 모습이지만, 파이썬이 아닌 대부분의 프로그래밍 언어에서 비슷한 결과를 보인다. 이 문제의 원인은 컴퓨터 프로그래밍을 맨 처음 배울 때 알게 될 정도로 많은 사람들이 알고 있을 것이다. 원인은 컴퓨터가 소수를 저장하는 방식에 있다. 컴퓨터는 이진수의 부동소수점 방식으로 소수를 저장하기 때문에 우리가 쓰는 십진수 소수를 모두 정확히 표시할 수 없고, 어떤 값들은 근삿값으로 저장할 수밖에 없다. 하지만 사진처럼 어떤 연산은 정확히 나오고, 어떤 연산은 기대하지 않은 결과를 출력하는 모습을 보인다. 그래서 1.1+0.1==1.2은 False이고, 1.1+0.2==1.3은 True가 나오는 과정을 컴퓨터처럼 비트 단위로 계산해보면서 원인을 알아보..

파이썬

[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

백준

[1107] 리모컨

문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오. 수빈이가 지금 보고 있는 채널은 100번이다. 아이디어 주어진 리모컨 버튼(+, - 제외)으로 목표하는 채널 L과 가장 가까운 숫자 E로 가야 한다. 목표하는 채널의 자릿..

인기 글
수학

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

이 글에서는 로지스틱 함수를 일반화하여 소프트맥스 함수를 유도하는 과정을 살펴봅니다. 읽기 전에 선형 회귀, 로지스틱 회귀와 소프트맥스 함수의 활용에 대해 알아야 합니다. 선형 회귀를 분류에 적용하기 우리가 아는 일반적인 선형 회귀는 다음 그림이다. 이는 독립변수가 하나일 때의 모형이다. 독립변수가 여러 개일 때의 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\..

엔엘피

Word2Vec, GloVe, FastText 요약

자연어처리 바이블, 딥 러닝을 활용한 자연어 처리 wikidocs 등을 참조해서 공부하며 정리했습니다. 과거의 단어 임베딩 기술이 채택했던 아이디어와 각 알고리즘의 단점을 개선하고자 했던 방법들을 알아본다. 0. 요약 Word2Vec 이전 1990년대 초부터 널리 사용 잠재 의미 분석(latent semantic analysis, LSA), 잠재 디리클레 할당(latent dirichlet allocation, LDA) 활용 Word2Vec 단어 임베딩 열풍을 불러옴 ELMo 이전까지의 임베딩은 단어 단위 임베딩 2013년도 Mikolov et al.이 발표한 두 편의 논문에서 제안된 알고리즘의 이름 두 개 계층을 사용하는 얇은 것 : 학습 방법이 단순해서 더 많은 데이터를 활용할 수 있고 성능 향상됨...

엔엘피

Context Free Grammar, CYK(CKY) 알고리즘

다루는 내용 문맥 자유 언어 문맥 자유 문법 촘스키 정규형 CYK 알고리즘 문맥 자유 언어(Context-Free Language, CFL) 문맥 자유 언어(Context-free language, CFL)는 문맥 자유 문법이 생성하는 형식 언어이다. (같은 문법이 다른 언어를 생성할 수도 있다.) 문맥 자유 문법(Context-Free Grammar) 문법 \( G=(N, \Sigma, R, S) \) 에서 모든 생성 규칙이 $$ A\,\to\, w $$ 의 형태이면 \(G\)를 문맥 자유 문법(Context-free grammer, CFG) 라고 한다. 이때 \( A \in N \) 이고, \( w \in (N\cup \Sigma)^{*} \) 이다. 여기서 \(N\)은 a finite set of ..

엔엘피

오토마타 이론과 형식 언어

오토마타 이론(Automata Theory)이란? 계산 능력이 있는 추상 기계와 그 기계를 이용해서 풀 수 있는 문제들을 연구하는 컴퓨터 과학의 한 분야이다. 추상 기계를 오토마타(Automata, 복수형) 또는 오토마톤(Automatnon, 단수형) 이라고 한다. 기계는 일반적으로 유한한 상태의 집합을 갖고 있다. 유한한 개수의 상태를 가질 수 있는 기계를 유한 상태 기계(finite-state machine), 오토마톤을 유한 오토마톤(finite automaton)이라 한다. 기계는 입력에 따라 현재 상태에서 다음 상태로 전이하며 출력을 내놓는다. 이는 계산 문제를 해결할 능력과 같다. 특정한 유한 오토마톤은 어떤 사건(event)에 의해 현재 상태(current state)에서 다른 상태로 변화할..

엔엘피

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는 순방향 언어 모델이다. 이는 이전 단어들(컨텍스트)이 주어졌을 때 다음 단어를 맞히..

강화학습

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

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

heavyteil
NLP RL lab