6.A. Back Propagation Case Study: Character Recognition
a.
Pengenalan
Permasalahan yang akan dipecahkan
kali ini adalah masalah pengenalan karakter sederhana menggunakan jaringan
perceptrons dengan prosedur pembelajaran back propagation. Tugas kita adalah mengajarkan
jaringan saraf untuk mengenali 3 karakter, yaitu, untuk memetakan mereka untuk
masing-masing pasangan {0,1}, {1,0} dan {1,1}. Dan diharapkan jaringan
menghasilkan sinyal error {0,0} dalam menanggapi karakter lain.
b.
Desain Jaringan
-
Struktur
Jaringan saraf dari desain ini
terdiri dari tiga lapisan dengan 2 neuron masing-masing, satu lapisan output
dan dua lapisan tersembunyi. Ada 36 masukan ke jaringan. Dalam kasus ini fungsi
sigmoid:
dipilih sebagai fungsi aktivasi
neuron nonlinear. hal Bias (sama dengan 1) dengan bobot dilatih juga dimasukkan
dalam struktur jaringan. Diagram struktural dari jaringan saraf yang diberikan
pada Gambar. 6.A.1.
-
Desain Database
Kami mengajarkan jaringan saraf
untuk mengenali karakter 'A', 'B' dan 'C'. Untuk melatih jaringan untuk
menghasilkan sinyal kesalahan kita akan menggunakan 'D' lain 6 karakter, 'E',
'F', 'G', 'H' dan 'I'. Untuk memeriksa apakah jaringan telah belajar untuk
mengenali kesalahan kita akan menggunakan karakter 'X', 'Y' dan 'Z'. Perhatikan
bahwa kami tertarik dalam memeriksa respon dari jaringan untuk kesalahan pada karakter
yang tidak terlibat dalam prosedur pelatihan.
Karakter untuk diakui diberikan
pada 6 × 6 kotak. Masing-masing dari 36 piksel diatur ke 0 atau 1. Sesuai 6 × 6
matriks dari representasi karakter diberikan sebagai:
-
Set-up jaringan
Algoritma pembelajaran Kembali
propagasi (BP) dari Bagian 6.2 digunakan untuk memecahkan masalah. Tujuan dari
algoritma ini adalah untuk meminimalkan kesalahan-energi pada lapisan output,
seperti dalam Sect. 6.2 di atas, menggunakan persamaan (6.17), (6.19), (6.26),
(6.27) daripadanya. Dalam metode ini satu set pelatihan vektor input diterapkan
vektor-by-vektor ke input dari jaringan dan maju-disebarkan ke output. Bobot
kemudian disesuaikan dengan algoritma BP seperti di atas. Selanjutnya, kita
ulangi langkah ini untuk semua set pelatihan. Seluruh proses ini kemudian
diulang untuk selanjutnya (m + 2) iterasi -th dan sebagainya. Kami berhenti
ketika konvergensi memadai tercapai.
Kode program di C ++ ditulis untuk
mensimulasikan respon dari jaringan dan melakukan prosedur pembelajaran,
seperti di Bagian 6.A.5 bawah.
c.
Hasil
-
Pelatihan jaringan
Untuk melatih jaringan untuk
mengenali karakter di atas kita diterapkan sesuai 6 × 6 grid dalam bentuk 1 ×
36 vektor ke input dari jaringan. Karakter dianggap diakui jika kedua output
dari jaringan yang tidak lebih dari 0,1 off nilai-nilai yang diinginkan
masing-masing. Awal tingkat belajar η adalah eksperimental diatur ke 1,5 dan
menurun dengan faktor 2 setelah setiap iterasi 100. Pendekatan ini,
bagaimanapun, menghasilkan prosedur pembelajaran terjebak dalam berbagai minima
lokal. Kami mencoba menjalankan algoritma belajar untuk 1000 iterasi dan
menjadi jelas bahwa parameter kesalahan-energi telah berkumpul untuk beberapa
nilai stabil, namun pengakuan gagal untuk semua karakter (vektor).
Namun, tak satu pun dari vektor
pelatihan kami diakui pada saat ini:
Pelatihan vektor 0, 1, ..., 8 di
entri log ini sesuai dengan karakter 'A', 'B',. . . , 'I'.
Untuk mencegah hal ini terjadi,
satu lagi modifikasi dibuat. Setelah setiap iterasi 400 kita ulang tingkat
belajar nilai awalnya. Kemudian setelah sekitar 2000 iterasi kami mampu
konvergen ke 0 kesalahan dan untuk benar mengenali semua karakter:
-
Hasil pengenalan
Dalam rangka untuk menentukan
apakah kesalahan deteksi dilakukan dengan benar, kita diselamatkan bobot yang
diperoleh ke dalam file data, memodifikasi dataset dalam program menggantikan
karakter 'G', 'H' dan 'I' (pelatihan vektor 6, 7 dan 8) dengan karakter 'X',
'Y' dan 'Z'. Kami kemudian berlari program, dimuat bobot disimpan sebelumnya dari
file data dan diterapkan input ke jaringan. Perhatikan bahwa kami melakukan
pelatihan lebih lanjut. Kami mendapat hasil sebagai berikut:
Semua tiga karakter yang berhasil
dipetakan kesalahan sinyal 0,0.
-
Robustness Investigation
Untuk menyelidiki bagaimana kuat
jaringan syaraf kami, kami menambahkan beberapa kebisingan untuk input dan
mendapat hasil berikut. Dalam kasus 1-bit distorsi (dari 36 bit) tingkat
pengakuan adalah:
Kami juga menyelidiki kasus 2-bit
distorsi dan mampu mencapai tingkat pengakuan berikut:
d.
Diskusi dan kesimpulan
Kami mampu untuk melatih jaringan
saraf kita sehingga berhasil eecognizes tiga karakter yang diberikan dan pada
saat yang sama mampu mengklasifikasikan karakter lain sebagai kesalahan. Namun,
ada harga yang harus dibayar untuk kenyamanan ini. Tampaknya bahwa semakin
besar tingkat deteksi kesalahan adalah, kurang kuat jaringan kami adalah.
Misalnya, ketika 2 bit karakter 'A' yang terdistorsi, jaringan memiliki tingkat
pengenalan hanya 53%. Secara kasar, pada 1 dari 2 kasus tersebut, jaringan
'berpikir' bahwa input tidak simbol 'A' dan karena itu harus diklasifikasikan
sebagai kesalahan. Secara keseluruhan, jaringan propagasi kembali terbukti
menjadi jauh lebih kuat daripada Madaline. Hal ini dimungkinkan untuk mencapai
konvergensi lebih cepat dan juga lebih mudah untuk program ini. Ada kasus,
namun, ketika algoritma pembelajaran propagasi kembali terjebak dalam minimum
lokal tetapi mereka dapat berhasil ditangani oleh tuning tingkat pembelajaran
dan hukum mengubah tingkat belajar selama proses pembelajaran untuk setiap
masalah khusus.
[Kembali]
Komentar
Posting Komentar