분류 전체보기 22

[Word2Vec] Word에 대한 Embedding 만들기

Word2Vec에서 단어는 Dense Vector(=Distributed Vector)로 표현되며, 이는 여러 차원의 값들이 0이 아닌 값으로 채워져 있는 벡터입니다. 이러한 벡터를 사용하면 코사인 유사도, 유클리드 거리, 내적 등을 통해 단어 간 의미적 유사성을 표현할 수 있습니다.그중 Word2Vec은 Word를 Dense한 Vector로 표현하는 대표적인 방법으로, CBOW방식과 Skip gram방식으로 나뉩니다.CBOW와 Skip-Gram방식이 각각 어떤 방식인지는 아래 포스팅에 다루어두었습니다.https://dailyreord.tistory.com/48 [NLP] Embedding이란? & Text데이터의 Embedding(Word, Sentence)Ref : https://wikidocs.ne..

AI 2025.03.19

[인프런 워밍업클럽(자구알)] 연결리스트, 스택, 큐

(실습은 파이썬으로 진행하였습니다.)연결리스트 왜 쓰나요?배열은 인덱스를 기반으로 값을 참조할 때 시간복잡도가 낮다는 장점(O(1))이 있습니다. 그러나 시작할 때 얼만큼의 메모리 공간이 필요한지 미리 설정해두고, 그만큼만 써야한다는 단점과 더불어, 배열 중간에 값을 삭제하거나 추가할 경우 한칸씩 밀거나 당겨야하므로 값의 삭제나 추가 시 번거로워진다는 단점이 있습니다. 이를 해소하는것이 연결리스트입니다. 파이썬, JS의 리스트와 일반적인 배열이 다른 점파이썬의 리스트나, JS의 배열은 C언어 등 일반적인 배열과 다릅니다. 일반적인 배열의 경우 정적인(static) 배열로, 크기가 고정되어있으며 같은 타입의 데이터만 저장할 수 있습니다. 또한 메모리가 연속적이어서 배열의 첫 번째 주소만을 이용하여 다른 인..

Develop 2025.03.17

[인프런 워밍업클럽(CS)]미션1

