분류 전체보기 55

LLM - Transformer (2017)

1. 개요 LSTM(+ Seq2Seq)의 경우 많은 개선점이 있었음에도 long-term dependency에 취약하다는 단점 어텐션을 RNN의 보정을 위한 용도가 아닌 어텐션만으로 인코더와 디코더를 만듦 RNN을 사용하지 않기 때문에 입력을 순차적으로 받지 않고 한 번에 사용 2. 입력 - 포지셔널 인코딩 RNN이 자연어 처리에서 유용했던 이유는 단어의 위치에 따라 단어를 순차적으로 입력받아서 처리하기 때문 트랜스포머는 단어의 위치 정보를 얻기 위해서 각 단어의 임베딩 벡터에 위치 정보들을 더하여 모델의 입력으로 사용 짝수 인덱스에는 사인 함수, 홀수 인덱스에는 코사인 함수를 적용하여 위치 정보 저장 3. 인코딩 3-1. Multi-Head Attention 하나의 word를 아래와 같은 구조로 계산 ..

AI 2022.09.04

Attention Mechanism (Dot-Product Attention) (2015)

1. 전체 구조 기존 Seq2Seq는 시점 t에서 출력 단어를 예측하기 위해서 디코더의 셀은 두 개의 입력값이 필요 여기에 하나의 값을 더해서 예측 a. 시점 t-1의 Hidden state b. 시점 t-1에 나온 출력 c. 어텐션 값(Attention Value) 2. Attention Score (, je는 같은 과정을 거쳐 현재 suis에 대해 진행한다고 가정) 어텐션 스코어란 현재 디코더의 시점 t에서 단어를 예측하기 위해, 인코더의 모든 Hidden state 각각이 디코더의 현 시점의 state와 얼마나 유사한지를 판단하는 스코어값 모든 Input hidden state에 대하여 아래와 같이 내적하여 값을 구함 3. Attention Distribution using Softmax Softm..

AI 2022.09.04

Seq2Seq (Encoder-Decoder Model) (2014)

1. 구조 1-1. 전체 구조: 2개의 RNN Long term dependency problem을 가지기 때문에 LSTM을 선택 1-2. Encoder: input 시퀀스를 하나의 context vector로 변환 1-3. Decoder: 디코더 - RNNLM(Recurrent Neural Network Language Model, RNNLM) 가변적인 길이의 데이터를 다루기 위해 사용 예측 과정에서 이전 시점의 출력을 현재 시점의 입력으로 함 EOS가 아웃풋으로 나오게 되면 종료 Training 시에는 빠른 학습을 위하여 Teacher forcing 방식 사용 (Output이 틀린 경우에 학습에 방해가 됨) 2. 한계 하나의 고정된 크기의 벡터에 모든 정보를 압축해서 정보 손실이 발생 RNN의 고질적..

AI 2022.09.04

LSTM (Long Short-Term Memory)

