Εμφάνιση αναρτήσεων με ετικέτα ασκήσεις. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα ασκήσεις. Εμφάνιση όλων των αναρτήσεων

Σάββατο, Νοεμβρίου 01, 2008

Συμβολισμός vs Μαθηματικός Λογισμός

Προσπαθώντας να καταλάβω την συμβολική προσέγγιση ενός μοντέλου του νου, (btw, του Pylyshyn κάποιος να του υπενθυμίσει την δομή υποκείμενο - ρήμα - κατηγόρημα), δεν μπορώ να βγάλω απ΄τη σκέψη μου την αναφορά του Κου Μπαλτά σε ένα "συνεπές" σύστημα λογισμού.

  • Έστω {a,b,c ...} στοιχεία μιας "ομάδας"
  • Ορίζω πράξη # της οποίας το μόνο απαίτούμενο είναι πως το αποτέλεσμα της πράξης
    c = a # b
    ανήκει στην "ομάδα"
  • Ορίζω μοναδιαίο στοιχείο e τέτοιο ώστε
    a # e = a
    και
  • Ορίζω τον "ανάστροφο" του a, a^(-1) τέτοιον ώστε
    a # a^(-1) = e
Έχουμε λοιπόν ένα σύνολο {a, b, c,....} στοιχείων (συμβολισμών), κενό περιεχομένου, καθώς και μία πράξη #, επισης κενή περιεχομένου. Το συμβολικό αυτό σύστημα χαρακτηρίζεται από αιτιακές σχέσεις (επιτρεπτές πράξεις - κανόνες).

Αυτό το σύστημα μπορώ να του αποδώσω νόημα σημασιακό, αν αποδώσω τις εξής ερμηνείες:

ομάδα <-> το σύνολο των ρητών αριθμών
# <-> η πράξη της πρόσθεσης
e <-> ο αριθμός 0
a^(-1) <-> -a


Ένα αιτιοκρατικό σύστημα το οποίο χαρακτηρίζεται από επεξεργασία συμβόλων κενών περιεχομένου, στο οποίο μπορώ να αποδώσω ερμηνείες....

Τετάρτη, Νοεμβρίου 28, 2007

Scheme: Μάθημα Δευτέρας 26/11/2007

Μεταφέρω τις ασκήσεις που κάναμε την περασμένη Δευτέρα.

1.


(define (oura x y)
(cond ((> x y)
'End)
((<= x y)
(display " ")
(display x)
(oura (+ 1 x) y))))


που μας δίνει (για x=1 και y=20):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20End


2.

(define (oura2 x y)
(cond ((> x y)
'End)
((<= x y)
(oura2 (+ 1 x) y)
(display " ")
(display x))))


που μας δίνει (για x=1 και y=20):
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

*Από εδώ και κάτω αλλάξαμε το 'End με => (display "End")

3.

(define (oura3 x y)
(cond ((> x y)
(display "End"))
((<= x y)
(oura3 (+ 1 x) y)
(display " ")
(display x))))


που μας δίνει (για x=1 και y=20):
End 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

4.

(define (oura4 x y)
(cond ((> x y)
(display "End"))
((<= x y)
(oura4 (+ 1 x) y)
(display " ")
(display x)
(oura4 (+ 1 x) y))))


που μας δίνει (για x=1 και y=20):
άλλ' αντί άλλων (αλλά το κάνουμε για εκπαιδευτικούς σκοπούς)

5.

(define (oura5 x y)
(cond ((> x y)
(display "End"))
((<= x y)
(display " ")
(display x)
(oura5 (+ 1 x) y)
(display " ")
(display x))))


που μας δίνει (για x=1 και y=20):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20End 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Αυτά από μένα.
Για περεταίρω εξήγηση του τι σημαίνουν όλα αυτά θα μπορούσα να προσπαθήσω να τη δώσω, αλλά το αφήνω στους πληροφορικάριους ;)

Σάββατο, Νοεμβρίου 17, 2007

Γνωσιακή Επιστήμη - Άσκηση 6η

Άσκηση 6η:
Με βάση τις ιδιότητες των διαφόρων προσεγγίσεων στην κατανόηση των νοητικών διεργασιών, δηλώστε και τεκμηριώστε την προτίμησή σας σε μια από αυτές για το γενικό μοντέλο του νου.

Υποχρεωτικά Αναγνώσματα :
Churchland & Sejnowski (1992) εισαγωγή
Fodor (2000)  εισαγωγή, ή Cowan (2003)

Προθεσμία Παράδοσης :
Τρίτη, 20/11/2007,  06.15μμ


Σχόλιο (δικό μου):
Ξεκινάμε μια ψηφοφορία μεταξύ μας για να δούμε ποια προσέγγιση επικρατεί μεταξύ των δυνάμει (wannabe..) γνωσιοεπιστημόνων μετά από μισό ακαδημαϊκό εξάμηνο εντατικού εγκεφαλοζορίσματος (και κάμποσων εγκεφαλοστραμπουληγμάτων..) επί των προβληματισμών και των μεθόδων του εν λόγω επιστημονικού πεδίου??

Κυριακή, Νοεμβρίου 04, 2007

Tlearn και δυαδική πρόσθεση

Α)Η απλούστερη περίπτωση πρόσθεσης στο tlearn είναι ο ακόλουθος δυαδικός αθροιστής 2 ψηφίων. Έχουμε δύο προσθεταίους 1 bit ο καθένας (είσοδοι i1,i2) και 2 bit εξόδου για το δυαδικό άθροισμα (5,6)

