반응형

머신러닝 및 딥러닝/자연어처리 9

Fast Tokenizer

Slow Tokenizer와 Fast tokenizer'slow' tokenizer는 Transformers 라이브러리 내부에서 Python으로 작성된 것, 'fast' tokenizer는 Rust로 작성되어 Tokenizers에서 제공하는 것입니다. 단일 문장을 토큰화할 때 동일한 토크나이저의 느린 버전과 빠른 버전 간의 속도 차이가 항상 나는 것은 아닙니다. 사실, 빠른 버전은 실제로 더 느릴 수 있습니다. 많은 텍스트를 동시에 토큰화할 때만 차이를 명확하게 알 수 있습니다.   Batch Encoding토크나이저의 출력은 단순한 python 딕셔너리가 아닙니다. 우리가 얻는 것은 실제로 특별한 batch encoding 객체입니다. 빠른 토크나이저에서 주로 사용하는 추가 메서드가 있습니다. 병렬화(..

오토인코더(Auto Encoder) ・ Variational 오토인코더

오토인코더란 ? 오토인코더(AutoEncoder)란 입력이 들어왔을 때, 해당 입력 데이터를 최대한 compression 시킨 후, compressed data를 다시 본래의 입력 형태로 복원 시키는 신경망입니다. 이때, 데이터를 압축하는 부분을 Encoder라고 하고, 복원하는 부분을 Decoder라고 부릅니다. 압축 과정에서 추출한 의미 있는 데이터 Z를 보통 latent vector라고 부릅니다. 왜 이름이 오토인코더일까요 ? 다음 그림을 예시로 설명드리겠습니다. 위의 그림은 Auto Encoder의 결과를 시각화한 이미지입니다. 자세히보면 y축으로 두께가 변하고, x축으로는 기울기가 변하는 것을 확인할 수 있습니다. 이를 통해 이 모델의 latent vector는 두께, 회전, Class로 정의되..

난수 ・ random seed

Random seed 랜덤시드는 한국에서 난수 생성기라고 부르며, 랜덤한 값을 생성해낸다.마치 무작위 시드 값을 생성하는 것 같지만 반은 맞고 반은 틀린 말이다.임의의 값을 랜덤하게 생성해낸다는 점에서는 맞지만, 한번 정해진 시드 값은 다음 랜덤시드에서도 동일하게 산출된다.따라서 랜덤 시드란 랜덤하게 컴퓨터가 시드 값을 정하는 것을 의미하며랜덤하게 시드 값이 계속 바뀌는 것을 의미하지는 않는다. 또한 랜덤 시드값은 사실 무작위로 정해지는 것은 아니다.인간의 뇌에서 무작위 숫자를 선택해서 결정할 수 있지만, 컴퓨터는 자율적으로 생각해서 랜덤한 숫자를 선택하지 못한다.한마디로 랜덤한 숫자를 출력하도록 알고리즘화를 해줘야 하는데, 이것이 쉽지 않은 과정이다.왜냐하면 컴퓨터에게 랜덤이라는 것을 할 수 있도록 명..

In-Context Learning ・PEFT

최근 소개되는 언어 모델들은 긴 컨텍스트 윈도우(Long-Context Window)를 기본으로 지원한다. 이는 언어 모델이 한 번에 많은 양의 데이터를 처리할 수 있음을 의미한다. Many-Shot In-Context Learning이 가능해지면서 프롬프트 엔지니어링 전략만으로도 언어 모델의 성능을 향상시킬 수 있게 되었다.과거에는 특정 목적을 달성하기 위해서 사전 훈련된 언어모델에 Fine-tuning 과정이 필요했지만,이제는 더 적은 데이터로 많은 비용과 시간을 들이지 않고도 성능을 높일 수 있게 되었다. 따라서 이제는 fine-tuning의 필요성에 대한 의문을 제기하기 시작했다. 그렇다고 fine-tuning이 완전히 쓸모 없는 것은 아니다. 최근에는 규모가 큰 사전 훈련 모델의 전체 파라미터를..

Batch size와 Learning rate의 상관 관계

batch size는 그저 모든 데이터를 한 번에 학습하기에는 학습량이 너무 많기 떄문에 속도 측면으로 데이터를 쪼개어 학습한다고만 생각할 수 있다. 하지만 loss 수렴 측면에서도 batch size가 중요한 역할을 한다. batch size 작으면 learning rate도 작게 batch size 크면 learning rate도 크게 .... 1. Learning rate가 클 때, Learning rate가 크면, 한 번의 step에서 파라미터 학습이 크게 진행되기 때문에 보폭이 커진다. 보폭이 크기 때문에 조금 더 빨리 수렴이 가능하고, 그만큼 local minimum에 빠질 위험이 적다. 하지만 너무 크면, Loss가 전혀 줄지 않을 수도 있다. 수렴하지 않는 것이다. 2. Learning r..

Transfer Learning & Fine-tuning

개와 고양이 이미지를 분류하는 task를 수행한다고 할 때, 이미 학습된 pre-trained model을 불러와서 사전학습된 모델의 파라미터를 적용하는 transfer learning을 수행한다. 이 과정에서 개와 고양이에 대한 binary classification만 하면 되므로 불러온 모델이 현재 task에 좀 더 집중하도록 fine-tuning을 해주는 것이다. 새로운 데이터로 한 번 더 가중치(사전학습된 모델의 파라미터)를 조정해주는 것이다. 💥 Transfer Learning과 Fine-tuning의 개념 두 개의 용어가 혼동될 수 있지만, transfer learning과 fine-tuning을 같은 개념으로 이해해도 무방하다. 큰 데이터로 사전학습된 backbone 모델을 통해 featur..

Vision-Language Model | self-attention vs cross-attention

A Survey of Vision-Language Pre-Trained Models 📍 Summary Pre-training은 처음에 computer vision에서 유용하다고 밝혀졌는데, Transformer와 BERT의 등장 이후 NLP에서도 만연하게 사용되었다. 이는 Transformer가 long range dependency를 model하는 강력한 능력 덕분에 Pretrained Language Models (PLM)의 backbone이 되었다. 이후, vision과 language modalities를 모두 model하는 Vision-Language Pre-Trained Models이 연구되었다. 📍 VL-PTM의 3단계 1. image와 text의 의미를 유지한 채 latent represe..

Contrastive Learning

📍 Contrastive Learning의 목적 embedding space에서 유사한 positive pair는 거리가 가깝게, 그리고 유사하지 않은 negative pair는 거리가 멀게 학습하는 것이다. 유사한지, 유사하지 않은지에 대한 기준이 되는 현재 data point를 anchor(query)라고 한다. anchor와 유사한 sample을 positive point라고 하고, anchor와 유사하지 않은 sample을 negative point이라고 한다. - anchor: 현재 기준이 되는 데이터 샘플 - positive sample: 기준이 되는 데이터 샘플과 같은 class를 가지는 상관관계가 높은 샘플 - negative sample: 기준이 되는 데이터 샘플과 다른 class를 가지..

Self-supervised Learning

고양이라는 이미지가 있다고 가정해보자. 고양이 이미지에 augmentation을 주게 된다고 하더라도, 그 이미지는 고양이일 것이다. 즉, 원본 고양이 이미지와 augmentation이 적용된 고양이 이미지는 서로 유사하다고 할 수 있다. 이 때, 누군가 augmented image에 굳이 'similar'이라고 labeling 해줄 필요없이 input 데이터 자기 자신(self)에 의해 파생된 label 데이터로 학습하는 방법을 self-supervised learning이라고 한다.

728x90
반응형