Deep Learning 24

Large Language Model (5) : RAG

RAG (Retrieval Augmented Generation, 검색 증강 생성)오늘은 요즘 LLM 관련 기술 중 많이 언급되는 RAG에 대해서 이야기해보려고 합니다. RAG(영어권 사람들은 '랙'이라고 읽더라고요)은 Retrieval Augmented Generation의 약자입니다. 우리 말로는 검색 증강 생성이라고 부릅니다. Retrieval을 검색이라고 번역한 것인데요. 보통 검색하면 Retrieval보다는 Search가 떠오르지 않으시나요?Search와 Retrieval의 차이는 무엇일까요? 좀 뜬금없어 보이지만 오늘 논의와 관련이 있기 때문에 잠시 이야기하고 넘어가겠습니다.먼저 사전적인 의미부터 살펴보면 Search는 말 그대로 검색을 의미합니다. 수많은 후보 중에 내가 원하는 특정 대상을 ..

Deep Learning 2024.04.28

Large Language Model (4) : Fine Tuning & LoRA

들어가며 LLM 이야기를 접하다보면 필수적으로 따라오는 용어 중에 Fine Tuning이라는 것이 있습니다. 우리 말로는 미세조정이라고 번역합니다. 오늘은 Fine Tuning이 무엇이고, 왜 LLM 이야기에 빠지지 않고 등장하는지에 대해 이야기해보려고 합니다. Pre-trained Model Fine Tuning에 대해서 이해하려면 Pre-trained Model을 먼저 이야기해야합니다. https://jins-sw.tistory.com/48 에서 Foundation Model이라는 측면의 LLM 이야기를 한 적이 있는데 참고하셔도 좋을 듯 합니다. 예를 들어 어떤 이메일이 스팸인지 아닌지 판단하다는 자연어처리 기능을 만든다고 생각해보겠습니다. 전통적으로 하던 방법은 다음과 같습니다. 이메일 데이터를 ..

Deep Learning 2023.11.12

Cross Entropy 이야기

소개 가장 흔하게 사용하는 loss fuction 중 하나가 Cross Entropy Loss가 아닐까합니다. 대부분의 Deep Learning 프레임워크에서 기본적으로 제공해주기도 하고요. 자주 쓰기는 하지만 Cross Entropy가 실제로 무엇인지 궁금하신 분들도 있을 것 같습니다. 오늘은 Cross Entropy에 대해서 소개를 해보고자 합니다. 스포일러 Cross Entropy는 Information Theory라는 학문에서 나온 개념입니다. 오늘 글에서는 Information Theroy 이야기를 여기저기에서 하게 될 것입니다. 그런데 Machine Learning에서 Cross Entropy를 사용하는 목적은 원래 Information Theory에서 Cross Entorpy를 만든 목적과 ..

Deep Learning 2023.05.21

Large Language Model (3) : In-Context Learning, 남은 이야기들

그래서 LLM이 Foundation Model이야? Large Language Model을 다시 요약하면 이렇습니다. Text 데이터를 엄청나게 모은다. 이 데이터를 Language Model에게 보여준다. Language Model이 주어진 텍스트의 다음 단어를 예측하도록 훈련시킨다. Language Model의 결과(Decoder의 예측)를 다시 Language Model의 입력으로 넣으면 (auto-regressive) 긴 길을 지을 수 있다. 결국 Language Model 하는 일은 다음 단어 예측, 그리고 더 길게 하면 글쓰기입니다. 이런 Language Model이 Large Language Model 됐다고 NLP Foundation Model의 역할을 할 수 있을까요? Yes, No로 대..

Deep Learning 2023.04.12

Large Language Model (2) : LLM을 가능케한 삼박자

