Jaringan Syaraf Tiruan: Memecahkan Masalah dengan Cara Otak Manusia

Bagian 2/3: Pengantar AI, ML, dan sekarang, Pembelajaran Mendalam

Pada artikel sebelumnya, saya telah menyinggung secara singkat berbagai keajaiban cara kerja otak kita, termasuk betapa mudahnya otak kita membaca angka tulisan tangan:

Komputer melihat ini sebagai penggabungan piksel yang aneh. Yang membuat hal ini lebih buruk adalah setiap angka dapat ditulis dengan berbagai cara sehingga menyimpan urutan piksel tidak akan banyak berguna.

Tugas-tugas yang memerlukan pemikiran kompleks sebelumnya dianggap sebagai sesuatu yang tidak dapat dicapai oleh AI karena memerlukan proses pemikiran manusia.

Kami mempertahankan status quo sampai seseorang berpikir, “Hei, bagaimana jika kita meniru proses berpikir otak manusia?”.

Dan begitulah, lahirlah ide jaringan syaraf tiruan.

Otak kita memiliki banyak neuron yang mengirimkan dan memproses informasi yang diterimanya dengan menembakkan sinyal listrik melalui neurotransmitter. Neuron adalah pemroses informasi yang sederhana dan sendirian, mereka sangat tidak berguna dan sebagian besar tidak mengesankan. Namun sebagai jaringan, neuron membentuk sistem yang kompleks, menjadi kunci fungsi seperti memori dan pembelajaran.

Prinsip utama di balik jaringan saraf adalah meniru hal ini untuk mencapai hasil yang serupa. Kami mencari inspirasi dari biologi kami untuk membangun teknik AI/ML yang lebih baik.

Sama seperti otak kita, jaringan saraf mengandung neuron atau node buatan yang merupakan unit sederhana yang menyimpan dan memproses informasi. Ini berisi banyak lapisan jaringan saraf yang membentuk jaringan (karenanya dinamakan 'jaringan saraf').

Ini adalah jaringan saraf tiruan:

Jaringan saraf ini digunakan untuk mengidentifikasi gambar angka tulisan tangan sebagai angka yang diwakilinya. Ini memiliki 4 lapisan untuk melakukannya. Lapisan ke-1 disebut lapisan masukan, lapisan ke-2 dan ke-3 disebut lapisan tersembunyi, dan lapisan ke-4 disebut lapisan keluaran.

Masukan kami akan terlihat seperti ini:

Ini adalah gambar angka berukuran 28x28 piksel. Tujuan dari jaringan saraf adalah untuk mengidentifikasi ini dengan benar sebagai 7.

Oke, jadi kita masukkan ke dalam jaringan saraf. Sekarang apa?

Lapisan pertama berisi 784 neuron, sesuai dengan setiap piksel yang ditemukan pada gambar. Setiap neuron berisi nilai antara 0 dan 1 yang mewakili nilai skala abu-abu setiap piksel. Nilai ini disebut aktivasinya.

Flash maju ke lapisan terakhir dan kami menemukan bahwa lapisan tersebut berisi 10 neuron, masing-masing mewakili sebuah angka. Aktivasi neuron pada lapisan ini mewakili keyakinan jaringan terhadap keluaran (yaitu seberapa besar keyakinan jaringan bahwa gambar tertentu sesuai dengan digit keluaran).

Lapisan tersembunyi inilah yang benar-benar menghasilkan keajaiban.

Mematikan: Beralih dari Input ke Output

Kembali ke otak, kita tahu bahwa pengaktifan neuron tertentu menyebabkan pengaktifan neuron tertentu lainnya. Demikian pula pola aktivasi pada lapisan pertama akan menimbulkan pola aktivasi tertentu pada lapisan kedua dan seterusnya.

Aktivasi pada lapisan kedua akan bergantung pada 3 hal:

  • aktivasi lapisan pertama
  • beban
  • bias

beban

