분류 전체보기
-
LLM 트랜스포머 동작 흐름 (2) DecodingMachine Learning 2025. 6. 20. 21:38
개요디코더의 입력Decoder Self-Attention $(Masked)$인코더의 출력과 cross-attention $(encoder-decoder attention)$FFN단어 생성먼저 인코더의 출력을 간단하게 정리하면 각 입력 토큰의 문맥이 반영된 벡터들이고, 각 벡터가 특정 차원$(768)$으로 형태로 존재한다.1. 디코더의 입력디코더의 입력은 디코더의 결과가 다시 입력으로 들어가는 구조이고,최초의 입력은 시작 토큰이 들어가게 된다.학습 시 $(teacher forcing)$: 정답 문장을 한 토큰씩 시프트해서 입력Target: 나는 피자를 좋아해디코더 입력: 나는 피자를 ...디코더 출력: 나는 피자를 좋아해예측은 예측대로 해서 오차 비교해서 파라미터를 학습하고, 다음 토큰의 입력은 모델 예측..
-
LLM 트랜스포머 동작 흐름 (1) EncodingMachine Learning 2025. 5. 18. 00:22
개요토크나이징 및 임베딩셀프 어텐션멀티 헤드 어텐션Positional EncodingResidualFFN1. 토크나이징 및 임베딩자연어가 입력되면 가장 먼저 토큰 단위로 쪼갠다. 이 과정을 토크나이징이라고 한다.각 토큰은 고유 ID를 가지게 된다.언어별로 다르지만 영어는 보통 1단어 당 1~2토큰으로 표현되고,한글은 1단어가 더 많은 토큰으로 쪼개지는 경우가 많다.쪼개진 토큰은 임베딩 벡터로 변환된다.비슷한 의미의 토큰이 비슷한 벡터로 변환되는데, 이는 임베딩 모델을 통해서 이뤄진다.임베딩 모델은 king - queen, man - woman의 차이가 유사하게,king - man , queen - woman 의 벡터가 유사하도록 학습된다. 토큰 ID를 가지고 임베딩 벡터로 변환하기 때문에 호환이 안 되는..
-
하둡 hdfs 정리카테고리 없음 2025. 2. 15. 16:39
하둡의 내부 설계까지는 아니더라도 사용자 입장에서 인지해야 할 핵심 개념에 대해 정리하고,실제로 어떤 효용을 주는지까지 정리해본다. 1. HDFSHadoop Distributed File System (분산 파일 시스템) 전통적인 파일 시스템과 유사한 계층을 가지지만, 실제 데이터가 저장되는 물리 머신(노드)은 여러 대로 분산되어 있음.여러 대로 분산하여 구성할 수 있기 때문에 대량의 데이터를 저장할 수 있음. 동적으로 새로운 노드를 추가할 수도 있음. (단일 서버 스토리지에는 한계가 있는데 빅데이터를 어떻게 저장하지? -> 분산 저장하자) 주요 컴포넌트는 네임노드, 데이터노드가 있음.네임노드는 메타데이터를 관리하는 중앙서버 역할데이터노드는 실제 데이터를 저장하는 노드. 파일을 일정 크기(기본 128MB..
-
네트워크 유량Problem Solving 2024. 9. 21. 17:47
정의1. 컷 : 그래프를 2개의 서로 다른 집합으로 나누는 것.가중치가 없는 그래프 - 자른 간선의 개수가 cut의 비용.가중치가 있는 그래프 - 가중치의 합이 cut의 비용. 2. 유량 각 간선은 용량을 가지고 있고, 해당 간선으로 얼마나 많은 유량이 흐를 수 있는지이다.용량 - 각 간선에 할당된 유량은 그 간선의 용량을 초과할 수 없다.유량 보존 - 출발점과 도착점을 제외한 모든 정점에서는 들어오는 유량과 나가는 유량이 같다. 3. 최대 유량 최소 컷 정리 (MFMC) 최대 유량 - 네트워크 출발점에서 도착점으로 보낼 수 있는 가장 큰 유량최소 컷 - 간선을 가장 적게 자를 때 혹은 간선의 가중치 합이 가장 적을 때 용량의 최소합 핵심 - 정점 A와 B를 분리시키는 최소 컷의 비용은 A에서 B로 흐를..
-
그래프 알고리즘 정리Problem Solving 2024. 9. 8. 18:06
1. DFS 스패닝 트리 DFS 탐색하면서 탐색 순서에 따른 간선 분류와 만들어지는 트리 트리 간선 : 스패닝 트리에 포함되는 간선순방향 간선 : 선조에서 자손으로 연결되는 간선이지만 트리간선이 아닌 간선역방향 간선 : 자손에서 선조로 연결되는 간선 2. 절단점 찾기정의절단점 : 무향그래프에서 어떤 점의 인접한 간선을 모두 지웠을 때 컴포넌트가 두 개 이상으로 나눠지는 점 기차역, 라우터 등 절단점이 있으면 해당 점이 고장나면 전체 망이 고장난다. 절단점 찾는 방법 : DFS 스패닝 트리에서 어떤 정점 u의 서브트리 중에 u의 선조로 가는 역방향 간선이 하나라도 존재하지 않으면 절단점이 된다.-> 그럼 u의 1,2,3 서브트리 중 1이 선조로 가고 2가 1로 3이 2로 가면 u는 절단점인가? -> 아니..
-
트라이, 아호 코라식Problem Solving 2024. 8. 11. 13:56
트라이문자열 집합을 트리 형태로 저장하는 자료구조다.각 노드에 26개의 알파벳 노드를 배열로 저장한다. int toNumber(char ch) { return ch - ‘A’; }struct TrieNode { TrieNode* children[26]; bool terminal; TrieNode() : terminal(false) { memset(children, 0, sizeof(children)); } ~TrieNode() { // destructor 소멸자 for(int i=0; i insert(key + 1); // key+1은 내 다음 문자의 포인터 가르킴 } } TrieNode* find(const char* key) { // ke..
-
유니온 파인드 최적화Problem Solving 2024. 8. 11. 13:55
여러 최적화 방법이 있겠지만 내가 배운 최적화 3가지 작성 1. find에서 수장 지정하면서 재귀당연하게 사용하고 있는 방법 int find(int x) { return u[x] u[x] 에 내가 찾은 수장을 지정하면서 복귀한다. 2. 합치는 연산 uni 최적화트리의 높이를 저장하는 rank 배열을 하나 더 만들고 트리가 낮은 집합을 큰 집합 아래로 가게 한다만약 크기가 같다면 rank를 +1 한다 이러면 find 시에 최악에 O(n)을 피할 수 있음 if(rank[u] > rank[v]) swap(u, v);parent[u] = v;if (rank[u] == rank[v]) ++rank[v]; 3. 집합의 크기를 음수로 저장하기 유니온파인드 -1로 두고 수장은 음수 이면서 집합의 크기를 담기 ..
-
세그먼트 트리, 펜윅 트리Problem Solving 2024. 8. 11. 13:30
세그먼트 트리세그먼트 트리 = 구간의 어떤 결과를 트리 노드에 저장해놓는 자료구조 형태 세그먼트 트리 = 구간 트리 = 꽉 찬 이진 트리-> 배열로 표현하는 것이 효율적이다.-> i번째 노드의 왼쪽, 오른쪽 자손은 각각 2*i, 2*i +1이 된다 다양한 형태의 문제를 세그 트리로 풀어나갈 수 있다.구간의 최소값, 구간의 최대값, 구간 합, 구간의 최소치 두개, 정렬된 배열에서 구간의 최대 출현 빈도 구간의 최대 출현 빈도는 노드를 다음과 같이 응용 가능하다.단순히 왼쪽, 오른쪽 자식의 결과 중 최대값을 취해서 만들 수 있으면 좋겠지만왼 : {1,1,1,2,2} , 오 : {2,2,3,3,3} 이면 합치는 데에 정보가 더 필요하다.각 구간의 양쪽 끝 구간의 숫자와 빈도를 같이 저장하여 합치는 데에 사..