Lewati ke konten utama

Fungsi Tanh: Mengapa Output Berpusat Nol Penting untuk Jaringan Saraf

Panduan ini menjelaskan intuisi matematis di balik fungsi tanh, perbandingannya dengan sigmoid dan ReLU, keunggulan serta komprominya, dan cara mengimplementasikannya secara efektif dalam deep learning.
· 8 mnt Baca

Jelajahi bersama AI

Apakah jaringan saraf Anda mentok di akurasi 60% dan Anda tak tahu penyebabnya?

Anda sudah mengutak-atik laju pembelajaran, menambah lebih banyak layer, dan mencoba berbagai ukuran batch. Tidak ada yang berhasil. Loss pelatihan hampir tidak bergerak setelah beberapa epoch pertama. Anda mulai meragukan seluruh setup Anda. Mungkin datanya buruk, mungkin arsitekturnya salah. Namun yang sebenarnya terjadi adalah fungsi aktivasi Anda mendorong semua output ke satu arah, sehingga jaringan mustahil mempelajari pola yang seimbang.

Tanh (tangen hiperbolik) mengatasinya dengan memusatkan output di sekitar nol, berkisar dari -1 hingga 1. Ini membantu model Anda berkonvergensi lebih cepat dan menjaga aliran gradien tetap simetris selama backpropagation.

Dalam artikel ini, Anda akan mempelajari apa itu tanh, bagaimana cara kerjanya secara matematis, kapan menggunakannya dibanding ReLU atau sigmoid, dan cara mengimplementasikannya di PyTorch. Jika Anda baru di deep learning, lihat panduan mendalam kami tentang fungsi aktivasi dalam jaringan saraf.

Apa Itu Fungsi Tanh?

Fungsi tanh memetakan input apa pun ke nilai antara -1 dan 1.

Ini adalah kurva halus berbentuk S yang didefinisikan oleh rumus berikut:

tanh function equation

Tanh function illustrated

Fungsi Tanh. Gambar oleh Penulis

Fungsinya berperilaku dapat diprediksi pada nilai ekstrem. Ketika Anda memberinya bilangan positif besar, outputnya mendekati 1. Untuk bilangan negatif besar, Anda akan mendapatkan nilai yang mendekati -1.

Di sekitar nol, tanh hampir bersifat linear. Ini berarti gradien mengalir dengan mulus selama backpropagation alih-alih tertekan atau terdistorsi.

Sebagai perbandingan, sigmoid hanya menghasilkan nilai positif antara 0 dan 1. Tanh menghasilkan bilangan positif dan negatif. Ini menjaga aktivasi tetap seimbang di sekitar nol, yang membantu optimisasi berkonvergensi lebih cepat di banyak arsitektur jaringan.

Anda akan sering melihat tanh digunakan pada jaringan rekuren dan di mana pun aktivasi terpusat meningkatkan stabilitas.

Sifat Matematis dan Komputasional

Tanh memiliki beberapa sifat matematis yang harus diketahui setiap calon insinyur machine learning.

Halus dan terdiferensiasi

Tanh terdiferensiasi tak hingga dan halus di seluruh domain.

Ini penting untuk optimisasi berbasis gradien. Anda tidak akan menemui sudut tajam seperti pada ReLU, di mana turunan melonjak dari 0 ke 1 seketika. Gradien yang halus berarti pembaruan bobot yang lebih dapat diprediksi selama backpropagation.

Output berpusat nol

Sigmoid menghasilkan nilai antara 0 dan 1. Tanh menghasilkan nilai antara -1 dan 1.

Ketika aktivasi tetap seimbang di sekitar nol, jaringan Anda berkonvergensi lebih cepat. Pembaruan bobot tidak bias ke satu arah, dan gradien mengalir lebih merata melalui layer.

Terbatas dan stabil

Rentang output tanh tetap antara -1 dan 1.

Batasan ini mencegah ketidakstabilan numerik. Jika Anda bekerja dengan jaringan yang tidak tahan terhadap aktivasi yang meledak, tanh menjaga semuanya tetap terkendali tanpa clipping atau penanganan khusus.

Perilaku pada nilai ekstrem

Untuk nilai positif besar, tanh mendekati 1. Untuk nilai negatif besar, ia mendekati -1.

