[ Neural Feature Extraction of signal data ]Permalink
기존의 (NN을 사용하지 않은) Feature Extraction 방법은 주로 “지식/공식”에 기반한 deterministic한 형태의 추출 방법이었다면, 이번에 다룰 Neural Featrue Extraction은 “특정 목적을 수행하기 위해 적절한” feature를 뽑아내기 위한 방법이다. (즉, task에 따라 같은 data에서도 feature가 다르게 뽑힐 수 있는 non-deterministic한 방법이다 )
Neural Feature Extraction의 대표적인 2가지 방법은 아래와 같다.
- 1) Wav2Vec
- 2) SincNet ( + PASE )
이번 포스트에서는 SincNet 에 대해서 다룰 것이다.
1. SincNetPermalink
(1) 구성Permalink
- 첫 번째 layer : sinc function ( sin(x)/x )
-
그 이후 layer : 일반적인 NN과 유사
- Task : 화자가 누구인지 맞추는 task
.
(2) Time 도메인에서의 ConvolutionPermalink
y[n]=x[n]∗h[n]=L−1∑l=0x[l]⋅h[n−1]y[n]=x[n]∗h[n]=L−1∑l=0x[l]⋅h[n−1]- x[n] : Time 도메인에서 n번째 raw wave sample
- h[n] : Convolution Filter의 n 번째 값
- y[n] : output의 n번째 값
직관적인 이해
- y는 x와 필터 h의 연관성이 높을수록 커짐
- 필터 = 주파수 Input을 증폭/감쇄하는 역할
- **Time 도메인에서의 Convolution = Frequency도메인에서의 Multiplication **
(3) Bandpass Filter ( Sinc Function )Permalink
목표 : 발화자 인식!
→ 발화자 인식에 있어서 중요한 주파수 영역(band)만을 남기길 원함 ( via Bandpass Filter )
Frequency 도메인에서, 이러한 역할을 하는 함수는 아래 그림과 같은 Rectangular function
- rect(t)=Π(t)={0, if |t|>1212, if |t|=121, if |t|<12.
.
Time 도메인에서는,이에 적합한 함수가 **Sinc Function **
- f(x)=sin(x)/x
-
WHY?
Frequency 도메인에서의 Rectangular function으로 곱셈 연산
= Time 도메인에서 Sinc Function으로의 컨볼루션 연산
-
Sinc function을 Fourier Transform하면 Rectangular function
(+ 그 역도 성립)
- ∫∞−∞sinc(t)e−i2πftdt=rect(f).
- ∫∞−∞rect(t)⋅e−i2πftdt=sin(πf)πf=sinc(πf).
(4) Window ( Hamming Window )Permalink
Lobe & Side Lobe Effect
- Lobe = 봉우리 ( 아래 그림 참조 )
- Main Lobe : 가장 높은 봉우리
- Side Lobe : 그 외의 봉우리들
- Side Lobe Effect : Filter에 Side Lobe들이 많으면, main으로 잡아내고자 하는 것 외의 다른 주파수 영역대 정보도 잡아냄 (noise로 작용)
- Filter의 길이(=L)가 길수록, Side Lobe Effect ↑
.
Sinc Function 자르기
-
sinc function이 fourier transform을 거쳐서 rectangular function이 되기 위해선, L이 무한해야함 ( ∫∞−∞sinc(t)e−i2πftdt=rect(f) )
-
하지만, 실제로 그럴 순 없기 때문에, 적당한 길이로 sinc function을 잘라야함
-
아래 그림 참조 )
.
-
(이상적) 맨 위 그림 ( L→∞, rectangular function )
(현실) L<∞ … main 부분의 일부를 캐치 X, noise도 일부 껴있음
-
이를 해결하기 위해 고안된 것이 Window
( sinc function을 자르지 않고, window를 사용해서 smoothing )
Hamming Window
-
w[n]=0.54−0.46⋅cos(2πnL).
.
요약 : 이상적인 Filter는 L→, 하지만 현실적으로 그럴 수 없다. 따라서 불필요한 정보는 일부 포함될수밖에 없고, 중요한 정보도 일부 손실될 수 밖에 없다. 이를 보완하고자 제안된 것이 (Hamming) Window를 사용한 smoothing이다.
(5) SincNetPermalink
y[n]=x[n]∗g[n,θ]- x[n] : Time 도메인에서의 n번째 샘플 입력
- g : Convolution Filter
- 이상적) Rectangular Function 형태 in Frequency 도메인
이상적인 BandPass Filter
-
(Frequency 도메인) G[f,f1,f2]=rect(f2f2)−rect(f2f1)
-
(Time 도메인) g[n,f1,f2]=2f2sinc(2πf2n)−2f1sinc(2πf1n).
여기에 window를 적용하면…
gw[n,f1,f2]=gw[n,f1,f2]⋅w[n] ,
where w[n]=0.54−0.46⋅cos(2πnL).
ReferencePermalink
-
https://ratsgo.github.io/speechbook/docs/neuralfe/sincnet