스포일러! 2편은 다른 편에 비해 다소 기술적인 내용이 많습니다. Large Language Model Language Model이 커지면 뭘까요? 바로 Large Language Model입니다. 하지만 무작정 크게 만들 수는 없습니다. 아래 세가지 문제 때문입니다. 훈련 데이터 : 엄청 많은 데이터가 필요합니다. 알고리즘 : 기존보다 엄청 강력한 알고리즘이 필요합니다. 컴퓨팅 파워 : 엄청 많은 그리고 좋은 컴퓨터가 필요합니다. 우리가 LLM을 만들고 있다는 것은 이 문제들이 어느 정도 해결이 됐다는 뜻이겠지요? (이 세가지는 전통적인 Machine Learning에서 Deep Learning으로 넘어갈 수 있었던 요인이기도 합니다. 앞으로 더 강력한 Machine Learning 기법이 나오더라도 ..

Deep Learning 2023.04.12

Large Language Model (1) : Foundation Model

시작 시작하기 전에 글을 마무리하고 처음으로 돌아와보니 처음 계획보다 매우 긴 글이 됐습니다. 그래서 몇 편으로 나누어서 올려보려고 합니다. ChatGPT를 시작으로 Generative AI, Large Language Model(LLM)에 대한 열기가 엄청납니다. 수개월 전까지만해도 Generative, Language Model 같은 표현은 AI 계에 몸담고 있는 사람들만이 쓰는 것 같았는데 말이죠. 이제는 주위에서 이런 표현을 듣는 일이 어렵지만은 않습니다. 더 놀라운 사실은 이런 표현들이 말에서 그치지 않고 일상 생활에서 직접 쓰는 단계가 시작됐다는 점입니다. 몇달 전만 해도 개인 컴퓨터에서 Image-to-Text 모델을 돌려본다거나, LLaMA 같은 Language Model을 직접 돌려본다는..

Deep Learning 2023.04.12

머신 러닝 + 자연어 처리

오늘은 특정한 기술이나 알리고즘이 아니라 머신 러닝을 사용해서 자연어처리 문제를 푸는 일반적인 과정에 대해서 이야기를 해보려고합니다. 다르게 말하면, 자연어처리 문제를 어떻게 일반적인 머신 러닝 문제 형태로 바꾸느냐에 대한 이야기입니다. 머신 러닝 문제 형태? 머신 러닝 문제 형태라는 것이 무엇일까요? 우리가 흔히 머신 러닝이라고 부르는 것은 실제로는 다양한 알고리즘의 집합니다. 대표적인 머신 러닝 알고리즘들은 아래와 같은 분류에 속합니다 (이 외에 다른 분류도 있습니다). Clustering Regression Classification Clustering은 비슷한 데이터들끼리 분류하고 모으는 작업입니다. 예를 들어 쇼핑몰의 고객 데이터를 주고, 고객들을 몇가지 부류로 나누는 작업이 있을 수 있습니다...

Deep Learning 2022.03.26

Transformer로 한국어 품사 태거 만들기

한국어 품사 태거를 만들어 봅시다 품사 태거(Part-of-Speech Tagger)는 NLP에서 기본이 되는 태스크이고, 그 때문에 NLP를 배울 때 많이 만들어보는 기능이기도 합니다. 품사 태거가 NLP에서 나름 인기있는 이유는 몇가지가 있을 겁니다. 다른 NLP Task의 입력 또는 전처리 역할을 합니다. 요즘은 트렌드가 언어학적인 요소를 많이 배제하는 추세지만 전통적으로 파싱, 번역 등의 NLP 파이프라인에 많이 쓰였습니다. 한국어에서 BPE와 같은 통계적인 Tokenizer를 대신하는 방법으로 쓰이기도 합니다. 한국어의 특성상 통계적인 Subword보다는 형태소 단위를 토근으로 쓸 때 성능이 더 좋긴 경우들이 있습니다. (참조: 한국어 토큰의 단위는 뭐가 좋을까?) 품사 태깅은 Sequentia..

Deep Learning 2021.06.13

Pytorch로 훈련 이어서하기 (checkpoint)

모델을 훈련시키는데 오랜 시간이 걸리다보면 여러가지 이유로 처음에 생각했던 Epoch만큼 훈련을 시키지 못하고 중간에 끝나는 경우가 있습니다. 누군가 실수로 Ctrl+C를 눌러버린다거나, 모종의 이유로 훈련 프로세스가 죽어버린다거나, 아니면 GPU를 다른 곳에 쓰기 위해서 눈물을 머금고 중간에 멈추는 경우도 있습니다. 이럴 때 유용한 방법이 중간 중간 모델을 저장해두고 나중에 그 시점부터 훈련을 이어서 하는 것입니다. 오늘은 중간중간 모델을 저장하는 방법과 나중에 이어서 훈련을 시작하는 방법을 알아보겠습니다. import torch import torch.nn as nn import torch.optim as optim import argparse class MyModel(nn.Module): def _..

Deep Learning 2021.06.09

Logit, Sigmoid, Softmax

Logit, Sigmoid, Softmax 오늘은 Logit, Sigmoid, Softamx에 대해서 알아보려고 합니다. 코드와 함께 Logit, Sigmoid, Softmax의 차이와 활용처를 알아보겠습니다. import torch import torch.nn as nn x = torch.rand(8, 256) print(x) linear_layer = nn.Linear(256, 5) tensor([[0.8509, 0.5229, 0.0945, ..., 0.0343, 0.9828, 0.8862], [0.2340, 0.6683, 0.6794, ..., 0.0669, 0.7153, 0.4655], [0.8962, 0.0695, 0.5760, ..., 0.9555, 0.3334, 0.7940], ..., [0..

Deep Learning 2021.05.30