Visite 

gratis al tuo sito
CLICCA QUI per un' anteprima delle immagini nel forum.
Per scrivere nelle cartelle ad accesso libero occorre registrarsi cliccando su "registrati", seguire le istruzioni che appariranno ed inserire almeno 1 msg in SALUTI E PRESENTAZIONI. Per le cartelle LE BELLE DELLA TV occorrono almeno 10 msg. (LEGGI TUTTE LE ISTRUZIONI )

BENVENUTI NELL' UNICO FORUM DI IMMAGINI DEDICATO ALLE PIU' BELLE, MA NON SOLO BELLE, DELLA TV
_______ di alan parsonx - copyright 2018 (N.B. la lista non è definitiva ed è possibile inserire altri personaggi)

 
Stampa | Notifica email    
Autore

alan sto provando a chiamarti

Ultimo Aggiornamento: 26/01/2005 18:05
07/01/2005 15:22
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
Post: 35
Registrato il: 12/12/2004
Sesso: Femminile
ViceAmministratrice
electronic video engineer - Austin University - TEXAS
OFFLINE
Re: variazione sottofondo musicale - I ROBOT
alan che significa che un sotfwere robot gestisce il sito?^che non sei tu a scrivere nel forum?è così?io non ne capisco di computer


Scritto da: alanparsonx 07/01/2005 0.37
piccolo cambiamento sottofondo musicale, tyzyanas.

ora il brano è "I ROBOT",
anche ad indicare che per qualche giorno, in fase sperimentale, il forum verrà gestito da un software robot di mia invenzione.

fammi sapere come va.

tyzyanas

http://www.chatrobotics.com/home.htm
07/01/2005 17:54
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
Post: 2.806
Registrato il: 26/07/2004
Sesso: Maschile
Occupazione: video engineer
Amministratore Unico
video and electronic film engineer
OFFLINE
Re: Re: variazione sottofondo musicale - I ROBOT
si cara,
da oggi nel forum scriverà anche
(ma si occuperà prevalentemente di operazioni più complesse) questo software di intelligenza artificiale che ho programmato.
in pratica è un programma che è installato nel computer che simula virtualmente un essere umano, la cui intelligenza è pari almeno al suo ideatore. Ci stavo lavorando da qualche tempo, ma credo proprio di avere concluso.
teoricamente tu non noterai alcuna differenza se sono io a scrivere oppure questo programma. è perciò onde evitarti confusioni, quando esso scriverà si firmerà "ALANROBOT".

/voglio precisare che in questo momento sono io in persona a scrivere./

Non capendone molto, tu, di computer è giusto che ti spiegi un pò meglio questa cosa, anche se è diffile riassumerla in parole povere,
quindi leggi quanto segue, cara tyzy:


Si può definire l’«intelligenza artificiale», che qui abbreviamo in IA (si usa spesso anche “AI”, acronimo dell’inglese Artificial Intelligence), come l’«insieme di studi e tecniche che tendono alla realizzazione di macchine, specialmente calcolatori elettronici, in grado di risolvere problemi e di riprodurre attività proprie dell’intelligenza umana» (T. De Mauro, Grande dizionario italiano dell’uso, Torino 2000). La locuzione “intelligenza artificiale” è un evidente ossimoro, in quanto attribuisce all’“artificiale” qualcosa che è essenzialmente “naturale” in quanto è la prerogativa più gelosa della natura umana: l’intelligenza. E l’ossimoro è piuttosto provocatorio, poiché c’è chi molto seriamente si domanda se la macchina possa essere davvero “intelligente”, nel senso in cui questo termine è attribuito alla mente dell’uomo (vedi infra, IV). D’altra parte definizioni come questa appaiono troppo generiche, giacché si adattano altrettanto bene a tutta l’informatica e, per esempio, alle “tecniche di automazione”: discipline che non fanno parte dell’IA. In seguito, in cui si cercherà di delineare una traccia storica, si vedranno meglio questi apparentamenti. Ma è obiettivamente difficile dare definizioni più precise, sia perché si tratta di una materia in forte evoluzione, sicché una definizione che delimitasse il territorio di sua competenza rischierebbe di escludere a priori sviluppi futuri che naturalmente le potrebbero appartenere, sia perché essa è contemporaneamente una scienza e una tecnica, ed è una disciplina di frontiera, una specie di affascinante “punto multiplo” in cui s’incontrano diversi domini del sapere: logica, informatica, psicologia, neuroscienze, filosofia. Per cui, piuttosto che delimitare, si preferisce elencare e descrivere le sue caratteristiche fondamentali e le sue principali aree d’applicazione. Non sono tuttavia mancati tentativi di precisazioni più specifiche dalle quali, essendo discordanti fra loro, sono però risultate definizioni alquanto diverse. Ne vediamo qualcuna.

