Hidden Layer Pada Jaringan Syaraf Tiruan

Dari dua jenis cara membuat Jaringan Syaraf Tiruan (JST), cara pembuatan dengan command window sebaiknya dilakukan jika Anda ingin membuat JST dengan beberapa hidden layer karea cara GUI (dengan nntool) tidak menyertakan hidden layer di dalamnya.

    Sesuai dengan namanya, JST bermaksud membuat sistem yang mirip syaraf biologis dengan suatu algoritma (ingat, syaraf tiruan dengan “y”, bukan saraf, itu lain lagi artinya J ). Jika kita punya data masukan dengan keluaran tertentu maka kita dapat mengajarkan ke JST sehingga apabila ada masukan yang berbeda, sistem akan mampu memprediksi keluarannya berdasarkan aturan yang dipelajari lewat mekanisme learning/training.

    Misal kita ingin mengajari JST pemangkatan. Tentu saja jika pemangkatan tidak perlu dengan JST, hard computing pun bisa. Tapi ini kita jadikan percobaan karena mudah dalam memverifikasikan hasilnya. Kenyataan di lapangan terkadang kita tidak menjumpai kasus yang memiliki formula matematis dalam menghitungnya misalnya tanda tangan, kita tidak dapat membuat formula matematis suatu tanda tangan.

    Buat suatu input = [1 2 3 4 5 6 7 8 9 10]; dan output = [1 4 9 16 25 36 49 64 81 100]; yang merupakan pangkat dari input. Untuk membuat JST dengan katakanlah dua hidden layer dengan masing-masing layer memiliki 30 neuron. Banyak istilah asing ya .. emang bikin pusing, neuron itu merupakan analogi yang dalam hal ini fungsi alih yang fungsinya meneruskan sinyal atau sebaliknya mematikan sinyal. Saatnya meramu JST, misal kita butuh neuron input sebanyak data masukan, 10 buah dan keluaran 10 buah.


Sengaja nih saya gunakan image, biar Anda belajar dengan mengetik langsung (tidak copy – paste). Baris pertama bermaksud mendefinisikan matriks masukan, dilanjutkan dengan keluarannya. Karena keluaran (diistilahkan dengan target) didefinisikan maka JST yang kita buat masuk kategori Supervised Learning (pembelajaran terpandu). Baris ketiga bermaksud membuat suatu jaringan syaraf tiruan dengan dua buah hidden layer, masing-masing 30 neurons dan input dengan 10 neurons. Sebenarnya parameternya ada banyak (lihat baris keempat), goal, epoch, dan lain-lain. Sebaiknya lihat help pada matlab dengan mengetik help newff. Di akhir script, JST yang kita buat akan melakukan proses learning.


Perhatikan gambar di atas, tampak dua buah hidden layer. Apakah hasilnya akurat? Tentu saja tidak, saya dan siswa-siswa saya terkadang berkali-kali meramu JST sehingga dihasilkan hasil yang optimal. Untuk mengujinya, lakukan perintah “sim”.


Lihat simulasi yang terakhir, ngaco kan? Masak 3 kwadrat = 61? Tambahkan jumlah Neuron di lapis tersembunyi (Hidden Layer). Menurut riset di jurnal-jurnal, hidden layer yang optimal itu satu saja, perlu diingat, makin banyak hidden layer, proses menjadi sangat lambat dan terkadang komputer Anda tidak sanggup memprosesnya sehingga muncul pesan “Out of Memory “. Coba ramu lagi, Cao ..


Rahmadya Trias Handayanto

Update: 26 Nov 2015

Ada yg bertanya jumlah hidden yang terbaik, apa patokannya. Referensi yg jelas-jelas mengatakan bahwa jumlah hidden optimal satu saja cukup adalah karangan Laurent Fausett judulnya: Fundamental of Neural Network: Architecture, Algorithms, and Applications, hal 299.
one hidden layer

Sementara kalo mau tau alasan detilnya mengapa harus ada hidden layer, baca bukunya Hagan (Neural network Design). Katanya untuk mengatasi problem logika XOR yang bikin JST sempat mengalami masa suram krn ga bisa menyelesaikannya.


Iklan

