본문 바로가기

분류 전체보기54

[알고리즘] DAG 최단 경로 문제(DAG Shortest Path Problem) Directed Acyclic Graph(DAG)DAG란 그래프 연결에 방향이 있고(Directed), 한 곳에서 순환이 발생하지 않는(Acyclic) 그래프(Graph)를 의미합니다.Edge RelaxationDAG Shortest Path 문제를 풀기 위해 Edge Relaxation 개념이 필요합니다. Edge Relaxation이란, 가중치가 있는 그래프(Weighted Graph)에서, 각 edge에 배정되어 있는 만큼의 가중치를 더해가며 탐색할 때, 더 나은(작은) 경로의 가중치가 있다면 그 값으로 update하는 것을 의미합니다. 말이 어렵게 느껴지는데 굉장히 쉬운 개념입니다. 결국 더 나은 대안으로 수정한다는 의미입니다. 그리고 앞으로 그래프에서 이 작업을 Relax라고 부릅니다.그림으로 .. 2023. 12. 1.
[생성 모델] Wasserstein 거리(Wasserstein Distance(Earth-Mover Distance)) 거리를 재는 방식은 유클리드 거리(Euclidean Distance), 맨하튼 거리(Manhattan Distance) 등 많습니다.거리를 잰다는 것은 두 점 사이의 거리를 재는 것을 말하기도 하지만, 두 확률 분포 사이의 거리를 재는 것을 말하기도 합니다.Wasserstein Distance 또한 거리를 나타내는 것 중 한 가지 방식입니다. 본 내용에서는 Wasserstein Distance를 이용하여 두 확률 분포(Probability Distribution)의 거리를 재보겠습니다.  Distances(Metric) vs Divergence P와 Q를 서로 다른 확률분포라고 둘 때, 확률분포에서의 Distance 또는 Metric은 아래의 세가지 조건을 모두 만족합니다.Divergence는 Dista.. 2023. 11. 28.
[논문정리][GAN] DCGAN: Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks *본 내용은 논문의 상세한 분석이 아닌, 간단한 복기용 정리입니다. DCGAN은 2016년에 ICLR에서 다루어졌고, Facebook Research가 발표했습니다. Development Process of GAN 이 그림은 GAN의 발전 과정에 대한 그림입니다. 보시면 GAN의 개념이 나온 뒤에 안정성 문제가 심각해 응용이 많이 생길 수 없었는데요. GAN에 Convolution 개념을 도입하여 DCGAN을 탄생시킴으로써 GAN이 폭발적으로 성장할 수 있게 되었습니다. 기본적으로 여기 보이시는 모델 거의 모두 Convolution을 기반으로 하고 있고요. 여기서 이제 저번 시간에 발표한 Conditional 조건부 개념이 들어가냐, 들어가지 않냐, 등의 기준으로 GAN의 종류를 나눈 표입니다. Why .. 2023. 11. 20.
[논문정리][GAN] Conditional GAN: Conditional Generative Adversarial Nets *본 내용은 논문의 상세한 분석이 아닌, 간단한 복기용 정리입니다. GAN Architecture 우선 일반 GAN부터 보자면, 목적함수는 다음과 같습니다. 왼쪽 판별자 박스 먼저 보겠습니다. P_data는 원본 데이터의 분포를 의미하는데요. 이 원본 데이터 중에서 한 개의 데이터인 x를 뽑아, D라고 나와있는 판별자에 이 하나의 이미지인 x를 넣습니다. 그럼 Discriminator가 x에 대해 판별을 합니다. 판별자는 진짜 이미지에는 1, 가짜 이미지에는 0을 부여하는데요. 그래서 판별자의 아웃풋은 0에서 1 사이의 확률값으로 나오고, 그것에 log를 취한 것의 기댓값을 구합니다. 오른쪽 생성자에서는 p_z에서 하나의 노이즈 데이터인 z를 뽑습니다. 이 p_z는 정규분포나 Uniform 분포를 주로 .. 2023. 11. 14.
[알고리즘] 깊이 우선 탐색(DFS) - Python 깊이 우선 탐색 Depth-First Search깊이 우선 탐색(DFS)이란 그래프를 탐색하는 방법의 일종으로, root node에서 시작해서 깊이 방향(Depth)으로 확장하는 방식의 탐색을 말합니다. 깊이 방향이란, 한 노드에서 시작해 여러개의 다음 노드로 펼쳐 나간 방식과 달리 한 노드에서 다음 하나의 노드로 들어가는 방향을 말합니다. 미로찾기의 예시를 떠올리면 DFS의 탐색 방향을 이해하기 쉽습니다.아래 그림1을 보겠습니다. DFS로 그래프를 탐색하면, 아래 그림의 보라색 경로와 같이 탐색하게 됩니다. S1에서 출발하여 a,b,c,d만 순회하고 끝이 납니다. 하지만 c와 f가 남았으므로 S3에서 다시 탐색을 시작합니다. 그리고 c에서 e와 f중 아직 방문하지 않은 f노드를 탐색함으로써 DFS가 끝.. 2023. 11. 10.