Simetri ini menjaga aktivasi tetap terpusat dan mencegah pergeseran bias yang Anda lihat pada fungsi yang tidak berpusat nol seperti sigmoid. Pada jaringan yang dalam, sifat tersebut membantu pembaruan bobot menyebar lebih merata melalui layer — jaringan Anda tidak mengembangkan preferensi terhadap nilai positif atau negatif.

Turunan tanh

Turunan tanh adalah:

derivative of tanh function

Tanh derivative graphed

Turunan Tanh. Gambar oleh Penulis.

Artinya, gradien kuat di dekat nol tetapi mengecil ke tepi saat fungsi jenuh. Ketika tanh(x) mendekati 1 atau -1, turunannya mendekati nol, yang memperlambat pembelajaran untuk neuron-neuron tersebut.

Dalam praktiknya, Anda mendapatkan pembelajaran yang stabil untuk input moderat namun berpotensi mengalami gradien menghilang ketika input terlalu besar atau terlalu kecil. Inilah mengapa jaringan yang dalam sering lebih memilih ReLU — ia tidak jenuh untuk nilai positif.

Tanh vs. Fungsi Lain

Tanh bukan satu-satunya fungsi aktivasi, dan memahami perbandingannya dengan alternatif membantu Anda memilih yang tepat untuk jaringan Anda.

Sigmoid adalah kerabat dekat tanh. Faktanya, tanh hanyalah versi sigmoid yang diskalakan dan digeser:

Equation for Tanh as scaled and shifted sigmoid

Di mana σ(x) adalah fungsi sigmoid.

Image 3 - Sigmoid function

Fungsi Sigmoid. Gambar oleh Penulis

Perbedaan utamanya adalah Sigmoid menghasilkan nilai antara 0 dan 1, sedangkan tanh menghasilkan nilai antara -1 dan 1. Pusat nol membuat tanh berkonvergensi lebih cepat dalam banyak kasus.

ReLU mengambil pendekatan yang berbeda. Ia menghasilkan nol untuk input negatif dan meneruskan input positif tanpa perubahan. Ini menciptakan sparsitas, artinya banyak neuron tetap tidak aktif, yang mempercepat pelatihan. Namun ReLU mematikan gradien untuk nilai negatif. Tanh tidak memiliki masalah ini karena mempertahankan gradien non-nol untuk input negatif. Ia jenuh pada kedua ekstrem, yang dapat memperlambat pembelajaran ketika input terlalu besar atau terlalu kecil.

Image 4 - ReLU function

Fungsi ReLU. Gambar oleh Penulis

Softsign terlihat mirip dengan tanh. Keduanya kurva halus berbentuk S. Namun tanh berkonvergensi lebih cepat di dekat nol karena kemiringannya lebih curam. Ini berarti gradien lebih kuat pada tahap awal pelatihan, yang dapat membantu jaringan Anda belajar lebih cepat sebelum input mulai memasuki zona kejenuhan.

Image 5 - Softsign function

Fungsi Softsign. Gambar oleh Penulis

Saya baru menyinggung permukaan dengan fungsi-fungsi aktivasi ini. Jika Anda tertarik pada alternatif Tanh dan ReLU, bacalah panduan mendalam kamis tentang Softmax dan Softplus.

Keunggulan Tanh

Jika Anda mempertimbangkan apakah Tanh layak dicoba, berikut beberapa keunggulan yang bisa dipertimbangkan dan mungkin pada akhirnya memberi Anda model yang lebih akurat.

Output berpusat nol

Tanh menghasilkan output yang seimbang di sekitar nol.

Ini mengurangi bias dalam pembaruan bobot. Ketika aktivasi Anda berpusat di sekitar nol alih-alih condong positif seperti sigmoid, gradien tidak menarik bobot ke satu arah lebih dari yang lain. Hasilnya konvergensi lebih cepat dan pelatihan lebih stabil.

Gradien lebih kuat di dekat nol

Tanh memiliki kemiringan yang curam di dekat nol.

Ini berarti gradien yang lebih kuat selama backpropagation dibandingkan sigmoid. Jaringan Anda belajar lebih cepat pada tahap awal pelatihan ketika sebagian besar aktivasi berada di dekat nol. Di sisi lain, kemiringan sigmoid yang lebih landai membuat pembaruan awal tersebut lebih lemah dan lebih lambat.

Aliran gradien yang halus

Turunan tanh kontinu di mana-mana.

Tidak ada lompatan mendadak atau diskontinuitas. Ini memberi Anda optimisasi yang lebih stabil dibandingkan fungsi potongan seperti ReLU, di mana turunan berubah tiba-tiba dari 0 ke 1 di nol. Gradien yang halus berarti pembaruan bobot yang dapat diprediksi sepanjang pelatihan.

