NOTEBOOKS
Jaringan Syaraf Tiruan
Mitos
Ada banyak mitos yang beredar tentang Jaringan Syaraf Tiruan (JST). Misalnya:
- JST mampu membuat sistem yang secerdas manusia.
- JST memberikan akurasi yang lebih tinggi daripada pemrograman konvensional.
- JST dan Kecerdasan Buatan (AI) akan mengambil alih dunia.
- JST meningkatkan akurasi sistem.
- JST itu cepat.
Mitos-mitos tersebut sebenarnya cukup menyesatkan. Di satu sisi, hal ini membuat banyak orang menjadi khawatir akan perkembangan AI. Sementara di sisi lain, ada juga mereka yang berharap terlalu banyak pada AI.
Dalam artikel ini, saya ingin menunjukkan bagaimana sebenarnya cara kerja JST secara teknis. Harapannya. Setelah teman-teman membaca artikel ini, teman-teman tidak lagi merasa takut atau berharap terlalu banyak pada AI dan JST.
Jaringan Syaraf Tiruan VS Jaringan Syaraf Asli
Banyak penulis yang mengawali pembahasannya dengan menganalogikan JST dan jaringan syaraf manusia. Walaupun tidak salah, namun pembahasan tersebut kerap mengarahkan pembaca pada harapan yang berlebihan.
Misalnya begini: “Oh, karena saya bisa jatuh cinta, maka JST pun juga akan bisa jatuh cinta”.
Tentu saja tidak benar. Kalau mau jujur, sampai saat ini pun kita tidak terlalu tahu bagaimana otak bekerja. Kita bahkan belum bisa memformulasikan “apa itu kesadaran”. Dan JST (sekalipun terinspirasi oleh jaringan syaraf asli), sebenarnya memiliki kapabilitas yang jauh di bawah manusia.
Sebelum kita lanjutkan pada pembahasan yang lebih detail, mari kita mulai dengan permasalahan sederhana.
Permasalahan Berat Badan Ideal
Anton, Budi, dan Cecep masing-masing mengaku memiliki berat badan ideal. Dari penampakan mereka, tampaknya ketiga orang tersebut tidak berbohong.
Anton memiliki tinggi badan 165 cm dan berat badan 65 kg, sedangkan Budi memiliki tinggi badan 170 cm dan berat badan 70 kg.
Permasalahannya, Si Cecep lupa berapa berat badannya, dan dia hanya ingat tinggi badannya 163 cm. Tanpa memakai timbangan, bisakah kita mengira-ngira berat badan Cecep?
Nah, permasalahan ini sebenarnya bisa diselesaikan dengan aljabar sederhana, selama kita mampu memodelkan persamaannya. Untungnya dalam kasus ini, permodelannya cukup sederhana. (Konon, entah benar atau tidak, permodelan berat badan ideal untuk orang yang tingginya di atas 150 cm itu sesuai dengan fungsi linear).
Misalnya kita anggap berat badan adalah y
, sedangkan tinggi badan adalah x
. Maka berat badan ideal bisa ditentukan dengan rumus y = mx + c
di mana m
dan c
adalah angka-angka dengan nilai tertentu.
Oke, tampaknya alam semesta tidak terlalu berpihak pada kita. Karena untuk menentuka berat badan Cecep (y-cecep
), kita tidak bisa hanya mengandalkan tinggi nya saja (x-cecep
). Sebaliknya, kita harus tahu juga nilai m
dan c
yang ideal.
Untungnya, kita punya Anton dan Budi. Karena rumus berat badan ideal itu seharusnya sama untuk setiap orang, maka nilai m
dan c
untuk Anton dan Buid, harusnya berlaku pula untuk Cecep.
Mari kita coba:
y = mx + c, di mana y adalah berat badan, sedangkan x adalah tinggi badan.
Maka
Untuk Anton: 65 = m * 165 + c
Untuk Budi : 70 = m * 170 + c
Mari kita fokus ke Anton dulu:
65 = (m * 165) + c
c = 65 - (m * 165)
Hmm… tidak terlalu membantu, tapi setidaknya kita tahu bagaimana hubungan antara c
dan m
. Sekarang, mari kita fokus ke Budi:
70 = m * 170 + c
Karena c = 65 - (m * 165)
, maka kita bisa tulis ulang persamaan berat badan Budi dengan mengganti nilai c
sehingga menjadi seperti ini:
70 = (m * 170) + 65 - (m * 165)
70 - 65 = (m * 170) - (m * 165)
5 = m * (170 - 165)
5 = m * 5
m = 5/5
m = 1
Oke, sekarang kita tahu nilai m
. Mari kita lanjutkan dengan mencari nilai c
. Kita bisa kembali lagi fokus ke salah satu, Anton atau Budi. Lagi-lagi karena nilai m
dan c
untuk kedua persamaan tersebut sama persis, maka tidak masalah memilih Anton atau Budi. Untuk kali ini kita pilih Anton.
65 = m * 165 + c
65 = 1 * 165 + c
65 = 165 + c
c = 65 - 165
c = -100
Nah, akhirnya kita menemukan nilai m
dan c
. Dari sini kita bisa simpulkan bahwa rumus berat badan ideal untuk orang yang tingginya di atas 150 cm adalah y = (1 * x) - 100
, di mana y
adalah berat badan, dan x
adalah tinggi badan.
Akhirnya, dengan rumus berat badan ideal yang sudah kita temukan tadi, kita bisa menemukan berat badan Cecep. Karena tinggi badan Cecep adalah 163 cm, maka:
y = (1 * 163) - 100
y = 63
Jadi berat badan Cecep adalah 63 kg.
Teknik yang baru kita lakukan tadi disebut teknik subtitusi
. Teknik ini cukup berguna untuk melakukan berbagai macam konversi linear saat kita lupa “rumus resmi” nya. Rumus konversi Celcius-Fahrenhait-Reamur, atau tingkat-kemurnian-emas (dalam persen) ke karat, dan sebagainya. Saat berhadapan dengan kasus-kasus seperti itu, kita hanya butuh kertas dan pensil. Tidak butuh AI :)
Sedikit fakta menarik, ternyata perhitungan kita barusan, sesuai dengan artikel ini: https://lifestyle.kompas.com/read/2017/08/21/081619320/begini-cara-menghitung-berat-badan-ideal-anda. Tentu saja, karena saya sudah mencocokkan angka-angkanya terlebih dahulu :)
Lebih Jauh dengan Permasalahan Berat Badan Ideal
Berat badan ideal adalah masalah kita semua. Sedikit saja kita kurang bergerak dan terlalu banyak makan, maka kita akan jadi terlalu gemuk. Sebaliknya, jika kita makan terlalu sedikit, maka kita akan jadi terlalu kurus. Dalam hal ini memiliki berat badan ideal itu bisa dianalogikan seperti berjalan di atas seutas tali tipis, sedikit terlalu ke kiri, atau sedikit terlalu ke kanan, maka kita akan jatuh ke dalam lembah obesitas
(berat badan lebih dari seharusnya) atau mal-nutrisi
(berat badan kurang dari seharusnya).
Nah, menariknya, analogi yang saya tulis barusan tadi ternyata persis sama dengan permodelan matematika yang ada:
y = 1 * m - 100
Dengan cara yang sama kita dapat memodelkan obesitas
dengan pertidaksamaan:
y > 1 * m - 100
Atau mal-nutrisi
dengan pertidaksamaan:
y < 1 * m - 100
Fakta-fakta menarik ini akan membantu kita untuk memahami bahasan selanjutnya.
Regresi VS Klasifikasi
Kembali ke kasus Anton, Budi, dan Cecep. Ketiga orang tersebut memiliki data sebagai berikut:
Target: y
Nama | Tinggi (x) | Berat (y)
------------------------------
Anton | 165 | 65
Budi | 170 | 70
Cecep | 163 | 63
Kita cukup beruntung karena jika digambarkan, posisi mereka ada dalam satu garis lurus y = 1 * x + c
. Di sini kita lihat, bahwa nilai target yang kita cari (dalam hal ini berat), bisa sangat bervariasi. Secara matematis, bahkan kita bisa katakan bahwa kemungkinan nilai berat ini tak terbatas. Bisa jadi ada orang yang beratnya 65,1 kg, atau 65,100013 kg, dan seterusnya.
Nah untuk kasus di mana nilai target yang kita cari memiliki kemungkinan yang sangat banyak, kita sebut permasalahannya sebagai regresi
. Seperti yang sudah kita duga, regresi
bisa diselesaikan dengna cara mencari garis/bidang model (dalam kasus kita, model nya adalah garis y = 1 * x - 100
. Selanjutnya data baru akan kita cocokkan dengan model tersebut sehingga nilai target bisa ditemukan.
Sekarang bayangkan, bagaimana jika kita punya kasus yang berbeda
Target: z
Nama | Tinggi (x) | Berat (y) | Kategori (z)
-----------------------------------------------
Anton | 165 | 65 | Ideal
Budi | 170 | 70 | Ideal
Cecep | 163 | 63 | Ideal
Didit | 163 | 40 | Mal-nutrisi
Emil | 170 | 50 | Mal-nutrisi
Frank | 150 | 40 | Mal-nutrisi
Ganot | 170 | 100 | Obesitas
Herman | 165 | 80 | Obesitas
Ical | 180 | 120 | Obesitas
Kali ini target kita adalah kategori. Berbeda dengan kasus regresi
di contoh sebelumnya, sekarang kita hanya punya tiga kemungkinan target, yakni ideal
, mal-nutrisi
, dan obesitas
. Permasalahan ini disebut permasalahan klasifikasi
.
Jika pada regresi
kita mencocokkan data terhadap model, maka pada klasifikasi
, kita menggunakan model untuk memisahkan data (Mirip seperti kasus pertidaksamaan linear
pada contoh sebelumnya).
Walaupun sepintas permasalahan regresi dan klasifikasi tampak berbeda, namun langkah awalnya sama: Menentukan model.
Dengan sedikit abstraksi, kita bisa mengubah permasalahan klasifikasi ke ranah regresi. Kita ambil kembali contoh di atas. Kali ini dengan atribut rasio
:
Target: z
Nama | Tinggi (x) | Berat (y) | Rasio (w=y/(x-100)) | Kategori (z)
--------------------------------------------------------------------
Anton | 165 | 65 | 1 | Ideal
Budi | 170 | 70 | 1 | Ideal
Cecep | 163 | 63 | 1 | Ideal
Didit | 163 | 40 | 0.63 | Mal-nutrisi
Emil | 170 | 50 | 0.71 | Mal-nutrisi
Frank | 150 | 40 | 0.80 | Mal-nutrisi
Ganot | 170 | 100 | 1.42 | Obesitas
Herman | 165 | 80 | 1.23 | Obesitas
Ical | 180 | 120 | 1.5 | Obesitas
Pertama-tama kita melakukan regresi
untuk mencari nilai rasio, kemudian kita melakukan klasifikasi berdasarkan rasio tersebut. Misalnya, jika rasio kurang dari satu berarti mal-nutrisi, jika lebih dari satu, berarti obesitas, dan jika sama dengan satu berarti ideal.
Abstraksi tersebut bukanlah satu-satunya cara yang mungkin. Masih ada banyak cara lain yang tidak kita bahas di sini.
Kita dan Alam Semesta yang Tidak Ideal
Regresi adalah satu teknik yang sangat berguna. Dalam dunia yang ideal, kita bisa saja memprediksi harga saham dan tanah ataupun menebak perasaan ‘si dia’ dengan menggunakan permodelan yang tepat.
Sayangnya, alam semesta tidak ideal, dan kita tidak maha tahu. Ketidak-idealan alam semesta mungkin bisa digambarkan seperti berikut:
Pada gambar di atas, kita bisa lihat bahwa dari sekian banyak titik yang ada,jarang sekali yang benar-benar berada dalam garis model. Banyak hal di dunia ini yang tidak bisa 100% ditebak. Lemparan dua mata dadu misalnya, tidak mungkin memunculkan angka 13 atau 0. Kemungkinan kecil memunculkan angka 1 atau 12, dan besar kemungkinan memunculkan angka 5,6, dan 7. Hanya sejauh itulah yang kita tahu.
Ada berbagai model statistik untuk menghitung peluang, tapi tidak ada yang 100% akurat. Maka dalam dunia yang tidak ideal ini, perlu sekali bagi kita untuk berkompromi dan men-toleransi banyak hal.
Salah satu cara untuk menerapkan toleransi
pada matematika adalah dengan membuat error function
atau loss function
. Tujuan kita pun bergeser, bukan lagi menebak secara akurat, namun menebak dengan kesalahan seminimal mungkin. Salah satu error function
yang paling primitif dan cukup sering dipakai adalah:
$$E=\sqrt{(Target-Output)^2}$$
Kalian mungkin bertanya-tanya, kenapa tidak sekedar Target-Output
saja? Nah, Target-Output
mungkin saja memberikan hasil negatif. Ini akan menimbulkan masalah saat kita mencoba menjumlahkan nilai error
total.
Target | Output | Target - Output | sqrt((Target-Output)^2)
-----------------------------------------------------------
8 | -8 | 16 | 16
-8 | 8 | -16 | 16
-----------------------------------------------------------
Total | 0 (Loh???) | 32 (Seharusnya begini)
Adanya akar
dan kuadrat
pada rumus error function
dimaksudkan untuk menghindari masalah ini.
Dengan menentukan error function
yang tepat, maka kita mampu mengukur kesalahan dan membuat model yang lebih toleran.
Tapi kita masih punya masalah kedua. Kita tidak maha tahu, dan tidak semua masalah bisa diselesaikan dengan persamaan linear.
Lalu apa yang harus kita lakukan?
Jawaban yang naif adalah “mencoba satu-satu”. Dalam beberapa kasus, kita bisa saja cukup beruntung dan menemukan model yang tepat.
Dalam keadaan normal, biasanya pola sebaran statistika akan mengikuti fungsi Gauss (https://en.wikipedia.org/wiki/Gaussian_function). Tapi tentu saja, ini pertaruhan yang belum tentu berhasil.
Cara yang sedikit lebih baik, adalah dengan membuat kerangka model yang cukup general. Bisa diumpamakan seperti kita memakai swiss-army knife yang jika dilipat-lipat dengan konfigurasi yang benar, bisa memunculkan suatu alat yang berguna untuk menyelesaikan permasalahan kita.
Menurut saya, inilah definisi jaringan syaraf tiruan: Sebuah model matematis yang cukup general, mudah dikonfigurasi dan diotak-atik. Tapi cukup susah untuk dihitung secara manual. :)
Fondasi Jaringan Syaraf Tiruan: Perceptron
Seperti yang biasa digambarkan di buku-buku atau artikel yang membahas tentang JST, struktur umum JST adalah sebagai berikut:
Setiap lingkaran pada gambar di atas disebut perceptron
atau neuron
. Kita bisa menambahkan jumlah neuron dan menatanya sesuai kebutuhan.
Jika dibedah lebih detail, maka setiap lingkaran atau perceptron
pada gambar sebelumnya bisa dijabarkan sebagai berikut:
Saat perceptron-perceptron tersebut dirangkai, maka akan muncul model matematika yang lebih kompleks. Sebelum masuk ke sana, ada baiknya kita membedah dan memahami bagaimana perceptron
bekerja.
Feed Forward
Mari kita lihat lagi persamaan yang ada pada sebuah perceptron:
$$o=f(\Sigma^n_{k=1}i_k.W_k)$$
Kita bisa memecah persamaan tersebut menjadi dua bagian, yakni
$$y=\Sigma^n_{k=1}i_k.W_k … (penjumlahan)$$
dan
$$o=f(y) … (aktivasi)$$
Bagian Penjumlahan
Oke, mari kita fokus terlebih dahulu pada bagian pertama. Bagian ini sebenarnya adalah generalisasi dari persamaan linear yang sudah kita bahas pada kasus berat badan ideal
. Jika dijabarkan lagi, kita akan memperoleh bentuk penjumlahan sebagai berikut:
$$y=\Sigma^n_{k=1}(i_k.W_k)$$
$$y=i_1.W_1 + i_2.W_2 + … + i_n.W_n$$
Ini mirip sekali dengan persamaan garis linear:
$$y=m.x + c$$
Bayangkan saja, sekarang untuk menetukan y
(berat badan), kita tak lagi hanya bergantung x
(tinggi badan), melainkan ada faktor-faktor lain seperti x2
(ukuran sepatu), x3
(cangkir kopi yang dihabiskan tiap hari), x4
(Porsi nasi sekali makan) dan seterusnya. Maka kita akan menemukan persamaan seperti ini:
$$y=m_1.x_1 + m_2.x_2 + m_3.x_3 + m_4.x_4 + c$$
Persamaan tersebut sudah cukup mirip dengan persamaan bagian penjumlahan
pada perceptron
. Apalagi jika kita mengganti m
dengan W
dan x
dengan i
.
Supaya lebih mirip lagi, biasanya pada sebuah perceptron ditambahkan nilai bias
. Beberapa referensi menggunakan simbol tersendiri untuk nilai bias
. Tapi di tulisan ini, kita akan simbolkan bias dengan m_5
.
$$y=m_1.x_1 + m_2.x_2 + m_3.x_3 + m_4.x_4 + m_5.x_5$$
dimana x_5
selalu bernilai 1
.
Sekarang kita bisa yakin bahwa bagian penjumlahan
pada sebuah perceptron
tak lain adalah persamaan linear.
Kembali lagi ke kasus awal (dengan sedikit modifikasi):
Nama | Tinggi (i_1) | Porsi makan (i_2) | Berat (t)
----------------------------------------------------
Anton | 165 | 3 | 65
Maka kita bisa menghitung nilai y
dengan cara berikut:
$$y=\Sigma^n_{k=1}(i_k.W_k)$$
$$y=i_1.W_1 + i_2.W_2 + i_3.W_3$$
Nilai w1
, w2
, dan w3
akan kita tentukan secara acak. Misalnya kita ambil w1
= 0.3, w2
= 0.2, dan w3
= 0.1, maka:
y = 165 * 0.3 + 3 * 0.2 + 0.1
Bagian Aktivasi
Usai melakukan penjumlahan, langkah selanjutnya adalah melakukan aktivasi. Jika pada bagian penjumlahan kita sudah menciptakan satu persamaan linear, maka fungsi aktivasi bertugas untuk menghadapi ketidak-linearan data. Pada dasarnya fungsi aktivasi bertujuan untuk memetakan output persamaan linear dari bagian penjumlahan
menjadi tidak linear.
Ada beberapa fungsi aktivasi yang umum dipakai. Penjelasan lebih lanjut tentang fungsi aktivasi bisa dilihat pada artikel ini: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6
Dari sekian banyak fungsi aktivasi yang ada, tampaknya ada dua yang paling sering dipakai, yakni sigmoid
( atau logistic
) dan ReLu
(serta Leaky ReLu
).
Jika kita yakin data kita pasti linear, maka ada baiknya kita tidak memakai jaringan syaraf tiruan. Lebih baik lakukan linear regression
yang jauh lebih sederhana dan cepat. Atau kalau masih ingin memakai JST, gunakan fungsi aktivasi linear (yang pada dasarnya tidak melakukan apapun).
Untuk menghindari vanishing gradient problem
, umumnya praktisi deep learning lebih menyukai ReLu
atau Leaky ReLu
. Kedua fungsi ini juga kerap dipilih karena perhitungannya yang sederhana.
Ok, kembali ke kasus awal. Semisal kita memilih fungsi ReLu
, maka kita harus melakukan ini:
y = 165 * 0.3 + 3 * 0.2 + 0.1
o = f(y)
o = y (karena y tidak kurang dari nol)
import math
i1 = 165
i2 = 3
w1 = 0.3
w2 = 0.2
w3 = 0.1
o = i1 * w1 + i2 * w2 + w3
print(o)
50.2
Perhitungan Error
Setelah perhitungan feed forward
selesai. Langkah selanjutnya adalah menghitung error.
Formula yang umum dipakai untuk menghitung error adalah adalah:
$$E = \frac{1}{2}.(t - o)^2$$
Jika diperhatikan, formula ini agak berbeda dari error function
yang pernah kita bahas di bagian sebelumnya. Perbedaan tersebut memang disengaja untuk memudahkan perhitungan. Dasar pemikirannya adalah untuk memperbaiki error
, kita tidak perlu tahu pasti nilai error nya. Kita cukup tahu kira-kira semenyimpang apa kondisi kita saat ini dibandingkan dengan kondisi seharusnya.
Simplifikasi yang dilakukan pada error function
yang telah dimodifikasi ini antara lain:
- Tidak ada akar kuadrat, karena perhitungan akar kuadrat cukup mahal/susah.
- Ada penambahan pengali
1/2
. Penambahan ini dimaksudkan supaya perhitungan fungsi turunan pada saat propagasi balik akan menjadi lebih mudah.
Dalam kasus perceptron tunggal ini, kita bisa menghitung nilai error sebagai berikut
t = 65
error = 0.5 * (t - o)**2
print(error)
109.51999999999995
Back Propagation
Jika diperhatikan, tentu saja hasil perhitungan feed-forward ini meleset jauh. Tapi jangan khawatir. JST punya mekanisme untuk memperbaiki nilai W
sehingga nantinya nilai output yang dihasilkan akan mendekati target.
Untuk memperbaiki nilai W
, maka kita butuh dua macam informasi:
- Seberapa besar perubahan nilai
W
- Bagaimana kita harus mengubah nilai
W
JST menjawab pertanyaan pertama dengan menyediakan satu parameter yang disebut learning rate
.
Untuk pertanyaan kedua, jawabannya ternyata jauh lebih kompleks, karena kita membutuhkan perhitungan kalkulus. Sebelum kita melangkah lebih jauh, mari kita lihat, bagaimana kalkulus bisa membantu.
Kalkulus dan Fungsi Turunan
Konsep kalkulus pertama kali diperkenalkan oleh Newton untuk menghitung perubahan sesaat. Sebelum kita membicarakan tentang perubahan sesaat.
Semisal ada fungsi f(x) = x^2
, maka untuk x = {0 .. 4}
, kita bisa memperoleh data perubahan nilai f(x)
sebagai berikut
x_i | y_i = f(x_i) | Delta = y_(i+1) - y_i
---------------------------------------------
0 | 0 = 0^2 | 1
1 | 1 = 1^2 = 0+1 | 3
2 | 4 = 2^2 = 1+3 | 5
3 | 9 = 3^2 = 4+5 | 7
4 | 16 = 4^2 = 9+7 | 9
Jika kita generalisasi, maka kita akan temukan bahwa
$$\Delta = \frac{f(x_i + h) - f(x_i)}{h}$$
Mari kita buktikan. Dalam kasus kita ini, karena h = 1
, maka untuk x = 2
, seharusnya kita akan ketemukan Delta = 5
Delta = [f(2+1) - f(2)] / 1
Delta = [f(3) - f(2)] / 1
Delta = (3^2 - 2^2) / 1
Delta = (9 - 4) / 1
Delta = 5
Terbukti.
Nah konsep perubahan sesaat sebenarnya mirip dengan konsep yang sudah kita jabarkan di atas. Hanya saja kali ini nilai h
nya mendekati nol. Mengapa mendekati nol? Karena kita tidak mungkin menghitung perubahan nilai f(x)
jika perubahan x
nya sendiri adalan nol. Ibarat kita melihat foto sebuah mobil, dan disuruh mengira-ngira kecepatannya. Tidak mungkin bisa. Setidaknya kita butuh 2 foto. Foto mobil saat ini, dan foto beberapa mili-detik setelahnya. Kecepatan bisa ditentukan dengan cara menghitung perubahan posisi mobil dibagi dengan perubahan waktu pengambilan foto.
Oleh sebab itu rumus untuk menghitung Delta perlu kita ubah, sehingga nilai h
nya kecil sekali (mendekati nol). Kebetulan dalam matematika ada konsep limit
(mendekati namun tak sampai :( ). Oleh karena itu, rumus menghitung delta bisa kita tulis sebagai berikut:
$$\Delta = Limit _{h -> 0} \frac{f(x_i + h) - f(x_i)}{h}$$
Formula untuk menghitung Delta
inilah yang kemudian kita kenal dengan derivative
atau fungsi turunan
. Singkatnya, fungsi turunan adalah fungsi untuk menghitung perubahan sesaat.
Mari kita lihat contoh perhitungan untuk mencari fungsi turunan dari f(x) = x^2
:
$$\frac{\delta f(x)}{\delta x} = f’(x) = Limit _{h -> 0} \frac{f(x + h) - f(x)}{h}$$ $$\frac{\delta f(x)}{\delta x} = f’(x) = Limit _{h -> 0} \frac{(x + h)^2 - (x)^2}{h}$$ $$\frac{\delta f(x)}{\delta x} = f’(x) = Limit _{h -> 0} \frac{(x + h).(x + h) - x^2}{h}$$ $$\frac{\delta f(x)}{\delta x} = f’(x) = Limit _{h -> 0} \frac{x^2 + x_i.h + x.h + h^2 - x^2}{h}$$ $$\frac{\delta f(x)}{\delta x} = f’(x) = Limit _{h -> 0} \frac{x^2 + 2.x_i.h + h^2 - x^2}{h}$$ $$\frac{\delta f(x)}{\delta x} = f’(x) = Limit _{h -> 0} \frac{2.x.h + h^2}{h}$$ $$\frac{\delta f(x)}{\delta x} = f’(x) = Limit _{h -> 0} \frac{h.(2.x+h)}{h}$$ $$\frac{\delta f(x)}{\delta x} = f’(x) = Limit _{h -> 0} 2.x+h$$ $$\frac{\delta f(x)}{\delta x} = f’(x) = 2.x$$
Perhitungan di atas selaras dengan rumus turunan untuk fungsi pemangkatan:
Untuk $$f(x) = x^r$$
Maka $$\frac{\delta f(x)}{\delta(x)} = f’(x) = r.x^{r-1}$$
Dalam prakteknya, Kita perlu mencari fungsi turunan terhadap setiap nilai w
dari fungsi ini:
$$E = \frac{1}{2}.(t - o)^2$$ $$E = \frac{1}{2}.(t-f(\Sigma^n_{k=1}i_k.W_k))^2$$
Cukup sulit tampaknya :(
Teorema Rantai
Untungnya, dalam matematika dikenal teorema rantai. Secara sederhana, kita sering melihat implementasi teorema rantai dalam perkalian pecahan:
$$\frac{1}{2}.\frac{2}{x}.\frac{x}{y}.\frac{y}{3} = \frac{1}{3}$$
Kita bisa yakin hasil akhir dari perhitungan tersebut adalah 1/3
, sekalipun kita tidak tahu nilai x
dan y
.
Teorema rantai bisa juga kita gunakan untuk menghitung turunan
. Dalam kasus kita, di mana ada W_1
, W_2
, dan W3
, maka:
$$\frac{\delta E}{\delta W_1} = \frac{\delta E}{\delta o} . \frac{\delta o}{\delta y} . \frac{\delta y}{\delta W_1}$$ $$\frac{\delta E}{\delta W_2} = \frac{\delta E}{\delta o} . \frac{\delta o}{\delta y} . \frac{\delta y}{\delta W_2}$$ $$\frac{\delta E}{\delta W_2} = \frac{\delta E}{\delta o} . \frac{\delta o}{\delta y} . \frac{\delta y}{\delta W_3}$$
Perubahan Nilai W
Setelah menghitung arah perubahan W melalui teorema rantai, langkah selanjutnya adalah menghitung perubahan W
:
$$\Delta W_1 = - learningRate.\frac{\delta E}{\delta W_1}$$ $$\Delta W_2 = - learningRate.\frac{\delta E}{\delta W_2}$$ $$\Delta W_3 = - learningRate.\frac{\delta E}{\delta W_3}$$
Setelah menghitung perubahan nilai W, langkah selanjutnya adalah menghitung nilai W yang baru:
$$W’_1 = W_1 + \Delta W_1$$ $$W’_2 = W_2 + \Delta W_2$$ $$W’_3 = W_3 + \Delta W_3$$
Untuk melihat versi perhitungan yang sangat detail, teman-teman bisa kunjungi https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/
Nah, karena perhitungannya cukup panjang, mari kita coba salah satu saja, menghitung nilai W_1
yang baru.
$$W’_1 = W_1 + \Delta W_1$$
$$W’_1 = W_1 - learningRate.\frac{\delta E}{\delta W_1}$$
$$W’_1 = W_1 - learningRate.\frac{\delta E}{\delta o} . \frac{\delta o}{\delta y} . \frac{\delta y}{\delta W_1}$$
Untuk kasus kita ini, nilai, W_1 = 0.3
. Anggap saja, kita sudah menentukan learningRate = 0.001
. Maka sekarang tersisa beberapa hal lagi yang perlu kita hitung. Masing-masing adalah dE/do
, do/dy
, dan dy/dW_1
.
dE/do
$$\frac{\delta E}{\delta o} = \frac{\delta \frac{1}{2}.(t-o)^2}{\delta o} $$ $$\frac{\delta E}{\delta o} = (t-o) $$
Karena t = 65
dan o = 50.2
(didapat dari fase feed forward
), maka:
$$\frac{\delta E}{\delta o} = (65 - 50.2) $$
do/dy
Karena nilai y = 50.2
, dan kita menggunakan fungsi aktivasi Relu, maka:
$$\frac{\delta o}{\delta y} = 1 $$
dy/dW_1
$$\frac{\delta y}{\delta W_1} = \frac{\delta i_1.W_1 + i_2.W_2 + W_3}{\delta W_1} $$ $$\frac{\delta y}{\delta W_1} = i_1 $$
Karena i_1 = 165
, maka:
$$\frac{\delta y}{\delta W_1} = 165 $$
W_1 yang Baru
Setelah mendapatkan semua angka yang kita butuhkan, kita bisa menghitung nilai W_1 yang baru sebagai berikut:
$$W’_1 = W_1 - learningRate.\frac{\delta E}{\delta o} . \frac{\delta o}{\delta y} . \frac{\delta y}{\delta W_1}$$
w1 = 0.3
w1 = w1 - 0.001 * (65 - 50.2) * 1 * 165
print(w1)
-2.142
Tensorflow
Dewasa ini, kita tidak perlu membuat program dari nol hanya untuk sekedar membuat JST sederhana. Ada berbagai framework yang sudah dibuat sedemikian rupa, sehingga kita bisa membuat JST dengan baris kode sesedikit mungkin. Saat ini, banyak yang menggunakan Tensorflow2 atau Pytorch untuk membuat JST dengan arsitektur yang luar biasa rumit.
Tensorflow2 sendiri adalah proyek besutan Google yang di dalamnya juga menyertakan keras
. Keras adalah sebuah pustaka yang menyediakan banyak layar abstraksi.
Mari kita coba membuat JST menggunakan tensorflow untuk kasus berikut:
Nama | Tinggi (i_1) | Porsi makan (i_2) | Berat (t)
----------------------------------------------------
Anton | 165 | 3 | 65
Budi | 170 | 2 | 70
Andi | 150 | 2 | 50
Bowo | 175 | 3 | 75
Asep | 165 | 3 | 65
Cecep | 163 | 3 | ?
Dalam kasus ini, kita akan mencoba menggunakan 3 layer:
- Layer pertama adalah input layer. Layer ini terdiri dari 2 perceptron untuk menerima dua masukan (tinggi dan porsi).
- Layer kedua adalah hidden layer dengan 3 perceptron
- Layer terakhir adalah output layer yang memnculkan prediksi berat badan.
import tensorflow as tf
import numpy as np
inputs = np.array([ [165, 3], [170, 2], [150, 2], [175, 3], [165, 3] ])
targets = np.array([ [65], [70], [50], [75], [65] ])
model = tf.keras.Sequential([
tf.keras.layers.Dense(units = 3, input_shape = (2, ), activation = tf.keras.activations.relu), # input: 2, output: 3
tf.keras.layers.Dense(units = 1, activation = tf.keras.activations.relu), # input: 3, output: 1
])
model.compile(optimizer = 'sgd',
loss = tf.keras.losses.mean_absolute_error,
metrics = ['accuracy'])
#Train the model
model.fit(inputs, targets, epochs=10)
print("Training Target:", targets, "\nTraining Output:", model.predict(inputs))
print("Test Target:", 63, "\nTest Output:", model.predict(np.array([[163,3]])))
Train on 5 samples
Epoch 1/10
5/5 [==============================] - 0s 62ms/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 2/10
5/5 [==============================] - 0s 724us/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 3/10
5/5 [==============================] - 0s 1ms/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 4/10
5/5 [==============================] - 0s 779us/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 5/10
5/5 [==============================] - 0s 939us/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 6/10
5/5 [==============================] - 0s 989us/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 7/10
5/5 [==============================] - 0s 1ms/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 8/10
5/5 [==============================] - 0s 1ms/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 9/10
5/5 [==============================] - 0s 1ms/sample - loss: 65.0000 - accuracy: 0.0000e+00
Epoch 10/10
5/5 [==============================] - 0s 875us/sample - loss: 65.0000 - accuracy: 0.0000e+00
Training Target: [[65]
[70]
[50]
[75]
[65]]
Training Output: [[0.]
[0.]
[0.]
[0.]
[0.]]
Test Target: 63
Test Output: [[0.]]
:(
Ternyata hasilnya sangat buruk. Jauh dari dugaan kita. Di sini kita bisa lihat dengan jelas bahwa JST bukan solusi untuk semua masalah.
Sekalipun secara teoritis JST punya peluang untuk menyelesaikan banyak masalah, namun pada kenyataannya para peneliti di bidang kecerdasan buatan seringkali harus melakukan riset berbulan-bulan atau bahkan bertahun-tahun hanya untuk menemukan arsitektur dan parameter yang tepat.
Kebetulan, kasus kita tidak terlalu rumit. Sebisa mungkin jika teman-teman berhadapan dengan kasus seperti ini (solusinya bisa diduga), gunakanlah aljabar, pemrograman-konvensional atau linear/logistic regression.
Karena saya masih belum menyerah dengan JST, maka saya melakukan sedikit fine-tuning pada JST kita tadi:
- Tampaknya dalam kasus ini 1 perceptron saja sudah cukup (
y = m1.x1 + m2.x2 + c
) - Tampaknya pula, kita tidak perlu fungsi aktivasi, karena masalah kita sepenuhnya linear.
- Tampaknya pula, nilai c nya pasti
-100
.
Mari kita coba sekali lagi:
# Import tensorflow and numpy
import tensorflow as tf
import numpy as np
inputs = np.array([ [165, 3], [170, 2], [150, 2], [175, 3], [165, 3] ])
targets = np.array([ [65], [70], [50], [75], [65] ])
model = tf.keras.Sequential([
tf.keras.layers.Dense(units = 1,
input_shape = (2, ),
activation = tf.keras.activations.linear,
use_bias = True,
bias_initializer = tf.keras.initializers.Constant(-100),
kernel_initializer = tf.keras.initializers.Constant(1))
])
model.compile(optimizer = 'sgd',
loss = tf.keras.losses.mean_absolute_error,
metrics = ['accuracy'])
#Train the model
model.fit(inputs, targets, epochs=10)
print("Training Target:", targets, "\nTraining Output:", model.predict(inputs))
print("Test Target:", 63, "\nTest Output:", model.predict(np.array([[163,3]])))
Train on 5 samples
Epoch 1/10
5/5 [==============================] - 0s 90ms/sample - loss: 2.6000 - accuracy: 0.0000e+00
Epoch 2/10
5/5 [==============================] - 0s 931us/sample - loss: 269.7276 - accuracy: 0.0000e+00
Epoch 3/10
5/5 [==============================] - 0s 784us/sample - loss: 2.6000 - accuracy: 0.0000e+00
Epoch 4/10
5/5 [==============================] - 0s 886us/sample - loss: 269.7276 - accuracy: 0.0000e+00
Epoch 5/10
5/5 [==============================] - 0s 1ms/sample - loss: 2.6000 - accuracy: 0.0000e+00
Epoch 6/10
5/5 [==============================] - 0s 943us/sample - loss: 269.7276 - accuracy: 0.0000e+00
Epoch 7/10
5/5 [==============================] - 0s 877us/sample - loss: 2.6000 - accuracy: 0.0000e+00
Epoch 8/10
5/5 [==============================] - 0s 1ms/sample - loss: 269.7276 - accuracy: 0.0000e+00
Epoch 9/10
5/5 [==============================] - 0s 1ms/sample - loss: 2.6000 - accuracy: 0.0000e+00
Epoch 10/10
5/5 [==============================] - 0s 893us/sample - loss: 269.7276 - accuracy: 0.0000e+00
Training Target: [[65]
[70]
[50]
[75]
[65]]
Training Output: [[68.]
[72.]
[52.]
[78.]
[68.]]
Test Target: 63
Test Output: [[66.]]
Wah, rupanya masih meleset sekitar 2 atau 3 kg. Tapi inilah kira-kira hasil akhir sebuah JST.
JST Untuk Citra
Usai tahu bagaimana JST bekerja, mari kita sedikit bermain-main dengan citra yang ada pada MNIST dataset.
MNIST dataset adalah dataset yang umum dipakai untuk melakukan Optical-character-recognition. Dalam dataset ini terdapat gambar-gambar tulisan angka dengan resolusi 28x28 pixel.
# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras
# Helper libraries
import numpy as np
import matplotlib.pyplot as plt
Untuk sedikit mempercantik, kita bisa menciptakan sebuah list label. JST sendiri sejatinya hanya bisa berurusan dengan angka. Sehingga harus ada mekanisme khusus untuk mengubah kata menjadi angka atau sebaliknya.
class_names = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
Setelah semuanya siap, kita bisa mengunduh mnist dataset dengan perintah berikut
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 697s 61us/step
Di sini kita punya 6000 train_labels yang masing-masing berkorelasi dengan angka yang tergambar pada train_images
train_labels
array([5, 0, 4, ..., 5, 6, 8], dtype=uint8)
train_labels.shape
(60000,)
train_images
array([[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
...,
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]]], dtype=uint8)
train_images.shape
(60000, 28, 28)
Mari kita intip salah satu train_image:
index = 0
label = train_labels[index]
image = train_images[index]
print("label: ", label) # this is the first train_labels
print("which is: ", class_names[label]) # use our pre-defined class_names to get textual representation of the label
plt.figure()
plt.imshow(image) # if you just want to see the matrix representation of the image, use `image` instead
plt.show()
label: 5
which is: five
Dan seperti sebelumnya, sekarang kita bisa mulai membuat model JST.
Pertama-tama, citra dengan dimensi 28x28 ini kita pipihkan menjadi 1x784. Vektor 1x784 ini kita lewatkan pada sebuah hidden layer dengan 1024 perceptron.
Akhirnya, kita masukkan kembali dalam sebuah output layer dengan 10 unit. Dalam hal ini, kita ini perceptron pertama mewakili angka nol, perceptron kedua mewakili angka 1, dan perceptron kesepuluh mewakili angka 9.
Ini pendekatan yang cukup menarik, karena bisa saja ada dua angka yang penulisannya mirip. 1 dan 7 misalnya. Di sini kita bisa lihat, bahwa selain bisa digunakan untuk regresi/klasifikasi, secara lebih lanjut, JST bisa digunakan untuk mendeteksi fitur-fitur menarik ataupun anomali pada data.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(1024, activation=tf.nn.sigmoid),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5)
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Train on 60000 samples
Epoch 1/5
60000/60000 [==============================] - 11s 179us/sample - loss: 0.3606 - accuracy: 0.8983
Epoch 2/5
60000/60000 [==============================] - 10s 173us/sample - loss: 0.2756 - accuracy: 0.9201
Epoch 3/5
60000/60000 [==============================] - 11s 175us/sample - loss: 0.2489 - accuracy: 0.9256
Epoch 4/5
60000/60000 [==============================] - 11s 178us/sample - loss: 0.2343 - accuracy: 0.9299
Epoch 5/5
60000/60000 [==============================] - 11s 175us/sample - loss: 0.2147 - accuracy: 0.9355
10000/1 [================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================] - 1s 92us/sample - loss: 0.1496 - accuracy: 0.9412
Test accuracy: 0.9412
Akhirnya, kita coba untuk melakukan prediksi.
predictions = model.predict(test_images)
np.argmax(predictions[0])
index = 0
prediction_label = np.argmax(predictions[0])
target_label = test_labels[index]
image = test_images[index]
print("target label: ", target_label, class_names[target_label])
print("prediction label: ", prediction_label, class_names[prediction_label])
plt.figure()
plt.imshow(image) # if you just want to see the matrix representation of the image, use `image` instead
plt.show()
target label: 7 seven
prediction label: 7 seven
Hasilnya tepat sekali (karena kebetulan dataset nya memang bagus, dan arsitektur JST nya juga sesuai).
Pada artikel selanjutnya, saya akan mencoba untuk membahas tentang NLP, CNN, RNN, LSTM, Transformers, dan BERT.
Harapannya, melalui artikel yang cukup panjang ini, teman-teman bisa memahami bagaimana sebenarnya JST bekerja. Apa yang layak/tidak layak diselesaikan dengan JST.