Kecerdasan Buatan (AI) telah mendapat populariti yang besar dalam beberapa tahun kebelakangan ini.
Jika anda seorang jurutera perisian, saintis komputer atau peminat sains data secara amnya, maka anda mungkin tertarik dengan aplikasi menakjubkan pemprosesan imej, pengecaman corak dan pengesanan objek yang disediakan oleh medan ini.
Subbidang AI yang paling penting yang mungkin anda dengar ialah Pembelajaran Dalam. Bidang ini memfokuskan pada algoritma berkuasa (arahan program komputer) yang dimodelkan mengikut kefungsian otak manusia yang dikenali sebagai Rangkaian Neural.
Dalam artikel ini, kita akan membincangkan konsep Rangkaian Neural dan cara membina, menyusun, menyesuaikan dan menilai model ini menggunakan Python.
Rangkaian Neural
Rangkaian Neural, atau NN, ialah satu siri algoritma yang dimodelkan mengikut aktiviti biologi otak manusia. Rangkaian Neural terdiri daripada nod, juga dipanggil neuron.
Koleksi nod menegak dikenali sebagai lapisan. Model ini terdiri daripada satu input, satu output, dan beberapa lapisan tersembunyi. Setiap lapisan terdiri daripada nod, juga dipanggil neuron, tempat pengiraan berlaku.
Dalam rajah berikut, bulatan mewakili nod dan koleksi menegak nod mewakili lapisan. Terdapat tiga lapisan dalam model ini.
Nod satu lapisan disambungkan ke lapisan seterusnya melalui talian penghantaran seperti yang dilihat di bawah.
Set data kami terdiri daripada data berlabel. Ini bermakna setiap entiti data telah diberikan nilai nama tertentu.
Jadi untuk set data klasifikasi haiwan, kami akan mempunyai imej kucing dan anjing sebagai data kami, dengan 'kucing' dan 'anjing' sebagai label kami.
Adalah penting untuk ambil perhatian bahawa label perlu ditukar kepada nilai berangka untuk model kami memahaminya, jadi label haiwan kami menjadi '0' untuk kucing dan '1' untuk anjing. Kedua-dua data dan label dihantar melalui model.
Pembelajaran
Data diberikan kepada model satu entiti pada satu masa. Data ini dipecahkan kepada ketulan dan melalui setiap nod model. Nod menjalankan operasi matematik pada ketulan ini.
Anda tidak perlu mengetahui fungsi atau pengiraan matematik untuk tutorial ini, tetapi adalah penting untuk mempunyai idea umum tentang cara model ini berfungsi. Selepas satu siri pengiraan dalam satu lapisan, data dihantar ke lapisan seterusnya dan seterusnya.
Setelah selesai, model kami meramalkan label data pada lapisan keluaran (contohnya, dalam masalah pengelasan haiwan kami mendapat ramalan '0' untuk kucing).
Model kemudian meneruskan untuk membandingkan nilai ramalan ini dengan nilai label sebenar.
Jika nilai sepadan, model kami akan mengambil input seterusnya tetapi jika nilai berbeza, model akan mengira perbezaan antara kedua-dua nilai, dipanggil kerugian dan melaraskan pengiraan nod untuk menghasilkan label yang sepadan pada masa akan datang.
Rangka Kerja Pembelajaran Mendalam
Untuk membina Rangkaian Neural dalam kod, kita perlu mengimport Rangka kerja Pembelajaran Mendalam dikenali sebagai perpustakaan menggunakan Persekitaran Pembangunan Bersepadu (IDE) kami.
Rangka kerja ini ialah koleksi fungsi pratulisan yang akan membantu kami dalam tutorial ini. Kami akan menggunakan rangka kerja Keras untuk membina model kami.
Keras ialah perpustakaan Python yang menggunakan pembelajaran mendalam dan bahagian belakang kecerdasan buatan yang dipanggil Aliran Tensor untuk mencipta NN dalam bentuk model berjujukan mudah dengan mudah.
Keras juga dilengkapi dengan model sedia ada sendiri yang boleh digunakan juga. Untuk tutorial ini, kami akan mencipta model kami sendiri menggunakan Keras.
Anda boleh mengetahui lebih lanjut tentang rangka kerja Pembelajaran Dalam ini daripada laman web Keras.
Membina Rangkaian Neural (Tutorial)
Mari kita teruskan untuk membina Rangkaian Neural menggunakan Python.
Pernyataan masalah
Rangkaian Neural ialah sejenis penyelesaian kepada masalah berasaskan AI. Untuk tutorial ini, kami akan membincangkan Data Diabetes Pima Indians, yang tersedia disini.
UCI Pembelajaran Mesin telah menyusun set data ini dan mengandungi rekod perubatan pesakit India. Model kami perlu meramal sama ada pesakit menghidap diabetes dalam tempoh 5 tahun atau tidak.
Memuatkan Set Data
Set data kami ialah fail CSV tunggal yang dipanggil 'diabetes.csv' yang boleh dimanipulasi dengan mudah menggunakan Microsoft Excel.
Sebelum mencipta model kami, kami perlu mengimport set data kami. Menggunakan kod berikut anda boleh melakukan ini:
import panda sebagai pd
data = pd.read_csv('diabetes.csv')
x = data.drop(“Hasil”)
y = data[“Hasil”]
Di sini kami menggunakan Pandas perpustakaan untuk dapat memanipulasi data fail CSV kami, read_csv() ialah fungsi terbina dalam Panda yang membolehkan kami menyimpan nilai dalam fail kami kepada pembolehubah yang dipanggil 'data'.
Pembolehubah x mengandungi set data kami tanpa data hasil (label). Kami mencapai ini dengan fungsi data.drop() yang mengalih keluar label untuk x, manakala y hanya mengandungi data hasil (label).
Membina Model Jujukan
Langkah 1: Mengimport Perpustakaan
Pertama, kami perlu mengimport TensorFlow dan Keras, bersama-sama dengan parameter tertentu yang diperlukan untuk model kami. Kod berikut membolehkan kami melakukan ini:
import aliran tensor sebagai tf
daripada import tensorflow keras
daripada tensorflow.keras.models import Sequential
daripada tensorflow.keras.layers import Activation, Dense
daripada tensorflow.keras.optimizers import Adam
daripada tensorflow.keras.metrics import categorical_crossentropy
Untuk model kami, kami mengimport lapisan padat. Ini adalah lapisan bersambung sepenuhnya; iaitu, setiap nod dalam lapisan disambungkan sepenuhnya dengan nod lain dalam lapisan seterusnya.
Kami juga mengimport sebuah pengaktifan fungsi yang diperlukan untuk menskalakan data yang dihantar ke nod. Pengoptimum juga telah diimport untuk meminimumkan kerugian.
Adam ialah pengoptimum terkenal yang menjadikan pengiraan nod kemas kini model kami lebih cekap, bersama-sama dengan categorical_crossentropy iaitu jenis fungsi kehilangan (mengira perbezaan antara nilai label sebenar dan ramalan) yang akan kami gunakan.
Langkah 2: Mereka Bentuk Model Kami
Model yang saya cipta mempunyai satu input (dengan 16 unit), satu tersembunyi (dengan 32 unit) dan satu lapisan output (dengan 2 unit). Nombor-nombor ini tidak tetap dan akan bergantung sepenuhnya pada masalah yang diberikan.
Menetapkan bilangan unit dan lapisan yang betul ialah proses yang boleh dipertingkatkan lebih masa melalui amalan. Pengaktifan sepadan dengan jenis penskalaan yang akan kami lakukan pada data kami sebelum meneruskannya melalui nod.
Relu dan Softmax adalah fungsi pengaktifan yang terkenal untuk tugas ini.
model = Sequential([
Padat(unit = 16, input_shape = (1,), pengaktifan = 'relu'),
Padat(unit = 32, pengaktifan = 'relu'),
Padat(unit = 2, pengaktifan = 'softmax')
])
Inilah rupa ringkasan model:
Melatih Model
Model kami akan dilatih dalam dua langkah, yang pertama menyusun model (meletakkan model bersama-sama) dan yang seterusnya menyesuaikan model pada set data yang diberikan.
Ini boleh dilakukan menggunakan fungsi model.compile() diikuti dengan fungsi model.fit().
model.compile(pengoptimum = Adam(kadar_pembelajaran = 0.0001), kerugian = 'binary_crossentropy', metrik = ['ketepatan'])
model.fit(x, y, zaman = 30, saiz_kelompok = 10)
Menentukan metrik 'ketepatan' membolehkan kami memerhatikan ketepatan model kami semasa latihan.
Memandangkan label kami adalah dalam bentuk 1 dan 0, kami akan menggunakan fungsi kehilangan binari untuk mengira perbezaan antara label sebenar dan ramalan.
Set data juga dibahagikan kepada kelompok 10 (saiz_batch) dan akan melalui model 30 kali (zaman). Untuk set data tertentu, x ialah data dan y ialah label yang sepadan dengan data.
Model Pengujian Menggunakan Ramalan
Untuk menilai model kami, kami membuat ramalan pada data ujian menggunakan fungsi predict().
ramalan = model.predict(x)
Dan itu sahaja!
Anda kini seharusnya mempunyai pemahaman yang baik tentang Pembelajaran Deep aplikasi, Rangkaian Neural, cara ia berfungsi secara umum dan cara membina, melatih dan menguji model dalam kod Python.
Saya harap tutorial ini memberi anda permulaan untuk mencipta dan menggunakan model Pembelajaran Dalam anda sendiri.
Beritahu kami dalam ulasan jika artikel itu membantu.
Sila tinggalkan balasan anda