Στο αρχείο ba.cf ορίζουμε ένα δίκτυο με 2 κόμβους-εισόδους και 6 κόμβους από τους οποίους 2 είναι έξοδοι (οι i1,i2 είναι είσοδοι, οι 1,2,3,4 το κρυφό επίπεδο , και οι 5,6 έξοδοι). Ακόμα ορίζουμε τις συνδέσεις (οι 1,2,3,4 παίρνουν είσοδο από τους i1,i2 και οι 5,6 από τους 1,2,3,4). Τέλος ορίζουμε μέγιστο βάρος για την αρχική - αυθαίρετη κατανομή των βαρών και σαν επιλεγμένους τους κόμβους εξόδου για να τυπώνεται η τιμή τους.

Στο αρχείο ba.data δίνουμε έναν πίνακα με τους συνδιασμούς των πιθανών τιμών εισόδου και στο ba.teach τις επιθυμητές - σωστές απαντήσεις πάλι σε μορφή πίνακα αντίστοιχα.




Μετά από την εκπαίδευση το δίκτυο κάνει σωστά την πρόσθεση όπως φαίνεται στις παρακάτω εικόνες:







Τα γκριζα τετράγωνα είναι 0 και τα λευκά 1
Η πάνω-πάνω γραμμή είναι η έξοδος και η κάτω-κάτω η είσοδος
οι απόλυτοι αριθμοί για τις τιμές των εξόδων είναι :

Node 5 & 6 activities
using ba-6000.wts and ba.data (Training Set)
0.001 0.108
0.021 0.902
0.048 0.905
0.948 0.071
για τις τιμές εισόδου:
0 0
0 1
1 0
1 1
αντίστοιχα.
παρατηρούμε ότι υπάρχει σχετική απόκλιση από τις ακριβείς τιμές που θα έπρεπε να ήταν :
0 0
0 1
0 1
1 0

παρακάτω τα βάρη που κατέληξε η διαδικασία μάθησης

NETWORK CONFIGURED BY TLEARN
# weights after 6000 sweeps
# WEIGHTS
# TO NODE 1
0.0000000000
2.9818105698
-6.0779738426
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
# TO NODE 2
0.0000000000
6.1313815117
-2.9242992401
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
# TO NODE 3
0.0000000000
-4.4514608383
-4.7775363922
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
# TO NODE 4
0.0000000000
-2.5334775448
1.1163078547
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
# TO NODE 5
0.0000000000
0.0000000000
0.0000000000
-7.2919034958
4.4269704819
-5.9890913963
-5.3023133278
0.0000000000
0.0000000000
# TO NODE 6
0.0000000000
0.0000000000
0.0000000000
6.0124821663
-3.6080329418
-9.9171791077
3.2884705067
0.0000000000
0.0000000000