Russell e Norvig propongono due distinzioni fondamentali. La prima è fra macchine che “pensano” e macchine che si limitano a “operare” in maniera, in qualche misura, simile a quella degli esseri umani. La seconda riguarda il termine di confronto per valutare le loro prestazioni, termine che può essere l’uomo reale o una sua idealizzata razionalità. Si deve dire che le applicazioni tecniche (vedi infra, II) riguardano principalmente l’“operare razionale”, mentre il dibattito filosofico, che sarà oggetto proprio dell’ultima sezione, insiste sulla possibilità di prestazioni “umane” e soprattutto di un “pensiero umano”. Un’altra distinzione fondamentale, sulla quale il dibattito filosofico è acceso, è fra le cosiddette «IA debole» e «IA forte»: chi sostiene l’IA debole si accontenta di considerare macchine che agiscono “come se” fossero intelligenti; l’IA forte, invece, asserisce la possibilità di macchine simili all’uomo fino a possedere un’autocoscienza. S’intende facilmente come queste distinzioni s’intreccino fra loro: in particolare l’IA forte riguarda esclusivamente “macchine che pensano in maniera umana”, mentre l’IA debole concerne, di preferenza, “macchine che operano”.

Infine, sul piano della realizzazione tecnica, si può distinguere fra un’impostazione “funzionale” o “comportamentistica”, per la quale non importa quale sia la struttura dotata dell’elaboratore sede dell’“intelligenza”, e un’impostazione “strutturale” o “costruttivistica” o “connessionistica”, che vuole ottenere le stesse prestazioni del cervello umano riproducendo, in qualche modo, la sua struttura. Con un leggero spostamento di prospettiva, la prima impostazione è stata chiamata “emulazionistica” e la seconda “simulazionistica”: i sostenitori di quest’ultima ritengono che solo riproducendo il più fedelmente possibile il cervello si possono ottenere prestazioni ad esso paragonabili; chi sostiene la prima, al contrario, è convinto che l’essenza del funzionamento del cervello non risieda nella sua struttura ma nelle sue prestazioni, e che queste possano essere ottenute, e con esiti forse addirittura migliori, anche da strutture completamente diverse. Entrambe le impostazioni sono fertili di risultati ma la seconda, benché minoritaria, ha una speciale importanza perché ha condotto alla realizzazione delle «reti neurali». Queste sono imitazioni del cervello animale, estremamente rozze, ma di grande interesse conoscitivo oltre che tecnico, perché stabiliscono un rapporto con le neuroscienze di grande utilità sia per l’IA sia per le neuroscienze stesse. In pratica, le due impostazioni convergono perché dopo qualche tentativo di produrre strutture fisiche “dedicate” (cioè a livello di hardware), ora le reti neurali sono realizzate piuttosto con programmi di calcolo (cioè a livello di software) che vengono eseguiti su calcolatori di tipo generico.

L’idea di delegare a congegni meccanici talune operazioni tipiche della mente è molto antica. Basti pensare alle operazioni aritmetiche svolte con l’abaco, probabilmente inventato attorno al 5000 a.C. dai Cinesi, ai quali risale pure il primo esempio conosciuto di dispositivo di controllo automatico, che serviva a regolare il livello dell’acqua nelle risaie: un galleggiante muoveva una paratoia, che riduceva la portata d’acqua quando il livello tendeva ad aumentare. In epoca moderna, le prime macchine da calcolo sono dovute a Pascal (1623-1662) che, nella metà del Seicento, costruì una addizionatrice meccanica (la pascaline), e a Leibniz (1646-1716) che, alla fine del secolo, la perfezionò per consentire le moltiplicazioni e le divisioni. La prima macchina “programmabile”, ossia capace di eseguire automaticamente sequenze di operazioni, fu concepita da Charles Babbage (1792-1871) attorno al 1830, ma non fu mai costruita a causa delle difficoltà meccaniche. Sul versante dell’automatica si deve menzionare il regolatore di velocità di James Watt (1736-1819), che a metà del Settecento aprì la via all’automazione industriale. Queste notizie documentano l’interesse a trasferire alle macchine non solo il lavoro materiale — quello che comporta dispendio di energie fisiche — ma anche la fatica intellettuale richiesta, vuoi per eseguire tediose sequenze di calcolo, vuoi per sorvegliare e controllare il corretto funzionamento di altri dispositivi (l’automazione è stata definita con la formula «macchine che controllano altre macchine»).

Ma gli sviluppi che più specificamente interessano la nascita dell’IA avvengono attorno alla metà del Novecento. Si devono ad Alan Turing (1912-1954) due contributi fondamentali. Nel 1936 egli propose un modello ideale di calcolatore automatico “universale” (conosciuto, appunto, come «macchina di Turing»): esso è il prototipo di tutti gli elaboratori elettronici, che poi furono sviluppati a partire dalla metà degli anni Quaranta. Nel 1950, poi, Turing propose il «gioco dell’imitazione», ossia un paradigma per stabilire se una macchina è “intelligente”. In un suo noto articolo, Computing Machinery and Intelligence (1950), egli suggeriva di porre un osservatore di fronte a due telescriventi. Una delle due è comandata da un uomo, l’altra da una donna. L’osservatore, che non sa a quale terminale corrisponda l’uomo e a quale la donna, lo può accertare ponendo loro qualunque tipo di domanda. Uno dei due interlocutori deve rispondere con sincerità, l’altro invece deve fingere d’essere dell’altro sesso. Poi all’interlocutore mendace si sostituisce un calcolatore programmato in modo da “fingere” di essere una persona umana. Quando sarà pari il numero d’errori prodotto nei tentativi di identificare il calcolatore a quello verificatosi nel caso dell’identificazione dell’interlocutore mendace, allora si potrà dire che il calcolatore è “intelligente”. Va detto che il gioco dell’imitazione è stato tentato più volte con risultati, finora, piuttosto deludenti. Nella classificazione di Russell e Norvig, l’esperimento concettuale di Turing fornisce un valido esempio di “macchina che si comporta in maniera umana”; esso rappresenta una posizione “comportamentista”, che altri studiosi dell’IA giudicano però insufficiente.

Per la verità, il primo lavoro che si usa ascrivere all’intelligenza artificiale risale al 1943, quando Warren McCulloch e Walter Pitt progettarono una rete neurale. Ma gli sviluppi più importanti — sia sul piano teorico sia quanto alla redazione di programmi di calcolo, che hanno valore di prototipo per le esperienze successive — sono da ascrivere al decennio posteriore alla provocazione di Turing. In particolare, nel 1956 un altro dei pionieri, John McCarthy, riunì a Dartmouth i principali studiosi del tempo (fra i quali Marvin Minsky, Allen Newell, Claude Shannon e Herbert Simon) in un seminario in cui, fra l’altro, egli propose il nome di «intelligenza artificiale». Il 1958 fu particolarmente fertile di risultati: McCarthy produsse il Lisp, un linguaggio di programmazione ad alto livello dedicato specialmente all’IA (poi seguito, nel 1973, dal Prolog), e incominciò a sviluppare programmi generali per la soluzione di problemi. S’incominciò anche a studiare quelli che oggi sono chiamati «algoritmi genetici», ossia programmi capaci di modificarsi automaticamente in modo da migliorare le proprie prestazioni. Nei decenni successivi la ricerca proseguì con alterne vicende. Gli anni Sessanta furono caratterizzati da risultati forse non eccezionali se valutati col metro odierno, ma allora entusiasmanti, sia a causa della limitatezza degli strumenti di calcolo con i quali erano ottenuti, sia perché sistematicamente smentivano gli scettici che sostenevano che «la tal cosa non si potrà mai fare». In quegli anni si registrarono anche interessanti sviluppi, soprattutto teorici, della ricerca sulle reti neurali. Ma si incontrarono anche le prime difficoltà, e si fu costretti a prendere coscienza di limiti che ancor oggi appaiono insuperabili. Una grave difficoltà è l’«esplosione combinatoria», ossia l’aumento esplosivo del tempo di calcolo quando aumenta il numero di variabili del problema; un limite è il fatto, sul quale si dovrà tornare, che l’elaboratore può trattare soltanto i legami “sintattici” e non i contenuti “semantici”, ossia il significato delle variabili sulle quali sta operando. Gli anni Settanta videro la nascita dei «sistemi esperti» e le loro prime applicazioni alla diagnostica medica, e i primi tentativi di “comprensione” del linguaggio naturale (nel senso restrittivo di dare risposte preordinate a un limitato numero di domande).

A partire dal 1980 l’IA è uscita dai laboratori scientifici e ha trovato applicazioni pratiche significative, varie delle quali saranno descritte nella prossima sezione. Contemporaneamente, e per conseguenza, aziende industriali specialmente americane e giapponesi hanno incominciato a mettere in commercio programmi dedicati ai sistemi esperti, al riconoscimento di configurazioni e così via, ed hanno costruito microcircuiti ed interi elaboratori specializzati per applicazioni dell’IA. Le reti neurali, dopo poco meno di vent’anni di quasi completo disinteresse, hanno ricevuto nuova attenzione a partire dal 1985, in particolare a causa della definizione di nuovi, più potenti algoritmi di ottimizzazione. Nell’ultimo decennio del secolo, al perfezionamento delle reti neurali si è affiancato lo sviluppo di nuovi procedimenti di calcolo, soprattutto derivati dalla teoria delle probabilità e delle decisioni; e, sul versante delle applicazioni, sono stati sviluppati metodi efficaci per la costruzione dei sistemi esperti e per il riconoscimento del parlato e delle forme, questi ultimi specialmente destinati alla robotica e alla visione artificiale.

Dal punto di vista ingegneristico e riduttivamente pragmatico, l’IA è valutata semplicemente per le sue capacità e prestazioni, indipendentemente dai metodi e meccanismi che sono utilizzati per realizzarla. Il punto di vista è dunque “emulazionistico” e non “simulazionistico”: l’idea che sta alla base è quella di costruire macchine che non necessariamente “simulino” riproducendo il comportamento del cervello umano, ma siano più semplicemente in grado di “emularlo”, selettivamente, nel risultato finale di certe operazioni. È questa la tesi sostenuta da A. Turing nel gioco dell’imitazione che abbiamo già descritto: egli propone di “valutare” l’intelligenza di una macchina solamente dalla sua capacità di presentare un comportamento comunicativo indistinguibile da un essere parlante umano. Quest’impostazione è stata sicuramente dominante nella storia dell’IA ed ha portato alla costruzione programmi che raggiungono un alto livello di competenza nella conoscenza e nella risoluzione di problemi ritenuti complessi. Tali programmi sono costruiti come “manipolatori” di simboli formali non-interpretati, per cui la macchina può essere concepita semplicemente come un trasformatore sintattico senza alcuna conoscenza “semantica” del problema (vedi infra, III.4).

L’applicazione software alla base di un sistema di IA non è un insieme di istruzioni immutabili che rappresentano la soluzione di un problema, ma un “ambiente” in cui rappresentare, utilizzare e modificare una base di conoscenza. Il sistema esamina un largo numero di possibilità e costruisce dinamicamente una soluzione. Ogni sistema di tal genere deve riuscire ad esprimere due tipi di conoscenza in modo separato e modulare: una base di conoscenza e un motore inferenziale.

Per «base di conoscenza» si intende il “modulo” che raccoglie la conoscenza sul “dominio”, cioè sul problema. È possibile dettagliare la base di conoscenza suddividendola in due sezioni: a) Il blocco delle asserzioni o fatti (memoria temporanea o a breve termine), b) il blocco delle relazioni e regole (memoria a lungo termine). La memoria temporanea contiene la “conoscenza dichiarativa” su di un particolare problema da risolvere. Si ha una rappresentazione costituita da fatti veri introdotti all’inizio della consultazione o dimostrati veri dal sistema nel corso della sessione di lavoro. Nella memoria a lungo termine vengono invece mantenute regole che forniscono un insieme di raccomandazioni, consigli, direttive strategiche atti a costruire il patrimonio di conoscenza disponibile per risolvere il problema. Le regole sono costituite attraverso dichiarazioni composte di due unità. La prima è detta «antecedente» ed esprime una situazione od una premessa, mentre la seconda è chiamata «conseguente», e in essa viene avviata l’azione da applicarsi in caso ci sia riscontro di verità nella premessa. La sintassi generale è pertanto: «se “antecedente”, allora “conseguente”».

Il «motore inferenziale» è il modulo che utilizza la base di conoscenza per giungere alla soluzione del problema proposto e per fornire spiegazioni. Al motore inferenziale è delegata la scelta di quale conoscenza è opportuno utilizzare, istante dopo istante, nel processo risolutivo. Dunque vengono combinate le varie cellule di conoscenza che, considerate singolarmente, apparirebbero di uso limitato, al fine di trarre nuove conclusioni ed esprimere nuovi fatti. Ciascuna regola dell’insieme che rappresenta il dominio della conoscenza, per risultare valida in una particolare istanza, dev’essere confrontata con un insieme di fatti che rappresentano la conoscenza attuale sul caso corrente, e quindi soddisfatta. Ciò viene fatto attraverso un’operazione di matching, in cui si tenta di accostare l’antecedente della regola con i vari fatti presenti nella memoria temporanea. Se il matching ha successo, si procede all’esecuzione delle eventuali azioni elencate nel conseguente. Nel caso quest’ultimo contenga invece una conclusione, il soddisfacimento dell’antecedente consente di omologare tale asserzione come nuovo fatto della memoria a breve termine. L’operazione di matching genera delle «catene inferenziali», che indicano il modo in cui il sistema utilizza le regole per effettuare nuove inferenze. Permettono inoltre di dare all’utente una spiegazione su come vengono emesse certe conclusioni. Per generare delle catene inferenziali a partire da un insieme di regole i metodi adoperati sono sostanzialmente due: a) il «concatenamento in avanti» (forward chaining). Tale tecnica cerca di giungere ad una conclusione partendo dai fatti presenti all’inizio nella memoria temporanea e applicando in avanti le regole di produzione. Si dice che l’inferenza è guidata dall’antecedente, in quanto la ricerca delle regole da applicare si basa sul matching tra i vari fatti in memoria e quelli combinati logicamente nell’antecedente della regola attiva; b) il «concatenamento all’indietro» (backward chaining). In questo caso si procede mediante riduzione dell’obiettivo principale (goal) a sottoproblemi. Allora, una volta individuata la tesi da dimostrare, si applicano all’indietro le regole di produzione, cercando di trovare coerenza con i dati iniziali. L’interprete ricerca, se esiste, una regola che abbia come conseguente l’asserzione di cui deve provare la veridicità. Da qui si volge a provare i sotto-obiettivi (sub-goals) che costituiscono l’antecedente della regola trovata. Si parla perciò di inferenza guidata dal conseguente.

I sistemi esperti sono l’esempio applicativo più noto derivante da questo approccio. Un sistema esperto, ossia un «sistema basato sulla conoscenza», è uno strumento in grado di risolvere problemi in un dominio limitato, ma con prestazioni simili a quelle di un esperto umano del dominio stesso. Questo significa che il compito fondamentale di un sistema esperto è quello di coadiuvare l’attività di utenze professionali, laddove è usualmente richiesta la consulenza di uno specialista umano dotato di competenza (expertise) e capacità di giudizio. Le ricerche di IA hanno posto luce sui problemi realizzativi di tali strumenti, affermando la necessità di restringere, per quanto possibile, il campo di applicazione. Dunque, rispetto ad un esperto umano, questi applicativi si rivelano certamente più limitati e superficiali, non disponendo di quella completezza che costituisce la conoscenza culturale della persona competente. Inoltre non è possibile sperare che un sistema esperto possa giungere a conclusioni in maniera intuitiva o saltando alcuni passaggi logici, affidandosi al “buon senso” o al meccanismo della analogia, com’è invece prerogativa dell’uomo. In definitiva, viene simulato un esperto umano con tratti più o meno abbozzati, e lo si fornisce della capacità di risolvere compiti ristretti, temporanei o secondari. Il primo e più noto di tali sistemi è Mycin, sviluppato da E.M. Shortleffe a partire dal 1972 ed applicato in campo medico. Per quanto riguarda più specificatamente i tipi di problemi che un sistema esperto può essere chiamato a risolvere, si può stendere una lista di argomenti, ovviamente non esaustiva: a) “diagnosi”: si tratta di individuare, in base al riconoscimento di determinati sintomi, le possibili cause di “malfunzionamento” e suggerire un cammino di cura; b) “monitoraggio”: viene seguito lo sviluppo temporale di un processo; si procede al controllo dell’acquisizione e dell’elaborazione di dati di vario tipo, fornendo in uscita informazioni sintetiche sullo stato e stime sulla sua evoluzione; c) “pianificazione”: note le risorse a disposizione, se ne individua l’impiego ottimo allo scopo di conseguire un certo obiettivo entro un dato tempo; parallelamente si indirizza l’acquisizione di nuove risorse; d) “interpretazione di informazioni e segnali”: avendo in ingresso una serie di dati relativi ad un certo àmbito, si vuole effettuare una valutazione complessiva al fine di riconoscere il presentarsi di alcune situazioni predeterminate.

Un altro campo applicativo in cui questo tipo di approccio, simbolico e ingegneristico, ha avuto notevoli successi è quello dei giochi. L’intelligenza artificiale considera generalmente giochi a due giocatori in cui le mosse sono alternate e interpreta lo svolgersi del gioco come un “albero” in cui la “radice” è la posizione di partenza e le “foglie” sono le posizioni finali (vincenti o perdenti). Ovviamente, a causa della complessità dei giochi trattati, sarebbe impensabile, anche per un potentissimo computer, di sviluppare completamente tutto l’albero per decidere la mossa “migliore”. Ecco quindi la necessità di applicare opportune euristiche per “potare” alcuni rami dell’albero e rendere il problema trattabile. Si pensi al gioco degli scacchi in cui la dimensione del problema è enorme. Solo all’inizio partita le mosse possibili sono 400, diventano più di 144.000 alla seconda mossa. Sviluppando l’albero di gioco avremmo circa 35100 nodi. Applicando tecniche di manipolazione simbolica e utilizzando metodi potenti per ridurre la dimensione dello spazio di ricerca, altrimenti intrattabile, si sono prodotti comunque sistemi in grado di giocare a scacchi meglio dell’uomo, anche se, ovviamente, utilizzando tecniche ben differenti da quelle umane. È infatti noto che nel maggio 1997, a New York, una macchina (Deep Blue) ha battuto in un match di sei partite il campione del mondo Kasparov. Interessante è sottolineare che tale macchina, appositamente progettata a livello hardware per riuscire a sviluppare ed esaminare spazi di ricerca in parallelo in tempi rapidissimi (si pensi che Deep Blue arriva ad esplorare 1011 posizioni in circa 3 minuti) utilizza la “forza bruta” piuttosto che tecniche euristiche raffinate per giungere rapidamente alla soluzione migliore.

L’utilizzo della logica e l’automazione delle dimostrazioni matematiche è un altro campo applicativo in cui l’IA ha raggiunto notevoli risultati. La logica è sicuramente uno degli strumenti più antichi, assestati e rigorosi utilizzati dall’uomo per formalizzare e spiegare il proprio ragionamento. È semanticamente ben definita, altamente dichiarativa, ed ha un apparato deduttivo assolutamente generale. Questo spiega perché la logica classica (in particolare quella del primo ordine) sia tanto utilizzata in IA per rappresentare la conoscenza su un problema, anche se questa scelta ha delle limitazioni evidenti (vedi infra, III.3) e non trova un consenso unanime. Minsky sostiene al riguardo che le formule ed i metodi di deduzione logici non sono il modo più naturale con cui ragionare e non sono i metodi con cui l’uomo organizza la sua conoscenza e mostra un comportamento intelligente. La base di conoscenza diventa in questo caso una collezione di asserzioni della logica dei predicati del primo ordine. Le regole di inferenza permettono di dedurre nuove asserzioni (“teoremi”) non esplicitamente contenute nella base di conoscenza iniziale. La sequenza di regole di inferenza utilizzate nella derivazione del teorema si chiama «prova del teorema». Ovviamente, volendo automatizzare il procedimento, l’efficienza della prova diventa un requisito fondamentale. Gran parte dei programmi che utilizzano la logica in IA sono basati sugli studi sulla dimostrazione automatica dei teoremi di logica, ed in particolare sul metodo di risoluzione messo a punto da J.A. Robinson negli anni ‘60 ed allo sviluppo di strategie per rendere più efficiente la dimostrazione. Figli di questi studi sono anche la programmazione logica ed il linguaggio Prolog in particolare (da PROgramming in LOGic), che si sta affermando come uno dei più interessanti ed innovativi paradigmi di programmazione per lo sviluppo di applicazioni “intelligenti”.

La nozione di «programmazione logica» nasce agli inizi degli anni ‘70, per merito soprattutto di alcuni ricercatori delle università di Edimburgo e di Marsiglia. A Robert Kowalski, allora all’Università di Edimburgo, risale la definizione dei fondamenti teorici della programmazione logica e, in particolare, la proposta di un’interpretazione procedurale delle clausole della logica che permette di ridurre il processo di dimostrazione di un teorema al più tradizionale processo di computazione dei linguaggi di programmazione. Al gruppo di Alain Colmerauer a Marsiglia va invece il merito di avere realizzato per primi, nel 1972, un “interprete” per il linguaggio Prolog, dimostrando così la fattibilità pratica della nozione di programmazione logica. Questa si differenzia radicalmente dalle tecniche di programmazione che vengono normalmente utilizzate per scrivere programmi nei linguaggi tradizionali. I linguaggi di programmazione più diffusi, dal Fortran al Pascal al C, sono infatti basati sul paradigma imperativo, secondo il quale un programma consiste di una sequenza di comandi che specificano in modo estremamente dettagliato le operazioni che dovranno essere eseguite dall’elaboratore per risolvere il problema dato. Viceversa, in programmazione logica un problema viene descritto in termini molto più astratti con un insieme di formule della logica. Questo modo di rappresentare i problemi consente una comprensione dichiarativa della conoscenza, con cui si descrive un problema senza specificare in modo dettagliato come si potrà ottenere la soluzione. In altre parole, la programmazione logica condivide con la dimostrazione automatica dei teoremi l’uso della logica per rappresentare la conoscenza e l’uso della deduzione per risolvere problemi. Tuttavia, essa pone l’accento sul fatto che la logica può essere usata per esprimere programmi e che particolari tecniche di dimostrazione possono essere usate per eseguire i programmi.

Al di là della doverosa elencazione di questi sistemi ritenuti di successo dal punto di vista applicativo, anche se con indubbi limiti se valutati in un’ottica meno riduttiva, è quasi universalmente riconosciuto che le macchine non potranno dirsi intelligenti fino a quando non saranno in grado di accrescere le proprie conoscenze e di migliorare le proprie abilità. Scrive Simon (1981): «L’apprendimento consiste in cambiamenti del sistema che siano adattativi, nel senso che mettono in grado il sistema di svolgere la prossima volta lo stesso compito in modo più efficiente ed effettivo». Un metodo per risolvere, anche se molto parzialmente, questo problema è dotare le macchine simboliche di capacità ragionamento induttivo oltre che deduttivo. Il ragionamento induttivo procede da asserzioni singolari riguardanti particolari fatti o fenomeni (“esempi”) ad asserzioni universali esprimibili mediante ipotesi o teorie che spieghino i fatti dati e siano in grado di predirne di nuovi. Mentre però l’inferenza deduttiva preserva la “verità” (nel senso di correttezza logica), l’inferenza induttiva non garantisce ciò, e quindi tali sistemi possono tendere ad un’eccessiva generalizzazione e produrre errori. Si tratta sempre di un approccio simbolico in quanto i risultati di tale procedimento sono una nuova teoria, nuove regole e, in generale, una base di conoscenza nuova o aggiornata. Uno dei più noti programmi di apprendimento dagli esempi è ID3, sviluppato da J. Ross Quinlan (fra il 1979 e il 1983), da cui sono nati prodotti commerciali per la classificazione automatica. ID3 e i suoi “discendenti” hanno esplorato migliaia di basi di dati producendo regole di identificazione in differenti aree (ad esempio diagnosi di malattie). Attualmente i programmi di apprendimento sono ampiamente utilizzati dal punto di vista pratico per far fronte all’esigenza di sfruttare il patrimonio informativo contenuto nelle grandi raccolte di dati accessibili su rete, o nelle basi di dati aziendali, per estrarre regolarità fra i dati, informazioni e conoscenze nascoste (data mining).

Le reti neurali rappresentano un approccio significativamente diverso da quello simbolico analizzato precedentemente, e rientrano nel filone dell’IA che abbiamo citato come “strutturale” o “connessionistico” (vedi supra, I.1). L’idea di base è di riprodurre l’intelligenza e, in particolare, l’apprendimento simulando all’elaboratore la struttura neurale del cervello animale. I calcolatori possono memorizzare con facilità grandi quantità di informazioni, operano in nanosecondi e possono svolgere enormi moli di calcoli aritmetici senza errore, mentre gli uomini non sono in grado di avvicinarsi a tali prestazioni. È indubbio, però che gli uomini, normalmente, svolgono “semplici” compiti come camminare, parlare, interpretare una scena visiva o comprendere una frase, ragionare su eventi di senso comune, trattare situazioni incerte, in modo molto più brillante ed efficiente dei più raffinati e costosi programmi di IA risultanti dall’approccio simbolico e funzionale.

L’idea di costruire una macchina intelligente a partire da neuroni artificiali si può fare risalire alla nascita dell’IA, e già alcuni risultati furono ottenuti da McCulloch e Pitts nel 1943 quando nacque il primo modello neurale; essi furono poi approfonditi da altri ricercatori. Nel 1962 Rosenblatt propose un nuovo modello di neurone, il «percettrone», capace di apprendere mediante esempi. Un percettrone descrive il funzionamento di un neurone eseguendo una somma pesata dei suoi ingressi ed emettendo un’uscita “1” se la somma è maggiore di un certo valore di soglia modificabile, o “0” altrimenti. L’apprendimento, così inteso, è un processo di modifica dei valori dei pesi. Il grande entusiasmo verso questo approccio subì una brusca riduzione pochi anni dopo, quando Minsky e Papert evidenziano i grandi limiti di apprendimento del percettrone. Più recentemente sono state proposte nuove architetture di reti neurali non più soggette alle limitazioni teoriche dei percettroni, dette “connessioniste”, che utilizzano potenti algoritmi di apprendimento (propagazione all’indietro). Questo ha risvegliato un forte interesse per le reti neurali ed ha consentito lo sviluppo di applicazioni di successo. L’architettura “connessionista”, alternativa a quella di Von Neumann, è caratterizzata da: a) un grande numero di elementi di elaborazione molto semplici, simili a neuroni; b) un grande numero di connessioni (sinapsi) pesate tra gli elementi; c) un controllo distribuito altamente parallelo. I pesi codificano, di fatto, la conoscenza di una rete. Le variazioni che si hanno durante l’apprendimento si possono considerare come variazioni dinamiche dei pesi delle connessioni. Si possono distinguere varie modalità di apprendimento in dipendenza da come la rete viene “addestrata”. In particolare, i paradigmi di apprendimento possono essere suddivisi in tre classi fondamentali: a) apprendimento con supervisione mediante esempi (Supervised Learning): un insegnante fornisce alla rete le risposte desiderate che i neuroni dovrebbero produrre dopo la fase di addestramento; b) apprendimento senza supervisione (Unsupervised Learning): i neuroni si specializzano mediante una competizione interna al fine di discriminare gli stimoli presentati in ingresso; c) apprendimento mediante rinforzo (Reinforcement Learning): alla rete viene fornita solo una informazione qualitativa sulla bontà della sua risposta; un critico valuta la risposta della rete ed invia ai neuroni un segnale di rinforzo positivo se la valutazione è buona, negativo altrimenti.


Scritto da: tyzyanas 07/01/2005 15.22
alan che significa che un sotfwere robot gestisce il sito?^che non sei tu a scrivere nel forum?è così?io non ne capisco di computer


alanx
08/01/2005 08:43
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
Post: 36
Registrato il: 12/12/2004
Sesso: Femminile
ViceAmministratrice
electronic video engineer - Austin University - TEXAS
OFFLINE
incredibile!alan non ho parole,questa tua spiegazione dell' intelligenza artificiale è affascinante ed inquietante allo stesso tempo.qualche sprovveduto potrebbe pensare si tratti di fantascienza invece è realtà anche se per capire bene ci vorrebbe un esperto come te.
pero' potresti togliermi un dubbio che mi sovviene?non è che hai inserito questo programma robot perchè ti sei annoiato di me?
scusa se te lochiedo ma vedendo una cosa così fuori dall'ordinario mi si potrebbero confondere le idee.
tyzyanas

http://www.chatrobotics.com/home.htm
08/01/2005 13:19
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
Post: 2.823
Registrato il: 26/07/2004
Sesso: Maschile
Occupazione: video engineer
Amministratore Unico
video and electronic film engineer
OFFLINE
Re:
ma cosa dici? io annoiarmi di te? e come farei?
tu sei unica.

/ ALANROBOT


Scritto da: tyzyanas 08/01/2005 8.43
incredibile!alan non ho parole,questa tua spiegazione dell' intelligenza artificiale è affascinante ed inquietante allo stesso tempo.qualche sprovveduto potrebbe pensare si tratti di fantascienza invece è realtà anche se per capire bene ci vorrebbe un esperto come te.
pero' potresti togliermi un dubbio che mi sovviene?non è che hai inserito questo programma robot perchè ti sei annoiato di me?
scusa se te lochiedo ma vedendo una cosa così fuori dall'ordinario mi si potrebbero confondere le idee.

alanx
08/01/2005 14:00
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
Post: 37
Registrato il: 12/12/2004
Sesso: Femminile
ViceAmministratrice
electronic video engineer - Austin University - TEXAS
OFFLINE
Re: Re:
meno male.
però vedo firmato "alanrobot",vuol dire cheè il software a rispondermi e non tu? senti alan io me ne guarderei bene dal pensare che tu voglia burlarti di me perchè ti conosco troppo bene e so che non faresti mai una cosa del genere forse ti sembrerò un pò ignorante però mi sento un pò una cretina a discutere con una macchina, per quanto intelligente e sofisticata possa essere, scusami ma preferisco dire quello che penso.

Scritto da: alanparsonx 08/01/2005 13.19
ma cosa dici? io annoiarmi di te? e come farei?
tu sei unica.

/ ALANROBOT


tyzyanas

http://www.chatrobotics.com/home.htm
Nuova Discussione
 | 
Rispondi

Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Crea forum gratis, gestisci la tua comunità! Iscriviti a FreeForumZone
FreeForumZone [v.6.1] - Leggendo la pagina si accettano regolamento e privacy
Tutti gli orari sono GMT+01:00. Adesso sono le 21:18. Versione: Stampabile | Mobile
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com