2. Έμπνευση της Διπλωματικής Εργασίας
• Η σημασία του διαδικτύου στην ανάπτυξη της Τεχνολογίας
Λογισμικού είναι αδιαμφισβήτητη.
• Το διαδίκτυο περιέχει αμέτρητα αποσπάσματα κώδικα.
• Προκύπτει ανάγκη ανάκτησης της κατάλληλης πληροφορίας.
3. Στόχοι και Μεθοδολογία
• Δημιουργία ευρετηρίου δημοσιεύσεων (stackoverflow),
που συνδυάζουν φυσική γλώσσα και πηγαίο κώδικα
• Auto-encoder νευρωνικά δίκτυα
• Σύγκριση με σύγχρονες μεθοδολογίες
4. Προηγούμενη Έρευνα
• Δημοσιεύσεις Reuters ως σετ δεδομένων
• Δημιουργία λεξικού 2000 όρων
• 2000-500-250-125-2 deep auto-encoder δίκτυο
• Εύρεση ομοιότητας σε 2 διαστάσεις
6. Προετοιμασία δεδομένων
1. Συνολικός αριθμός δημοσιεύσεων
2. Εξάγονται οι δημοσιεύσεις με tag javascript
3. Αφαιρούνται δημοσιεύσεις με λιγότερες
από 5 απαντήσεις
4. Αφαιρούνται δημοσιεύσεις που δεν
περιέχουν κώδικα
5. Διαχωρισμός του σετ δεδομένων σε δύο νέα
• Σώματα των δημοσιεύσεων
• Αποκόμματα κώδικα
21.737.948
698.918
33.848
1502
7. Natural Language Processing
Συγκρότηση λεξικού με βάση τα δύο dataset
• Camel Case (πχ CamelCasing σε Camel Casing)
• Lower Case (πχ LoWeR σε lower)
• Stemming για το NL σετ (πχ processing σε process)
• Αφαίρεση αριθμών
• Αφαίρεση σημείων στίξης
• Απομάκρυνση stop words (πχ at, my, the, κ.α.)
Χρήση βιβλιοθήκης PorterStemmer
Βιβλιοθήκη DocumentParser
English Stop Word List
8. Bag of Words Model
• Χρειάζεται ένα αντιπροσωπευτικό μοντέλο των δημοσιεύσεων, κατάλληλο
για είσοδο σε νευρωνικά δίκτυα
• Επιλέχθηκε το μοντέλο Bag of Words
• Π.χ. το μοντέλο BoW για τα δύο αποσπάσματα “I went to the store to buy food” και “I
wanted to buy a toy” είναι
I Went To The Store Buy Food wanted A toy
1 1 2 1 1 1 1 0 0 0
1 0 1 0 0 1 0 1 1 1
9. Δημιουργία Μοντέλου
• Απομάκρυνση όρων με βάση τη συχνότητα εμφάνισής τους
• Λιγότερες από 50 εμφανίσεις για το σετ κώδικα
• Λιγότερες από 50 και περισσότερες από 600 για το σετ φυσικής γλώσσας
• Απομακρύνονται τα έγγραφα χωρίς κώδικα (40)
• Τα σετ δεδομένων διαχωρίστηκαν επιπλέον σε training και test set
• 32.306 έγγραφα σε 25.000 (77%) και 7.306 (23%) αντίστοιχα
• Κανονικοποίηση των συντεταγμένων σε [0,1]
• Το τελικό μοντέλο που προέκυψε για τα training set είναι:
1. 25000 * 2578 για το NL κομμάτι (δημοσιεύσεις * όροι)
2. 25000 * 2026 για το κομμάτι του κώδικα
10. Auto-encoder Δίκτυα
• Κωδικοποιούν το διάνυσμα εισόδου τους σε ένα
μικρότερων διαστάσεων και στη συνέχεια το
ανακατασκευάζουν στην έξοδο.
• 𝒚 = 𝑠(𝑾𝒙 + 𝒃) code layer – mapping του x.
• 𝒛 = 𝑠(𝑾′
𝒙 + 𝒃′) decoder output – πρόβλεψη
του x με δοσμένο y.
• Στόχος η βελτιστοποίηση των [𝑾, 𝑾′, 𝒃, 𝒃′],ώστε να
ελαχιστοποιηθεί το λάθος ανακατασκευής.
• Συναρτήσεις κόστους
• MSE: 𝐿 𝑥, 𝑧 = 𝑥 − 𝑧 2
• X-Entropy: 𝐿 𝑥, 𝑧 = − 𝑘=1
𝑑
[𝑥 𝑘 𝑙𝑜𝑔𝑧 𝑘 + (1 −
11. Εκπαίδευση Auto-encoder
Πρόβλημα
• Local minima για multilayer networks.
• Εύρεση αρχικών βαρών που διευκολύνουν την εκπαίδευση.
Λύση
• Προ-εκπαίδευση επιμέρους auto-encoder δύο επιπέδων.
• Ορισμός μικρών αρχικών βαρών από κανονική κατανομή.