본문 바로가기

공부노트

2/20, 예순 네 번째 날의 TIL(LangChain) 최근에 RAG 기능을 구현하면서 랭체인 E-북 내용을 정리해보고 있다. 프로젝트를 하면서 LangChain, 벡터 임베딩 및 벡터 DB, 프롬프트 등을 공부하면서 내용을 정리해보고 현재 구현 중인 Django Channels-Redis-WebSocket을 사용한 채팅 기능도 정리해서 올려야겠다.랭체인(LangChain) : 대규모 언어 모델을 활용한 혁신적인 프레임워크LangChain v0.1.0 출시 의미2024년 1월에 출시, 랭체인 프로젝트의 첫 번째 안정 버전, 완전한 하위 호환성 제공 목표약 1년 남짓의 짧은 역사에도 LLM 애플리케이션을 구축하기 위한 기본 프레임워크로 빠르게 성장하는 중이 과정에서 많은 변화를 겪고, 이와 같은 잦은 패키지 변경은 코드의 불안정성을 야기안정 버전을 출시하면서 .. 더보기
2/6, 쉰 네 번째 날의 TIL(인코더-디코더 모델) 인코더와 디코더, 그리고 그 둘을 같이 사용하는 모델에 대해서 조사해보았다. 인코더와 디코더 각각 기능이 있는데 이 둘을 합치면 더 좋은 시너지가 날 것이므로 나중에 모델을 만들 때 둘을 같이 사용하는 모델을 만들어봐야겠다.인코더와 디코더인코더 BERT와 디코더 GPTAttention 논문에서 제안되었던 초기 트랜스포머는 인코더-디코더 구조를 가짐인코더는 일반적으로 자연어 이해 능력이 뛰어남인코더는 입력 문장을 모든 토큰을 동시에 고려하며, 문맥(Context)을 최대한 압축하여 벡터로 변환하는 역할을 함대표적인 구조는 BERT처럼 양방향(Bidirectional) 어텐션을 활용하여 문장의 모든 단어가 서로 영향을 주고받을 수 있음이 덕분에 문장의 의미, 문맥, 관계를 깊이 이해할 수 있어 문장 분류, .. 더보기
2/5, 쉰 세번째 날의 TIL(MoE) 요즘 들어 계속 LLM 모델을 학습시켜서 성능을 향상시키는 방법에 대해 연구중인데, 이번에 나온 Deepseek가 사용하는 아키텍쳐가 MoE(Mixture of Expert)라서 관심이 생겨 조사를 해보았다. 내 모델에 이 아키텍쳐를 적용시켜보면 좋을 것 같아서 좀 더 공부해보려고 한다.MoE(Mixture of Experts)는 여러 개의 전문가 모델 중에서 일부만을 선택하여 계산하는 아키텍처로, 각 전문가가 특정 작업에 특화되어 있는 방식이다. 이를 통해 모델의 파라미터 수를 증가시키지 않으면서도 더 많은 정보를 처리하고 성능을 향상시킬 수 있다.MoE 모델의 주요 구성 요소는 다음과 같다:전문가(Experts): 여러 개의 독립적인 신경망 모델이 존재한다. 각 모델은 특정 영역이나 작업에 특화되어 .. 더보기
1/17, 마흔 번째 날의 TIL(Attention is All You Need) 어제에 이어, Attention에 대해서 더욱 알아보았다. 기존의 RNN은 내용이 길어지다보면 앞의 내용이 소실되기도 하고 중요한 부분을 참고하지 못하는 경우가 있었는데, Attention으로 이를 해결하였고 이는 2017년 발표된 Attention is All You Need라는 논문에서 등장했다. 어텐션 메커니즘(Attention Mechanism)RNN 기반 seq2seq모델의 두가지 큰 문제하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하니 정보 손실 발생RNN의 고질적인 문제인 기울기 소실(vanishing gradient) 문제가 존재어텐션의 아이디어디코더 출력 단어를 예측하는 매 시점마다 인코더에서 전체 입력 문장 다시 한번 참고입력 문장을 전부 동일한 비율이 아닌, 해당 시점에서 예측.. 더보기
1/15, 서른 여덟 번째 날의 TIL(RAG) 어제 했던 한국어 학습에 이어, RAG를 나중에 사용하려고 생각하고 있어서 RAG에 대한 내용을 정리해봤다.RAG (Retrieval-Augmented Generation)에 대한 정리RAG는 GPT-2처럼 대규모 언어 모델을 활용하면서도 정보를 더 정확하고 신뢰성 있게 생성할 수 있도록, 검색 시스템과 결합한 모델이다. 기본적으로 자연어 생성과 검색을 함께 사용해서 질문에 답하거나 정보를 생성하는데, 이를 통해 기존 모델들이 가지고 있는 한계를 보완하려고 만든 기술이다.RAG의 핵심 개념검색(Retrieval): 질문에 맞는 관련 문서를 데이터베이스나 검색 시스템에서 가져온다. 예를 들어, Elasticsearch나 FAISS 같은 도구를 사용해서 문서를 검색생성(Generation): 검색된 문서를 .. 더보기
1/14, 서른 일곱 번째 날의 TIL(KoGPT-2) 챌린지 학습반에서 프로젝트를 하는데, 해리포터 데이터와 성격을 파인튜닝한 캐릭터 채팅AI를 만들어보고 있다. 처음에는 GPT 2.0모델을 불러와서 한국어 학습 -> 채팅 학습 -> 캐릭터 학습 과정으로 진행하려고 했으나 실제로 한국어 학습을 시키려고 해보니 방대한 데이터 양 때문에 개인으로 하기에는 쉽지 않다는 것을 알게 되었다. 따라서 기존에 SKT에서 GPT 2.0 모델을 바탕으로 한국어 학습을 시킨 KoGPT-2 모델을 HuggingFace에서 불러와서 사용을 하기로 하였고, 처음에 한국어 성능을 확인하려고 테스트 문장을 하나 넣어봤는데 모델이 한국어를 거의 못했다. 대규모 데이터셋으로 한국어를 학습시켰을 텐데 왜 성능이 안좋지..? 했지만 알아본 결과 토크나이저가 달라서였다. 예를 들어, KoGP.. 더보기
1/10, 서른 다섯 번째 날의 TIL(Django MTV pattern) Django를 공부하면서, 가장 중요한 부분이 MTV 패턴인 것 같아서 MTV 패턴에 대해서 조사한 다음 정리해보았다.  Django의 MTV 패턴Django는 파이썬 기반의 웹 프레임워크로, 웹 애플리케이션 개발을 위한 구조와 도구를 제공한다. Django의 핵심 설계 철학 중 하나는 MTV 패턴(Model-Template-View)이다. MTV 패턴은 웹 애플리케이션을 효율적으로 개발하고 유지보수할 수 있도록 돕는 설계 패턴으로, MVC(Model-View-Controller) 패턴의 변형이라고 볼 수 있다.MTV 패턴의 구성 요소Django에서 MTV 패턴의 각 구성 요소는 다음과 같은 역할을 한다:1. Model (모델)역할:데이터베이스와의 상호작용을 담데이터베이스 테이블을 정의하고, 데이터를 생.. 더보기
1/8, 서른 세번째 날의 TIL(NLP) NLP관련 e-북을 계속 읽는중인데, 오늘은 워드 임베딩에 대해서 정리를 해보았다. 텍스트를 컴퓨터가 잘 이해할수록 성능이 좋으므로, 워드 임베딩 처리를 잘 하는 것이 중요한 것 같다.워드 임베딩 (Word Embedding)텍스트를 컴퓨터가 이해할 수 있도록 변환하는 방법. 단어를 벡터로 표현하여 단어 간 의미를 학습하며, 희소 표현의 한계를 해결하고 밀집 표현을 사용.1. 워드 임베딩희소 표현 문제점: 단어 수가 많아질수록 차원이 커지고, 의미를 표현하지 못함.밀집 표현: 사용자가 설정한 차원으로 조밀한 실수값 벡터를 생성.임베딩 방식: LSA, Word2Vec, FastText, GloVe 등 다양한 방법이 있음.2. Word2Vec단어를 다차원 벡터로 변환해 의미적 유사성을 계산.CBOW: 주변 .. 더보기