기존 RNN( https://jw92.tistory.com/23 )의 문제점을 해결하기 위해 나온 것이 LSTM (Long Short-Term Memory) 1. 구조 LSTM의 핵심은 셀 스테이트(The cell state) 셀 스테이트는 아주 마이너한 계산을 거쳐 다음 셀로 이동, 이를 이용해 정보의 장기기억이 가능해짐 장기 기억과 단기 기억을 모두 고려 forget gate layer에서 이전 시간에 있던 Input data의 영향력을 결정 Input gate layer에서 현재 시간 t에서 받은 Input data중 어떤 것을 cell state에 저장할 것인지를 정한다 Cell state 업데이트 (기존 정보를 잊어버리기로 했고, 그 대신 정보를 cell state에 더하는 과정) Output ..

AI 2022.09.04

Elasticsearch (엘라스틱서치)의 Indexing 방식 - Inverted Index

Indexing 이란 문서(DOC)들의 내용 중에서 검색하고자 하는 대상들을 쉽고 빠르게 찾을 수 있는 자료구조로 배치하는 것 전통적인 RDBMS 에서는 like 검색을 사용하기 때문에 데이터가 늘어날수록 검색해야 할 대상이 늘어나 시간도 오래 걸리고, row 안의 내용을 모두 읽어야 하기 때문에 기본적으로 속도가 느림.Elasticsearch는 데이터를 저장할 때 다음과 같이 역 인덱스(inverted index)라는 구조를 만들어 저장   Elasticsearch에서는 추출된 각 키워드를 텀(term) 이라고 부르며 이렇게 Inverted Index가 있으면 term을 포함하고 있는 Documents의 id를 바로 얻어올 수 있다. 이러한 특성 떄문에 Elasticsearch에서는 저장이 아닌 색인(..

Elasticsearch (엘라스틱서치)의 Search Process

Query then Fetch 와 DFS Query then Fetch를 주로 사용. 1. DFS Query then Fetch Elastic Search에서 Default로 제공하는 검색(Search) 로직 - Query Phase : 인덱스를 구성하는 샤드들로부터 DOC들을 검색 - Fetch Phase : Query Phase에서 검색된 DOC들의 스코어를 정렬하여 응답할 DOC들을 선정하고 인덱스 샤드로 부터 실제 DOC 데이터를 추출 1-1. Example 1) Cluster Environment - 클러스터는 4개의 데이터 노드로 구성 - 검색 서비스를 제공하는 인덱스는 2개의 샤드(P0, P1)로 구성되어 Node 2, Node 4에 배치되어 있는 상황 - 현재 생성한 인덱스의 Replica..

Elasticsearch (엘라스틱서치)의 Indexing Process

Step 1. ES는 색인 요청받은 Data를 Inverted Index Data로 변환하여 Indexing Buffer에 기록 (Indexing Buffer는 Lucene 용어로 In-memory buffer) Inverted Index - https://jw92.tistory.com/27 또한 색인을 위한 Data는 Log형태(Index Operation)로 Translog 파일에 기록 Translog는 허용 용량(Default 512Mb)이 초과할 경우 가장 오래된 파일부터 삭제하며 허용 시간(Default 12h)이 지나도 삭제됨 Translog 데이터는 setting에 따라 index request마다 기록할지(default), interval에 따라 async로 기록할지 설정 가능 본 Step..

RNN (Recurrent Neural Network)

개요 Recurrent Neural Network 기존의 뉴럴 네트워크는 과거의 데이터(아웃풋)가 미래에 영향을 줄 수 없는 구조 Ex) 문장을 생성하는 모델, (1)The clouds (2)are (3)in (4)the sky 기존의 Neural Network 시계열 데이터란 시간 축을 중심으로 현재 시간의 데이터가 앞, 뒤 시간의 데이터와 연관 관계를 가지고 있는 데이터를 의미 RNN은 시계열 데이터 등의 맥락을 고려해 학습 이전 입력의 연산 결과가 현재 입력데이터와 함께 고려됨 문제점 RNN은 장기 의존성(Long Term Dependency) 문제를 가짐 짧은 기간에 의존하는 RNN은 과거 데이터를 기반으로 효율적으로 학습 더 많은 문맥을 필요로 하는 경우 학습하기가 매우 어려움 (Vanishin..

AI 2022.01.12

[알고리즘] 정렬

정렬 일반적으로 시간복잡도 O(nlogn)인 정렬을 사용 특수한 상황인 경우 상황에 따라 O(n)에 근접한 알고리즘이 사용될 수 있습니다. O(n^2) 인 알고리즘 Bubble sort 앞에서부터 인접한 2개씩 크기를 비교하여 왼쪽에 있는 데이터가 오른쪽보다 크면 Swap. 1. 처음에는 n과 n-1을 비교하는 것까지 하고 (그러면 가장 큰 수가 맨 뒤로 간다.) 2. 그 다음에 n-1과 n-2를 비교하는 것 까지 하고 (그러면 2번째로 큰 수가 뒤에서 2번째로 간다.) 3. n-2와 n-3을 비교… 1과 2를 비교하는 것까지 반복한다. 이렇게 하면 비교연산을 n(n-1)/2 번 수행하면 된다. (최악의 경우 이렇고, 이미 정렬이 되어 있다면 n번 수행하면 된다) Selection sort 1. 1번째 ..

알고리즘 2021.05.14
반응형