Ideal untuk jaringan rekuren

RNN, LSTM, dan GRU mengandalkan tanh pada layer tersembunyi mereka.

Arsitektur ini perlu mempertahankan keadaan internal yang halus di lintas langkah waktu. Tanh memungkinkan sinyal positif dan negatif mengalir, sekaligus menjaga nilai tetap terbatas. Keseimbangan ini mencegah aktivasi meledak dan membantu jaringan mengingat informasi dalam rangkaian yang lebih panjang.

Keterbatasan dan Kompromi

Sebelum masuk ke kode, saya akan membahas beberapa area di mana Tanh mungkin kurang optimal.

Gradien menghilang

Ketika input bergerak jauh dari nol, gradien mendekati nol.

Ini terjadi karena tanh jenuh di -1 dan 1. Setelah aktivasi Anda mencapai ekstrem ini, turunannya menjadi sangat kecil, dan pembaruan bobot melambat drastis. Pada jaringan yang sangat dalam, masalah ini bertambah karena gradien menyusut saat mereka melakukan backpropagation melalui setiap layer hingga pembelajaran praktis berhenti.

Pelatihan lebih lambat

Tanh tidak menciptakan sparsitas.

Setiap neuron tetap aktif pada tingkat tertentu, tidak seperti ReLU yang menghasilkan nol untuk input negatif. Ini berarti jaringan Anda memproses lebih banyak informasi per forward pass, yang terdengar bagus tetapi sebenarnya memperlambat proses. Sparsitas ReLU membuat pelatihan lebih cepat karena neuron yang tidak aktif sepenuhnya melewatkan komputasi.

Optimasi perangkat keras yang lebih sedikit

Kerangka kerja modern dan akselerator perangkat keras lebih memihak ReLU.

Operasi tanh melibatkan eksponensial, yang lebih mahal untuk dihitung dibanding operasi sederhana max(0, x) pada ReLU. Kernel GPU dan chip AI khusus dioptimalkan untuk ReLU karena telah menjadi default di sebagian besar arsitektur. Ini berarti tanh akan berjalan lebih lambat pada perangkat keras yang sama, bahkan dengan arsitektur jaringan yang identik.

Tanh di PyTorch

PyTorch secara native menyediakan implementasi fungsi Tanh, sehingga Anda tidak perlu menulisnya dari nol.

Berikut cara menggunakannya sebagai fungsi aktivasi dalam jaringan saraf sederhana:

import torch
import torch.nn as nn

model = nn.Sequential(
    nn.Linear(10, 20),
    nn.Tanh(),
    nn.Linear(20, 1)
)

x = torch.randn(5, 10)
output = model(x)
print(output)
tensor([[ 0.0910],
               [-0.0994],
               [-0.0583],  
               [-0.2177],
               [-0.2546]], grad_fn=<AddmmBackward0>)

Anda juga dapat menerapkan tanh langsung ke tensor:

x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
output = torch.tanh(x)
print(output)
tensor([-0.9640, -0.7616, 0.0000, 0.7616, 0.9640])

Perhatikan bagaimana outputnya simetris di sekitar nol — input negatif menghasilkan output negatif, dan fungsi memperlakukan kedua sisi secara setara. Distribusi yang seimbang ini menjaga jaringan Anda tetap stabil selama pelatihan dan mencegah pergeseran bias yang akan Anda lihat pada fungsi seperti sigmoid.

Kapan Tanh Digunakan

Pilih fungsi Tanh ketika model Anda diuntungkan oleh aktivasi yang terpusat atau saat bekerja dengan jaringan yang lebih kecil atau rekuren.

Ini sangat efektif ketika:

  • Anda melatih RNN atau LSTM yang membutuhkan aktivasi seimbang. Arsitektur ini mengandalkan Tanh untuk mempertahankan keadaan internal yang halus di lintas langkah waktu sambil memungkinkan sinyal positif dan negatif mengalir.
  • Anda memodelkan target kontinu atau halus. Aliran gradien tanh yang halus bekerja baik ketika output Anda perlu kontinu dan terbatas, seperti memprediksi nilai yang secara alami berada dalam suatu rentang.
  • Anda menginginkan gradien yang stabil dan terdiferensiasi tetapi tidak membutuhkan sparsitas ReLU. Jika jaringan Anda tidak cukup dalam untuk memanfaatkan kecepatan ReLU, Tanh memberi perilaku pelatihan yang lebih dapat diprediksi.