Meskipun neuron antar lapisan terhubung satu sama lain, kekuatan koneksi ini bervariasi. Masing-masing koneksi ini diberi 'bobot'. Nilai bobot menentukan prioritas atau kepentingan yang kita berikan pada node sebelumnya.

Misalnya, saat Anda memilih lokasi untuk mengadakan pesta Natal untuk Anda dan teman Anda, Anda mungkin mencari tiga hal; harga, ketersediaan brunch gratis dan aktivitas yang ditawarkan. Prioritas utama Anda mungkin adalah harga. Jadi, kami memberikan bobot tertinggi pada harga. Pada saat yang sama, Anda mungkin tidak terlalu peduli dengan makan siang gratis (bayangkan tidak peduli dengan makanan gratis 🗿), jadi kami akan memberikan bobot terendah pada hal tersebut.

Dengan bantuan contoh di atas, menjadi jelas bahwa bobot pada dasarnya memberi tahu kita seberapa penting setiap koneksi.

Oleh karena itu, untuk menghitung aktivasi neuron di lapisan kedua, pertama-tama kita akan mempertimbangkan aktivasi lapisan pertama serta bobotnya. Kami menghitung jumlah tertimbang dari aktivasi di lapisan pertama (yaitu ΣWₙAₙ).

Bias

Anda mungkin sering mendengar istilah ‘bias’, terutama ketika kita membahas isu-isu sosial. Dalam jaringan saraf, bias adalah konstanta yang kita tambahkan ke jumlah tertimbang yang kita temukan sebelumnya.

Kami menambahkan ini karena kami ingin neuron aktif secara bermakna. Bias yang diberikan mendorong ke arah keluaran yang Anda harapkan. Di satu sisi, ini merupakan indikasi apakah neuron tersebut cenderung aktif atau tidak.

Seperti yang disebutkan di atas, aktivasi hanya dapat mengambil nilai antara 0 dan 1. Jelasnya, jumlah tertimbang dari semua aktivasi + biasnya jelas tidak akan menghasilkan nilai antara 0 dan 1.

Apa yang ingin kita lakukan di sini adalah “mengompresi” nilai ke kisaran 0 dan 1. Untuk melakukannya, kita dapat menggunakan fungsi berbeda seperti fungsi sigmoid atau ReLu.

Aktivasi terakhir kami adalah:

Hal penting yang perlu diperhatikan di sini adalah pada awalnya, bobot dan bias mengambil nilai acak.

Seperti yang dapat Anda simpulkan dari persamaan tersebut, bobot dan bias pada dasarnya adalah tombol dan tombol untuk hasil akhir. Kita dapat mengubah neuron untuk menangkap hal-hal berbeda dengan menyesuaikan nilai keduanya.

Hal ini terjadi antara semua lapisan lainnya hingga lapisan keluaran, dimana neuron dengan aktivasi tertinggi akan mewakili keluaran akhir.

Namun bukan berarti hasil akhirnya akan benar…

Bagaimana Jaringan Neural Belajar

Benar — meskipun jaringan saraf di atas mungkin memberikan keluaran acak, keluaran tersebut tidak sepenuhnya benar. Kita perlu melatih jaringan menggunakan data pelatihan agar dapat mengidentifikasi gambar dengan benar.

Kami memasukkan 1000 gambar ke jaringan saraf dengan label (nomor yang sesuai) dan berdasarkan masukan, jaringan tersebut akan menyesuaikan bobot dan biasnya.

Selanjutnya, kami memberi jaringan sejumlah data lain yang belum pernah dilihat sebelumnya dan melihat seberapa akurat jaringan mengklasifikasikannya.

Untuk mengevaluasi seberapa baik model bekerja, kami mendefinisikan fungsi biaya.

Fungsi biaya pada dasarnya adalah cara untuk mengatakan, “kamu payah, kamu mesin ahh yang bodoh”. Ini adalah evaluasi kinerja model dan perbedaan nilainya memberi tahu kita banyak tentang peningkatannya.

