Vraag


Acties:
  • 0 Henk 'm!

  • maniak
  • Registratie: Augustus 2000
  • Laatst online: 21-09 08:52
Ik ben druk bezig om verschillende machine learning varianten uit te coderen. Op dit moment ben ik bezig met NEAT (bron: http://nn.cs.utexas.edu/?neat ). Er is veel algemene informatie beschikbaar en ben redelijk ver hiermee. Alleen 1 vraag kan ik maar nergens vinden. Dus wellicht kan iemand me hiermee helpen en wel specifiek de input en outputs van een node.

Om bij een node (of neuron) de output te berekenen neem je alle inputs maal hun gewicht, tel je dat bij elkaar op en haal je dit door een activatie functie. De output van deze node is dan weer de input van de volgende node.

Nu heb ik het nodige gelezen en beluisterd (Youtube video's) en ik meen me te herinneren dat ik gehoord heb dat de output van een node altijd 1 of 0 is. Dus de waarde die je krijgt na de activatie functie gebruik je niet als output maar deze waarde wordt gebruikt om vast te stellen of je een threshold hebt bereikt. Bv is de waarde <0.7 dan is de output 0 en is de waarde >0.7 is de output 1.

Klopt dit? Of is dit 1 variant van een NEAT implementatie?

Beste antwoord (via maniak op 24-06-2017 12:31)


  • Flipull
  • Registratie: September 2012
  • Laatst online: 05-08-2023
Ja, de output van die (hidden) node is het resultaat van de activatie functie.

De output van sigmoid's activatie-functie geeft symbolisch de true (1)/false (0) waarden terug. Zo word analoge informatie omgezet naar pseudo-booleanse logica. In de praktijk is deze booleanse logica vergelijkbaar met hoe we analoge stroompjes gebruiken als digitale informatie in een computer.

- waar stroompjes tot 1 watt als een digitale nul worden gezien
- waar stroompjes vanaf 4 watt als een digitale één worden gezien
- waar stroompjes tussen 1 en 4 watt, als nonsense beschouwd worden en het resultaat geweigerd word (met error-checking en hercalculaties tot gevolg)


Dit laatste dilemma hebben we ook met de Sigmoid-functie: Voor twijfelsituaties komt er alsnog een getal tussen 0 en 1 terug. De situaties waarbij er net niet genoeg/net teveel input was ten opzichte van de threshold. False positives en false negatives dus.

De zelfgekozen threshold (0.7 in jouw voorbeeld) is ook om dit twijfel-gedeelte te laten gedragen als "activatie-output = 0 = false". Of dit een goede weg is, is wederom afhankelijk van het domein waar je de AI in laat leren.

Alle reacties


Acties:
  • 0 Henk 'm!

  • Flipull
  • Registratie: September 2012
  • Laatst online: 05-08-2023
Ik heb met NEAT voor delphi gewerkt. Enkele voorbeelden bevatten code die mogelijkheid bieden om meerdere type activatie-functies te kunnen gebruiken. Naast de Sigmoid (threshold)-functie die jij benoemd.

Volgens mij is dit ook mogelijk voor output-nodes, en dus zou je voor deze activatie-functies, anders met je resultaat kunnen omgaan.


De Sigmoid-activatie omschrijf ik zelf als een decision-making functie, gebaseerd over variabele hoeveelheden en krachten van inputs. Een hoogdimensionalig Karnaugh-map.


Welke AI-domeinen zouden nut hebben aan lineaire output-resultaten? En welke vorm moet de training-data hebben dan?
Men gaat nu zo ver, dat ze een auto-encoder AI bedachten: een AI die leert de input te herconstrueren, met minder hidden nodes dan werkelijke input en output-nodes. Deze zet men in om de data van het gekozen domein, beter te ordenen op features die belangrijk zijn. En hiermee word vaak gekozen voor de AI-structuur wat je nodig hebt. Zoals o.a. de activatie-functies.

Het gaat mij mijn pet en mijn processorkracht verder te boven, helaas :)

[ Voor 43% gewijzigd door Flipull op 22-06-2017 11:23 ]


Acties:
  • 0 Henk 'm!

  • maniak
  • Registratie: Augustus 2000
  • Laatst online: 21-09 08:52
Bedankt voor je antwoord. Ik denk dat je me verkeerd begrijpt. Dat er meerdere activatie functies zijn begrijp ik. Neem bv een hidden node. Die heeft 2 inputs. Is de output van die hidden node het resultaat van de activatie functie? Of is die altijd een 0 of een 1, afhankelijk of het resultaat van de activatie functie een threshold voorbij is. Bij normale neurale netwerken weet ik het antwoord, maar bij een NEAT implementatie niet.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Flipull
  • Registratie: September 2012
  • Laatst online: 05-08-2023
Ja, de output van die (hidden) node is het resultaat van de activatie functie.

De output van sigmoid's activatie-functie geeft symbolisch de true (1)/false (0) waarden terug. Zo word analoge informatie omgezet naar pseudo-booleanse logica. In de praktijk is deze booleanse logica vergelijkbaar met hoe we analoge stroompjes gebruiken als digitale informatie in een computer.

- waar stroompjes tot 1 watt als een digitale nul worden gezien
- waar stroompjes vanaf 4 watt als een digitale één worden gezien
- waar stroompjes tussen 1 en 4 watt, als nonsense beschouwd worden en het resultaat geweigerd word (met error-checking en hercalculaties tot gevolg)


Dit laatste dilemma hebben we ook met de Sigmoid-functie: Voor twijfelsituaties komt er alsnog een getal tussen 0 en 1 terug. De situaties waarbij er net niet genoeg/net teveel input was ten opzichte van de threshold. False positives en false negatives dus.

De zelfgekozen threshold (0.7 in jouw voorbeeld) is ook om dit twijfel-gedeelte te laten gedragen als "activatie-output = 0 = false". Of dit een goede weg is, is wederom afhankelijk van het domein waar je de AI in laat leren.

Acties:
  • 0 Henk 'm!

  • maniak
  • Registratie: Augustus 2000
  • Laatst online: 21-09 08:52
Bedankt voor je antwoord.. iets uitgebreider dan nodig, maar zeker leerzaam voor anderen die ook met dit onderwerp bezig zijn of gaan. Ik ga mijn hidden nodes aanpassen dat de outputs niet alleen 0 of 1 zijn ;)