Jaringan saraf pengenalan huruf c. Cara cepat mengenali teks

Tugas pengenalan gambar adalah salah satu tugas paling luas yang berhasil diselesaikan dengan bantuan JST. Berbagai rumusan masalah dimungkinkan di sini, salah satunya pilihan sederhana– pengenalan sekumpulan karakter tetap.

Contoh 3.11. Pengenalan surat. Sistem MatLab menyediakan fungsi khusus

>> = proprob;

Fungsi ini mengembalikan dua matriks biner: dalam matriks alfabet (35x26) setiap kolom mengkodekan satu huruf, dan matriks target (26x26) diagonal dan berfungsi untuk mengidentifikasi kolom.

Setiap kolom alfabet sesuai dengan matriks 7×5, yang merupakan gambar biner dari sebuah huruf.

Fungsi berikut menampilkan semua kolom alfabet sebagai huruf (fungsi harus ditempatkan di direktori kerja MatLab):

fungsi plotletters (alfabet)

fprintf("plotter sedang memplot 25 huruf pertama\n");

ukuran (alfabet);

error("plotter membutuhkan kolom sepanjang 35 angka");

MM=peta warna(abu-abu);

MM=MM(akhir:-1:1,:);

gambarc(bentuk ulang(alfabet(:,j),5,7)");

Hasil eksekusi fungsi ditunjukkan pada gambar. 3.12:

>> plotletters(alfabet);

Gambar 3.12.Pengkodean biner dari alfabet.

Berdasarkan struktur matriks target, jaringan saraf harus memiliki 26 neuron keluaran. Jumlah neuron pada lapisan tersembunyi diatur menjadi 10.

>> net = newff(minmax(alphabet),,("logsig" "logsig"),"traingdx");

>> P = alfabet; T = target;

Tetapkan jumlah zaman dan mulai proses pembelajaran:

>> net.trainParam.Epochs = 1000;

>> = kereta(net,P,T);

Kurva pembelajaran ditunjukkan pada gambar. 3.13.

Gambar 3.13.Mengubah kesalahan dalam proses pembelajaran

Untuk memeriksa kualitas jaringan yang terlatih, pertimbangkan gambar huruf yang berisik (Gbr. 3.14):

>> berisikP = alfabet+randn(ukuran(alfabet)) * 0,2;

>> plotletters(noisyP);

Perintah berikut memulai jaringan untuk set masukan yang berisik:

>>A2 = sim(net,noisyP);

Matriks A2 di sini berisi berbagai bilangan dalam rentang . Menggunakan fungsi bersaing Anda dapat memilih elemen maksimum di setiap kolom, lalu menetapkan nilai 1 padanya, dan menyetel ulang elemen kolom yang tersisa ke nol:

Gambar 3.14.Gambar huruf di hadapan kebisingan

>> untuk j=1:26

A3 = bersaing(A2(:,j));

jawaban(j) = temukan(bersaing(A3) == 1);

Anda kemudian dapat mengevaluasi respons jaringan secara visual untuk vektor masukan yang berisik menggunakan perintah:

>> NetLetters=alfabet(:,jawaban);

>> plotletters(NetLetters);

Pada ara. 3.15 menunjukkan hasil akhir pengenalan.

Gambar 3.15.Hasil melakukan pengenalan oleh jaringan saraf

Jelas, beberapa huruf salah diidentifikasi. Ini bisa jadi akibat dari pelatihan jaringan yang buruk, atau tingkat kebisingan yang terlalu tinggi, atau pilihan jumlah neuron yang salah di lapisan dalam.

Mari kita memiliki layar yang dibagi menjadi dua belas sel, 4 x 3. Sel-sel tersebut mewakili diskrititas elemen gambar. Saat gambar difokuskan, sel menyala atau tidak. "Iluminasi" menentukan nilai satuan dari nilai eksitasinya, "tanpa iluminasi" - nol. Jadi, huruf O menentukan iluminasi sel, yang ditentukan pada Gambar 2.1. Huruf A menerangi layar, seperti yang ditunjukkan pada Gambar 2.2.

Apa yang perlu dilakukan agar beberapa perangkat yang kami buat dapat mengetahui huruf apa itu?

Jelas, semua sinyal eksitasi dari sel layar yang diterangi oleh huruf O harus diterapkan ke konjungtor yang mengimplementasikan skema I. huruf O. Kehadiran sinyal tunggal pada keluaran konjungtor akan menentukan jawaban: " Ini adalah huruf O."


Beras. 2.1. Mempelajari huruf "O"


Beras. 2.2. Mempelajari huruf "A"

Hal yang sama harus dilakukan untuk huruf A.

Mari tandai setiap sel layar dengan koordinatnya. Kemudian, dalam bahasa logika matematika, apa yang telah kita lakukan dapat dituliskan dalam bentuk pernyataan logika - predikat:

Predikat ini mendefinisikan implementasi "elektronik" dengan metode sirkuit.

Dalam hal ini, huruf tidak akan "mengganggu" satu sama lain, karena iluminasi sel layar yang sesuai dengannya sebagian tidak cocok, dan nilai satuan konjungsi ditentukan hanya untuk salah satunya.

Dan jika Anda meletakkan huruf K di layar? Maka tidak satu pun dari dua konjungtor akan menghasilkan satu nilai, karena tidak akan ada kebetulan yang lengkap dari iluminasi sel layar yang sesuai dengannya. Untuk "mengajar" sistem ke huruf K, perlu memperkenalkan satu konjungtor lagi dan melakukan konstruksi yang sama seperti di atas.

Jadi, kita dapat mengatakan bahwa kita telah membangun sebuah sistem untuk mengenali dua huruf yang diberikan dengan "benar".

Tapi bagaimana jika huruf di layar ditulis dengan tangan gemetar? Kemudian kita harus mengizinkan penerangan alternatif dari beberapa sel layar yang berdekatan dan memperhitungkannya menggunakan operasi disjungsi , ATAU. Seperti yang Anda ketahui, sebagai hasil dari operasi ini, satu sinyal dihasilkan jika setidaknya ada satu sinyal tunggal pada input.

Mari kita pertimbangkan kemungkinan mengenali huruf O, dengan asumsi kemungkinan iluminasi sel (1.1), (1.3), (4.1), (4.3). Kemudian predikat yang dibangun sebelumnya akan berbentuk:

Demikian pula, untuk huruf A, biarkan sel (4,1) dan (4,3) diekspos:


Beras. 2.3. Belajar bersama huruf "O" dan "A"

Menggabungkan kedua predikat, kita mendapatkan skema pada Gambar 2.3.

Jadi, kami telah menerapkan pendekatan "rekayasa sirkuit" untuk pembelajaran dan pengenalan, berdasarkan penggunaan fungsi Boolean dan operasi variabel boolean 0, 1.

Membangun jaringan saraf logis yang dilatih untuk mengenali huruf

Sekarang mari kita ambil langkah itu, transisi itu, yang menentukan kesederhanaan cerdik dari perwujudan alami, dihitung berdasarkan ketidaklengkapan data, tidak dapat diandalkan, "kebisingan", persyaratan untuk kecepatan tinggi, keandalan tinggi, dan keseragaman. Karena kita tidak dapat membayangkan sirkuit elektronik yang tersembunyi di dalam tengkorak.

Alam dan kita, sebagai bagian darinya, tidak pernah memiliki informasi yang akurat, pasti, dan dapat diandalkan. Penerangan sel layar, serta reseptor mata kita, tidak lengkap, gambar tidak benar, ada noise, celah, dll. Kemudian konsep kesamaan, asosiasi menjadi sangat penting. "Apa yang paling mirip dengan gambar" yang ditampilkan ", situasi yang muncul, dan tindakan respons apa yang paling dibenarkan?" - inilah pertanyaan yang menentukan prinsip hidup kita di tengah banyak bahaya dan pencapaian. Asosiatif pemikiran kita adalah mutlak.

Ini berarti bahwa perlu untuk menjauh dari variabel Boolean yang terdefinisi dengan baik (0, 1, "ya - tidak", "putih - hitam", dll.) menuju ketidakpastian, keandalan, atau estimasi informasi lainnya - menuju variabel nyata.

Tapi kemudian kita juga perlu menjauh dari aljabar Boolean, karena konsep konjungsi dan disjungsi untuk variabel riil tidak terdefinisi. Di sinilah analisis dan penerapan prinsip implementasi alami datang untuk menyelamatkan - prinsip jaringan saraf yang terkandung di otak kita.

Mari ubah sirkuit terlatih yang kami terima menjadi jaringan saraf (Gbr. 2.4).

Setiap sel layar adalah neuron reseptor, yang, sebagai hasil dari iluminasi, memperoleh sejumlah eksitasi tertentu, yang mengambil nilai antara nol dan satu. Reseptor yang menggantikan layar membentuk input, atau lapisan reseptor jaringan saraf. Kami akan mengganti setiap konjungtor dan disjungtor dengan model neuron tunggal untuk seluruh jaringan. Mari kita perkenalkan lapisan keluaran jaringan, yang dalam contoh kita terdiri dari dua neuron , yang eksitasinya menentukan hasil pengenalan. Beri nama neuron dari lapisan keluaran dengan nama huruf - O dan A.

Reseptor, seperti layar, tereksitasi dari luar. Namun neuron lain, yang mensimulasikan penyebaran eksitasi di otak, menyadari fungsi pemindahan(dalam hal teori kontrol otomatis) atau fungsi aktivasi(dalam hal teori jaringan saraf). Fungsi ini mengubah sinyal pada input neuron, dengan mempertimbangkan bobot input ini (untuk saat ini, kami akan menunda pertimbangannya), menjadi nilai eksitasi neuron ini, ditransmisikan lebih jauh melalui jaringan sesuai dengan koneksi dari neuron dan mencapai satu atau lebih neuron dari lapisan output.


Beras. 2.4. Jaringan saraf untuk mengenali huruf "O" dan "A"

Karena fungsi otak disimulasikan pada tingkat logika, fungsi aktivasi dipilih cukup sederhana. Jadi, dalam contoh kita, cukup memilih yang berikut ini fungsi aktivasi untuk menemukan nilai eksitasi neuron ke-i:

Awalnya kita temukan

Lalu kami menempatkan

Diperlukan untuk membuat jaringan saraf untuk mengenali 26 huruf alfabet Latin. Kami akan berasumsi bahwa ada sistem untuk membaca karakter, yang mewakili setiap karakter dalam bentuk matriks. Misalnya, karakter A dapat direpresentasikan seperti yang ditunjukkan pada Gambar. 2.22.

Beras. 2.22. Representasi simbol

Sistem pembacaan karakter yang sebenarnya tidak bekerja dengan sempurna, dan gaya karakter itu sendiri berbeda. Oleh karena itu, misalnya, untuk simbol A, unit mungkin ditempatkan di sel yang salah, seperti yang ditunjukkan pada Gambar. 2.22. Selain itu, nilai bukan nol dapat terjadi di luar garis besar karakter. Sel-sel yang sesuai dengan garis besar simbol dapat berisi nilai selain 1. Kami akan menyebut semua distorsi kebisingan.

MATLAB memiliki fungsi prprob, yang mengembalikan matriks , yang setiap kolomnya mewakili matriks yang ditulis sebagai vektor yang mendeskripsikan huruf yang sesuai (kolom pertama mendeskripsikan huruf A, kolom kedua mendeskripsikan huruf B, dan seterusnya). Fungsi prprob juga mengembalikan matriks target berukuran , setiap kolomnya berisi satu 1 pada baris yang sesuai dengan nomor huruf, dengan semua elemen kolom lainnya menjadi nol. Misalnya, kolom pertama yang bersesuaian dengan huruf A berisi 1 pada baris pertama.

Contoh. Tentukan templat untuk huruf A (program Templat_A.m).

% Templat untuk huruf A

Mungkin;

saya=1; % jumlah huruf A

v=alfabet(:,i); % vektor yang sesuai dengan huruf A

template=bentuk ulang(v, 5,7)";

Selain fungsi yang sudah dijelaskan prprob fungsi yang digunakan dalam program membentuk kembali, yang membentuk matriks , dan setelah transposisi - (pastikan tidak mungkin untuk segera membentuk matriks ), dan fungsinya plotchar, yang menggambar 35 elemen vektor sebagai kisi. Setelah menjalankan program Templat_A.m kita mendapatkan matriks templat dan templat huruf A seperti yang ditunjukkan pada gambar. 2.23.

Beras. 2.23. Pola huruf A terbentuk

Untuk mengenali huruf abjad latin, perlu dibangun jaringan saraf dengan 35 masukan dan 26 neuron pada lapisan keluaran. Mari kita ambil jumlah neuron di lapisan tersembunyi sama dengan 10 (sejumlah neuron dipilih secara eksperimental). Jika ada kesulitan selama pelatihan, maka jumlah neuron pada level ini dapat ditingkatkan.



Jaringan pengenalan pola dibangun oleh fungsi patternnet. Harap dicatat bahwa saat membuat jaringan, jumlah neuron di lapisan input dan output tidak ditentukan. Parameter ini secara implisit ditetapkan saat melatih jaringan.

Pertimbangkan program untuk mengenali huruf alfabet Latin Char_recognition.m

% Program pengenalan alfabet Latin

Mungkin; % Pembentukan input dan vektor target

ukuran (alfabet);

ukuran (target);

% Pembuatan jaringan

Latih(bersih,P,T);

% Pelatihan di hadapan kebisingan

P = ;

Latih(netn,P,T);

Latih(netn,P,T);

% Tes Jaringan

kebisingan_kemarahan=0:0.05:0.5; % Susunan tingkat kebisingan (standar deviasi kebisingan

untuk tingkat kebisingan=kebisingan_kemarahan

untuk i=1:max_test

% Tes untuk jaringan 1

% Tes untuk jaringan 2

judul ("Kesalahan jaringan");

xlabel("Tingkat Kebisingan");

ylabel("persentase kesalahan");

Operator = proprob; membentuk larik vektor masukan alfabet ukuran dengan pola karakter alfabet dan array vektor target target.

Jaringan dibuat oleh operator bersih=pola. Mari terima pengaturan jaringan default. Jaringan dilatih terlebih dahulu tanpa adanya noise. Jaringan kemudian dilatih pada 10 set vektor ideal dan berisik. Dua set vektor ideal digunakan sehingga jaringan mempertahankan kemampuan untuk mengklasifikasikan vektor ideal (tidak ada noise). Setelah pelatihan, jaringan "lupa" bagaimana mengklasifikasikan beberapa vektor bebas noise. Oleh karena itu, jaringan harus dilatih kembali pada vektor yang ideal.

Fragmen program berikut melakukan pelatihan tanpa gangguan :

% Pelatihan jaringan tanpa adanya kebisingan

Latih(bersih,P,T);

disp("Pelatihan jaringan dengan tidak adanya kebisingan selesai. Tekan Enter");

Pelatihan di hadapan noise dilakukan dengan menggunakan dua salinan ideal dan dua vektor input noise. Kebisingan itu disimulasikan oleh pseudo-random angka terdistribusi normal dengan rata-rata nol dan standar deviasi 0,1 dan 0,2. Pelatihan di hadapan kebisingan menghasilkan fragmen program berikut:

% Pelatihan di hadapan kebisingan

netn = bersih; % retensi jaringan terlatih

T = ;

P = ;

Latih(netn,P,T);

disp("Pelatihan jaringan dengan adanya kebisingan selesai. Tekan Enter");

Karena jaringan dilatih dengan adanya derau, masuk akal untuk mengulangi pelatihan tanpa derau untuk memastikan klasifikasi vektor ideal yang benar:

% Pelatihan ulang tanpa adanya kebisingan

Latih(netn,P,T);

disp("Pelatihan ulang jaringan tanpa gangguan telah selesai. Tekan Enter");

Jaringan diuji untuk dua struktur jaringan: jaringan 1 dilatih pada vektor ideal dan jaringan 2 dilatih pada urutan yang berisik. Kebisingan dengan nilai rata-rata 0 dan standar deviasi 0 hingga 0,5 dengan langkah 0,05 ditambahkan ke vektor input. Untuk setiap tingkat derau, 10 vektor derau dibentuk untuk setiap simbol, dan keluaran jaringan dihitung (diinginkan untuk menambah jumlah vektor derau, tetapi ini akan secara signifikan meningkatkan waktu berjalan program). Jaringan dilatih untuk membentuk elemen satu-satunya dari vektor keluaran yang posisinya sesuai dengan jumlah huruf yang dikenali, dan vektor lainnya diisi dengan nol. Keluaran jaringan tidak akan pernah membentuk vektor keluaran yang terdiri dari tepat 1 dan 0. Oleh karena itu, dalam kondisi derau, vektor keluaran diproses oleh fungsi bersaing, yang mengubah vektor keluaran sehingga keluaran terbesar diatur ke 1 dan semua keluaran lainnya diatur ke 0.

Fragmen program yang sesuai terlihat seperti:

% Lakukan pengujian untuk setiap tingkat kebisingan

untuk tingkat kebisingan=kebisingan_kemarahan

untuk i=1:max_test

P=alfabet+randn(35, 26)*tingkat kebisingan;

% Tes untuk jaringan 1

kesalahan1=kesalahan1+jumlah(jumlah(abs(AA-T)))/2;

% Tes untuk jaringan 2

kesalahan2=kesalahan2+jumlah(jumlah(abs(AAn-T)))/2;

% Nilai kesalahan rata-rata (urutan max_test dari 26 vektor target)

jaringan1=;

jaringan2=;

plot(noise_rage, network1*100, noise_rage, network2*100);

judul ("Kesalahan jaringan");

xlabel("Tingkat Kebisingan");

ylabel("persentase kesalahan");

legend("Vektor input ideal","Vektor input berisik");

disp("Tes selesai");

Saat menghitung kesalahan pengenalan, misalnya, kesalahan1=kesalahan1+jumlah(jumlah(abs(AA-T)))/2, diperhitungkan bahwa dalam kasus pengenalan yang salah, dua elemen dari vektor keluaran dan vektor target tidak cocok, oleh karena itu, saat menghitung kesalahan, pembagian dengan 2 dilakukan Sum sum(abs(AA-T)) menghitung jumlah elemen yang tidak cocok untuk satu instance. sum(sum(abs(AA-T))) menghitung jumlah elemen yang tidak cocok di semua contoh.

Grafik kesalahan pengenalan oleh jaringan yang dilatih pada vektor input ideal dan jaringan yang dilatih pada vektor berisik ditunjukkan pada Gambar. 2.24. Dari gbr. 2.24 dapat dilihat bahwa jaringan yang dilatih pada gambar berisik memberikan kesalahan kecil, dan jaringan tidak dapat dilatih pada vektor masukan yang ideal.

Beras. 2.24. Kesalahan jaringan tergantung pada tingkat kebisingan

Mari kita periksa pekerjaan jaringan yang dilatih (jaringan yang dilatih harus ada di ruang kerja MATLAB). Program Pengakuan_J.m menghasilkan vektor berisik untuk huruf J dan mengenali huruf tersebut. Fungsi randn menghasilkan bilangan acak semu yang didistribusikan menurut hukum normal dengan ekspektasi matematis nol dan deviasi standar satuan. Angka acak dengan ekspektasi matematis m dan standar deviasi d diperoleh dengan rumus m+randn*d(dalam sebuah program m=0, d=0,2).

berisikJ = alfabet(:,10)+randn(35,1) * 0,2;

plotchar(berisikJ);

disp("Karakter berisik. Tekan Enter");

A2 = netn(berisikJ);

A2 = bersaing(A2);

ns = temukan(A2 == 1);

disp("Karakter dikenali");

plotchar(alfabet(:,ns));

Program mengeluarkan nomor dari huruf yang dikenali, templat huruf yang berisik (Gbr. 2.25), dan templat huruf yang dikenali (2.26).

Beras. 2.25. Templat surat berisik

Beras. 2.26. Pola huruf yang dikenali

Dengan demikian, program yang dipertimbangkan mendemonstrasikan prinsip pengenalan gambar menggunakan jaringan saraf. Melatih jaringan pada berbagai kumpulan data berisik memungkinkan untuk melatih jaringan agar bekerja dengan gambar yang terdistorsi oleh kebisingan.

Tugas

1. Kerjakan semua contoh yang diberikan.

2. Alami pengenalan huruf yang berbeda

3. Selidiki pengaruh noise pada program terhadap keakuratan pengenalan karakter.

Perkiraan Fungsi

Buku oleh Michael Nilson "Neural Networks and Deep Learning".


Saya membagi terjemahan menjadi beberapa artikel di Habré agar lebih mudah dibaca:
Bagian 1) Pengantar Neural Networks
Bagian 2) Merencanakan dan Turunan Gradien
Bagian 3) Menerapkan Jaringan Pengenalan Digit
Bagian 4) Sedikit tentang pembelajaran mendalam