Ada banyak metode yang digunakan dalam mendefinisikan fungsi biaya, namun salah satu yang paling umum digunakan adalah Mean Squared Error (MSE). Pada metode ini, kita membandingkan nilai nilai aktivasi aktual dengan nilai aktivasi yang benar/diharapkan.

C(w,b)=
Σ(Nilai Aktivasi Aktual — Nilai Aktivasi yang Diharapkan/Benar)²/n

Kami ingin fungsi biaya menjadi minimum sebagai fungsi bobot dan bias karena hal ini berarti jaringan cukup efisien dan berfungsi sebagaimana mestinya.

Hanya mengetahui seberapa buruk pekerjaan yang dilakukan jaringan saraf kita tidak akan mengubah apa pun. Kita perlu membantu jaringan belajar.

Kita bisa mulai dengan membayangkan C sebagai fungsi dari 2 variabel.

Yang ingin kami temukan di sini adalah saat C mencapai titik minimum global. Hal ini mungkin tampak mudah dalam kasus ini, namun perlu diingat, saat kita menerapkannya pada jaringan saraf, kita mungkin memiliki miliaran bobot dan bias.

Salah satu cara untuk mengetahui nilai minimumnya adalah dengan menggambarkan fungsi kita sebagai sebuah lembah (“analogi”). Kita bisa membayangkan sebuah bola menggelinding menuruni lereng dan mencapai dasar lembah. Dasar lembah akan menjadi titik minimum kita.

Kita ingin tahu ke arah mana bola harus menggelinding agar fungsinya berkurang paling banyak. Untuk ini, kita dapat mempertimbangkan nilai negatif dari gradien suatu fungsi (gradien suatu fungsi memberi kita arah kenaikan paling curam).

Dalam hal ini, kami akan mencari nilai ini dan kemudian mengambil langkah ke arah itu dan mengulanginya. Hal ini dikenal sebagai penurunan gradien.

Catatan: Data pelatihan dibagi menjadi mini-batch dan setiap langkah diambil sehubungan dengan mini-batch. Alasan melakukan hal ini adalah karena menghitung penurunan gradien untuk semua contoh pelatihan dan membuat rata-rata perubahan tidaklah praktis.

Saat kita melihat nilai penurunan gradien, kita akan melihat 2 hal; arah dan besaran relatif. Tanda suatu nilai akan memberi tahu kita apakah suatu nilai akan bertambah atau berkurang, sedangkan besaran relatif akan menunjukkan perubahan yang lebih penting.

Propagasi mundur adalah algoritma yang menggunakan penurunan gradien untuk menyempurnakan bobot guna meminimalkan fungsi biaya menuju minimum lokal.

Seperti namanya, di sini kita bekerja mundur. Kita mulai dengan lapisan keluaran dan melihat setiap node. Kami melacak kesenjangan antara nilai yang diharapkan dan nilai sebenarnya — mencatat penyesuaian yang ingin kami lihat di node keluaran. Hal ini pada dasarnya berarti penyesuaian bobot, bias, dan aktivasi lapisan sebelumnya, sehingga memberi kita daftar perubahan yang diperlukan pada lapisan (n-1).

Kami mengulangi proses yang sama dengan bergerak mundur dari lapisan ke-3 ke lapisan ke-2. Ini dilakukan untuk beberapa contoh dan diambil rata-ratanya. Nilai ini sebanding dengan penurunan gradien.

Setelah perubahan diterapkan, ini dia! Anda memiliki jaringan saraf yang berfungsi yang secara akurat mengklasifikasikan gambar ke nomor yang sesuai!

Hai 👋, saya Rania, aktivator berusia 16 tahun di Knowledge Society. Saya adalah peneliti pangan masa depan yang berfokus pada pertanian aseluler. Saat ini, saya sedang mencoba menggunakan kecerdasan buatan untuk pendidikan. Saya selalu siap untuk belajar, tumbuh, dan menginspirasi. Saya ingin terhubung; hubungi saya di salah satu media sosial saya dan mari berteman!