분류 전체보기 53

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

[알고리즘][자료구조] Graph (그래프)

3번째 주제 그래프입니다. 여기서는 간단한 Graph와 BFS DFS에 대해 보도록 하겠습니다. 그래프 노드와 엣지로 이루어짐 그래프를 표현하는 방식에는 인접 행렬 (Adjacent Matrix)와 인접 리스트 (Adjacent Matrix)가 있습니다. 코드 구현 그래프 순회(탐색) 그래프를 순회하면서 모든 노드를 빠짐없이 탐색하는 것. BFS와 DFS 방식이 있습니다. DFS를 먼저 살펴보면 DFS는 시작 노드의 한 방향으로 갈 수 있는 경로가 있는 곳까지 깊이 탐색을 해 가다가 더 이상 갈 곳이 없으면, 가장 마지막에 만났던 갈림길이 있는 노드로 돌아와서 다른 방향의 노드로 탐색을 계속 진행하여 모든 노드를 방문하는 순회 방법입니다. -> 새로 탐색한 것을 먼저 방문하고, 그게 없는 경우 마지막에 ..

[알고리즘][자료구조] Tree (트리)

2번째 주제 트리입니다. Tree 그래프의 일종으로 Node가 계층 관계로 1:n 관계를 가지는 자료구조 기본 Tree에서는 용어 정리 정도만. 노드: 각 원소 엣지: Node를 연결하는 선, 부모 노드와 자식 노드를 연결한다. 레벨: 루트에서 노드에 이르는 엣지의 값 (루트는 0) 높이: 노드의 레벨 중 가장 큰 값 루트 노드: 시작원소 형제 노드: 같은 부모를 가지는 Node들 조상 노드: 루트까지의 경로에 있는 모든 노드들 서브 트리: 부모 노드와의 엣지를 끊었을 떄 생기는 트리 자손 노드: 서브 트리에 있는 하위 레벨의 노드들 단말(leaf) 노드: 자식 노드가 없는 노드 노드의 차수(degree): 자식 노드의 개수 Binary Tree 모든 노드가 자식 트리를 최대 2개까지만 가질 수 있는 트..

반응형