Β)Κάποιος θα μπορούσε να αναλύσει - σχεδιάσει ένα δίκτυο - δυαδικό αθροιστή και να καθορίσει τα βάρη ως εξής :

έχουμε δύο προσθεταίους a0, b0 και δύο ψηφία εξόδου e0,e1 και 4 καταστάσεις τις : 00, 01, 10, 11 που συνδέονται ως εξής



e0=(a0-b0)+(-a0+b0)
e1=(0.5*a0+0.5*b0)
Υποθέτουμε κατώφλι 0.9 (για να μην ενεργοποιηθεί η ενδιάμεση 11 στις περιπτώσεις εισόδου 01,10 όπου φτάνει ερέθισμα 0.5)
Η λογική είναι ότι το e0 γίνετε 1 όταν προκύψουν οι καταστάσεις 01, 10 και το e1 όταν προκύψει η κατάσταση 11 όπου το e0 πρέπει να γίνει 0. Η κατάσταση 00 αφήνει την έξοδο ανεπηρέαστη σε 00

Επεκτείνωντας τη λογική μπορεί κανείς να χτίσει έναν αθροιστή n bit ως εξής
το ψηφίο e0 πάντα θα εξαρτάται μόνο από τα a0,b0
το e1 θα εξαρτάται από τα a0,b0 (με συντελεστή 0,5) και τα a1,b1
το e2 από τα a1,b1 και τα a1,b1
...
το en+1 από τα an,bn


Γ)Ορισμένα ερωτήματα και σκέψεις:

Μπορούν για το ίδιο δίκτυο να υπάρχουν διαφορετικά configurations στα βάρη που να δίνουν ΑΚΡΙΒΩΣ τις ίδιες τιμές εξόδου;

Κάποιος θα μπορούσε να φτιάξει έναν δυαδικό αφαιρέτη χρησιμοποιώντας κάποια κωδικοποίηση με πρόσημο, και έναν δυαδικό πολλαπλασιαστή - διαιρέτη χρησιμοποιώντας κωδικοποίηση με υποδιαστολή. Θα μπορούσε να προσθέσει και εισόδους επιλογής έτσι ώστε να καθορίζεται ποιά πράξη θα γίνεται και οι αντίστοιχες είσοδοι. Κάτι τέτοιο θα απαντούσε στο θέμα; (προφανώς οι άνθρωποι δεν κάνουν πράξεις στο δυαδικό αλλά ούτε με κατανεμημένο υπολογισμό, τις κάνουν με μολύβι και χαρτί με αλγοριθμικό τρόπο)

Σχετικά με το δίκτυο για τα πρόσωπα: Θέλουμε ένα δίκτυο που να του βάζεις μια photo και να λέει "α ΄να! είναι ο γιάννης και η μαρία και ο κώστας στο βάθος!";

Σάββατο, Νοεμβρίου 03, 2007

4η εργασία γνωσιακής επιστήμης


Ο ανθρώπινος νους μπορεί να εκτελεί αριθμητικές πράξεις και να αναγνωρίζει πρόσωπα.
α). Περιγράψτε ένα συνδετιστικό μοντέλο για καθεμία από τις λειτουργίες αυτές
β). Συγκρίνετε την εφαρμοσιμότητα της συνδετιστικής προσέγγισης με της συμβολικής για τις συγκεκριμένες αυτές περιπτώσεις νοητικών διεργασιών.

Συμπληρωματικές οδηγίες:

α).Να κάνετε ένα μικρό σχεδιάγραμμα που οπωσδήποτε θα περιλαμβάνει:
Εισόδους, εξόδους και συνδέσεις.
β). να γράψετε ένα δικό σας σχόλιο, σχετικά με το κατά πόσο το συνδετιστικό μοντέλο είναι πιο κατάλληλο από ένα συμβολικό μοντέλο - εάν το θεωρείτε πιο κατάλληλο.