pengantar

Sistem visual manusia adalah salah satu yang paling menakjubkan di dunia. Di setiap belahan otak kita terdapat korteks visual yang berisi 140 juta neuron dengan puluhan miliar koneksi di antara mereka, tetapi korteks semacam itu bukan satu, ada beberapa di antaranya, dan bersama-sama mereka membentuk superkomputer nyata di kepala kita, terbaik disesuaikan dalam perjalanan evolusi dengan persepsi komponen visual dunia kita. Tetapi kesulitan mengenali pola visual menjadi jelas jika Anda mencoba menulis program untuk mengenali, katakanlah, angka tulisan tangan.

Intuisi sederhana - "angka 9 memiliki lingkaran di atas, dan ekor vertikal di bagian bawah" tidak mudah diterapkan secara algoritme. Jaringan saraf menggunakan contoh, menyimpulkan beberapa aturan dan belajar darinya. Selain itu, semakin banyak contoh yang kami tunjukkan pada jaringan, semakin banyak yang dipelajari tentang angka tulisan tangan, dan karenanya mengklasifikasikannya dengan lebih akurat. Kami akan menulis program dalam 74 baris kode yang akan mendeteksi angka tulisan tangan dengan akurasi >99%. Jadi ayo pergi!

perceptron

Apa itu jaringan saraf? Pertama, saya akan menjelaskan model neuron buatan. Perceptron dikembangkan pada tahun 1950 oleh Frank Rosenblatt, dan hari ini kita akan menggunakan salah satu model utamanya - perceptron sigmoid. Jadi bagaimana cara kerjanya? Persepron mengambil vektor sebagai masukan dan mengembalikan beberapa nilai keluaran.



