Large Language Model(LLM)은 뛰어난 생성 능력을 가졌지만 근거가 없는 내용을 “그럴듯하게” 만들어내는 Hallucination(환각) 문제가 존재한다.이 문제를 해결하고 기업 문서, PDF, 내부 지식 기반의 정확한 답변을 만들기 위한 기술이 있는데, 바로 RAG(Retrieval-Augmented Generation)이다. 1️⃣ RAG란?말 그대로 Retrieval(검색) + Generation(생성) 의 조합으로 LLM이 “모르는 내용”을 추측해 말하는 대신 외부 지식베이스(문서, Database, PDF, 소스코드 등)에서 관련 정보를 검색하여 그 실제 내용을 LLM 입력(prompt)에 추가해 답변을 생성하는 구조이다.LLM이 답변을 생성할 때,관련 정보를 외부 지식 베이스에..
딥러닝 모델 경량화 기법 중 하나인 양자화(Quantization)는 딥러닝 모델의 숫자 표현을 줄여 모델을 더 작고, 빠르고, 효율적으로 만드는 것으로 flat32를 int8로 바꿔 모델을 경량화 할 수 있다. 양자화의 종류에는 크게 두가지가 있다.1. PTQ(Post-Training Static Quantization)- 학습 없이 양자화가 가능하며 calibration 데이터로 scale/zero point를 측정한다. 빠르고 간단히 양자화가 가능하지만 정확도 손실 가능성이 높다.2. QAT(Quantization Aware Training)- 학습 중에 양자화 효과를 반영하는 것으로 훈련으로 손실이 보정이 되어 정확도 손실이 적다. 그 중 QAT를 적용 해 볼 일이 있어 간단히 알아보고 적용 해 ..
FiftyOne은 컴퓨터 비전 분야의 데이터셋을 효과적으로 관리하고 분석할 수 있도록 돕는 오픈소스 툴이다.해당 툴을 사용하면 이미지 및 비디오 기반 데이터셋을 시각화하고 모델 예측 결과를 평가하며 잘못된 라벨을 쉽게 탐지할 수 있다. 1. FiftyOne 설치fiftyOne 설치apt install libcurl4 opensslapt install libcurl4-openssl-devpip install fiftyonepip install fiftyone-db-ubuntu2204 quickstartimport fiftyone as foimport fiftyone.zoo as fozdataset = foz.load_zoo_dataset("quickstart")print(dataset)sample = da..
Yolo 모델에 대해서 톺아볼 일이 있었는데 간단 요약 글을 포스팅 하면서 다시 한번 정리를 한번 해 보려고 한다. 객체 감지는 이미지나 비디오 내의 객체를 식별하고 위치를 찾는 computer vision task이다.객체 감지 알고리즘은 single shot detection과 two shot detection으로 나눌 수 있다. two shot detection 알고리즘은 객체를 감지하는데 두 단계 프로세스를 사용한다. 첫번째 단계에서는 잠재적으로 객체를 포함할 수 있는 bounding box를 제안을 한다. 두번째 단계에서는 box 내 객체 클래스를 분류하기 위해 제안된 영역을 합성 신경망을 통해 실행을 한다.two shot detection 알고리즘의 대표적인 예료는 R-CNN, Fast R-C..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️8.1 어텐션의 구조seq2seq를 한층 더 강력하게 하는 어텐션 메커니즘 아이디어를 소개한다.이 어텐션이라는 메커니즘 덕분에 seq2seq는 필요한 정보에만 주목할 수 있게 된다. ◾ 8.1.1 seq2seq의 문제점seq2seq에서는 Encoder가 시계열 데이터를 인코딩한다. 인코딩된 정보를 Decoder로 전달하고 Encoder의 출력은 고정 길이의 벡터였다.고정 길이 벡터라 함은 입력 문장의 길이에 관계없이 항상 같은 길이의 벡터로 변환한다는 뜻이다.현재의 Encoder는 아무리 긴 문장이라도 고정 길이의 벡터로 변환하지만 이는 필요한 정보가 벡터에 다 담기지 못하..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 7.1 언어 모델을 사용한 문장 생성◾ 7.1.1 RNN을 사용한 문장 생성의 순서앞 장에서의 LSTM 계층을 이용한 언어 모델은 아래 그림처럼 생겼다. 언어 모델은 다음과 같은 확률분포를 출력한다.언어 모델은 지금까지 주어진 단어들에서 다음에 출현하는 단어의 확률분포를 출력한다. 이 결과를 기초로 다음 생성하기 위해서는 확률이 가장 높은 단어를 선택하는 방법을 떠올릴 수 있다.확률이 가장 높은 단어를 선택할 뿐이므로 결과가 일정하게 정해지는 결정적인 방법이다. 또 확률적으로 선택하는 방법도 있다. 각 후보 단어의 확률에 맞게 선택하는 것으로 확률이 높은 단어는 선택되기 쉽..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. 요즘에는 앞 장의 단순한 RNN 대신 LSTM이나 GRU라는 계층이 주로 쓰인다. RNN이라고 하면 앞 장의 RNN이 아니라 LSTM을 가리키는 경우도 흔하다.LSTM이나 GRU에는 게이트라는 구조가 더해져 있는데 이 게이트 덕분에 시계열 데이터의 장기 의존 관계를 학습할 수 있다. ◼️ 6.1 RNN의 문제점RNN은 시계열 데이터의 장기 의존 관계를 학습하기 어렵다. BPTT에서 기울기 소실 혹은 기울기 폭발이 일어나기 때문이다. ◾ 6.1.1 RNN 복습RNN 계층은 시계열 데이터인 xt를 입력하면 ht를 출력한다. 이 ht는 RNN 계층의 은닉 상태라고 하여 과거 정보를 저장..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 5.1 확률과 언어 모델◾ 5.1.1 word2vec을 확률 관점에서 바라보다지금까지 살펴본 신경망은 피드포워드라는 유형의 신경망이다. 피드포워드란 흐름이 단방향인 신경망을 말한다.입력 신호가 다음 층(중간층)으로 전달되고 그 신호를 받은 층은 그다음 층으로 전달하고 다시 다음 층으로.. 식으로 한 방향으로만 신호가 전달된다.시계열 데이터를 잘 다루지 못하는게 단점이기에 순환 신경망(RNN)이 등장하게 된다. CBOW 모델이 출력할 확률식은 다음과 같이 된다.위 식을 교차 엔트로피 오차에 의해 유도한 결과는 다음처럼 쓸 수 있다.CBOW 모델의 학습으로 수행하는 일은 위의 손..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 4.1 word2vec 개선 1위 그림과 같이 CBOW 모델은 단어 2개를 맥락으로 사용해 이를 바탕으로 하나의 단어를 추측한다. 이때 입력 측 가중치와의 행렬 곱으로 은닉층이 계산되고 다시 출력 측 가중치와의 행렬 곱으로 각 단어의 점수를 구한다.이 점수에 소프트맥스 함수를 적용해 각 단어의 출현 확률을 얻고 이 확률을 정답 레이블과 비교하여 손실을 구한다. 위 그림에서 보듯 입력층과 출력층에는 각 100만 개의 뉴런이 존재한다. 이 수많은 뉴런 때문에 중간 계산에 많은 시간이 소요되며 다음 두 계산이 병목이 된다.- 입력층의 원핫 표현과 가중치 행렬 Win의 곱 계산.- ..
해당 포스팅은 '밑바닥부터 시작하는 딥러닝2'를 공부하고 정리, 요악한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 3.1 추론 기반 기법과 신경망단어를 벡터로 표현하는 방법은 통계 기반 기법과 추론 기반 기법이 있다. ◾ 3.1.1 통계 기반 기법의 문제점통계 기반 기법에서는 주변 단어의 빈도를 기초로 단어를 표현해왔으며 단어의 동시발생 행렬을 만들고 그 행렬에 SVD를 적용하여 밀집벡터를 얻었다.하지만 이 방식은 대규모 말뭉치를 다룰 때 문제가 발생한다. 어휘가 100만 개라면, 통계 기반 기법에서는 '100만x100만'이라는 거대한 행렬을 만드는데 이러한 행렬에 SVD를 적용하는 일은 현실적이지 않다.통계 기반 기법은 단 1회의 처리(SVD 등)만에 단어의 분산 표현을 얻는다.추론 기..