Μια μικρή βοήθεια:
Στα φωτοτυπημένα κείμενα που μας έχει δώσει ο κ. Πρωτόπαπας υπάρχει ένα κείμενο που αναφέρεται ως User Manual. Αυτός ο οδηγός αφορά το πρόγραμμα Tlearn που δίνεται μαζί με το βιβλίο "Introduction to Connectionis Modelling of Cognitive Processes".
Το πρόγραμμα μπορείτε να το κατεβάσετε από τον παρακάτω σύνδεσμο:

http://crl.ucsd.edu/innate/tlearn.html

Δυστυχώς δεν έχω βγάλει ακόμα άκρη σχετικά με το πως μπορεί κανείς να χρησιμοποιήσει το tlearn για να φτιάξει ένα συνδετικό μοντέλο μιας συγκεκριμένης νοητικής διεργασίας, όπως η αναγνώριση προσώπου. Όποιος καταλάβει πως λειτουργεί, καλό θα ήταν να διαφωτίσει και τους υπόλοιπους.

Επίσης, ερευνώντας στο διαδίκτυο βρήκα ένα απλό μοντέλο αναγνώρισης προσώπων, που ίσως φανεί χρήσιμο ώστε να βγάλουμε άκρη σχετικά με την άσκηση.

Τετάρτη, Οκτωβρίου 31, 2007

Scheme *UPDATED*

Ύστερα από προτροπή της Αμαλίας, θα προσπαθήσω να περιγράψω, σύντομα και χωρίς ιδιαίτερη ακρίβεια, μερικά από τα βασικά στοιχεία της Scheme που έχουμε πει στο μάθημα. Σκοπός μου ΔΕΝ είναι να δώσω ένα ολοκληρωμένο manual ή tutorial, τέτοια υπάρχουν αρκετά στο Internet. Ούτε αυτά που γράφω είναι 100% σωστά, άλλωστε τώρα τη μαθαίνω και εγώ τη Scheme. Απλά, επιχειρώ να φτιάξω ένα quick and dirty σημείο αναφοράς και μερικές οδηγίες, μόνο και μόνο για να ξεκινήσουμε.

Αν και ελπίζω ότι θα λύσω κάποιες απορίες, είμαι σίγουρος ότι θα προσπεράσω άθελά μου τις περισσότερες, ενώ δεν αποκλείεται να δημιουργήσω και νέες. Γι'αυτό, κάντε τις ερωτήσεις σας στα σχόλια για να τις απαντήσω, ώστε να μπορούν όλοι να τις διαβάσουν και ΙΣΩΣ χρησιμοποιήσουμε για πρώτη φορά το blog για το σκοπό που το φτιάξαμε αρχικά (και όχι για εικόνες και βιντεάκια :P ).



Μετά το disclaimer, βαθιά ανάσα και βουτάμε στα βαθιά:

Βασικές έννοιες:

μεταβλητή: μια συμβολική αναπαράσταση που αναφέρεται σε μια ποσότητα ή μια έκφραση. Είναι ένα μέρος στη μνήμη του υπολογιστή που έχουμε δεσμεύσει για να βάζουμε δεδομένα (πχ αριθμούς ή χαρακτήρες). Η μεταβλητή είναι σαν ένα συρτάρι στο οποίο αποθηκεύουμε διάφορα αντικείμενα (τα δεδομένα).

συνάρτηση: ένα κομμάτι κώδικα (ένα σύνολο εντολών, δηλαδή) το οποίο εκτελεί μια συγκεκριμένη λειτουργία και μπορεί να είναι σχετικά ανεξάρτητο από το κυρίως πρόγραμμα. Μια συνάρτηση αποτελείται από το όνομά της, τα ορίσματα που δέχεται και το σώμα της. Όταν γράφουμε:

(define (f x) (+ x 2) )