Rosenblat datang dengan aturan sederhana untuk menghitung nilai keluaran. Ia memperkenalkan konsep “signifikansi”, kemudian “bobot” dari setiap nilai masukan. Dalam kasus kami, itu akan tergantung pada apakah itu akan lebih atau kurang dari beberapa nilai ambang .



Dan hanya itu yang kami butuhkan! Dengan memvariasikan dan vektor bobot , seseorang dapat memperoleh sepenuhnya model yang berbeda pengambilan keputusan. Sekarang kembali ke jaringan saraf.



Jadi, kita melihat bahwa jaringan terdiri dari beberapa lapisan neuron. Lapisan pertama disebut lapisan masukan atau reseptor (), lapisan berikutnya disebut lapisan tersembunyi (), dan yang terakhir disebut lapisan keluaran (). Syaratnya agak ribet, mari kita ganti dengan perkalian skalar vektor . Selanjutnya, kita atur , beri nama bias perceptron atau , dan pindahkan ke sisi kiri. Kita mendapatkan:


Masalah belajar

Untuk melihat cara kerja pembelajaran, anggaplah kita sedikit mengubah bobot atau bias dalam jaringan. Kami ingin perubahan kecil dalam bobot ini menyebabkan perubahan kecil yang sesuai pada output jaringan. Secara skematis, tampilannya seperti ini:



Jika memungkinkan, maka kita dapat memanipulasi bobot ke arah yang menguntungkan dan secara bertahap melatih jaringan, tetapi masalahnya adalah dengan beberapa perubahan bobot neuron tertentu, keluarannya dapat sepenuhnya "membalik" dari 0 menjadi 1. Ini dapat menyebabkan kesalahan perkiraan jaringan yang besar, tetapi ada cara untuk mengatasi masalah ini.

Neuron sigmoid

Kita dapat mengatasi masalah ini dengan memperkenalkan tipe baru neuron buatan yang disebut neuron sigmoid. Neuron sigmoid mirip dengan perceptron, tetapi dimodifikasi sehingga perubahan kecil pada bobot dan biasnya hanya menyebabkan perubahan kecil pada keluarannya. Struktur neuron sigmoid serupa, tetapi sekarang dapat menerima pada input, dan mengeluarkan pada output, di mana



Tampaknya ini adalah kasus yang sama sekali berbeda, tetapi saya meyakinkan Anda bahwa perceptron dan neuron sigmoid memiliki banyak kesamaan. Mari kita asumsikan bahwa , maka dan , oleh karena itu . Kebalikannya juga benar, jika , maka dan . Jelas, saat bekerja dengan neuron sigmoid, kami memiliki perceptron yang lebih halus. Dan memang:


