3 poin oleh GN⁺ 2023-08-27 | 1 komentar | Bagikan ke WhatsApp
  • Artikel ini menjelaskan konsep penting bernama diferensiasi otomatis menggunakan Python, yang merupakan komponen inti dalam pelatihan jaringan saraf.
  • Penulis adalah seorang engineer machine learning yang menggunakan library seperti Tensorflow dan Pytorch, serta bertujuan menulis kode paling sederhana untuk melakukan diferensiasi otomatis.
  • Penulis memulai dengan menulis kode Python yang menjumlahkan dua variabel x dan y, lalu menetapkan hasilnya ke variabel z. Namun, z tidak melacak variabel yang digunakan, sehingga tidak mungkin memperbarui nilai z secara otomatis ketika nilai x atau y berubah.
  • Untuk mengatasi hal ini, penulis memperkenalkan kelas Tensor yang memungkinkan komputasi simbolik terhadap variabel. Dalam kelas ini, operasi penjumlahan didefinisikan ulang.
  • Kelas Tensor kemudian ditingkatkan lebih lanjut dengan menggunakan pohon biner. Setiap tensor dapat berisi dua tensor lain beserta operasi yang membuatnya. Ini dilakukan dengan memperkenalkan tuple Children.
  • Penulis menambahkan metode forward ke kelas Tensor untuk menjalankan graph komputasi dan menghitung nilai aktual tensor.
  • Penulis memperkenalkan diferensiasi otomatis ke dalam graph komputasi dengan menambahkan turunan untuk operasi dasar yang didukung oleh kelas Tensor. Pemanggilan rekursif terhadap fungsi grad menelusuri graph komputasi dan menguraikan fungsi kompleks menjadi kombinasi fungsi-fungsi sederhana.
  • Kelas Tensor diperluas agar dapat menangani rumus yang lebih kompleks dengan menambahkan operasi tambahan seperti pengurangan, pembagian, eksponen, dan negasi.
  • Penulis menunjukkan penggunaan kelas Tensor dengan membuat rumus kompleks dan menurunkannya.
  • Sebagai penutup, penulis mengusulkan sejumlah perbaikan dan optimasi yang mungkin untuk kelas Tensor, seperti menambahkan operasi untuk array berukuran arbitrer, menghentikan traversal pada node yang tidak bergantung pada tensor x, serta menyiapkan cache untuk menghindari pengulangan komputasi.
  • Artikel ini bertujuan membantu pembaca memahami bagaimana diferensiasi otomatis dilakukan untuk optimasi dan pelatihan jaringan saraf.

1 komentar

 
GN⁺ 2023-08-27
Opini Hacker News
  • Para pembaca menghargai demonstrasi kode yang ringkas dan elegan yang membantu memahami konsep yang kompleks.
  • Penjelasan tentang diferensiasi otomatis di artikel utama tampak terlalu disederhanakan karena hanya membahas kasus saat graf berbentuk pohon, dan tidak mencakup directed acyclic graph yang lebih kompleks.
  • Sebagian pembaca menganggap diferensiasi otomatis sangat menarik dan menulis pengantar mereka sendiri tentang konsep ini.
  • Seorang pembaca membagikan implementasi autodiff versinya sendiri dalam 26 baris Python.
  • Teknik yang dibahas dinilai mirip dengan yang digunakan dalam "pelacakan dependensi" serta sistem Knowledge Based Engineering untuk mengurangi komputasi dalam model 3D parametrik berskala besar.
  • Video Andrej Karpathy tentang membangun mesin autograd direkomendasikan karena dinilai memberikan banyak wawasan.
  • Sebagian pembaca mengusulkan bahwa diferensiasi otomatis tidak selalu harus membangun graf operasi, melainkan dapat menghitung nilai terkait secara langsung saat itu juga.
  • Ada usulan bahwa menjelaskan autodiff sebagai aturan rantai numerik terasa lebih jelas.
  • Muncul pertanyaan tentang alasan penyebutan kelas tersebut sebagai tensor.
  • Kesederhanaan implementasinya mengejutkan sebagian pembaca, sehingga konsep ini terasa lebih mudah didekati daripada yang awalnya mereka bayangkan.
  • Implementasi tersebut dibandingkan dengan free monad di Haskell, yang menunjukkan adanya keterkaitan lintas bahasa dalam artikel.