* Python을 기준으로 합니다 그리디 (Greedy) - 개념 그리디 전략 : 각 단계에서 최적의 결과만을 선택하여 문제를 해결하는 방식 이전 선택이 이후 선택에 영향을 주지 않으면서, 부분 문제에 대한 해가 전체 문제의 최적 해로 구성되는 Greedy Choice Property를 가지는 최적 부분 구조 문제에 적용 가능 그리디 적용 가능 예시 : 다익스트라, 분할 가능 배낭 문제, 거스름돈 나누기, 회의실 배정 문제, 신장 트리 (프림, 크루스칼 알고리즘) 그리디를 적용할 수 없는 경우 : 0-1 배낭 문제, 외판원 순회, 이진 트리의 최적 합 경로 - 구현 1. 분할 가능 배낭 문제 무게 $w$와 가치 $v$인 $n$개의 물건들을 배낭에 넣을 때, 물건들의 가치의 합이 최대가 되도록 배낭을 채우..
VoiceFlow: Efficient Text-to-Speech with Rectified Flow Matching Text-to-Speech에서 diffusion model은 우수한 성능을 보이고 있지만 sampling complexity로 인해 비효율적임 VoiceFlow 제한된 sampling step으로도 고품질의 합성을 수행할 수 있는 rectified flow matching을 활용 Text input을 condition으로 하여 mel-spectrogram을 ordinary differential equation을 통해 추정 Rectified flow는 효율적인 합성을 위해 sampling trajectory를 straighten 함 논문 (ICASSP 2024) : Paper Link 1...
Universal MelGAN: A Robust Neural Vocoder for High-Fidelity Waveform Generation in Multiple Domains 여러 domain에서 high-fidelity의 음성을 합성할 수 있는 vocoder가 필요함 Universal MelGAN MelGAN-based structure에 multi-resolution spectrogram discriminator를 추가하여 생성된 waveform의 spectral resolution을 향상 이를 통해 large footprint 모델의 high-frequency band에서의 over-smoothing 문제를 방지 논문 (ICASSP 2021) : Paper Link 1. Introduction ..
* Python을 기준으로 합니다 백트래킹 (Backtracking) - 개념 백트래킹 : 가능성이 없는 해는 포기하여 되돌아가고, 가능성이 높은 해결책만을 탐색하는 방법 여러 제약 조건을 만족하는 상태를 탐색해야 하는 제약 충족 문제에 적합한 방식 대표적으로 DFS는 더 이상 탐색할 경로가 없으면 (해가 없으면) 되돌아가서 다른 깊이를 탐색하는 방식으로 동작하므로 백트래킹의 예시로 볼 수 있음 - 즉, 백트래킹은 DFS를 기본 골격으로 함 백트래킹의 동작 가능한 해들의 후보 집합을 정의하고 정의된 집합을 그래프로 표현함 - 이를 상태 공간 트리 (state space tree)라고 함 유망 함수를 정의하고, 상태 공간 트리를 루트에서부터 DFS로 탐색하면서, 유망 함수에 따라 방문한 노드가 정답이 아니..
LightCodec: A High Fidelity Neural Audio Codec with Low Computation ComplexityNeural codec은 높은 computational complexity의 한계를 가지고 있음- 즉, complexity를 줄이는 경우 성능이 현저하게 저하되므로 low computation resource에서 사용하기 어려움LightCodec높은 품질을 유지하면서 낮은 complexity를 가지는 neural audio codecFrequency band division에 기반한 structure를 도입하고 Within Band-Across Band Interaction (WBABI) module을 통해 subband에 대한 feature를 학습하도록 함Quant..
* Python을 기준으로 합니다 재귀 (Recursion), 분할 정복 (Divide and Conquer) - 개념 재귀 : 자기 자신을 호출하는 것 재귀를 활용하면 함수는 시스템적으로 스택에 누적되는데, 해당 스택의 용량에는 한계가 있으므로 일정 횟수 이상을 넘어가면 overflow가 발생함 - Python은 일반적으로 1000의 재귀 상한을 가짐 (`sys.setrecursionlimit()`를 통해 재귀 상한을 늘릴 수 있음) 반복문 대신 재귀를 사용하는 이유 점화식이 존재하는 경우 (e.g. 피보나치 수열, 파도반 수열 등) 가독성 향상을 위해 (e.g. DFS) 변수 사용을 줄이기 위해 재귀의 사용 문제를 해결할 수 있는 점화식 (상태)에 대한 정확한 정의가 필요함 재귀 호출이 멈추고 값이 ..
AudioDec: An Open-Source Streaming High-Fidelity Neural Audio Codec Telecommunication과 같은 live application에 적합한 audio codec은 다음의 속성을 만족해야 함 - Compression : signal을 transmit 하는데 필요한 bitrate는 가능한 낮아야 함 - Latency : encoding, decoding은 최소한의 delay만으로 수행되어야 함 - Reconstruction quality of signal AudioDec 위 3가지 property를 모두 만족하는 streamable, real-time neural audio codec 6ms 미만의 GPU에서 12kbps 만으로 동작하면서 고품질의..
* Python을 기준으로 합니다 최단 경로 - 플로이드-워셜 (Floyd-Warshall) 알고리즘 - 개념 플로이드-워셜 알고리즘 : 최단 경로를 구하는 알고리즘 중 하나로, 존재하는 모든 노드에서 다른 노드로의 최단 경로를 모두 계산해야 하는 경우 사용함 다익스트라와 달리 플로이드-워셜은 한 지점에서의 최단 경로가 아닌 모든 노드로의 경로를 반환함 - 이때 벨만-포드와 비슷하게 음의 가중치가 있는 경우에서도 사용가능 하지만, $O(n^{3})$의 time complexity를 소모하는 단점이 있음 플로이드-워셜 알고리즘은 다이나믹 프로그래밍으로써 구현되고, 다음의 점화식을 가짐: (Eq. 1) $D_{ab} = \min(D_{ab}, D_{ak}+D_{kb})$ - 시작 노드 $A$에서 노드 $K$..
BDDM: Bilateral Denoising Diffusion Models for Fast and High-Quality Speech SynthesisDiffusion model은 우수한 합성 품질을 보이고 있지만 효율적인 sampling의 어려움이 있음Bilateral Denoising Diffusion Model (BDDM)Bilateral modeling objective로 train 할 수 있는 schedule network와 score network를 사용하여 forward/reverse process를 parameterize 하는 bilateral denoising diffusion model제안된 surrogate objective는 기존 surrogate보다 tighter 한 log ma..