Arsitektur Jaringan Neural

Merancang lapisan input dan output dari jaringan saraf adalah tugas yang cukup sederhana. Sebagai contoh, misalkan kita sedang mencoba untuk menentukan apakah tulisan tangan "9" ada dalam sebuah gambar atau tidak. Cara alami untuk mendesain jaringan adalah dengan menyandikan intensitas piksel gambar ke dalam neuron input. Jika gambar berukuran , maka kita memiliki input neuron. Lapisan keluaran memiliki satu neuron, yang berisi nilai keluaran, jika lebih besar dari 0,5, maka gambarnya adalah "9", jika tidak. Sementara mendesain lapisan input dan output adalah tugas yang cukup sederhana, memilih arsitektur lapisan tersembunyi adalah sebuah seni. Para peneliti telah mengembangkan banyak heuristik desain lapisan tersembunyi, seperti yang membantu mengimbangi jumlah lapisan tersembunyi terhadap waktu pelatihan jaringan.


Sejauh ini, kami telah menggunakan jaringan saraf di mana output dari satu lapisan digunakan sebagai sinyal untuk lapisan berikutnya, jaringan seperti itu disebut jaringan saraf maju atau jaringan umpan maju (). Namun, ada model lain dari jaringan saraf di mana loop umpan balik dimungkinkan. Model ini disebut jaringan saraf berulang (). Recurrent neural network kurang berpengaruh dibandingkan feedforward network, sebagian karena algoritme pembelajaran untuk recurrent network (setidaknya sampai saat ini) kurang efisien. Tetapi jaringan berulang masih sangat menarik. Mereka lebih dekat semangatnya dengan cara kerja otak kita daripada jaringan umpan-maju. Dan sangat mungkin jaringan berulang dapat memecahkan masalah penting yang dapat diselesaikan dengan susah payah dengan jaringan akses langsung.