αυτό που κάνουμε είναι ότι ορίζουμε τη συνάρτηση f, η οποία δέχεται το όρισμα x, δηλαδή το x είναι η είσοδος της συνάρτησης. Το τι θα κάνει η f όταν θα πάρει το x καθορίζεται στο σώμα της συνάρτησης. Στην προκειμένη περίπτωση, το σώμα είναι (+ x 2), δηλαδή θα προσθέσει στο x το 2. Συνήθως, το κομμάτι κώδικα αυτό, υπάρχει στο περιθώριο και εκτελείται μόνο όταν το καλέσουμε. Αυτό λέγεται κλήση συνάρτησης. Για να καλέσουμε μια συνάρτηση χρειαζόμαστε (εκτός από το όνομά της, φυσικά) να της δώσουμε όσα ορίσματα απαιτεί. Άρα, για να καλέσουμε την f με είσοδο το 5 θα δώσουμε:

(f 5)

λίστα: ένα σύνολο αντικειμένων. Κάτι σαν πολλές μεταβλητές στη σειρά που έχουν ένα όνομα.

προθεματική σύνταξη: Η εκνευριστική σύνταξη των αριθμητικών πράξεων στη Scheme, όπου πρέπει πρώτα να γράφουμε το σύμβολο της πράξης και μετά τους αριθμούς (με κενά μεταξύ τους). Για παράδειγμα, το 3+5 στη Scheme γράφεται (+ 3 5), το 4*2*8 γράφεται (* 4 2 8).

σύνταξη: το πώς πρέπει να γράφεται μια εντολή για να δουλέψει. Πχ, η define συντάσσεται:

(define μεταβλητή τιμή) ή

(define (συνάρτηση ορίσματα) (σώμα))



Μερικές βασικές εντολές:

define: η πιο ευρέως χρησιμοποιούμενη εντολή ως τώρα (να συλληφθεί ο Εβραίος!), η define μπορεί να ορίσει την τιμή μιας μεταβλητής, να ορίσει τα περιεχόμενα μιας λίστας και να ορίσει μια συνάρτηση (δηλαδή ΤΙ κάνει η συνάρτηση). Γενικά, όλα τα σφάζει, όλα τα μαχαιρώνει, χωρίς τη define δε φαίνεται να κάνουμε βήμα.

eval: η πιο ψυχανώμαλη εντολή. Σύμφωνα με το manual, αξιολογεί (evaluates) ό,τι ακολουθεί μέσα στο συγκεκριμένο πλαίσιο στο οποίο ανήκει. Με άλλα λόγια, προσπαθεί να κάνει κάτι έξυπνο. Μερικές φορές τα καταφέρνει. Έτσι, αν έχουμε ορίσει τις σχέσεις

