Cara Membuat Neural Network: Arsitektur, Parameter & Kode

Diterbitkan: 2021-02-12

Neural Networks seperti namanya adalah sirkuit Neuron. Ada berbagai jenis Neural Network. Jaringan Saraf Biologis terbuat dari Neuron biologis nyata. Sedangkan Jaringan Syaraf Tiruan (JST) adalah sebuah sistem yang berbasis pada Jaringan Syaraf Tiruan, seperti yang ada di otak. Perkiraan jumlah Neuron di otak sekitar 100 Miliar, yang berkomunikasi melalui sinyal elektrokimia.

ANN mencoba untuk menciptakan kembali kompleksitas komputasi yang ada di Neuron biologis tetapi tidak sebanding dengan itu dan mereka adalah versi jaringan saraf biologis yang jauh lebih sederhana dan non-kompleks. Pada artikel ini, kita akan memahami struktur ANN dan mempelajari cara membuat Neural Network menggunakan Python.

Daftar isi

Arsitektur Jaringan Saraf

Jaringan saraf tiruan terdiri dari neuron buatan yang juga disebut "Node". Node ini terhubung satu sama lain sehingga jaringan atau mesh dibuat. Kekuatan koneksi ini satu sama lain diberi nilai. Nilai ini terletak antara -1 sampai 1.

Jika nilai koneksi tinggi, ini menunjukkan koneksi yang kuat antara node tersebut. Setiap node memiliki fungsi karakteristik untuk itu. Mengubah fungsi ini akan mengubah sifat perilaku dan kompleksitas jaringan saraf. Ada tiga jenis neuron dalam JST, node input, node tersembunyi, dan node output seperti yang ditunjukkan di bawah ini:

Sumber

Node input bertanggung jawab untuk menerima informasi yang umumnya dalam bentuk nilai numerik atau ekspresi. Informasi disajikan sebagai nilai aktivasi, di mana setiap node diberi nomor, semakin tinggi angkanya, semakin besar aktivasinya.
Informasi selanjutnya diteruskan ke jaringan. Berdasarkan bobot koneksi Node dan fungsi aktivasi yang berkaitan dengan neuron tertentu dari lapisan tertentu, informasi diteruskan dari neuron ke neuron. Setiap node menambahkan nilai aktivasi pada saat penerimaan, nilai-nilai tersebut dimodifikasi berdasarkan fungsi transfer.
Informasi mengalir ke seluruh jaringan, melalui lapisan tersembunyi, hingga mencapai simpul keluaran. Node keluaran sangat penting karena mencerminkan masukan dengan cara yang berarti bagi dunia luar. Di sini aspek menakjubkan dari jaringan saraf dapat dilihat yang mengarah pada penyesuaian bobot untuk setiap lapisan dan node.

Selisih antara nilai prediksi dan nilai aktual (kesalahan) akan dirambatkan mundur. Neural Network karenanya akan belajar dari kesalahan yang dibuat dan mencoba menyesuaikan bobot berdasarkan pendekatan kecepatan pembelajaran yang ditentukan.

Oleh karena itu dengan menyesuaikan parameter seperti jumlah lapisan tersembunyi, jumlah neuron per lapisan, strategi pembaruan bobot dan fungsi aktivasi, kita dapat membuat Jaringan Saraf Tiruan.

Tentukan Parameter

Fungsi Aktivasi

Ada berbagai fungsi aktivasi untuk dipilih yang dapat digunakan di Neural Network berdasarkan masalah yang dihadapi.

Fungsi aktivasi adalah persamaan matematis yang dimiliki setiap neuron. Ini menentukan output dari Neural Network.
Fungsi aktivasi ini melekat pada setiap neuron dalam jaringan dan menentukan apakah harus diaktifkan atau tidak, yang didasarkan pada apakah aktivasi neuron tertentu membantu dalam menurunkan prediksi yang relevan pada lapisan output. Lapisan yang berbeda dapat memiliki fungsi aktivasi berbeda yang melekat padanya. Fungsi aktivasi juga membantu menormalkan output setiap neuron ke kisaran antara 1 dan 0 atau antara -1 dan 1.

Jaringan saraf modern menggunakan teknik penting yang disebut backpropagation untuk melatih model dengan menyesuaikan bobot, yang menempatkan peningkatan beban komputasi pada fungsi aktivasi, dan fungsi turunannya.

Bekerja dari fungsi aktivasi
Tautan Hilang

Ada 3 jenis fungsi Aktivasi:
Biner- x<0 y=0 , x>0 y=1
Linier- x=y
Non Linear – Berbagai jenis : Sigmoid, TanH, Logistic, ReLU, Softmax dll.

Sumber: Blog

Jenis: ReLU
Tautan Hilang

algoritma

Ada banyak jenis jaringan saraf, tetapi mereka sering dibagi menjadi jaringan feed-forward dan feed-back (backpropagation).

1) Jaringan forward feed adalah jaringan non-repetitive yang berisi input, output, dan hidden layer; karena sinyal hanya bisa bergerak dalam satu arah. Data input ditransfer ke lapisan peralatan pemrosesan di mana ia melakukan perhitungan. Setiap faktor pemrosesan membuat perhitungannya berdasarkan bobot input. Nilai baru dihitung dan kemudian nilai input baru memberi makan lapisan berikutnya.

Proses ini berlanjut hingga melewati semua lapisan dan menentukan hasilnya. Sebuah fungsi transfer Batas kadang-kadang digunakan untuk mengukur output neuron di lapisan output. Jaringan Feed Forward dikenal sebagai dan termasuk jaringan Perceptron (langsung dan tidak langsung). Jaringan feed-forward sering digunakan untuk data mining.

