Hopfieldnät

Från Wikipedia
Hoppa till: navigering, sök
Exempel på ett Hopfieldnät

Hopfield är ett övervakat neuralt nätverk och används till att minnas mönster. Nätet förmår att återskapa inlärda mönster som blivit störda till en viss gräns. Hur väl återskapandet går beror på flera faktorer såsom hur många bilder som är intränade i nätet, hur störd bilden är, hur många iterationscykler som tillåts. Hopfieldnätet konstruerades ursprungligen av John Hopfield 1982. Nätet är präglat av en biologisk förebild och fungerar starkt förenklat som en människas minne.

Detta minne är av typen autoassociativ, vilket innebär att de mönster som nätet känner igen kommer att visas likadant som de matas in. När nätet stöter på ett mönster som det inte känner igen kommer det att visa det mönster som är mest likt det nuvarande, av de som det har sett under träningsfasen. Ett autoassociativt nät kan alltså återskapa störd indata till något av de mönster det känner igen.

Ett Hopfieldnät kan lagra ungefär M = 0,14 * N bilder. Där N är antal neuroner och M är antal bilder.

Konstruktion[redigera | redigera wikitext]

Det som gör Hopfieldnätet unikt är att alla neuroner är sammanslutna med alla förutom sig självt. Varje neuron kan bara ha ett binärt tillstånd. Antingen definieras de två tillstånden som -1 och 1, eller som 1 och 0.

Varje neurons tillstånd beräknas enligt en av de följande två algoritmerna:[1]

  1. y_i = \left\{\begin{matrix} 1 & \mbox {om }\sum_{j=1}^{n}{w_{ij}x_j}>\theta_i, \\
-1 & \mbox {annars.}\end{matrix}\right.
  2. y_i = \left\{\begin{matrix} 1 & \mbox {om }\sum_{j=1}^{n}{w_{ij}x_j}>\theta_i, \\
0 & \mbox {annars.}\end{matrix}\right.
  • y_i är tillståndet/utgången/aktiveringsnivån för neuron i.
  • w_{i,j} är vikten för kopplingen mellan neuron i och neuron j.
  • x_j är tillståndet för neuron j.
  • n är det antal neuroner som finns i nätverket.
  • \theta_i tröskelvärdet för neuron i.

Man kan räkna ut vikterna för att lagra ett visst mönster genom att multiplicera en radvektor av det mönstret med en kolumnvektor av samma mönster och sedan ta bort alla vikter som kopplar tillbaka till den ursprungliga noden, och sedan ändra vikten till ett binärt tillstånd enligt det aktuella tröskelvärdet. För att lagra flera mönster adderar man de uträknade vikterna för varje mönster.[2]

Dessa två bivillkor används vanligen för Hopfieldnät:

  • w_{i,j} = 0 ,\forall i = j , dvs ingen nod är kopplad till sig själv
  • w_{i,j} = w_{j,i} ,\forall i, j, dvs nod A är kopplad till nod B lika starkt som nod B är kopplad till nod A.

Källor[redigera | redigera wikitext]

  1. ^ Callan R. "The Essence of Neural Networks", Kapitel 4.3. Pearson Education, 1999
  2. ^ Callan R. "The Essence of Neural Networks", Kapitel 4.1. Pearson Education, 1999

Externa länkar[redigera | redigera wikitext]