(define George 'Athens)

(define Athens 'Greece)

και δώσουμε

(eval George)

θα απαντήσει: Greece. Σε αυτή την περίπτωση δηλαδή, θα ακολουθήσει τη σειρά των συσχετίσεων που του έχουμε δώσει.

set!: αλλάζει την τιμή μιας μεταβλητής (ή λίστας). Η διαφορά από τη define είναι ότι η set! απλά αλλάζει την τιμή, ενώ η define καταστρέφει ό,τι υπήρχε και δημιουργεί μια καινούρια μεταβλητή με το ίδιο όνομα. Η διαφορά γίνεται εμφανής με τις λίστες.

display: μια απλή εντολή! τυπώνει ό,τι ακολουθεί. Αν αυτό που ακολουθεί είναι μέσα σε διπλά εισαγωγικά (“) το τυπώνει ως είναι, αν είναι χωρίς εισαγωγικά υποθέτει ότι είναι μεταβλητή και προσπαθεί να τυπώσει την τιμή της.

car: τυπώνει το πρώτο στοιχείο μιας λίστας.

cdr: τυπώνει τη λίστα από το δεύτερο στοιχείο και μετά.

first, second, third,...: τυπώνει το πρώτο, δεύτερο, τρίτο, κλπ στοιχείο της λίστας, αντίστοιχα.

cons: προσθέτει ένα στοιχείο στην αρχή μιας λίστας.



Ένα από τα προβλήματα που παρουσιάζονται από νωρίς είναι το ότι πρέπει να συνδυάσετε πολλές συναρτήσεις. Έτσι, έχουμε ένα μακρινάρι μια συνάρτηση να καλεί μια άλλη, η οποία καλεί μια άλλη, η οποία με τη σειρά της καλεί μια άλλη, κλπ. Είναι εύκολο να χαθείτε μέσα στις πολλές παρενθέσεις και τις απανωτές εντολές. Γι' αυτό, 1) αποφύγετε να γράφετε πολλές εντολές στην ίδια γραμμή και 2) σιγουρευτείτε ότι η δομή του μακριναριού (το έχει το λεξικό! Απίστευτο!) είναι σωστή πριν γράψετε το περιεχόμενό του. Τι θέλω να πω: Αν προσπαθήσετε να γράψετε σε μία γραμμή και με τη μία το

(define (f x y) (+ (* (expt x y) x) (/ (- x y) 4)))

είναι σίγουρο ότι θα κάνετε λάθος. Αντί αυτού, προσπαθήστε να το δομήσετε βήμα-βήμα και σε πολλές σειρές, βάζοντας την παρένθεση που κλείνει ένα κομμάτι κάτω από την παρένθεση που το ανοίγει. Ας πούμε, το παραπάνω μακρινάρι σε 6 βήματα:

1.
(define (συνάρτηση)
(σώμα)
)

2.
(define (f x y)
(+ (κάτι) (κάτι άλλο) )
)

3.
(define (f x y)
(+
(κάτι)
(κάτι)
)
)

4.
(define (f x y)
(+
(* (κάτι) (κάτι) )
(/ (κάτι) (κάτι) )
)
)

5.
(define (f x y)
(+
(*
(κάτι)
(κάτι)
)
(/
(κάτι)
(κάτι)
)
)
)

6.
(define (f x y)
(+
(*
(expt x y)
x
)
(/
(- x y)
4
)
)
)

Αυτά τα ολίγα προς το παρόν. Περιμένω απορίες. Και να θυμάστε: δεν υπάρχουν ηλίθιες ερωτήσεις (μόνο ηλίθιοι άνθρωποι) :DDDDDDD

UPDATE 1/11/07:
Όπως σωστά μου επισημάνθηκε στο μάθημα (αλλά όχι στο blog! γιατί; Τι τα έχουμε τα σχόλια;!), ξέχασα να αναφερθώ στο μυστηριώδες quote ( ' ).
Η Scheme δείχνει μια ασυνήθιστη προθυμία να θεωρεί σχεδόν τα πάντα ονόματα μεταβλητών ή συναρτήσεων. Αν συναντήσει μια λέξη, θα προσπαθήσει να βρει ποια μεταβλητή είναι ή κάτι αντίστοιχο. Για να την αποτρέψουμε από μία τέτοια συμπεριφορά πρέπει να βάλουμε μπροστά το quote ( ' ).
Έτσι, αν γράψουμε: (display mitsos), η Scheme θα προσπαθήσει να βρει μια μεταβλητή με όνομα mitsos και αν δεν υπάρχει, θα εμφανίσει μήνυμα λάθους. Για να εκτυπώσει το mitsos πρέπει να γράψουμε (display 'mitsos), ώστε να μετριάσουμε τις αβυσσαλέες ορέξεις της Scheme για κυνήγι ονομάτων.

Τρίτη, Οκτωβρίου 23, 2007

Γνωσιακή Επιστήμη-Άσκηση 3η

Άσκηση 3η :
Ένα παλιό ανέκδοτο στο στρατό ορίζει πως ο νέος φαντάρος 
ό,τι κινείται το χαιρετά κι ό,τι δεν κινείται το βάφει.
Περιγράψτε ένα υπολογιστικό μοντέλο για το νου του φαντάρου.
Προσδιορίστε  τις αναπαραστάσεις που πρέπει να περιλαμβάνει,
τους υπολογισμούς, και την ερμηνεία τους.

Υποχρεωτικό Ανάγνωσμα :
Pylyshyn (1984), κεφ. 1-3

Προθεσμία Παράδοσης :
Τρίτη 30/10/07,  6.15μμ (ώρα Ελλάδος)

σχολιάστε ελεύθερα..