전체 글 102

[Probability] 기본 용어 정리

우리가, 외국인과 대화하기 위해서는 영어가 필요하고,컴퓨터와 대화하기 위해서는 pyhton,java, c 등 컴퓨터언어가 필요하듯이수학과 대화하기 위해서는 수학에 대한 언어(또는 기호)에 대한 이해가 필요하다.(매우 적절한 비유는 아닌듯하지만, 요지는 수학을 하기위해서는 개념에 대한 이해도 중요하지만, 수학적기호/쓰는 언어에 대한 이해도 필요하다는 뜻이다.) 그리고 대부분의 수학적용어는 영어를 기반으로 하고 있어, 한국어로 변역하면 상당히 어색해진다..ㅎ 그래서 본격적인 확률과통계에 대한 포스팅에 앞서 관련 용어를 정리 하고자 한다.  S = Sample Space- 보통 S= ~~~ 이렇게 많이 쓰고, outcome들을 모아논 모든 셋의을 뜻한다. 즉 모든 경우의 수 라고 할 수 있다 - 예를 들어 동..

카테고리 없음 2024.10.12

NLP-RAG : 검색 증강 생성 모델

기존 Chatbot의 문제점 기존 Chatbot의 경우 pre-trained된 모델을 fine-tuning을 통해서 도메인에 특화된 chatbot을 많이 만드는 기법을 사용하여 좋은 결과를 만들어 낸다. 하지만 이 기법의 경우 학습 데이터 기반으로 정확한 대답을 추론하지만, 새로운 지식이 업데이트되거나 학습데이터 이외의 질문이 들어올 경우 정확한 대답을 하지 못하는 문제점이 있다. RAG란 이를 해결하기 위해 나온것이 바로 RAG (Retrieval Augmented Generation) - 검색증강생성 모델이다. 쉽게 말해 학습데이터가 아닌 외부 데이터베이스에 접근하여 정보를 얻고 대답을 하는 방식이다. 그 결과 모델은 더욱 정확하고 최신의 정보를 대답할 수 있게 된다. 질문에 대해 document i..

AI/NLP 2024.03.13

NLP - seq2seq

seq2seq seq2seq 모델은 한 시퀀스를 다른 시퀀스로 변환하는 작업을 수행도록 구성된 모델 입니다. 크게 encoder와 decoder로 구성되어 있습니다. 이 때 encoder를 통해 나온 hidden state는 고정 길이의 벡터 입니다. 즉 인코더를 통해서 임의의 길이의 문장을 고정 길이 벡터로 변환하는 작업이라고도 할 수 있습니다. 이때 decoder로 갈 때 hiddem state는 고정된 벡터형태의 hidden state 입니다(encoder을 통과한) Top K-Beam Search Top K-Beam Search 는 첫 단어가 항상 알맞은 단어를 예측한다는 보장이 없기때문에 도입된 기술이다. 확률이 높은 K를 뽑고 거기서 다음으로 확률이 높은것을 K를 뽑습니다. 그래서 최종적으로 ..

AI/NLP 2023.12.27

NLP - RNN , LSTM

N-gram LM은 주위 단어들을 통해 다음에 나올 단어나 중간에 들어갈 단어를 예측합니다. 이러다보니 문제점이 하나 발생합니다. 바로 예측하려는 단어와 멀리 떨어져 있는 단어들은 고려 하지 못한다는 겁니다. 나는 오늘 학교를 갔어, 그리고 축구를 했는데 내가 공을 잡는 순간 __이 끝났어 답) 나는 오늘 학교를 갔어, 그리고 축구를 했는데 내가 공을 잡는 순간 수업이 끝났어 라고 할 때 N=2 이라면 잡는 순간 , 끝났어 라는 단어를 통해 __에 들어갈 단어를 예측하는데 사실 이 단어를 예측하기 위해서 중요한건 앞에 학교라는 단어일 것이다. 이처럼 예측하려는 단어와 연관이 있는것이 문장 앞에 있을 경우 N-gram의 경우는 예측성능이 떨어질 것 이다. 즉 long-term dependency가 발생하게..

AI/NLP 2023.12.27

NLP- LM(N-gram)

NLP에서 뗼레야 뗼 수 없는것이 바로 LM(Language Model) 입니다. 현재는 LLM(Large Language Model) 이죠 LM LM의 핵심개념은 어떤한 문장이 주어졌을 때 얼마나 그럴 듯 하냐를 확률로 나타내는 것입니다. 이렇듯 각각의 단어가 나올 확률을 곱하는 겁니다. (단어별 빈도수를 전체 단어수로 나누어 줍니다) 하지만 이런 경우의 문제점은 단어간의 순서와 상관관계를 고려하지 않는다는 점 입니다. 이를 해결하기 위해 조건부 확률 개념이 사용됩니다. 이건 2-gram 이라는 모델로 2개의 단어간의 관계를 감안한 확률입니다. LM ,n-gram의 한계 1. 못 본 단어의 조합, OVV( Out-Of-Vocabulary) LM은 문장간의 단어들을 통해 학습을 하는데 학습데이터에 예를 ..