1. 아래의 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?while(true){wait(1); // 1초 멈춤bool isActivated = checkSkillActivated(); // 체크}인터럽트 방식으로 바꿔주면 됩니다. 인터럽트 방식으로 바꾸기 위해서는 checkSkillActivated()를 매번 주기적으로 호출하지 않고, 이벤트가 발생했을때만 처리하도록 설계해야합니다.이를 위해서는 이벤트 기반의 프로그래밍 방식으로 변경해야합니다.이벤트 기반의 프로그래밍 방식으로 변경하는 방법으로는 크게 두 가지 정도를 꼽을 수 있는데,1. 콜백 함수(Cal..

Develop 2025.03.15

[네이버 클라우드 포텐데이] 중간 후기

[프로젝트 소개] 어른에게 메시지를 보내야 할 때, 상사에게 보고해야 할 때, 지인에게 위로를 전하거나, 축하를 전할 때... 등 Glee는 글이 만족스럽게 써지지 않아 고민하는 사용자들을 위해, 막막했던 글쓰기를 자연스럽게 풀어주고, 필요한 메시지를 체계적으로 관리할 수 있도록 돕는 서비스이다.  [서비스 이용]OCR 서비스, CLOVA Studio(LLM)와 더불어, 서버를 구축하고 DB 서비스를 주로 이용하였다. OCR 서비스를 이용하여 서비스에 필요한 텍스트를 이미지에서 추출하고, 후처리하여 CLOVA Studio에 전달하고, CLOVA Studio를 이용하여 원하는 결과를 만들어낸다.또한 사용자 정보 및 텍스트 데이터들, 사용자별 대화 기록이나 이력 등은 네이버 클라우드의 MongoDB를 이용하..

유틸리티 2025.03.06

요즘 근황 & 중간 회고 & 앞으로 목표

요즘 근황일단 상당히 바쁘다. 쉴 시간이 없다고 판단되고, 그냥 즐길 수 있을때까지 쉬지않고 계속 앞으로 나아갈 생각이다. 사람은 관성대로 살기 때문에 쉬지 말고 그냥 워커홀릭으로써 살아가자. 네이버 Boostcamp AI Tech를 수료하고, Boostcamp 강의 자료, 실습 자료 등 여러 자료들 아카이빙, 이력서랑 포트폴리오 작성 등등에 더불어1. 곧바로 네이버 클라우드의 포텐데이(해커톤)를 신청해서 현재까지 진행중이다(25. 03. 13에 종료).일단 FE/BE 개발자, 디자이너, 기획자, AI 개발자가 한 팀이 되어서 하는 프로젝트로, 현업에서의 협업을 경험해볼 수 있는 좋은 기회라고 생각했고, 최대한 여러 프로젝트를 진행하면서 내 실력과 경험을 쌓고, 더 많은 문제를 해결해보고자 신청했다. 2..

유틸리티 2025.03.04

[LLM Pre-train, Fine Tuning] Pre-trained LLM과 Supervised Fine Tuning

GPT, BERT, T5 등의 대규모 언어 모델들은 기본적으로 대량의 텍스트 데이터를 사전학습하여 언어의 패턴과 구조를 학습한다.이 때 Pre-trained 모델만으로는 현실 세계의 다양한 Task를 완벽하게 해결하기 어려운 경우가 많다. 이를 위해 Fine Tuning의 작업이 필요하다.Pre-trained 모델만으로는 부족한 이유모델을 Pre-trained 하는 방식과 목적은, 방대한 양의 일반 텍스트 데이터를 통해 언어의 일반적인 특성을 학습하는것이다.이를 통해 언어 자체에 대한 이해력을 가질 수 있게된다. 즉, 다양한 문맥을 이해하고, 문법적 규칙을 내재화하는 능력을 갖추게 된다. 하지만 이러한 모델은 단순히 일반 언어 이해에 초점을 맞추기 때문에, 특정한 Task에 필요한 미세한 조정이 이루어지..

AI 2025.02.14

[Positional Encoding] Transformer가 토큰의 위치 정보를 고려하는 방법

Transformer와 같은 모델은 Input data를 병렬적으로 처리하므로, RNN, CNN처럼 Input data의 시퀀스를 자연스럽게 고려하지 않는다. 따라서 Input data의 각 토큰별 위치 정보를 고려하는 매커니즘을 추가적으로 고려해주어야하는데, 이게 Positional Encoding이다. Positional Encoding을 통해 모델이 단어의 상대적인 위치와 절대적인 위치 모두 인지하고 고려할 수 있게된다.  Positional Encoding의 기본 아이디어가장 널리 알려진 방식은, Sinusoidal 함수(sin, cos함수)를 통해 각 위치마다 고유한 패턴의 벡터를 생성하는 방식이다.각 위치마다 서로 다른 주파수의 sin, cos값을 생성하여 모델이 위치 관계(토큰 간의 상대적인..

AI 2025.02.08

Beam Search

(Beam Search의 본질적인 개념보단, Seq2Seq with attention 모델에서의 Beam Search가 어떤식으로 작동하는지에 대해 작성하였습니다.) Beam Search는 Seq2seq with attention 등 자연어의 생성 모델에서, 최종적으로 생성된 결과값의 퀄리티를 높이기 위한 전략입니다. BFS와 유사한 방식으로 동작하지만, 모든 가능성을 탐색(완전탐색)하지않고, 가장 가능성이 높은 후보들만 유지하여 효율적으로 탐색합니다.  Seq2Seq의 Decoder 에서의 Beam SearchSeq2seq과같은 자연어 생성 모델은 다음 단어를 예측할 때 Greedy decoding방식(가장 확률이 높은 단어 하나)을 기반으로 학습되고, Task를 처리합니다. (시간복잡도 O(t), t..

AI 2025.01.09

[RAG] ODQA Task의 Reading Stage

ODQA(Open-Domain Question Answering) Task는 관련 문서를 가져오는 Retrieve 단계와, 관련 문서 내에서도 Query와 가장 관련된 부분을 도출하는 Reading단계로 이루어지며, Reading(MRC)단계에서 문제를 정의하는 방식은 Extraction-Based한 방식과, Generation-Based한 방식이 있다. Extraction-Based 방식 주어진 Context내에서 Ground Truth이 존재한다는 가정 하에, 모델이 추출한 Answer과 Ground Truth가 단어 단위로 정확히 일치하는지(Exact Match)를 측정하도록 문제를 정의하는 방식이다. (SQuAD, KorQuAD, NewsQA 등이 대표적인 데이터셋이다.) 그림과 같이 Contex..

AI 2025.01.02

[이상 탐지 매커니즘, LSTM 기반 AutoEncoder] 이상탐지에서의 LSTM과 AutoEncoder

데이콘 결과가 너무 안나와서, 그냥 베이스라인이나 꼼꼼히 뜯어보고 다음번에 잘 하기로 했다. 다만, 다음에 더 잘 하기 위해 부족한게 뭐였는지, 어디가 모자라서 결과가 잘 나오지 못했는지 .. 얻어가는거라도 있었으면 해서 그냥 베이스라인 일일이 뜯어봤다. 베이스라인의 Model 구조는 아래와 같았다. Input(전체 수도관망의 압력값, type : List) → LSTM → HiddenHidden[-1] → Encoder → Latent_zLatent_z → Decoder → Reconstructed_Hidden 이 과정에서 Hidden[-1](Encoder의 입력값)과 Reconstructed_Hidden값의 오차를 계산(MSE)→ Optimizer(Adam)을 통해 파라미터 업데이트 여기서 의문이, ..

AI 2024.12.16