The END IS NEAR
This commit is contained in:
parent
dd83a902f8
commit
1bd0bbbb87
5 changed files with 77 additions and 22 deletions
44
Session.vim
44
Session.vim
|
|
@ -13,19 +13,21 @@ if &shortmess =~ 'A'
|
||||||
else
|
else
|
||||||
set shortmess=aoO
|
set shortmess=aoO
|
||||||
endif
|
endif
|
||||||
badd +128 content/BACH.typ
|
badd +183 content/BACH.typ
|
||||||
badd +1 glossary.typ
|
badd +1 glossary.typ
|
||||||
badd +1 bibliography.bib
|
badd +1 bibliography.bib
|
||||||
badd +0 \$
|
badd +1 \$
|
||||||
badd +6 pseudocode/bach_1.typ
|
badd +14 pseudocode/bach_1.typ
|
||||||
badd +265 content/SMHD.typ
|
badd +265 content/SMHD.typ
|
||||||
badd +7 pseudocode/bach_find_best_appr.typ
|
badd +7 pseudocode/bach_find_best_appr.typ
|
||||||
|
badd +60 content/introduction.typ
|
||||||
argglobal
|
argglobal
|
||||||
%argdel
|
%argdel
|
||||||
set stal=2
|
set stal=2
|
||||||
tabnew +setlocal\ bufhidden=wipe
|
tabnew +setlocal\ bufhidden=wipe
|
||||||
tabnew +setlocal\ bufhidden=wipe
|
tabnew +setlocal\ bufhidden=wipe
|
||||||
tabnew +setlocal\ bufhidden=wipe
|
tabnew +setlocal\ bufhidden=wipe
|
||||||
|
tabnew +setlocal\ bufhidden=wipe
|
||||||
tabrewind
|
tabrewind
|
||||||
edit content/BACH.typ
|
edit content/BACH.typ
|
||||||
argglobal
|
argglobal
|
||||||
|
|
@ -40,11 +42,31 @@ setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let &fdl = &fdl
|
let &fdl = &fdl
|
||||||
let s:l = 164 - ((38 * winheight(0) + 25) / 50)
|
let s:l = 88 - ((17 * winheight(0) + 25) / 50)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
keepjumps exe s:l
|
keepjumps exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
keepjumps 164
|
keepjumps 88
|
||||||
|
normal! 0102|
|
||||||
|
tabnext
|
||||||
|
edit content/introduction.typ
|
||||||
|
argglobal
|
||||||
|
balt content/BACH.typ
|
||||||
|
setlocal fdm=manual
|
||||||
|
setlocal fde=0
|
||||||
|
setlocal fmr={{{,}}}
|
||||||
|
setlocal fdi=#
|
||||||
|
setlocal fdl=0
|
||||||
|
setlocal fml=1
|
||||||
|
setlocal fdn=20
|
||||||
|
setlocal fen
|
||||||
|
silent! normal! zE
|
||||||
|
let &fdl = &fdl
|
||||||
|
let s:l = 56 - ((41 * winheight(0) + 25) / 50)
|
||||||
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
|
keepjumps exe s:l
|
||||||
|
normal! zt
|
||||||
|
keepjumps 56
|
||||||
normal! 0
|
normal! 0
|
||||||
tabnext
|
tabnext
|
||||||
edit glossary.typ
|
edit glossary.typ
|
||||||
|
|
@ -105,9 +127,7 @@ set winheight=1
|
||||||
set winminwidth=0
|
set winminwidth=0
|
||||||
set winwidth=1
|
set winwidth=1
|
||||||
exe '1resize ' . ((&lines * 25 + 26) / 53)
|
exe '1resize ' . ((&lines * 25 + 26) / 53)
|
||||||
exe 'vert 1resize ' . ((&columns * 129 + 105) / 211)
|
|
||||||
exe '2resize ' . ((&lines * 24 + 26) / 53)
|
exe '2resize ' . ((&lines * 24 + 26) / 53)
|
||||||
exe 'vert 2resize ' . ((&columns * 129 + 105) / 211)
|
|
||||||
argglobal
|
argglobal
|
||||||
balt bibliography.bib
|
balt bibliography.bib
|
||||||
setlocal fdm=manual
|
setlocal fdm=manual
|
||||||
|
|
@ -120,12 +140,12 @@ setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let &fdl = &fdl
|
let &fdl = &fdl
|
||||||
let s:l = 16 - ((15 * winheight(0) + 12) / 25)
|
let s:l = 12 - ((11 * winheight(0) + 12) / 25)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
keepjumps exe s:l
|
keepjumps exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
keepjumps 16
|
keepjumps 12
|
||||||
normal! 0
|
normal! 068|
|
||||||
wincmd w
|
wincmd w
|
||||||
argglobal
|
argglobal
|
||||||
if bufexists(fnamemodify("pseudocode/bach_find_best_appr.typ", ":p")) | buffer pseudocode/bach_find_best_appr.typ | else | edit pseudocode/bach_find_best_appr.typ | endif
|
if bufexists(fnamemodify("pseudocode/bach_find_best_appr.typ", ":p")) | buffer pseudocode/bach_find_best_appr.typ | else | edit pseudocode/bach_find_best_appr.typ | endif
|
||||||
|
|
@ -151,10 +171,8 @@ keepjumps 7
|
||||||
normal! 031|
|
normal! 031|
|
||||||
wincmd w
|
wincmd w
|
||||||
exe '1resize ' . ((&lines * 25 + 26) / 53)
|
exe '1resize ' . ((&lines * 25 + 26) / 53)
|
||||||
exe 'vert 1resize ' . ((&columns * 129 + 105) / 211)
|
|
||||||
exe '2resize ' . ((&lines * 24 + 26) / 53)
|
exe '2resize ' . ((&lines * 24 + 26) / 53)
|
||||||
exe 'vert 2resize ' . ((&columns * 129 + 105) / 211)
|
tabnext 5
|
||||||
tabnext 1
|
|
||||||
set stal=1
|
set stal=1
|
||||||
if exists('s:wipebuf') && len(win_findbuf(s:wipebuf)) == 0 && getbufvar(s:wipebuf, '&buftype') isnot# 'terminal'
|
if exists('s:wipebuf') && len(win_findbuf(s:wipebuf)) == 0 && getbufvar(s:wipebuf, '&buftype') isnot# 'terminal'
|
||||||
silent exe 'bwipe ' . s:wipebuf
|
silent exe 'bwipe ' . s:wipebuf
|
||||||
|
|
|
||||||
|
|
@ -104,12 +104,12 @@ Its cardinality is $2^M$, while $M$ defines the number of bits we want to extrac
|
||||||
It has to be noted, that $bold(cal(o))$ consists of optimal values that we may not be able to exactly approximate using a linear combination based on weights and our given input values.
|
It has to be noted, that $bold(cal(o))$ consists of optimal values that we may not be able to exactly approximate using a linear combination based on weights and our given input values.
|
||||||
|
|
||||||
In comparison to the 1-bit sign-based quantization, we will not be able to find a linear combination of only two input values that approximates the optimal points we defined earlier.
|
In comparison to the 1-bit sign-based quantization, we will not be able to find a linear combination of only two input values that approximates the optimal points we defined earlier.
|
||||||
Therefore, we will use -- without any loss of generality -- three summands for the linear combination as this give us more flexible control over the result of the linear combination with the helper data.
|
Therefore, we will use three or more summands for the linear combination as this give us more flexible control over the result of the linear combination with the helper data.
|
||||||
Later we will be able to show that a higher number of summands for $z$ can provide better approximations for the ideal values of $z$ at the expense of the number of available input values for the quantizer.
|
Later we will be able to show that a higher number of summands for $z$ can provide better approximations for the ideal values of $z$ at the expense of the number of available input values for the quantizer.
|
||||||
|
|
||||||
We will define $z$ from now on as:
|
We will define $z$ from now on as:
|
||||||
$
|
$
|
||||||
z = x_1 dot h_1 plus x_2 dot h_2 plus x_3 dot h_3.
|
z = sum_(i=3)^n x_i dot h_i
|
||||||
$<eq:z_eq>
|
$<eq:z_eq>
|
||||||
|
|
||||||
We can now find the optimal linear combination $z_"opt"$ by finding the minimum of all distances to all optimal points defined as $bold(cal(o))$.
|
We can now find the optimal linear combination $z_"opt"$ by finding the minimum of all distances to all optimal points defined as $bold(cal(o))$.
|
||||||
|
|
@ -161,4 +161,23 @@ We can now use an iterative algorithm that alternates between optimizing the qua
|
||||||
kind: "algorithm",
|
kind: "algorithm",
|
||||||
supplement: [Algorithm],
|
supplement: [Algorithm],
|
||||||
include("../pseudocode/bach_1.typ")
|
include("../pseudocode/bach_1.typ")
|
||||||
)
|
)<alg:bach_1>
|
||||||
|
|
||||||
|
We can see both of these alternating parts in @alg:bach_1_2[Lines] and @alg:bach_1_3[] of @alg:bach_1.
|
||||||
|
To optimize the quantizing bounds of $cal(Q)$, we will sort the values of all the resulting linear combinations $bold(z)_"opt"$ in ascending order.
|
||||||
|
Using the inverse @ecdf defined in @eq:ecdf_inverse, we can find new quantizer bounds based on $bold(z)_"opt"$ from the first iteration.
|
||||||
|
These bounds will then be used to define a new set of optimal points $bold(cal(o))$ used for the next iteration.
|
||||||
|
During every iteration of @alg:bach_1, we will store all weights $bold(h)$ used to generate the vector for optimal linear combinations $bold(z)_"opt"$.
|
||||||
|
|
||||||
|
The output of @alg:bach_1 is the vector of optimal weights $bold(h)_"opt"$.
|
||||||
|
$bold(h)_"opt"$ can now be used to complete the enrollment phase and quantize the values $bold(z)_"opt"$.
|
||||||
|
|
||||||
|
=== Maximum quantizing bound distance approximation
|
||||||
|
|
||||||
|
Instead of defining the optimal positions for $z$ with fixed values, we can also provide a more loose definition of $bold(cal(o))$.
|
||||||
|
Let's consider the following example:
|
||||||
|
|
||||||
|
|
||||||
|
== Experiments
|
||||||
|
|
||||||
|
== Results & Discussion
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
#import "@preview/glossarium:0.4.1": *
|
||||||
= Introduction
|
= Introduction
|
||||||
|
|
||||||
These are the introducing words
|
These are the introducing words
|
||||||
|
|
@ -39,6 +40,23 @@ This transformation can be performed using the function $xi = tilde(x)$. The key
|
||||||
Considering a normal distribution, the CDF is defined as
|
Considering a normal distribution, the CDF is defined as
|
||||||
$ xi(frac(x - mu, sigma)) = frac(1, 2)[1 + \e\rf(frac(x - mu, sigma sqrt(2)))] $
|
$ xi(frac(x - mu, sigma)) = frac(1, 2)[1 + \e\rf(frac(x - mu, sigma sqrt(2)))] $
|
||||||
|
|
||||||
==== ECDF
|
==== #gls("ecdf", display: "Empirical cumulative distribution function (eCDF)")
|
||||||
|
|
||||||
|
The @ecdf is constructed through sorting the empirical measurements of a distribution @dekking2005modern. Although less accurate, this method allows a more simple and less computationally complex way to transform real valued measurements into the Tilde-Domain. We will mainly use the eCDF in @chap:smhd because of the difficulty of finding an analytical description for the CDF of a Gaussian-Mixture.\
|
||||||
|
To apply it, we will sort the vector of realizations $bold(z)$ of a random distributed variable $Z$ in ascending order.
|
||||||
|
The function for an @ecdf can be defined as
|
||||||
|
$
|
||||||
|
xi_#gls("ecdf") (x) = frac("number of elements in " bold(z)", that" <= x, n) in [0, 1],
|
||||||
|
$<eq:ecdf_def>
|
||||||
|
where $n$ defines the number of elements in the vector $bold(z)$.
|
||||||
|
If the vector $bold(z)$ were to contain the elements $[1, 3, 4, 5, 7, 9, 10]$ and $x = 5$, @eq:ecdf_def would result to $xi_#gls("ecdf") (5) = frac(4, 7)$.\
|
||||||
|
The application of @eq:ecdf_def on $X$ will transform its values into the empirical tilde-domain.
|
||||||
|
|
||||||
|
We can also define an inverse @ecdf:
|
||||||
|
|
||||||
|
$
|
||||||
|
xi_#gls("ecdf")^(-1) (tilde(x)) = tilde(x) dot n
|
||||||
|
$<eq:ecdf_inverse>
|
||||||
|
|
||||||
|
The result of @eq:ecdf_inverse is the index $i$ of the element $z_i$ from the vector of realizations $bold(z)$.
|
||||||
|
|
||||||
The eCDF is constructed through sorting the empirical measurements of a distribution @dekking2005modern. Although less accurate, this method allows a more simple and less computationally complex way to transform real valued measurements into the Tilde-Domain. We will mainly use the eCDF in @chap:smhd because of the difficulty of finding an analytical description for the CDF of a Gaussian-Mixture.
|
|
||||||
|
|
|
||||||
BIN
main.pdf
BIN
main.pdf
Binary file not shown.
|
|
@ -5,12 +5,12 @@
|
||||||
+ *input*: $bold(cal(o))_"first", bold(x), t, M$
|
+ *input*: $bold(cal(o))_"first", bold(x), t, M$
|
||||||
+ *lists*: optimal weights $bold(h)_"opt"$
|
+ *lists*: optimal weights $bold(h)_"opt"$
|
||||||
+ $bold(cal(o)) arrow.l bold(cal(o))_"first"$
|
+ $bold(cal(o)) arrow.l bold(cal(o))_"first"$
|
||||||
+ *repeat* t times:
|
+ #line-label(<alg:bach_1_1>) *repeat* t times:
|
||||||
+ *perform* @alg:best_appr for all input values with $bold(cal(o))$:
|
+ *perform* @alg:best_appr for all input values with $bold(cal(o))$:
|
||||||
+ *update* $bold(h)_"opt"$ with returned weights
|
+ *update* $bold(h)_"opt"$ with returned weights
|
||||||
+ $bold(z)_"opt" arrow.l$ all returned linear combinations
|
+ $bold(z)_"opt" arrow.l$ all returned linear combinations
|
||||||
+ *sort* $bold(z)_"opt"$ in ascending order
|
+ #line-label(<alg:bach_1_2>) *sort* $bold(z)_"opt"$ in ascending order
|
||||||
+ *define* new quantizer $cal(Q)^*$ using the @ecdf based on $bold(z)_"opt"$
|
+ #line-label(<alg:bach_1_3>) *define* new quantizer $cal(Q)^*$ using the @ecdf based on $bold(z)_"opt"$
|
||||||
+ *update* $bold(cal(o))$ with newly found quantizer step centers
|
+ #line-label(<alg:bach_1_4>) *update* $bold(cal(o))$ with newly found quantizer step centers
|
||||||
+ *return* $bold(h)_"opt"$
|
+ *return* $bold(h)_"opt"$
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue