genuary.art succede durante il mese di gennaio 2023 e tutti sono invitati a partecipare.
Ogni 24 ore ci sarà un nuovo prompt per sbizzarrirsi con il proprio codice artistico.
Non è necessario seguire esattamente il prompt e si può usare qualsiasi linguaggio, framework o mezzo.
Tra le opere più significative:
Virginia Woolf, "Verso il faro"
Arthur Conan Doyle, "Il libro dei casi di Sherlock Holmes"
A. A. Milne, "Ora siamo in sei", illustrazioni di E. H. Shepard
Ernest Hemingway, "Uomini senza donne" (raccolta di racconti)
William Faulkner, "Le zanzare"
Agatha Christie, "I quattro grandi"
Edith Wharton, "Il sonno del crepuscolo"
Herbert Asbury, "Le bande di New York" (pubblicazione originale del 1927)
Franklin W. Dixon (pseudonimo), "Il tesoro della torre" (il primo libro degli Hardy Boys)
Hermann Hesse, "Der Steppenwolf" (nell'originale tedesco)
Franz Kafka, "Amerika" (nell'originale tedesco)
Marcel Proust, "Le Temps retrouvé"
Quando ChatGPT scrive qualcosa come un saggio, ciò che fa è chiedersi ripetutamente "dato il testo fino a qui, quale dovrebbe essere la prossima parola ?",
Questa "parola" aggiunta si definisce "token", e potrebbe anche essere incompleto, per cui a volte possono essere "inventate nuove parole". Ad ogni passo si ottiene un elenco di parole con le relative probabilità.
Se a volte (a caso) si scelgono parole di rango inferiore, si può ottenere un saggio "più interessante".
Il parametro che regola questa scelta si chiama "temperatura", e determina la frequenza con cui vengono usate le parole di rango più basso; in molti casi una "temperatura" di 0,8 sembra essere l'ideale.
Con l'addestramento su un numero sufficiente di testi in lingua, si possono ottenere stime abbastanza buone non solo per le probabilità di singole lettere o coppie di lettere (2-grammi), ma anche per serie di lettere più lunghe. Ad esempio ci sono circa 40.000 parole ragionevolmente usate in inglese.
Esaminando un ampio corpus di testi in inglese (ad esempio qualche milione di libri, con un totale di qualche centinaio di miliardi di parole), possiamo ottenere una stima di quanto sia comune ogni parola.
E con questa si può iniziare a generare "intere frasi", in cui ogni parola è scelta indipendentemente a caso, con la stessa probabilità che appaia nel corpus.
Come per le lettere, possiamo iniziare a prendere in considerazione non solo le probabilità per le singole parole, ma anche quelle per le coppie o per gli n-grammi di parole più lunghi.
Supponiamo di voler sapere (come fece Galileo alla fine del 1500) quanto tempo impiegherà una palla di cannone lanciata da ogni piano della Torre di Pisa a toccare il suolo. Si potrebbe misurare in ogni caso e fare una tabella dei risultati. Immaginiamo di avere dei dati (un po' idealizzati) su quanto tempo impiega una palla di cannone a cadere da vari piani: come facciamo a capire quanto tempo impiega a cadere da un piano di cui non abbiamo dati espliciti?
In questo caso particolare, possiamo usare le leggi fisiche conosciute per calcolarlo.
E da questa linea retta possiamo stimare il tempo di caduta per qualsiasi piano.
Ma per ChatGPT dobbiamo creare un modello di testo in lingua umana del tipo prodotto da un cervello umano. E per una cosa del genere non abbiamo (almeno per ora) nulla di simile alla "matematica semplice".
Se il nostro obiettivo è produrre un modello di ciò che gli esseri umani possono fare nel riconoscimento delle immagini, la vera domanda da porsi è cosa avrebbe fatto un essere umano se gli fosse stata presentata una di quelle immagini sfocate, senza sapere da dove provenisse.
Abbiamo un "buon modello" se i risultati che otteniamo dalla nostra funzione concordano tipicamente con quello che direbbe un umano.
L'approccio attuale più popolare, e di successo, utilizza le reti neurali. Inventate negli anni '40, in una forma molto simile a quella attuale, le reti neurali possono essere considerate come semplici idealizzazioni del funzionamento del cervello.
La configurazione di un "diagramma di Voronoi" separa i punti nello spazio euclideo 2D; il compito di riconoscimento delle cifre può essere pensato come se facesse qualcosa di molto simile, ma in uno spazio a 784 dimensioni formato dai livelli di grigio di tutti i pixel di ogni immagine.
Soprattutto nell'ultimo decennio, ci sono stati molti progressi nell'arte dell'addestramento delle reti neurali.
Ma per lo più le cose sono state scoperte per tentativi ed errori, aggiungendo idee e trucchi che hanno progressivamente costruito una tradizione significativa su come lavorare con le reti neurali.
Questo non vuol dire che non esistano "idee strutturanti" rilevanti per le reti neurali.
Così, ad esempio, avere matrici di neuroni in 2D con connessioni locali sembra almeno molto utile nelle prime fasi di elaborazione delle immagini.
E le attuali reti neurali, con gli attuali approcci all'addestramento delle reti neurali, si occupano specificamente di matrici di numeri.
Ora c'è il problema di ottenere i dati con cui addestrare la rete.
Molte delle sfide pratiche legate alle reti neurali e all'apprendimento automatico in generale si concentrano sull'acquisizione o sulla preparazione dei dati di addestramento necessari. Quanti dati bisogna mostrare a una rete neurale per addestrarla a un compito particolare?
In generale, le reti neurali hanno bisogno di "vedere molti esempi" per allenarsi bene.
È inoltre necessario mostrare alla rete neurale variazioni dell'esempio.
La lista di film contempla tra gli altri: "The Bling Ring", "Under the Skin", "Ex Machina", "Amy", "The Witch", "The Lobster", "A Ghost Story", "Lady Bird", "How to Talk to Girls at Parties", "Midsommar" e "Everything Everywhere All at Once".
Procedural Content Generation in Games è un libro sulla generazione di contenuti procedurali (PCG) nei giochi. Anche sulla generazione automatica o assistita da computer di contenuti come livelli, paesaggi, oggetti, regole e missioni.
Contenuti consolidati anche dai principali sviluppatori di giochi
- L'approccio basato sulla ricerca
- Metodi di generazione costruttiva per dungeon e livelli
- Frattali, rumore e agenti con applicazioni ai paesaggi
- Grammatiche e sistemi L con applicazioni a vegetazione e livelli
- Regole e meccaniche
- Pianificazione con applicazioni a missioni e storia
- ASP con applicazioni a labirinti e livelli
- Rappresentazioni per metodi basati sulla ricerca
- La prospettiva guidata dall'esperienza
- Creazione di contenuti a iniziativa mista
- Valutazione dei generatori di contenuti
Perché usare "sd" rispetto agli strumenti esistenti come "sed" ?
Il comando "sd" utilizza la sintassi delle espressioni regolari già nota da JavaScript, Python e Perl. Però senza avere a che fare con le stranezze di "sed" e "awk" e per diventare subito produttivi.
La "Modalità stringa-letterale" trova e sostituisce senza ricorrere alle regex. Non è più necessario ricordare quali caratteri sono speciali e devono essere evasi. E' facile da leggere, facile da scrivere.
Le espressioni di ricerca e sostituzione sono suddivise, il che le rende facili da leggere e scrivere. Non è più necessario fare i conti con gli slash non chiusi e quelli sfuggiti.
Le impostazioni predefinite sono scelte in modo intelligente e con buon senso, adattate all'uso quotidiano.