Jadi, itu saja untuk hari ini, di artikel selanjutnya saya akan berbicara tentang penurunan gradien dan melatih jaringan masa depan kita. Terima kasih atas perhatian Anda!

 
Artikel pada tema:
Serviks yang belum matang: apakah mungkin melahirkan secara alami?
Kehamilan yang berlangsung lebih dari 40 minggu kebidanan dianggap post-term. Tetapi banyak dokter modern yang tidak terburu-buru merangsang persalinan dalam kasus ini. Banyak tergantung pada kondisi wanita hamil dan janin. Saat hamil 41 minggu, tubuh
Penandaan, penandaan dan pengujian perhiasan
Toksikosis pada trimester terakhir, yang disebut preeklampsia, adalah salah satu komplikasi kehamilan yang paling serius. Meskipun demikian, preeklamsia sama sekali tidak dianggap sebagai kejadian langka: ini ditemui oleh hampir setiap sepertiga masa depan
Bukan lagi bayi: apa yang seharusnya bisa dilakukan seorang anak pada usia lima bulan Mengangkat tubuh dengan bertumpu pada tangan orang dewasa
Bayi berusia lima bulan sangat aktif dan ingin tahu. Mereka menjelajahi dunia di sekitar mereka dengan senang hati, menguasai dan meningkatkan keterampilan berbicara mereka, dan juga terus berkembang secara fisik dengan sangat cepat. Pada usia ini, anak-anak menjadi sangat gelisah.
Kenapa ibu hamil tidak boleh gugup, menangis dan khawatir
Sebagian besar wanita hamil tahu bahwa pengalaman emosional apa pun memengaruhi kondisi bayinya. Hubungan fisiologis yang erat dengannya dimanifestasikan pada tingkat semua organ dan sistem. Apa yang terjadi jika Anda gugup selama kehamilan? Gangguan irama nafas