Jaringan neural: Fungsi aktivasi

Anda melihat di latihan sebelumnya bahwa hanya menambahkan lapisan tersembunyi ke jaringan tidak cukup untuk mewakili nonlinearitas. Operasi linier yang dilakukan pada operasi linear masih bersifat linier.

Bagaimana Anda bisa mengonfigurasi jaringan neural untuk mempelajari hubungan nonlinier antar nilai? Kita perlu suatu cara untuk menyisipkan operasi matematika ke dalam model.

Jika tampak familier, itu karena kita benar-benar telah menerapkan operasi matematika nonlinear ke output dari model linear sebelumnya pada materi ini. Di Regresi Logistik kami mengadaptasikan model regresi linear untuk menghasilkan nilai kontinu dari 0 ke 1 (mewakili probabilitas) dengan meneruskan output model melalui fungsi sigmoid.

Kita dapat menerapkan prinsip yang sama pada jaringan neural kita. Mari kita tinjau kembali model dari Latihan 2 sebelumnya, tetapi kali ini, sebelum yang menghasilkan nilai setiap {i>node<i}, pertama-tama kita akan menerapkan fungsi sigmoid:

Coba ikuti perhitungan dari setiap node dengan mengklik tombol &gt;| (di sebelah kanan tombol putar). Meninjau operasi matematika yang dilakukan untuk menghitung setiap nilai node di panel Penghitungan di bawah grafik. Perhatikan, setiap {i>output<i} setiap {i>node<i} sekarang merupakan transformasi sigmoid dari kombinasi {i>node<i} di lapisan sebelumnya, dan nilai {i>outputnya<i} adalah semuanya dipersempit di antara 0 dan 1.

Di sini, sigmoid berfungsi sebagai fungsi aktivasi untuk jaringan neural, transformasi nonlinear dari nilai output neuron sebelum nilai diteruskan sebagai input ke kalkulasi berikutnya jaringan neural.

Setelah kita menambahkan fungsi aktivasi, penambahan lapisan memberikan dampak yang lebih besar. Menumpuk nonlinearitas pada nonlinearitas memungkinkan kita membuat model hubungan antara input dan output yang diprediksi. Singkatnya, setiap lapisan secara efektif mempelajari fungsi yang lebih kompleks dan tingkat tinggi terhadap input. Jika Anda ingin mengembangkan lebih banyak intuisi tentang cara kerjanya, lihat postingan blog yang luar biasa Chris Olah.

Fungsi aktivasi umum

Tiga fungsi matematika yang umum digunakan sebagai fungsi aktivasi adalah sigmoid, tanh, dan ULT.

Fungsi sigmoid (dibahas di atas) melakukan transformasi berikut pada input $x$, yang menghasilkan nilai output antara 0 dan 1:

\[F(x)=\frac{1} {1+e^{-x}}\]

Berikut adalah plot dari fungsi ini:

Gambar 4. Plot fungsi sigmoid: kurva berbentuk s yang
      tanpa gejala mendekati sumbu x ketika x mendekati negatif
      tak terhingga dan 1 saat x mendekati tak terhingga.
Gambar 4. Plot fungsi sigmoid.

Fungsi tanh (kependekan dari "hyperbolic tangen") mengubah input $x$ menjadi hasilkan nilai {i>output<i} antara –1 dan 1:

\[F(x)=tanh(x)\]

Berikut adalah plot dari fungsi ini:

Gambar 5. Plot fungsi tanh: sedikit
      kurva bentuk s yang lebih curam daripada fungsi sigmoid, yang secara asimtot
      mendekati –1 saat x mendekati tak terhingga negatif dan 1 saat x mendekati
      tak terhingga.
Gambar 5. Plot fungsi tanh.

Fungsi aktivasi unit linear terarah (atau ULT, untuk short) mengubah output menggunakan algoritma berikut:

  • Jika nilai input $x$ kurang dari 0, tampilkan 0.
  • Jika nilai input $x$ lebih besar atau sama dengan 0, tampilkan nilai input.

ULT dapat direpresentasikan secara matematis menggunakan fungsi max() :

$$F(x)=max(0,x)$$

Berikut adalah plot dari fungsi ini:

Gambar 6. Plot fungsi ULT: garis horizontal
      di sepanjang sumbu x dari tak terhingga negatif hingga 0, yang menjadi garis diagonal
      naik dan ke kanan dengan kemiringan 1 (y=x) dari 0 hingga tak terhingga.
Gambar 6. Plot fungsi ULT.

ULT sering kali berfungsi sedikit lebih baik sebagai fungsi aktivasi daripada berfungsi seperti sigmoid atau tanh, karena tidak terlalu rentan terhadap masalah gradien hilang selama pelatihan jaringan neural. ULT juga jauh lebih mudah komputasi daripada fungsi-fungsi ini.

Fungsi aktivasi lainnya

Dalam praktiknya, fungsi matematika apa pun dapat berfungsi sebagai fungsi aktivasi. Misalkan \(\sigma\) mewakili fungsi aktivasi. Nilai {i>node<i} dalam jaringan diberikan oleh rumus:

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

Keras memberikan dukungan siap pakai untuk banyak fungsi aktivasi. Meskipun demikian, sebaiknya Anda tetap memulai dengan ULT.

Ringkasan

Video berikut memberikan rangkuman semua hal yang telah Anda pelajari sejauh ini bagaimana jaringan neural dibuat:

Sekarang model kita memiliki semua komponen standar yang biasanya digunakan oleh rata-rata ketika merujuk ke jaringan neural:

  • Sekumpulan node, analog dengan neuron, yang tersusun dalam lapisan.
  • Satu set bobot yang mewakili koneksi antara setiap jaringan neural {i>layer<i} dan lapisan di bawahnya. Lapisan di bawahnya mungkin lapisan jaringan neural lain, atau jenis lapisan lain.
  • Serangkaian bias, satu untuk setiap node.
  • Fungsi aktivasi yang mengubah output setiap node di lapisan. Lapisan yang berbeda mungkin memiliki fungsi aktivasi yang berbeda.

Peringatan: jaringan neural tidak selalu lebih baik daripada persilangan fitur, tetapi jaringan neural menawarkan alternatif fleksibel yang berfungsi dengan baik dalam banyak kasus.