Kernel merupakan program komputer yang menjadi inti dari sebuah sistem operasi
komputer, dengan kontrol terhadap segala hal atas sistem tersebut. Pada
kebanyakan sistem, kernel merupakan salah satu dari program yang dijalankan
dalam urutan pertama saat komputer dinyalakan.
Tugas utamanya adalah memberi layanan kepada aplikasi dan bagian lain dari OS,
lalu memuatnya di dalam memori utama. Kernel ini bertanggung jawab untuk
mengatur memory management, process and task management, dan juga disk
management. Jadi, sistem yang ada di hardware akan dihubungkan oleh Kernel
ke software aplikasi.
Jenis – jenis kernel, yaitu:
1. Monolithic Kernel
Pertama adalah Monolithic Kernel. Pada jenis Monolithic, semua layanan OS
dijalankan di ruang khusus Kernel. Jenis Kernel ini performanya bagus, akan tetapi
memiliki ketergantungan dengan komponen yang ada di sistem dan code-nya
sangat banyak. OS yang menggunakannya adalah Unix, Linux, Open VMS, dan
lainnya.
2. Micro Kernel
Micro Kernel dikenal dengan pendekatannya yang lebih minimalis. Dengan virtual
memory dan thread scheduling, jenis yang satu ini jadi lebih stabil dan tidak terlalu
penuh dengan layanan di ruang khusus Kernel.
Contoh OS yang menggunakan jenis ini adalah Mach, L4, K42, dan masih banyak
lagi. Meskipun lebih stabil, kekurangannya adalah terdapat banyak system
calls dan context switches.
3. Hybrid Kernel
Jenis ketiga adalah Hybrid Kernel yang seperti namanya merupakan kombinasi dari
dua jenis sebelumnya. Geeks for Geeks menyebutkan bahwa Hybrid Kernel ini
memiliki desain Monolithic dan kestabilan Microkernel.
Contoh OS yang menggunakannya adalah Windows NT, Netware, dan
lainnya. Meskipun menggabungkan dua model tersebut, Kernel yang satu ini kurang
lebih sama saja dengan Monolithic.
4. Exo Kernel
Nah, kalau Exo Kernel ini merupakan jenis yang menggunakan prinsip end-to-end,
sehingga memiliki sedikit hardware abstraction dan sumber daya yang dimiliki
difokuskan ke aplikasi dan program lainnya. Menurut TechTarget, hardware
abstraction itu sendiri adalah lapisan programming yang memungkinkan OS untuk
berinteraksi dengan hardware secara umum dan tidak terlalu mendetail.
OS yang menggunakan Kernel ini adalah Nemesis, ExOS, dan masih banyak lagi.
The Windows Club menyebutkan bahwa Exo Kernel biasanya digunakan untuk
mengetes sebuah proyek, lalu untuk hasil akhirnya harus upgrade menggunakan
Kernel lainnya. Karena jenis Kernel yang satu ini mengharuskan para application
developer untuk bekerja dua kali lipat karena pemrogramannya.
5. Nano Kernel
Kernel jenis ini memberikan hardware abstraction tanpa system service. Akan tetapi,
sama dengan Micro Kernel, jenis Nano ini juga cukup jarang digunakan. Towards
Data Science menyebutkan bahwa Kernel adalah semacam pembatas yang
menjembatani hardware dengan aplikasi, CPU, memory, dan juga perangkat yang
digunakan. Intinya, apa pun itu yang digunakan baik dari bermain game sampai
penggunaan browser untuk menjelajahi internet.
Dengan ini, gambar asli dari seorang anak kecil diatas menjadi 77 gambar yang lebih
kecil dengan konvolusi yang sama.
Langkah 2 : Memasukkan setiap gambar yang lebih kecil ke small neural network
Setiap gambar kecil dari hasil konvolusi tersebut kemudian dijadikan input untuk
menghasilkan sebuah representasi fitur. Hal ini memberikan CNN kemampuan
mengenali sebuah objek, dimanapun posisi objek tersebut muncul pada sebuah
gambar.
Langkah 4 : Downsampling
Pada langkah 3, array masih terlalu besar, maka untuk mengecilkan ukuran array nya
digunakan downsampling yang penggunaannya dinamakan max pooling atau
mengambil nilai pixel terbesar di setiap pooling kernel. Dengan begitu, sekalipun
mengurangi jumlah parameter, informasi terpenting dari bagian tersebut tetap
diambil.
Stride
Stride adalah parameter yang menentukan berapa jumlah pergeseran filter. Jika nilai
stride adalah 1, maka conv. filter akan bergeser sebanyak 1 pixel secara horizontal
lalu vertical. Pada ilustrasi diatas, stride yang digunakan adalah 2. Semakin kecil
stride maka akan semakin detail informasi yang kita dapatkan dari sebuah input,
namun membutuhkan komputasi yang lebih jika dibandingkan dengan stride yang
besar. Namun perlu diperhatikan bahwa dengan menggunakan stride yang kecil kita
tidak selalu akan mendapatkan performa yang bagus.
Padding
Padding atau zero padding adalah parameter menentukan jumlah pixel (berisi nilai 0)
yang akan ditambhakan di setiap sisi dari input. Hal ini digunakan dengan tujuan
untuk memanipulasi dimensi output dari conv. layer (feature map).
Dengan menggunakan padding, kita akan dapat mengukur dimensi output agar tetap
sama seperti dimensi input atau setidaknya tidak berkurang secara drastis. Sehingga
kita bisa menggunakan conv. layer yang lebih dalam sehingga lebih banyak feature
yang berhasil di-extract. Meningkatkan performa model karena conv. layer akan
fokus pada informasi yang sebenarnya yaitu yang berada diantara zero padding
tersebut. Pada ilustrasi diatas, dimensi dari input sebenarnya adalah 5x5, jika
dilakukan convolution dengan filter 3x3 dan stride sebesar 2, maka akan didaptkan
feature map dengan ukuran 2x2. Namun jika ditambahkan zero padding sebanyak 1,
maka feature map yang dihasilkan berukuran 3x3 (lebih banyak informasi yang
dihasilkan). Untuk menghitung dimensi dari feature map kita bisa gunakan rumus
sebagai berikut.
Keterangan :
W = Panjang/Tinggi Input
N = Panjang/Tinggi Filter
P = Zero Padding
S = Stride
Fungsi Aktivasi
Fungsi aktivasi berada pada tahap sebelum melakukan pooling layer dan setelah
melakukan proses konvolusi. Pada tahap ini, nilai hasil konvolusi dikenakan fungsi
aktivasi atau activation function. Terdapat beberapa fungsi aktivasi yang sering
digunakan pada convolutional network, di antaranya
tanh() atau reLU. Aktivasi reLU menjadi pilihan bagi beberapa peneliti karena
sifatnya yang lebih berfungsi dengan baik.
Fungsi yang digunakan untuk aktivasi pada reLU, fungsi reLU adalah
nilai output dari neuron bisa dinyatakan sebagai 0 jika inputnya adalah negatif. Jika
nilai input dari fungsi aktivasi adalah positif, maka output dari neuron adalah
nilai input aktivasi itu sendiri.
Pooling Layer
Polling layer biasanya berada setelah conv. layer. Pada prinsipnya pooling layer
terdiri dari sebuah filter dengan ukuran dan stride tertentu yang bergeser pada
seluruh area feature map. Pooling yang biasa digunakan adalah Max Pooling dan
Average Pooling. Tujuan dari penggunaan pooling layer adalah mengurangi dimensi
dari feature map (downsampling), sehingga mempercepat komputasi karena
parameter yang harus di update semakin sedikit dan mengatasi overfitting.
Hal terpenting dalam pembuatan model CNN adalah dengan memilih banyak jenis
lapisan pooling. Hal ini dapat menguntungkan kinerja model (Lee, Gallagher, & Tu,
2015). Lapisan pooling bekerja di setiap tumpukan feature map dan mengurangi
ukurannya. Bentuk lapisan pooling yang paling umum adalah dengan menggunakan
filter berukuran 2x2 yang diaplikasikan dengan langkah sebanyak 2 dan kemudian
beroperasi pada setiap irisan dari input. Bentuk seperti ini akan mengurangi feature
map hingga 75% dari ukuran aslinya. Berikut gambar contoh operasi Max Pooling.
Dropout Regularization
Dropout adalah teknik regularisasi jaringan syaraf dimana beberapa neuron akan
dipilih secara acak dan tidak dipakai selama pelatihan. Neuron-neuron ini dapat
dibilang dibuang secara acak. Hal ini berarti bahwa kontribusi neuron yang dibuang
akan diberhentikan sementara jaringan dan bobot baru juga tidak diterapkan pada
neuron pada saat melakukan backpropagation.
Dropout merupakan proses mencegah terjadinya overfitting dan juga mempercepat
proses learning. Dropout mengacu kepada menghilangkan neuron yang berupa
hidden mapun layer yang visible di dalam jaringan. Dengan menghilangkan suatu
neuron, berarti menghilangkannya sementara dari jaringan yang ada. Neuron yang
akan dihilangkan akan dipilih secara acak. Setiap neuron akan diberikan probabilitas
yang bernilai antara 0 dan 1.
Pada gambar diatas jaringan syaraf (a) merupakan jaringan syaraf biasa dengan 2
lapisan tersembunyi. Sedangkan pada bagian (b) jaringan syaraf sudah diaplikasikan
teknik regularisasi dropout dimana ada beberapa neuron aktivasi yang tidak dipakai
lagi. Teknik ini sangat mudah diimplementasikan pada model CNN dan akan
berdampak pada performa model dalam melatih serta mengurangi overfitting.
Pembelajaran Backpropagation
Salah satu sifat neural network yang menyerupai dengan otak manusia adalah
bahwa neural network membutuhkan proses pembelajaran. Pembelajaran dilakukan
untuk menentukan nilai bobot yang tepat untuk masing-masing input. Bobot
bertambah jika informasi yang diberikan oleh neuron yang bersangkutan
tersampaikan. Sebaliknya jika informasi tidak disampaikan maka nilai bobot berubah
secara dinamis sehingga dicapai suatu nilai yang seimbang. Apabila nilai ini telah
mampu mengindikasikan hubungan yang diharapkan antara input dan output, proses
pembelajaran bisa dihentikan.
Backpropagation merupakan algoritma pembelajaran yang terawasi dan biasanya
digunakan oleh perceptron dengan banyak lapisan untuk mengubah bobotbobot yang
terhubung dengan neuron-neuron yang ada pada lapisan tersembunyi. Algoritma ini
menggunakan error output untuk mengubah nilai bobot-bobotnya dalam arah mundur
(backward). Untuk mendapatkan error ini, tahap perambatan maju (forward
propagation) harus dikerjakan terlebih dahulu. Pada saat perambatan maju, neuron-
neuron diaktifkan dengan menggunakan fungsi aktivasi yang dapat diturunkan,
seperti fungsi sigmoid.
Arsitektur jaringan backpropagation seperti ditunjukkan pada dibawah ini. Gambar
tersebut menunjukkan neural network yang terdiri dari tiga unit neuron pada lapisan
input(x1, x2, dan x3), dua neuron pada lapisan tersembunyi(Z1 dan Z2), dan 1 unit
neuron pada lapisan output (Y). Bobot yang menghubungkan x1, x2, dan x3 dengan
neuron pertama pada lapisan tersembunyi adalah V11, V21, dan V31 . b11 dan b12
adalah bobot bias yang menuju neuron pertama dan kedua pada lapisan
tersembunyi. Bobot yang mengubungkan Z1 dan Z2 dengan neuron pada lapisan
output adalah w1 dan w2. Bobot bias b2 menghubungkan lapisan tersembunyi
dengan lapisan output.
Ilustrasi Jaringan Backpropagation
Confusion Matrix
Salah satu metode untuk mengukur performa dari suatu model klasifikasi adalah
dengan mencari nilai precision, recall, serta nilai akurasi dari suatu model. Beberapa
istilah yang umum dipakai dalam pengukuran kinerja model klasifikasi adalah positive
tupple dan negative tupple. Positive tupple adalah tupple yang menjadi fokus
pembahasan. Sedangkan negative tupple adalah tupple selain yang sedang menjadi
fokus pembahasan.
Beberapa istilah lain yang merupakan dasar dalam pencarian nilai precision, recall,
dan akurasi nilai true positive (TP), true-negative (TN), false positive (FP), dan false
negative (FN). Istilah-istilah tersebut biasa dirangkum sebagai suatu matriks yang
disebut confusion matrix sebagaimana ditunjukkan pada berikut.
Confusion Matrix
Pada gambar tersebut ditunjukkan, nilai true positive didefinisikan sebagai positive
tupple yang diklasifikasikan dengan benar oleh model. True negative adalah negative
tupple yang diklasifikasikan dengan benar oleh model. Sementara itu, false positive
adalah negative tupple yang diklasifikasikan sebagai kelas positif oleh model. False
negative adalah positive tupple yang diklasifikasikan sebagai kelas negatif oleh
model klasifikasi. Berdasar confusion matrix pada gambar tersebut, kinerja model
klasifikasi dapat dihitung.
Akurasi
Akurasi didefinisikan sebagai persentase dari data uji yang diklasifikasikan ke kelas
yang benar. Akurasi dapat dinyatakan dalam persamaan berikut.