개요현대 신경망에서 정규화(Normalization) 계층은 필수적인 요소로 여겨짐.본 연구에서는 정규화 없이도 동일하거나 더 나은 성능을 내는 방법을 제시.Dynamic Tanh (DyT)라는 간단한 연산을 도입하여 정규화 계층을 대체함.DyT는 DyT(x) = tanh(αx)의 형태를 가지며, 입력값을 조정하고 극단값을 억제하는 역할 수행. 주요 기여정규화 계층이 없어도 학습 가능Layer Normalization (LN) 없이도 Transformer 모델이 안정적으로 학습됨을 실험적으로 입증.DyT는 tanh 형태의 S-커브를 활용하여 정규화 계층의 효과를 모방.다양한 영역에서 검증시각 인식, 언어 모델링, 음성 인식 등 다양한 태스크에서 DyT 적용.ViT, ConvNeXt, LLaMA 등의 최신..
https://heekangpark.github.io/ml/shorts/padded-sequence-vs-packed-sequence Padded Sequence vs. Packed Sequence | Reinventing the Wheel 문제상황 자연어와 같은 sequence 데이터들을 다루다 보면 짜증나는 요소가 하나 있는데, 바로 그 길이가 일정하지 않다는 것이다. 이미지 데이터의 경우 crop이나 resize 등으로 가로 세로 크기를 맞 heekangpark.github.io 자연어같은 sequence 데이터는 input들의 길이가 다 다른 경우가 보통이기 때문에 이것을 어떻게 처리할 지 고민할 필요가 있다. 이미지는 crop이나 resize로 이미지 크기를 전부 맞추고 진행하면, batch로 ..
internal covariate shift 현상을 해결하기 위해 등장 layer를 지날수록 layer의 parameter의 변화에 따라 dataset의 분포가 변화한다고 생각한 것이다. 위와 같이 data가 layer를 지나가면서 분포가 변화한다고 생각한 것이 covariate shift 그런데 진짜있는 것인지는 논란이 많다 batch normalization은 각 layer마다 batch set을 normalization하여 분포의 변형을 막겠다는 것이다. batch의 평균과 분산을 구해서 각 입력값을 normalize 시킨다 마지막 γ,β는 normalize하면 activation의 nonlinearity를 잃어버리기 때문에 이를 조정하기 위함이고 학습해야하는 paramete..
text 데이터는 보통 길이가 서로 달라서 전처리할때 padding을 해서 길이를 맞춰준다고 보통 그러는데 왜 해야할까? 보통 batch형태로 데이터를 만들어서 모델을 학습시키는데, 길이가 서로 다르면 batch가 안만들어진다 데이터셋을 다음과 같이 구현하고 dataloader를 만들어본다 class ChatbotDataset(Dataset): def __init__(self, dataset, tokenizer, max_length = 438): self.tokenizer = tokenizer self.data = dataset self.max_length = max_length def __getitem__(self, i): inputs = tokenizer(self.data[i][1], return_t..
data augmentation 설명하면 항상 이렇게만 설명함 “image를 랜덤하게 자르거나 확대하거나 축소하는 등 변형하여 데이터 수를 의도적으로 늘려 머신러닝 모델이 다양한 데이터를 학습하도록 유도함” 그런데 나는 항상 이런 생각을 했음 “data augmentation에서 augmentation의 뜻이 증강임..” 이 설명은 가지고 있는 data set을 증가시킨다는 느낌을 줌 그래서 처음에 augmentation 한번 구현해볼까? 하고 생각한게 transforms.Compose로 transform을 정의하고 torchvision의 transform이 제공하는 함수를 이용하여 이미지를 변형시켜 데이터를 읽어온다 이렇게 변형된 이미지 데이터셋을 처음부터 순회해서, label별로 tensor를 다시 ..
1. training을 위해 필요한 것? training을 위해 dataset, dataloader를 준비해서 data를 효율적으로 뽑아낼 준비를 했고 설계한 model과 loss, optimizer, learning rate, scheduler, metric 등을 준비했다면 학습 준비 완료! 2. model.train() train하기 전에 model을 trainable하게 변경시키는 함수? 그런데 분명 model 설계할 때 나는 각종 parameter의 requires_grad=True로 한것같은데 굳이 해야하나??? batchnorm이나 dropout같은 것이 training 과정이랑 evaluation 과정에서 다르게 작동해야한다고 알려져있어서 train mode와 eval mode를 구분하기 위..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.