AI 16

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

[Python] 네이버 API을 활용한 검색 데이터 분석 (2)

이전에는 네이버 오픈 api를 통해 농협, 신한,국민은행의 네이버 검색량을 비교해보았습니다 그 결과 세가지 은행이 비슷한 검색량 추이를 보이고 있습니다. 그 중 가장 많은 검색량은 2021년 1월이 가장 높게 나타난 것을 볼 수 있습니다. 그러면 2021년 1월중에서 과연 어떤 날이 가장 분석량이 많았는지 한 번 확인해보겠습니다 네이버 디벨로퍼에 보면 이렇게 일간, 주간, 월간으로 검색량을 확인할 수 있다고 가이드가 나와있습니다! 이렇게 body, timeUnit에 기존에는 월별 검색량을 확인하기 위해 month를 넣었다면, 이번에는 일별로 확인하기 위해 date를 입력하면 됩니다 1 2 3 4 body = "{\"startDate\":\"2021-01-01\",\"endDate\":\"2021-01-3..

AI/ETC 2023.09.16

[Python] 네이버 API을 활용한 검색 데이터 분석

데이터 분석에 앞서 가장 중요한 시각화를 해보고자 네이버 오픈 api를 사용해보았다 1 2 3 4 5 6 import urllib.request import json client_id = "-" client_secret = "-" url = "https://openapi.naver.com/v1/datalab/search"; cs 일단 네이버 Developer를 통해서 api 승인 번호를 받을 수 있다. 개발자센터에 관련 양식 가이드가 엄청 자세히 나와 있어, 그 가이드에 맞춰 찾고싶은것을 작성하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 body = "{\"startDate\":\"2020-01-01\",\"endDate\":\"2022-02-28\",\"timeUnit\":\"..

AI/ETC 2023.09.16

오차 역전파의 개념

딥러닝의 가장 기본이 되고, 동시에 딥러닝의 전부(?)라 할 수 있는 오차 역전파에 대해 알아보고자 한다. 오차 역전파를 가장 잘 설명 할 수 있는 그림이 아닐까 싶다. 오차역전파는 쉽게 말해서 출력값의 정확도를 높이기 위해 실제값과 비교하여 가중치를 변경하는 작업이다. 결국 딥러닝은 각 변수별 가중치로 예측, 분류가 이뤄지는데 이 가중치를 학습할때마다 실제 값과 비교하여 튜닝 하는 것이다. 그 결과 각각의 레이어별, 가중치가 적절하게 설정이 되면 예측, 분류가 잘 되는 모델이 되는 것이다. 오차역전파의 순서는 다음과 같다. 순서 임의의 초기 가중치를 레이어를 걸쳐 결과 계산 계산결과와 실제 예측하고자 하는 값 사이의 오차 계산 가중치 업데이트 위의 3가지 단계를 반복 이런 순서를 최소몇십번 몇백번 몇천..

AI/Concept 2023.08.24

A Prediction Approach for Stock MarketVolatility Based on Time Series Data

이번에는 논문 리뷰가 아닌 Survey 리뷰를 해보려고 한다. 논문 제목은 "A Prediction Approach for Stock MarketVolatility Based on Time Series Data" 으로 stock price time series 관련 해서 간단한 survey를 선택했다. ABSTRACT 주식시장은 매우 복잡한 금융시스템(매우 민감하며 빠르게 변한다) 이라고 하면서, 주식가격의 예측은 궁긍적으로 높은 수익률 가져오기 위함이라고 언급하고 있다.본 연구는 인도 주식시장의 시계열 데이터를 분석하고 미래 주식을 효율적으로 예측할 수 있는 통계적 모델을 구축하고자 한다. 통계적 모델로 구축하고자 하여 LSTM과 같은 NN 알고리즘이 아닌 ARIMA 라는 통계 모델을 사용하였다. TH..

AI/Time series 2023.07.09