AI/NLP 2023.12.21

NLP - word embedding

이전 글에 나오는 NLP 방법론은 단어간의 순서나 관계를 학습하기 어렵다는 단점이 있었습니다. 이번 글에서는 단어 간의 관계를 학습해 백터에 저장하는 word embedding 모델에 대해 알아보고자 한다. word embedding 워드임베딩이란 기존에 원핫백터로 상당히 많은 차원을 문제점을 해결하는 방법입니다.(단어가 많으면 많을 수록 몇천 또는 몇만까지 커질 수 있습니다). 또한 대부분의 값이 1 아니면 0 으로 채워져 있기 때문에 비효율적이기도 합니다. 워드임베딩은 차원을 압축시켜 아무리 단어가 많고, 문장이 길어도 사전에 세팅한 차원으로 압축시켜줍니다. word2vec 워드임베딩을 위한 가장 유명한 방법 중 하나 입니다. 앞서 원핫백터는 단어간의 유의미한 유사도를 계산할 수 없다는 단점이 있었는..

AI/NLP 2023.12.20

NLP - BoW , N-gram, TF-IDF

Bag-of-words(BoW) 원-핫 백터는 단어를 한개의 column 백터로 표현하는데, 이러한 백터들을 합하여 문장으로 표현하는 것 BoW 백터의 문제점은 단어의 순서를 고려하지 않는다. 하나의 백터로 뭉개서 표현하기때문입니다. N-gram BoW의 문제점은 단어의 순서를 고려하지 않는다는 점입니다. 그래서 단어의 순서를 조금 신경써야하지 않을까 해서 나온게 N-gram 입니다. 예를 들어 "I love studying machine learning" 이라는 문장에서 N=2로 하면 [I love, love studying, studying machine, machine learning] 이렇게 총 4개로 나오며, 조금은 더 단어 사이의 순서를 신경쓰는 구조입니다. TF-IDF TF- IDF 는 te..

AI/NLP 2023.12.20

MYSQL_ 트랜잭션 격리수준(isolation level)

격리수준이란?격리수준은 여러 트랜잭션이 동시에 처리 될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용하지 말지를 결졍하는것이다.격리수준은 크게 4 가지로 아래로 갈 수록 격리수준이 더욱 높아 진다.read uncommittedread committedrepeatable readserializable실무에서는 첫번째인 read uncommited는 많이 사용되지 않고, 최고 격리수준인 serializable또한 잘 사용되지 않는다. 오라클같은 DBMS에서는 주로 read committed  수준을 많이 허용하며, mysql 에서는 repeatable read를 주로 사용한다.   1. read uncommited read unc..

SQL 2023.10.20

MySQL_ InnoDB 버퍼 풀

InnoDB는 mysql 내에서 스토리지 엔진에 속하며 그 중 버퍼 풀은 가장 핵심적인 부분이다.디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해 두는 공간으로, 이를 활용하면 쿼리 속도를 단축시킬 수 있다. 버퍼풀의 크기 설정 일반적으로 전체 물리 메모리의 80%  정도를 InnoDB의 버퍼 풀로 설정하라는 내용이 있는데 사실 그렇게 단순하게 설정해서는 안된다. 다행히 Mysql 5.7 버전부터는 InnoDB 버퍼 풀의 크기를 동적으로 조절할 수 있게 되었다. 가능하면 버퍼풀의 크기를 적절한 작은 값으로 설정해서 조금씩 상황을 봐 가면서 증가시키는 방법이 가장 나을것 같다.  권장사항운영체제의 전체 메모리 공간이 8GB 미만 이라면 50% 정도만 InnoDB 버퍼풀로 ..

SQL 2023.10.18

MYSQL_ Thread, 쿼리 실행 구조

Mysql Thread 구조 Mysql 서버는 Mysql 엔진과 스토리지 엔진으로 스레드 기반으로 동작한다. 크게 Foreground thread 와 background thread로 구분된다. Foreground thread - 사용자 요청을 처리하며, 접솓된 클라이언트 수 만큼 존재 한다. - connection이 종료되면 Thread cache로 돌아가며, 일정 수의 Tread cache가 있을 경우 종료 시킨다. - MyISAM의 경우 디스크 쓰기 작업도 여기서 진행한다. Background thead - InnoDB 버퍼 풀의 데이터를 디스크에 기록 - 데이터를 버포로 읽어오고 잠금, 데드락을 모니터링 한다. - 로그를 디스크로 기록한다. 쿼리 실행 구조 다음은 쿼리의 실행 구조를 간단하게 표현..

SQL 2023.10.18