Sebaliknya, hindari Tanh pada arsitektur yang sangat dalam di mana gradien menghilang menjadi perhatian. ReLU atau GELU lebih cocok karena tidak jenuh untuk nilai positif.

Kesimpulan

Singkatnya, fungsi Tanh berada di antara kesederhanaan Sigmoid dan kecepatan ReLU.

Ia halus, simetris, dan masih relevan dalam deep learning, terutama ketika aktivasi seimbang adalah hal terpenting. Anda tidak akan menemukannya di setiap arsitektur modern, tetapi fungsinya jelas ketika Anda membutuhkan output terpusat dan aliran gradien yang stabil.

Jika Anda ragu apakah akan menggunakan Tanh atau tidak, ikuti panduan berikut:

  • Gunakan ReLU untuk jaringan besar dan dalam. Ini lebih cepat, bekerja baik dengan perangkat keras modern, dan menghindari gradien menghilang untuk nilai positif.
  • Gunakan Tanh ketika Anda memerlukan stabilitas, simetri, dan aliran gradien yang lebih halus. Ini berarti jaringan rekuren, arsitektur yang lebih kecil, dan kasus di mana aktivasi berpusat nol meningkatkan konvergensi.

Jalankan eksperimen, bandingkan hasil, dan biarkan data Anda yang menentukan fungsi aktivasi mana yang paling cocok untuk tugas Anda. Ingin belajar lebih jauh? Daftarlah di track Machine Learning Scientist in Python kami untuk memahami seluk-beluk supervised, unsupervised, dan deep learning.

Dario Radečić

Penulis

Dario Radečić

Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.
Dario Radečić

Penulis

Dario Radečić

Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.

FAQs

Apa itu fungsi aktivasi tanh?

Tanh (tangen hiperbolik) adalah fungsi aktivasi yang memetakan input apa pun ke nilai antara -1 dan 1. Didefinisikan sebagai tanh(x) = (e^x - e^-x) / (e^x + e^-x) dan membentuk kurva berbentuk S mirip sigmoid. Perbedaan utamanya adalah tanh berpusat nol, artinya menghasilkan nilai positif dan negatif, yang membantu jaringan saraf berkonvergensi lebih cepat selama pelatihan.

Kapan saya harus menggunakan tanh daripada ReLU?

Gunakan tanh saat Anda membangun jaringan rekuren (RNN, LSTM, GRU) yang membutuhkan aktivasi seimbang dan berpusat nol. Ini juga lebih baik untuk jaringan yang lebih kecil ketika Anda memerlukan gradien yang halus dan terdiferensiasi tanpa sparsitas yang diberikan ReLU. Hindari tanh pada jaringan feedforward yang sangat dalam, di mana kecepatan ReLU dan ketahanannya terhadap gradien menghilang menjadikannya pilihan yang lebih baik.

Apa keunggulan utama tanh dibanding sigmoid?

Output tanh yang berpusat nol (berkisar dari -1 hingga 1) mencegah pergeseran bias yang terjadi pada rentang 0 hingga 1 sigmoid. Ini menghasilkan pembaruan bobot yang lebih seimbang dan konvergensi lebih cepat. Tanh juga memiliki kemiringan yang lebih curam di dekat nol, yang berarti gradien lebih kuat selama backpropagation dibandingkan sigmoid.

Mengapa tanh menyebabkan gradien menghilang?

Tanh jenuh pada -1 dan 1, artinya turunannya mendekati nol ketika input jauh dari nol. Pada jaringan yang dalam, gradien kecil ini saling mengalikan selama backpropagation, menyusut secara eksponensial di setiap layer hingga pada akhirnya menghilang. Ini menyulitkan layer awal untuk belajar, itulah sebabnya ReLU lebih disukai untuk arsitektur yang sangat dalam.

Bagaimana cara mengimplementasikan tanh di PyTorch?

PyTorch menyediakan tanh melalui nn.Tanh() sebagai layer atau torch.tanh() sebagai fungsi. Anda dapat menambahkannya ke model atau menerapkannya langsung ke tensor. Keduanya bekerja sama dan menyediakan perhitungan gradien otomatis untuk backpropagation.

Topik

Terkait

blogs

Spaghetti Plot dan Jalur Badai

blogs

Tutorial Korelasi di R

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026