Kunstmatige intelligentie
Molurus Niet per se. Het brein is heel ingewikkeld en snappen we nog niet. Bij neurale netwerken is het onmogelijk om te weten hoe ze werken. Je kunt natuurlijk begrijpen hoe het netwerk in theorie werkt, maar de exacte reden waarom je op Youtube wel de ene video en niet de andere video aangeraden krijgt is onmogelijk te achterhalen (als die reden al bestaat).
Interessante video daarover, weer op behoorlijk basisniveau.
Molurus Het brein en een algoritme zijn helemaal niet zo vergelijkbaar als vaak wordt gedaan. Het is een makkelijke metafoor natuurlijk en beide bevatten netwerken. Maar zoals we steeds meer over de werking van het brein te weten komen zullen we nooit doen over één specifiek neuraal netwerk. Er zijn niet een paar centrale zenuwbanen, er zijn geen losse gebieden verantwoordelijk voor deeltaken, etc.
Plus dat algoritmes haast per definitie in staat zijn tot dingen die mensen niet kunnen (anders gebruikten we ze niet). De dingen die ze doen zijn dus ook taken die mensen niet kunnen overnemen, wat het des te belangrijker maakt om te weten hoe beslissingen worden genomen. Het is een kwestie van tijd voor er vechtrobots bestaan die op basis van neurale netwerken besluiten wie er wordt gedood en wie niet. Dan is het toch wel vrij essentieel dat je begrijpt welke afweging er gemaakt wordt.
Dit is een vrij goede introductie serie voor de simpelste Neural Networks, gaat net wat meer de diepte in. Voor een universitair vak hierover in het begin nog wel iets aan gehad. Eerste drie video's zijn volgens mij calculus-vrij, de laatste gaat wat meer de diepte in.
Het eerste wat ik me afvraag trouwens, is waarom je zo'n systeem zou opbouwen uit een specifiek doch arbitrair aantal lagen. Je zou het ook geheel vrij kunnen opzetten.
- Edited
tsjok Het brein en een algoritme zijn helemaal niet zo vergelijkbaar als vaak wordt gedaan. Het is een makkelijke metafoor natuurlijk en beide bevatten netwerken. Maar zoals we steeds meer over de werking van het brein te weten komen zullen we nooit doen over één specifiek neuraal netwerk. Er zijn niet een paar centrale zenuwbanen, er zijn geen losse gebieden verantwoordelijk voor deeltaken, etc.
Hoe kom je precies tot de conclusie dat neurale netwerken op dit punt anders functioneren dan hersenen? Die zie ik niet.
Zoals gezegd: in essentie is het dezelfde methodiek. En dat impliceert dat ook bij neurale netwerken in computers specifieke nodes betrokken zijn bij specifieke taken.
Het is overigens niet zo dat we daar nu zo veel wijzer van worden. Het blijft een enorme brei, in beide gevallen. De resultaten van deze methode zijn extreem lastig te analyseren, in beide gevallen.
- Edited
Molurus
Dat is ook mogelijk. De eerste groep aan nodes zijn je input nodes, dus hoeveel verschillende inputs je systeem krijgt. Laatste nodes zijn hoeveel verschillende classificaties je model nodig heeft. In het geval van het filmpje zijn dat er 10 voor alle nummers.
Alles daartussen zijn de 'hidden layers', en dat kan zover ik weet gewoon volledig arbitrair opgebouwd worden, waar in sommige gevallen de diepte (Deep Neural Networks) of de breedte in gaan betere resultaten opleverd.
- Edited
Het basis blokje van zo'n Neural Network, is een Perceptron, een 'linear classifier'. Uitgevonden ergens in de jaren '50. Ik geloof dat het idee wel is dat zo'n perceptron lijkt op een enkele neuron in het brein. En dat zo'n network zijn inspiratie uit het brein haalt. Maar daar blijft het voor alsnog nu.
Dat zo'n Neural Network precies werkt zoals het menselijk brein is zo'n fabeltje dat goed misbruikt is door entrepreneurs in de industrie. Ik denk dat het voor nu beter is om dit soort algorithms te zien als 'statistical classification algorithms' met een 'learning' component dan om naar een brein te gaan wijzen.
- Edited
PolitiekGeaard Dat zo'n Neural Network precies werkt zoals het menselijk brein is zo'n fabeltje dat goed misbruikt is door entrepreneurs in de industrie.
Is dat aantoonbaar onjuist of domweg onbekend?
Overigens is "precies" in deze natuurlijk wel een lastige term, maar met mijn beperkte kennis van biologische neurale netwerken lijkt het minimaal nogal veel op elkaar.
Of anders gezegd: als er bekende fundamentele verschillen zijn (anders dan de hardware, maar vooral in logische zin), welke zouden dat dan zijn?
Molurus
Het enige wat ik kan bedenken is dat zo'n Neural Network synchroon is en data dependencies heeft. Een layer kan pas dingen berekenen als de vorige layer volledig klaar is, en de berekening gaat één kant op. Zelfs bij het parallel uitvoeren voor een enkele berekening van het algorithm, is je limiet het aantal nodes in 1 layer die je gelijktijdig kunt laten berekenen. Dit kun je nog verder optimaliseren, maar het idee is dus dat het een synchroon proces is. Volgens mij is het brein dat niet.
Maar ik weet te weinig van processen in het brein om hier meer zinnigs over te zeggen.
- Edited
Als developer kan ik je zeggen dat je dat prima asynchroon kunt implementeren. In de praktijk komt het erop neer dat cycles worden verdeeld over verschillende processen en uiteindelijk over verschillende cores van de CPU. Maar ik zie niet waarom dat tot andere resultaten zou leiden dan een perfect asynchrone opzet. Ik zie dat meer als een onderliggende hardware issue dan iets dat aannemelijk tot andere resultaten zal leiden. Het hoeft ook niet per se een discreet aantal lagen te zijn. Je zou een (computer) neuraal netwerk prima kunnen opzetten met 'neurons' die arbitrair verbonden kunnen zijn met diverse andere 'neurons', en niet zozeer in discrete lagen. (Dat laatste is handig om de werking uit te leggen, maar niet essentieel.) Een computer neuron heeft dan op hoofdlijnen de volgende structuur (pseudo code):
Neuron
{
value
dictionary <neuron, weight factor>
}
Zover ik weet is het bij biologische neurons ook 1-richtingsverkeer. 1 axon die informatie doorstuurt, en een collectie van dendrieten die signalen ontvangen. Ook daar zie ik geen fundamenteel verschil.
- Edited
Iets uitgebreidere structuur van een computer Neuron:
Neuron
{
Dictionary<Neuron, Weight> Neurons
Value
{
get
{
sum = 0
weightSum = 0
foreach (Neuron n in Neurons)
{
sum += n.Key.Value * n.Weight
weighSum += n.Weight
}
return(sum / weightSum)
}
}
}
Merk op: dit is niet gebonden aan lagen of een specifieke volgorde van processing.
- Edited
Het probleem is dat voor bijvoorbeeld dit voorbeeld:
Alle hidden layer nodes zijn afhankelijk van de output van de input nodes. Je kunt niet al een hidden node gaan berekenen als de input nodes nog niet klaar zijn. Je kunt bijvoorbeeld wel alle hidden nodes asynchroon van elkaar gaan berekenen. En dat je het dus niet boeit welke van die 4, het eerst klaar zijn. Maar alle 4 de taken zullen klaar moeten zijn voordat je met de paarse begint omdat er een data dependency tussen zit. Wacht je niet, dan krijg je een output die niet overeenkomt met je weights. En wat bepaald dan dat de output al een berekening mag maken als de hidden nodes nog niet klaar zijn, en hoeveel mogen er dan nog niet klaar zijn, etc. In de logica van dit soort modellen zit dus altijd een soort van synchroonheid. Terwijl er volgens mij niets in het menselijk brein zit die pas een zenuwcel laat 'vuren', als alle gekoppelde zenuwcellen klaar met wel of niet vuren zijn.
Met één weg bedoel ik dat er alleen een feed-forward path is, er is geen interne feedback. Het training process is min of meer de feedback van dit soort modellen. Maar inderdaad, dat ligt natuurlijk aan het model dat je gebruikt. Daar zullen vast wel concepten omtrent zijn, maar daar heb ik geen kennis van.
- Edited