[ Neural Feature Extraction of signal data ]

기존의 (NN을 사용하지 않은) Feature Extraction 방법은 주로 “지식/공식”에 기반한 deterministic한 형태의 추출 방법이었다면, 이번에 다룰 Neural Featrue Extraction은 “특정 목적을 수행하기 위해 적절한” feature를 뽑아내기 위한 방법이다. (즉, task에 따라 같은 data에서도 feature가 다르게 뽑힐 수 있는 non-deterministic한 방법이다 )

Neural Feature Extraction의 대표적인 2가지 방법은 아래와 같다.

  • 1) Wav2Vec
  • 2) SincNet ( + PASE )

이번 포스트에서는 SincNet 에 대해서 다룰 것이다.


1. SincNet

(1) 구성

  • 첫 번째 layer : sinc function ( \(\sin(x)/x\) )
  • 그 이후 layer : 일반적인 NN과 유사

  • Task : 화자가 누구인지 맞추는 task

.


(2) Time 도메인에서의 Convolution

\[y[n]=x[n] * h[n]=\sum_{l=0}^{L-1} x[l] \cdot h[n-1]y[n]=x[n] * h[n]=\sum_{l=0}^{L-1} x[l] \cdot 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 )

목표 : 발화자 인식!

\(\rightarrow\) 발화자 인식에 있어서 중요한 주파수 영역(band)만을 남기길 원함 ( via Bandpass Filter )

Frequency 도메인에서, 이러한 역할을 하는 함수는 아래 그림과 같은 Rectangular function

  • \(\operatorname{rect}(t)=\Pi(t)=\left\{\begin{array}{ll} 0, & \text { if }|t|>\frac{1}{2} \\ \frac{1}{2}, & \text { if }|t|=\frac{1}{2} \\ 1, & \text { if }|t|<\frac{1}{2} \end{array}\right.\).

.


Time 도메인에서는,이에 적합한 함수가 **Sinc Function **

  • \[f(x) = \sin(x)/x\]
  • WHY?

    Frequency 도메인에서의 Rectangular function으로 곱셈 연산

    = Time 도메인에서 Sinc Function으로의 컨볼루션 연산

  • Sinc function을 Fourier Transform하면 Rectangular function

    (+ 그 역도 성립)

    • \(\int_{-\infty}^{\infty} \operatorname{sinc}(t) e^{-i 2 \pi f t} d t=\operatorname{rect}(f)\).
    • \(\int_{-\infty}^{\infty} \operatorname{rect}(t) \cdot e^{-i 2 \pi f t} d t=\frac{\sin (\pi f)}{\pi f}=\operatorname{sinc}(\pi f)\).


(4) Window ( Hamming Window )

Lobe & Side Lobe Effect

  • Lobe = 봉우리 ( 아래 그림 참조 )
    • Main Lobe : 가장 높은 봉우리
    • Side Lobe : 그 외의 봉우리들
  • Side Lobe Effect : Filter에 Side Lobe들이 많으면, main으로 잡아내고자 하는 것 외의 다른 주파수 영역대 정보도 잡아냄 (noise로 작용)
  • Filter의 길이(=\(L\))가 길수록, Side Lobe Effect \(\uparrow\)

.

Sinc Function 자르기

  • sinc function이 fourier transform을 거쳐서 rectangular function이 되기 위해선, \(L\)이 무한해야함 ( \(\int_{-\infty}^{\infty} \operatorname{sinc}(t) e^{-i 2 \pi f t} d t=\operatorname{rect}(f)\) )

  • 하지만, 실제로 그럴 순 없기 때문에, 적당한 길이로 sinc function을 잘라야함

  • 아래 그림 참조 )

    .

  • (이상적) 맨 위 그림 ( \(L\rightarrow \infty\), rectangular function )

    (현실) \(L < \infty\) … main 부분의 일부를 캐치 X, noise도 일부 껴있음

  • 이를 해결하기 위해 고안된 것이 Window

    ( sinc function을 자르지 않고, window를 사용해서 smoothing )


Hamming Window

  • \(w[n]=0.54-0.46 \cdot \cos \left(\frac{2 \pi n}{L}\right)\).

    .


요약 : 이상적인 Filter는 \(L \rightarrow\), 하지만 현실적으로 그럴 수 없다. 따라서 불필요한 정보는 일부 포함될수밖에 없고, 중요한 정보도 일부 손실될 수 밖에 없다. 이를 보완하고자 제안된 것이 (Hamming) Window를 사용한 smoothing이다.


(5) SincNet

\[y[n]=x[n] * g[n, \theta]\]
  • \(x[n]\) : Time 도메인에서의 \(n\)번째 샘플 입력
  • \(g\) : Convolution Filter
    • 이상적) Rectangular Function 형태 in Frequency 도메인


이상적인 BandPass Filter

  • (Frequency 도메인) \(G\left[f, f_{1}, f_{2}\right]=\operatorname{rect}\left(\frac{f}{2 f_{2}}\right)-\operatorname{rect}\left(\frac{f}{2 f_{1}}\right)\)

  • (Time 도메인) \(g\left[n, f_{1}, f_{2}\right]=2 f_{2} \operatorname{sinc}\left(2 \pi f_{2} n\right)-2 f_{1} \operatorname{sinc}\left(2 \pi f_{1} n\right)\).

    여기에 window를 적용하면…

    \(g_{w}\left[n, f_{1}, f_{2}\right]=g_{w}\left[n, f_{1}, f_{2}\right] \cdot w[n]\) ,

    where \(w[n]=0.54-0.46 \cdot \cos \left(\frac{2 \pi n}{L}\right)\).


Reference