Kennt jemand Implementierung von Mackay-ICA? Oder Tip? Natural gradients?

02/12/2008 - 18:49 von Andreas Romeyke | Report spam

Hallo,

Fà¼r die Umsetzung der ICA (independent componnt analysis) auf Brook
(und Prototyping octave/Matlab) suche ich eine Implementierung der
Mackay-ICA. Mit dem Paper zum covariant Algorithmus komme ich nicht
weiter.

Der Algorithmus wird im Buch "Information Theory, Inference and
Learning Algorithms", David J.C. MacKay, Cambridge University 2003 [1]
(S.445, 34.3) wie folgt beschrieben[2]:

Repeat for each datapoint x:
1. Put x through a linear mapping: a=W*x
2. Put a through a nonlinear map:
z_i=theta_{i}(a_{i})
where popular choice for theta is theta = -tanh (a)
3. Put a back through W: x' = (W^t) * a
4. Adjust the weights in accordance with:
deltaW nearly_proportional W + z(x'^t)

Mit W der inversen zu bestimmenden Mischungsmatrix (W^-1 =~ M mit
x=M*s), und x den beobachteten Datenpunkten.

Im Text wird das ganze etwas konkretisiert,
so bedeutet "x'" neues x und die Formel fà¼r deltaW wird an anderer
Stelle wie folgt dargestellt:

deltaW_{ij} = eta * (W_{ij} + W_{i'j} * a_{i'}*z_{i}

mit x'_{j} = W_{i'j} * a{i'}

MacKay gibt ferner an, daàŸ die i à¼ber die Koordinaten des z-Vektors
laufen, und die j à¼ber die des x-Vektors, er spricht auch immer wieder
von "natural gradients", die so aber im Deutschen nirgends als
Erklà¤rung auffindbar sind.

Was ich jetzt nicht verstehe, ist, wie genau die Updateregel, sprich
das deltaW zu verstehen ist?
Was bedeutet i'? Der neue Wert von i kann es ja nicht sein.

Und x mà¼sste ja ein Vektor aus den k-Ausgangskanà¤len der
Mischungsmatrix M sein, sprich den gemixten Daten entsprechen.

In seiner Erklà¤rung zu dem Algorithmus spricht MacKay immer wieder
davon, daàŸ "The quantity (W_{ij} + x'_{j}*z_{i}) on the right-hand side
is sometimes called the natural gradient".

Vielleicht kann mir jemand helfen die Umsetzung des Alg. zu
verstehen. Die Erklà¤rung, warum er funktioniert, habe ich AFAIK
im GroàŸen und Ganzen verstanden. Mir ist aber die algorithmische
Beschreibung zu ungenau fà¼r eine Umsetzung.

In meiner Umsetzung (Prototyp Octave) passiert zwar was, das sieht aber
nicht nach Quellentrennung aus.

Any hints?

Bye Andreas

[1] Gibt es auch online unter http://www.inference.phy.cam.ac.uk/mackay/
[2] Schreibweise an LaTeX angelehnt. "a^t" heiàŸt a transponiert, W_{ij}
meint W unterstrich klein "i" und klein "j".

Dipl. Inf. (FH) Andreas Romeyke, http://andreas-romeyke.de/,
Gesellschaft fà¼r die Anwendung offener Systeme e.V. (http://gaos.org)



 

Lesen sie die antworten

#1 Josef Chmel
08/12/2008 - 15:55 | Warnen spam
On 2 Dez., 18:49, Andreas Romeyke wrote:
Hallo,

Für die Umsetzung der ICA (independent componnt analysis) auf Brook
(und Prototyping octave/Matlab) suche ich eine Implementierung der
Mackay-ICA. Mit dem Paper zum covariant Algorithmus komme ich nicht
weiter.

Der Algorithmus wird im Buch "Information Theory, Inference and
Learning Algorithms", David J.C. MacKay, Cambridge University 2003 [1]
(S.445, 34.3) wie folgt beschrieben[2]:

Repeat for each datapoint x:
 1. Put x through a linear mapping: a=W*x
 2. Put a through a nonlinear map:
        z_i=theta_{i}(a_{i})
                where popular choice for theta is theta = -tanh (a)
 3. Put a back through W: x' = (W^t) * a
 4. Adjust the weights in accordance with:
  deltaW nearly_proportional W + z(x'^t)

Mit W der inversen zu bestimmenden Mischungsmatrix (W^-1 =~ M mit
x=M*s), und x den beobachteten Datenpunkten.

Im Text wird das ganze etwas konkretisiert,
so bedeutet "x'" neues x und die Formel für deltaW wird an anderer
Stelle wie folgt dargestellt:

deltaW_{ij} = eta * (W_{ij} + W_{i'j} * a_{i'}*z_{i}

mit x'_{j} = W_{i'j} * a{i'}

MacKay gibt ferner an, daß die i über die Koordinaten des z-Vektors
laufen, und die j über die des x-Vektors, er spricht auch immer wieder
von "natural gradients", die so aber im Deutschen nirgends als
Erklàrung auffindbar sind.

Was ich jetzt nicht verstehe, ist, wie genau die Updateregel, sprich
das deltaW zu verstehen ist?
Was bedeutet i'? Der neue Wert von i kann es ja nicht sein.

Und x müsste ja ein Vektor aus den k-Ausgangskanàlen der
Mischungsmatrix M sein, sprich den gemixten Daten entsprechen.

In seiner Erklàrung zu dem Algorithmus spricht MacKay immer wieder
davon, daß "The quantity (W_{ij} + x'_{j}*z_{i}) on the right-hand side
is sometimes called the natural gradient".

Vielleicht kann mir jemand helfen die Umsetzung des Alg. zu
verstehen. Die Erklàrung, warum er funktioniert, habe ich AFAIK
im Großen und Ganzen verstanden. Mir ist aber die algorithmische
Beschreibung zu ungenau für  eine Umsetzung.

In meiner Umsetzung (Prototyp Octave) passiert zwar was, das sieht aber
nicht nach Quellentrennung aus.

Any hints?

Bye Andreas

[1] Gibt es auch online unterhttp://www.inference.phy.cam.ac.uk/mackay/
[2] Schreibweise an LaTeX angelehnt. "a^t" heißt a transponiert, W_{ij}
meint W unterstrich klein "i" und klein "j".

Dipl. Inf. (FH) Andreas Romeyke,http://andreas-romeyke.de/,
Gesellschaft für die Anwendung offener Systeme e.V. (http://gaos.org)

 signature.asc
< 1 KBAnzeigenHerunterladen



Hi,
vielleicht bringt das was:

http://www.inference.phy.cam.ac.uk/.../code/ica/

Cu
Josef

Ähnliche fragen