86 thoughts on “Hidden Layer Pada Jaringan Syaraf Tiruan”

    1. kalo memisahkan dua kelas yang terpisah secara garis lurus prinsipnya ga perlu hidden layer. tetapi jika tidak bisa dilakukan dengan garis lurus mau tidak mau harus menambah hidden layer. hidden layer secara logika fungsinya menambah instruksi logika. misalnya logika xor jika dibentuk pemisah dengan sebuah garis lurus kan tidak bisa (ini yg menyebabkan riset jst terhenti tahun 60-an) maka diperlukan satu tahap lagi and/or untuk menambah satu garis pemisah lagi.

  1. sudah saya coba Pak, listing code diatas dengan menggunakan Matlab 2013, tapi malah keluar tulisan seperti ini
    >> input = [1 2 3 4 5 6 7 8 9 10];
    >> output = [1 4 9 16 25 36 49 64 81 100];
    >> net=newff(input,output,[10 30 30]);
    Attempt to execute SCRIPT newff as a function:
    C:\Users\MATERIAL\Documents\MATLAB\newff.m

    >> net.trainParam.goal=0.001;
    >> net=train(net,input,output);
    Undefined function ‘train’ for input arguments of type ‘struct’.

    apa yang salah Pak? mohon sekali pencerahannya..
    thx a lot n best regards

    1. saya copas script anda, jalan kok di matlab saya (R2008b). mungkin matlabnya barangkali.

      >> input = [1 2 3 4 5 6 7 8 9 10];
      >> output = [1 4 9 16 25 36 49 64 81 100];
      >> net=newff(input,output,[10 30 30]);
      >> net.trainParam.goal=0.001;
      >> net=train(net,input,output);

      trus keluar jendela training seperti biasa ..

      1. sudah sya coba lagi di matlab 2012, ternyata bisa Pak… trimakasih bxk..

        Pak, paragraf kedua dari bawah bapak berkata :
        “Perhatikan gambar di atas, tampak dua buah hidden layer. Apakah hasilnya akurat? Tentu saja tidak, saya dan siswa-siswa saya terkadang berkali-kali meramu JST sehingga dihasilkan hasil yang optimal.”

        tapi kalau saya hitung hiden layernya ada kok ada 4 pak?

        lalu dengan melakukan pengujian menggunakan “sim” darimana kita bisa tahu kalau hasilnya akurat atau tidak? untuk contoh soal diatas kan gampang, fungsi kuadrat, jadi kita bisa tahu kalau tidak akurat,,, kalau nanti sudah menggunakan permasalahan yang jauh lebih rumit dari fungsi kuadrat bagaimana kita bisa tahu itu akurat atau tidak Pak?

        thank you very much and best regards

  2. asslammualaikum pak, mau tanya mengenai JST..
    saya kebetulan sedang mengerjakan tugas akhir berkaitan dengan jst. menggunakan 3 buah neuron input, 5 neuron hidden layer, dan 5 neuron output layer. saat dilakukan pembelajaran grafik sudah konvergen. akan tetapi ketika dilakukan identifikasi, hasilnya jauh dr harapan, selalu menghasilkan nilai yang tak sesuai target. dari 18 macam target, hanya 3 yang tepat. kira-kira setau bapak letak kesalahannya ada dimana ya?
    sebelumnya terima kasih banyak

    1. 3 input menghasilkan 5 output sepertinya sulit kalau datanya kurang bagus. coba matlab 2007 siapa tahu bagus .. soalnya pernah saya coba matlab 2007 lebih baik dari 2008 hasilnya

      1. kebetulan saya tidak menggunakan matlab pak.. ngedevelop sendiri programnya untuk tugas akhir..
        data yang bagus itu seperti apa ya pak?
        terimakasih

    1. Nntool lebih mudah, hasilnya sepertinya sama. Terkadang permintaan dosen untuk membuat training dengan gui sendiri, mau tidak mau menggunakan fungsi command window

    1. Coba jalankan instruksi di bawah ini (cek lagi simbol petik ketika di command window)
      :> Epoch tampak dengan perintah betitik (50 kali iterasi/epoch)
      :> matriks bobot hidden dan output serta bias (iw, lw dan bias b)
      :> kalo sigmoid backpropagation biasanya dengan sigmoid karena jika diturunkan hasilnya sederhana (-1)

      >> p = [-2:0.1:2]
      >> t = 1+sin(pi*p/4)
      >> plot(p, t)
      >> sample = newff([-2 2], [2 1], {‘logsig’, ‘purelin’})
      >> sample.iw{1,1}
      >> sample.lw{2,1}
      >> sample.b{1,1}
      >> sample.b{2,1}
      >> y = sim(sample,p)
      >> plot(p,t,p,y,’o’)
      >> sample.trainParam.epochs = 50;
      >> sample = train(sample,p,t)
      >> sample.iw{1,1}
      >> sample.lw{2,1}
      >> sample.b{1,1}
      >> sample.b{2,1}
      >> y1 = sim(sample,p)
      >> plot(p,t,p,y1,’o’)

    1. penjelasan gampangnya, misal kita ingin misahin jenis kelamin cowok apa cewek dengan variabel/ciri tertentu, neuron itu fungsi memisahkan jika ada sinyal cewek masuk maka diperkuat jika cewek kita label 1. sementara jika ada sinyal bercirikan cowok diperlemah krn kita label 0. kalo cirinya banyak dan kelamin lebih dari 2 (di thailand kabarnya ada 7), maka butuh lebih dari satu neuron dan hidden layer (non linear, garisnya belak belok)

  3. Pak, mohon bantuannya.. saya ingin analisis dgn Backpropagation neural network dengan input node=6, output node=6, hidden node=12.. aq run script aq tapi selalu muncul error tentang output size.. kesalahan nya ada dimana y pak?

    p=[I1 I2 I3 I4 I5 I6];
    t=[T1 T2 T3 T4 T5 T6];

    net=newff(p,t,[6,12,6],{‘logsig’ ‘logsig’},’trainlm’);
    net.trainParam.show = 50;
    net.trainParam.lr = 0.05;
    net.trainParam.epochs =1e+6;
    net.trainParam.goal = 1e-3;
    net1=train(net,p,t);

      1. satu hidden layer kok pak,, jumlah node di hidden layernya 12..
        kok aq run error y Pak?
        6 node input dan 6 node output..
        Help me, please.. terima kasih

        >> p=[I1 I2 I3 I4 I5 I6];
        t=[T1 T2 T3 T4 T5 T6];

        net=newff(p,t,[6,12,6],{‘logsig’ ‘logsig’},’trainlm’);
        net.trainParam.show = 50;
        net.trainParam.lr = 0.05;
        net.trainParam.epochs =1e+6;
        net.trainParam.goal = 1e-3;
        net1=train(net,p,t);
        net=newff(p,t,[6,12,6],{‘logsig’ ‘logsig’},’trainlm’);
        |
        Error: The input character is not valid in MATLAB statements or
        expressions.

  4. pak saya kan sedang TA tentang JST kohonen pak, bisa minta bantuan manual nya untuk membangun arsitekturnya ?? variabel yang saya gunakan 4 variabel pak. Terimakasih

  5. bagaimana menentukan jumlah hidden layer, apakah ada ketentuan yang optimum dalam menentukan hidden layer agar mendapatkan presentase yang optimal.

  6. terima kasih pak. saya mau tanya lagi, dalam JST ada output layer. kalau saya punya 2 kelas, apakah outputnya harus 2 atau bisa cukup satu saja.

  7. kalau untuk jumlah neuron hidden ada referensinya gak pak berapa jumlah neuron terbaik. apakah tergantung jumlah input neuronnya, terus dilakukan sesuai dg optimasi.

  8. Pak saya mau tanya kan kalo pakai nntool bisa d lihat nilai bias di training nah kalo klo pakai command window gimana caranya?
    Trus kalo pakai nntool cara buat nambahin hidden layer nya gmn?

    1. nntool hidden layer hanya satu tetapi jumlah neuron dapat diubah. nah command window lebih lengkap dengan pilihan berapa jumlah hidden layernya (hasil riset kebanyakan menunjukan > satu hidden tidak berpengaruh signifikan terhadap kinerja JST). tiap versi sepertinya berbeda format command window untuk JST, ikuti saja dengan mengetik di command window > help newff (atau liat help)

    1. sudah ada yang melakukan riset (lihat JST: faucett), hidden layer satu saja sudah mencukupi. hidden layer muncul dulu untuk menyelesaikan problem XOR yang jika tanpa hidden layer tidak bisa dikerjakan. biasanya makin banyak klasifikasi, butuh neuron yang banyak di hidden.

      1. Terikamaksih atas jawabnnya sangat membantu. saya kan menggunakan traincgb kenapa hasil dari outputnya itu tidak liniear? apakah kalau menggunakan JST memang hasil outputnya tidak liniear?

      2. JST memang untuk kasus-kasus nonlinear. kalau misal memisahkan dua kelas tidak berupa garis lurus, bisa meliuk-liuk. maksudnya tidak linear kayak itu apa bagaimana? (output tidak linear?)

  9. assalamualaikum pak, saya sedang malakukan tugas akhir dengan judul Jaringan Syaraf Tiruan untuk prediksi jumlah produksi dengan algoritma bckpropogation. disini saya menggunakan x1,x2, x3, dan x4. kemuadian saya mempunyai data sebanyak 10 buah. saya sudah membagi data menjadi dua yaitu data pelatihan dan pengujian , data tersebut juga sudah saya normalisasikan. saya menggunakan 5 input, 2 hidden, dan 1 output. yang ingin saya tanyakan bagaimana cara menentukan neuron pada hidden layer, momentum, learing rate, maximal epoch, dan toleransi error? mohon bantuannya pak. terima kasih

  10. assalamualaikum pak, saya ingin tanya, sebenarnya bagaimana cara menentukan jumlah iterasi (epoch) yang akan digunakan? hanya kita tebak-tebak saja atau ada cara perhitungannya? terimakasih

  11. Selamat sore pak, saya mahasiswi dari Institut Teknologi Del ingin menanyakan bagaimana cara menentukan jumlah hidden layer, target error dan learning rate untuk prediksi nilai akhir mahasiswa dengan 15 inputan pak ? dan apa kegunaan dari ketiganya pak ? terimakasih pak

    1. Hidden layer berdasatkan buku yg optimal satu.target error utk stop condition, learning rate utk kecepatan training (lambat akurat atau cepat tapi kadang miss)

  12. Selamat siang pak. Saya mau bertanya, perbedaannya antara Feed forward Neural Network dan Backpropagation Neural Network apa ya pak? Lalu untuk akurasi lebih besar mana antara Feed forward dengan Backpropagation? Lalu program di halaman ini termasuk jenis backpropagation atau feed forward ? Terima kasih pak.

    1. ga bisa dibandingkan. feedforward itu jenis network sementara backpropagation itu jenis learning. mungkin feedforward bisa dibandingkan dengan cascade-feedforward atau dengan LVQ, RBF, dll

  13. Malam Pak.
    Saya mau tanya soal ini :
    net = newff(minmax(data_latih),[100 100 1],{‘tansig’,’tansig’,’purelin’},’traingdx’);

    saya udah baca blog bpk.

    Apakah benar arti yang saya buat ini :

    Untuk pelatihan, dirancang sebuah jaringan syaraf tiruan terdiri dari 100 neuron pada lapisan tersembunyi dan 1 neuron pada lapisan output. Fungsi aktivasi yang digunakan adalah fungsi aktivasi tansig untuk lapisan input dan fungsi aktivasi purelin untuk lapisan output serta traindx untuk fungsi pelatihan jaringan.

    Terima kasih sebelumnya pak.

    YuYu

      1. berarti benar ya pak dari syntax ini : net = newff(minmax(data_latih),[100 100 1], artinya :
        terdapat 100 nueron pada input layer dan 100 neuron pada hidden layer dan 1 neuron pada output layer
        makasih atas penjelasannya pak

  14. assalammualaikum, mas rahmadya
    saya ada permasalahan dalam menghitung jarak antara data referensi dengan data kueri. dimana data kueri bisa berubah-rubah matriknya . Ini formulanya
    jarak = jarak + sqrt(ZRef{j,1:8}) – ZQuery({j,1:8}).^2;

    dimana ZRef = 36×9 tapi data yang diambil hanya 1:8 saja, sementara ZQuery= 3×8.
    Pesan kesalahannya pada saat di running adalah : Cell contents reference from a non-cell array object.

    Solusinya gimana ya mas untuk pemencahan masalah saya ini
    makasih sebelumnya

    wassalam
    dolly indra

  15. Pak, saya mencoba pakai Backpropagation JST untuk klasifikasi citra. Pada saat pelatihan saya deklarasikan 4 kelas target yaitu “1”,”2″,”3″,”4″. Tapi kenapa ketika pengujian, muncul kelas “0” pada hasil klasifikasi salah satu data ? Padahal saya ga deklarasikan kelas tsb. Bagaimana solusinya ya pak ? Terima kasih banyak pak.

      1. Sepertinya beda pak. Jadi kalo saya itu sedang membuat klasifikasi citra berdasarkan ciri teksturnya. Jadi masukan kedalam jstnya berupa ciri tekstur masing2 citra. 1 citra diambil 10 ciri tekstur. Jumlah dataset ada 90. Jadi pas pelatihan dibuat matriks 10×90. Pas pelatihan normal aja, semua citra masuk kedalam kelas target yang udh ditentukan sebelumnya. Hanya pas pengujian saja, ada beberapa data yg masuk kedalam kelas yg tidak ditentukan, jadi misalnya saya punya 4 kelas terdiri dari kelas 1 2 3 4 tapi ternyata ada data yg masuk ke kelas 0 bahkan ada data yg masuk ke kelas -1. Padahal saya ga pernah deklarasikan kelas 0 dan -1 sebelumnya. 😦 Bagaimana ya pak kira-kira solusinya.? Mohon sarannya pak. Makasih pak Rahmadya

      2. selama dia JST biasa, backpropagation, bisanya ada error. makanya data training harus bagus, sebisa mungkin mewakili seluruh kelas yang dispesifikasikan. misalnya data persetujuan kredit, tentu harus ada yang ditolak dan diterima ketika training. selain itu, rentangnya juga melingkupi kemungkinan yang ada. karena kalau jangkauannya tidak seluruh kemungkinan, saat testing, hasilnya kurang akurat bahkan bisa minus. biasanya backpropagation tidak pas dengan kelas di target, kecuali tipe LVQ. Oiya, beberapa literatur menyarankan untuk menormalisasi data (euclidean) ketika training dan testing.

  16. Pak, bapak bilang diatas bahwa “Kenyataan di lapangan terkadang kita tidak menjumpai kasus yang memiliki formula matematis dalam menghitungnya misalnya tanda tangan, kita tidak dapat membuat formula matematis suatu tanda tangan”, berarti kalau kita mau klasifikasi tanda tangan, matriks targetnya diisi apa ya pak ? Karna kan kita ga tau nilai pasti untuk tanda tangan. Makasih pak

      1. Oh berarti angka targetnya hanya formalitas ya pak ? Jadi kalo saya kasih targetnya 100 ga masalah ya ?

  17. Pak Rahmadya, sebenarnya apa ada paper/buku yg bilang untuk jenis fungsi aktivasi yg terbaik digunakan untuk backpropagation NN itu apa ? Soalnya saya baca di internet dan termasuk di forum Mathworks, katanya fungsi aktivasi terbaik di Hidden Layer adalah Tansig sementara di Output Layer adalah Purelin. Kalo memang benar begitu, saya butuh bukti sumber berupa buku/paper untuk dicantumkan di tugas akhir saya. Terima kasih pak.

    1. pertanyaan yang menarik. harusnya ada buku yang menyebutkan itu. biasanya saya buka help matlab dan di bawah ada buku referensi / jurnal yang dijadikan rujukan matlab.Sebenarnya dari logika saja, hidden layer itu mengarahkan input ke output dengan besar tertentu, aktif atau tidak aktif, jadi yg paling masuk akal adalah tansig (dari nol hingga jenuh satu), walaupun ada yg lain yg kurang akurat yaitu tangga (nol atau satu). sementara output harus sesuai dengan angka real, yang logis adalah purelin krn kalo tansig nanti mentok di satu.

      1. Pak, yg range 0-1 itu logsig, kalo tansig -1 sampai 1, hehe.. Sebenarnya di dokumentasi resmi Matlabnya juga bilang kalo yang paling sering dipakai itu logsig di hidden layer, tapi di forum tanya jawab Mathworks banyak juga yg bilang tansig. Hmm tapi logika yg bapak berikan benar juga ya hehe. Terima kasih pak jawabannya

    1. Makin banyak training lama. Biasanya sih lebih dari jlh input. Saat ini banyak yg riset optimasinya dgn GA

  18. Pak, saya mau tanya, maksudnya “gradient” di algoritma backpropagation itu apa ya pak ? Karena yg saya baca untuk algoritma backpropagation itu memakai prinsip gradient descent. Saya masih kurang paham di teorinya. Makasih pak.

    1. kemiringan. maksudnya garis antara hasil saat ini dengan sebelumnya, jika sudah tidak miring dan cenderung datar/horizontal berarti tidak ada perubahan signifikan dan sistem menganggap training sudah cukup.

      1. Oh begitu pak. Kalau gradient nya makin besar, itu semakin miring atau semakin datar ya pak ? Soalnya setelah training di matlab ada keterangan nilai gradient yg didapat seberapa besar

  19. malam pak, saya mau tanya, program saya outputnya ada 21×20312, tapi kok hasilnya dari baris pertama hinggah akhir sama semua ? makasih sebelumnya pak

  20. Assalammualaikm pak, saya kebetulan sedang mengerjakan skripsi tentang deteksi wajah menggunakan extreme learning machine (ELM), tetapi deteksinya masih belum pas, saya dpt saran dr dosen pembimbing untuk menambahkan hidden layer, tp saya belum tau hidden layer penempatan nya dimana, dan apakah hidden layer dpt ditambahkan pada metode extreme learning machine (ELM) itu sendiri? mohon penjelasannya ya pak, terimakasih

    1. kalau extreme learning masuk kategori JST ya bisa aja. hidden layer fungsinya menambah akurasi ketika memisahkan antar satu kelas dgn kelas yg lain

  21. Pak Rahmadya, saya mau bertanya tentang output layer di neural network. Kalau misalnya saya mau melakukan klasifikasi ke dalam 4 kelas, apa saya harus mempunyai 4 neuron output ? Atau bisa pakai 1 neuron output aja ?

      1. Maksudnya gimana ya pak ? Soalnya saya baca di beberapa buku kalo untuk klasifikasi lebih dari 2 kelas, output neuronnya harus lebih dari 1. Kalo neuron output cuma 1 berarti jadinya regresi. Tapinya contoh koding di internet untuk klasifikasi pada make 1 output neuron saja. Heheu bingung saya jadinya. Terima kasih pak atas responnya

      2. masukan/input itu variabel. variabel bisa banyak, output hasil olah neuron, biasa banyak tapi biasanya satu. kelas itu keluaran hasil olahnya. contoh 2 kelas: lulus, tidak lulus, 3 penjurusan: ipa, ips, bahasa, dll. jadi istilahnya sepakat dulu

  22. Pak Rahmadya, bapak bilang istilah yang benar pada jaringan syaraf tiruan (pakai “y”), tapi saya cari di internet, istilah yang sesuai EYD itu “saraf” bukan “syaraf”. Jadi istilah indonesia yang baku untuk ANN apa ya pak? Soalnya untuk keperluan penulisan skripsi harus pakai bahasa indonesia yg baku hehe. Terima kasih pak.

    1. iya, ikuti saja EYD. soalnya dulu waktu sma kalau nulis saraf ditegur guru biologi, katanya itu artinya otaknya kongslet

  23. selamat pagi pak..
    saya mau tanya..bagaimna menentukan atau langkah2 penyelesaian untuk mencari nilai bobot awal lapisan input ke lapisan tersembunyi??

    1. bobot awal ya dengan random number. berikutnya di-adjust lewat mekanisme backpropagation (perambatan balik) pada training, hingga diperoleh output sama dengan target pembelajaran.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s