11

Sto facendo un progetto di rete neurale come progetto di laurea dell'ultimo anno. L'idea del progetto: un robot molto semplice con 2 motori e due sensori ir e bump attraverserà un ambiente con l'uso di una rete neurale che si trova in un computer. Il requisito principale è di osservare possibilmente con una GUI adeguata il processo di apprendimento e il processo evolutivo della Rete Neurale. (L'obiettivo principale è osservare la rete neurale e le sue modifiche per non guidare il robot). Il robot comunicherà con il computer utilizzando la comunicazione seriale nelle prime fasi del progetto e utilizzerà quindi WLAN.Opinione per un linguaggio di programmazione adatto per il cervello di un robot di rete neurale?

La mia domanda è qual è il linguaggio migliore che è possibile utilizzare per implementare i componenti nel computer (rete neurale). Le cose che devono essere considerate sono: Facilità di implementazione della rete neurale, Prestazioni (Anche se il compito del robot sembra semplice, osservare l'evoluzione della rete neurale potrebbe implicare un po 'di matematica modificando anche la GUI), Facilità di interfaccia a l'hardware (seriale e WLAN)

Ho finora considerato JAVA e C# .. Chiedo anche la tua opinione ... Per favore, dai il tuo feedback sul progetto e sugli aspetti delle mie considerazioni quando scegli una lingua. altre parole .. che altro dovrei cercare prima di prendere una decisione)

Grazie.

risposta

15

(L'obiettivo principale è quello di osservare la rete neurale , e le sue modifiche non al guidare il robot).

Una rete neurale è uno dei tipi di studenti che ha una forma non facilmente comprensibile (se non del tutto) dagli esseri umani. Visualizzare la rete e i suoi pesi non sarà davvero interessante o vantaggioso. Sarà meglio salvare lo stato della rete neurale in vari punti durante il suo allenamento - inizio, metà e fine, per esempio - e quindi dimostrare il comportamento del robot con tutti e tre. Spero di aver dimostrato che, con l'avanzare della formazione, le prestazioni sono migliorate (indipendentemente dalla metrica obiettivo che hai scelto). Potresti voler mostrare alcuni grafici che mostrano la valutazione "prestazioni" del robot dopo N intervalli - alla fine dovresti raggiungere un asintoto, o anche iniziare a vedere le prestazioni scomparire, poiché l'allenamento eccessivo diventa una responsabilità. (Almeno, questo è quello che avrei voluto vedere se fossi rivedendo il progetto in un ambiente accademico.)

La mia domanda è: quale è la migliore linguaggio che può essere utilizzato per implementare i componenti del Computer (Neural Network

RNA possono essere scritti in qualsiasi lingua. Utilizzare la lingua che stai più bene con, o almeno qualunque linguaggio è "compatibile" con il set corrente fino. (ad esempio, se si dispone già di un robot che parla con una macchina Windows tramite una connessione seriale usando C#, allora perché non usare quella configurazione esistente come base per il tuo progetto? già finito a metà!). Se quello è Java o C#, allora provaci. Non c'è motivo per cui dovresti aver bisogno di imparare una nuova lingua. In effetti, raccomanderei lo non di imparare una nuova lingua per il tuo progetto. Preferirai molto passare il tuo tempo a lavorare sul tuo interessante problema, piuttosto che cercare di capire gli angoli polverosi di qualche nuova lingua.

2

Sono d'accordo con Shaggy che la rappresentazione visiva di una rete abbastanza complessa da guidare un robot non sarà probabilmente una vista interessante.

Hai visto progetti simili simili? Alcuni googling veloci hanno mostrato The Zero Dimension - un tentativo di visualizzare alcuni aspetti dell'apprendimento ANN in 3D. Ecco il loro video demo. Probabilmente ce ne sono di più - probabilmente ti darebbero alcune informazioni su quali aspetti fai e non vuoi concetrare.

Ecco un article sulla visualizzazione della struttura ANN (ancora, solo il primo su cui mi sono imbattuto). Come vedi, la visualizzazione non è molto intuitiva.

Parlare della lingua: basta scegliere quello con cui si è più a proprio agio. Oppure scegli quello con cui vorresti migliorare la tua esperienza - se hai attitudine e tempo per imparare durante questo progetto.
Una cosa da tenere a mente, però: l'apprendimento di ANN è un'attività computazionalmente intensiva, e ottenere prestazioni ragionevoli in linguaggi "di livello superiore" come C# o Java sarà probabilmente più difficile rispetto a quelli di livello inferiore come C++.

Vorrei anche suggerire di considerare l'utilizzo di librerie esistenti per lavorare con NN. Ho usato il pacchetto di reti neurali di STATISTICA (costa qualche soldo) qualche anno fa, credo ci siano anche alcune librerie open source.
L'implementazione di un buon algoritmo di apprendimento ANN in modo corretto ed efficiente è difficile, quindi è possibile prendere un'implementazione esistente e concentrarsi sulla parte della GUI/visualizzazione.

1

Si consiglia di utilizzare C# con la libreria di rete neurale neurondtonet gratuita. Penso che ti darà tutto ciò che ti serve

1

Considera Matlab/Labview. La combinazione rende molto facile visualizzare l'operazione del programma e tracciare gli stati interni.