In this module, we separate time-domain multichannel signals
using independent component analysis (ICA) [1].
We denote the number of sources and microphones as \(N\) and \(M\), respectively.
We also denote source, observed, and separated signals (in time-domain)
as \(\boldsymbol{s}_{t}\), \(\boldsymbol{x}_{t}\), and \(\boldsymbol{y}_{t}\),
respectively.
where \(\boldsymbol{A}=(\boldsymbol{a}_{1},\ldots,\boldsymbol{a}_{n},\ldots,\boldsymbol{a}_{N})\in\mathbb{R}^{M\times N}\) is
a mixing matrix.
If \(M=N\) and \(\boldsymbol{A}\) is non-singular, a demixing system is represented as
where \(\boldsymbol{W}=(\boldsymbol{w}_{1},\ldots,\boldsymbol{w}_{n},\ldots,\boldsymbol{w}_{N})^{\mathsf{T}}\in\mathbb{R}^{N\times M}\) is
a demixing matrix.
The negative log-likelihood of observed signals (divided by \(T\)) is computed as follows:
Base class of independent component analysis (ICA) using the gradient descent.
Parameters:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(y_{tn})\).
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
score_fn (callable) – A score function which corresponds to the partial derivative of the contrast function.
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
Base class of fast independent component analysis (FastICA).
Parameters:
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(y_{tn})\).
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
score_fn (callable) – A score function which corresponds to the partial derivative of the contrast function.
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
d_score_fn (callable) – A partial derivative of the score function.
This function is expected to return the same shape tensor as the input.
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
record_loss (bool) – Record the loss at each of the fixed-point iteration if record_loss=True.
Default: True.
where \(\lambda_{m}\) and \(\boldsymbol{\gamma}_{m}\) are
an eigenvalue and eigenvector of
\(\sum_{t}\boldsymbol{x}_{t}\boldsymbol{x}_{t}^{\mathsf{T}}\),
respectively.
Otherwise (use_whitening=False), we do not apply whitening.
Independent component analysis (ICA) using the gradient descent.
Parameters:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(y_{tn})\).
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
score_fn (callable) – A score function which corresponds to the partial derivative of the contrast function.
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
Examples
Update demixing filters using Holonomic-type update:
Independent component analysis (ICA) using the natural gradient descent [2].
Parameters:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(y_{tn})\).
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
score_fn (callable) – A score function which corresponds to the partial derivative of the contrast function.
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
Examples
Update demixing filters using Holonomic-type update:
where \(\lambda_{m}\) and \(\boldsymbol{\gamma}_{m}\) are
an eigenvalue and eigenvector of
\(\sum_{t}\boldsymbol{x}_{t}\boldsymbol{x}_{t}^{\mathsf{T}}\),
respectively.
Furthermore, \(\boldsymbol{W}\) is constrained to be orthogonal.
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(y_{tn})\).
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
score_fn (callable) – A score function which corresponds to the partial derivative of the contrast function.
This function is expected to receive (n_channels, n_samples)
and return (n_channels, n_samples).
d_score_fn (callable) – A partial derivative of the score function.
This function is expected to return the same shape tensor as the input.
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
record_loss (bool) – Record the loss at each of the fixed-point iteration if record_loss=True.
Default: True.