2) Jaringan Umpan Balik (misalnya, jaringan saraf berulang atau RNN) memiliki mekanisme retrospektif yang berarti mereka dapat memiliki sinyal yang bergerak ke dua arah menggunakan perangkap/loop. Semua kemungkinan komunikasi antar neuron diperbolehkan.

Karena loop hadir dalam jenis jaringan ini, ia menjadi sistem nonlinier yang terus berubah hingga mencapai keadaan stabil. Jaringan umpan balik sering digunakan untuk memori yang terkait dengan masalah kinerja saat jaringan mencari kumpulan objek yang terhubung dengan baik.

Pelatihan

pass feed-forward berarti diberikan input dan bobot bagaimana output dihitung. Setelah pelatihan selesai, kami hanya menjalankan forward pass untuk membentuk prediksi.

Tetapi pertama-tama kita harus melatih model kita untuk benar-benar mempelajari bobot, dan oleh karena itu prosedur pelatihan bekerja sebagai berikut:

  1. Pilih secara acak dan inisialisasi bobot untuk semua node. Ada metode inisialisasi cerdas yang ada di TensorFlow dan Keras (Python).
  2. Untuk setiap contoh pelatihan, lakukan umpan maju menggunakan bobot saat ini, dan hitung output dari setiap simpul dari kiri ke kanan. Output akhir adalah nilai dari node terakhir.
  3. Bandingkan hasil akhir dengan target aktual dalam data pelatihan, dan ukur kesalahan dengan menggunakan fungsi kerugian.
  4. Lakukan gerakan mundur dari kanan ke kiri dan sebarkan kesalahan yang dihitung pada langkah terakhir ke setiap simpul individu menggunakan propagasi balik.
  5. Hitung kontribusi bobot setiap neuron terhadap kesalahan, dan sesuaikan bobot koneksi dengan menggunakan penurunan gradien. Menyebarkan gradien kesalahan kembali mulai dari lapisan terakhir.

Kode Python untuk Jaringan Neural

Sekarang setelah kita memahami bagaimana Neural Network dibuat Secara teoritis, mari kita implementasikan hal yang sama menggunakan Python.

Jaringan Neural dengan Python
Kami akan menggunakan Keras API dengan Tensorflow atau Theano backend untuk membuat jaringan saraf kami.

Menginstal perpustakaan
Theano
>>> pip install –upgrade –no-deps git+git://github.com/Theano/Theano.git

Tensorflow dan Keras
>>> pip3 menginstal tensorflow
>>> pip install –upgrade Keras

Impor perpustakaan

impor keras
dari keras.models import Sequential
dari keras.layers impor Padat

Inisialisasi Jaringan Syaraf Tiruan

model = Berurutan()

Membuat Input dan Lapisan Tersembunyi-

model.add(Padat(input_dim = 2, unit = 10, activation='relu', kernel_initializer='uniform'))

Kode ini menambahkan lapisan input dan satu lapisan tersembunyi ke jaringan berurutan
Padat(): memungkinkan kita membuat jaringan saraf yang terhubung secara padat
input_dim: bentuk atau jumlah node di lapisan input
unit: jumlah neuron atau node di lapisan saat ini (lapisan tersembunyi)
aktivasi: fungsi aktivasi diterapkan ke setiap node. "relu" adalah singkatan dari Rectified Linear Unit
kernel_initializer: bobot acak awal dari layer

Lapisan tersembunyi kedua
model.add(Dense(units = 20, activation='relu', kernel_initializer='uniform'))

Kode membuat dan menambahkan lapisan tersembunyi lain ke model dengan 20 node dan fungsi aktivasi 'Linear yang diperbaiki'. Lebih banyak lapisan dapat ditambahkan dengan cara yang sama tergantung pada masalah dan kerumitannya.

Lapisan Keluaran
model.add(Dense(units = 1, activation='sigmoid', kernel_initializer='uniform'))

Lapisan keluaran tunggal dengan Sigmoid atau softmax adalah fungsi aktivasi yang umum digunakan untuk lapisan keluaran.

kompilasi JST:
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

ANN dikompilasi dengan fungsi pengoptimal dan fungsi kerugian sebelum dilatih.

Pengoptimal: fungsi pengoptimal untuk jaringan, Ada berbagai jenis pengoptimal dan adam yang paling banyak digunakan.
Loss: digunakan untuk menghitung kerugian dan kesalahan. Ada berbagai jenis dan pilihan tergantung pada sifat masalah yang dihadapi.
Metrik: metrik yang digunakan untuk mengukur kinerja model.

Menyesuaikan model dengan data pelatihan:
model.fit(X_train,Y_train,batch_size=64, epochs=30)

Kode ini akan membuat model

Kesimpulan

Kita sekarang dapat membuat Jaringan Syaraf Tiruan (dengan Python) dari awal karena kita memahami berbagai parameter yang dapat diubah sesuai dengan masalah yang dihadapi.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang teknik pembelajaran mendalam , pembelajaran mesin, lihat IIIT-B & upGrad's PG Diploma in Machine Learning & AI yang dirancang untuk profesional yang bekerja dan menawarkan 450+ jam pelatihan ketat, 30+ studi kasus & tugas, status Alumni IIIT-B, 5+ proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Pelajari Kursus ML dari Universitas top Dunia. Dapatkan Master, PGP Eksekutif, atau Program Sertifikat Tingkat Lanjut untuk mempercepat karier Anda.

Pimpin Revolusi Teknologi Berbasis AI

Terapkan untuk Program Sertifikat Tingkat Lanjut dalam Pembelajaran Mesin & NLP