Ulasan Buku: Reinforcement Learning with Python

Ini adalah dua buku dengan judul yang sama atau mirip. Judul utamanya sama, yaitu Reinforcement Learning with Python.  Tapi yang satu mempunyai subjudul A Complete Beginner’s Guide, sedangkan satunya Master Reinforcement Learning in Python without Being an Expert. Anda bisa temukan bukunya di Amazon di link ini dan ini.

Terus terang kedua buku ini saya beli karena “iseng”. Pertama karena harganya relatif murah (masing-masing harganya USD $12 dan $13), dan kedua karena tipis (masing-masing tebalnya kurang dari 100 halaman), sehingga harapan saya bisa jadi bacaan ringan sambil nambah ilmu praktis RL di Python.

Ceritanya waktu itu sedang belanja buku yang agak banyak di Amazon, dari uang yang dikembalikan (refund) karena saya batalkan keikutsertaan saya di Data Analyst Nanodegree (DAND), program nanodegreenya Udacity, yang saya ulas di sini. Lumayan, dari biaya USD $499 untuk term 1 DAND yang berhasil saya “hemat” (ada total 2 term untuk program DAND, term 2 biayanya malah USD $699), saya bisa membeli buku-buku di bawah dan setelah ditambah bea masuk dan ongkir yang mahal banget (hampir semahal bukunya, karena saya pilih jasa kurir yang tercepat), maka bahkan masih ada uang sisa.

stats-machine-learning-reinforcement-learning-python-books
Buku-buku di atas harganya nggak sampai setengah dari harga kursus term 1 DAND

Sebenarnya untuk topik RL, buku klasiknya adalah Reinforcement Learning: An Introduction oleh Sutton dan Barto (link Amazon). Tapi buku ini udah “agak kuno”, terbitan tahun 1998, dan saat ini Sutton sedang mengerjakan edisi keduanya yang kabarnya akan terbit tahun ini. Anda bahkan bisa membaca draft buku barunya secara gratis di sini. Oleh karena itu saya tunda membeli buku Sutton ini sampai edisi keduanya terbit. Demikian juga dengan buku klasik untuk Panda, Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython oleh Wes McKinney yang edisi keduanya juga akan terbit tahun ini (link Amazon).

Kembali (lagi) ke buku RL with Python. Saya baru saja selesai membaca keduanya, dan berikut adalah ulasan saya.

 

Buku 1: Reinforcement with Python

reinforcement-learning-with-python-a-complete-beginners-guideSaya memang tidak berharap banyak dari (kedua) buku ini, tapi minimal harapan saya buku ini bisa mengenalkan pada aspek praktis dari RL, misalnya pengenalan tools-tools-nya. Sepertinya ini sejalan dengan tujuan buku ini, dan memang banyak kode yang yang diberikan di buku ini.

Buku ini sebenarnya membahas banyak hal, misalnya MDP (Markov Decision Processes), Bellman equation, Policy Gradient, Q-value, Monte Carlo, dynamic programming, Temporal Difference, Q-learning, dan Deep Q Network. Ini adalah topik-topik yang kekinian banget di RL.

Masalahnya adalah tidak ada satupun dari topik ini yang dijelaskan secara utuh.

Cara penulis menjelaskan suatu topik kira-kira adalah seperti ini: “There is a technique for blah blah called blah blah. The formula is like this, and it can be implemented in Python like this:“. Lalu dilanjutkan dengan 3-10 halaman kode Python dengan sedikit sekali penjelasan tentang apa yang dilakukan program itu.

Kalaupun ada penjelasan tentang suatu topik, maka penjelasannya sangat minimal, hanya 1-2 paragraf. Dijamin Anda tidak akan bisa mengerti topik tersebut dari apa yang dijelaskannya, kecuali tentunya Anda sudah mengerti sebelumnya.

Contohnya, berikut adalah foto dari bab tentang Q-Learning.

RL-Python-Q-learning

Sama persis dengan apa yang saya bilang di atas bukan?

Untuk topik-topik yang lain, polanya sama persis seperti itu.

Lebih parah lagi, kalaupun diberikan formula untuk suatu metoda, formulanya juga kacau banget penulisannya. Penggunaan subscript/superscript sering salah (fatal banget kan), notasinya sering salah, kalaupun tidak salahpun, tidak dijelaskan juga artinya apa (misalnya, k itu apa).

Contohnya ini, salah satu formula pertama yang dijelaskan di buku ini yaitu tentang discounted future return:

rl-python-discounted-rewards
Formula discounted future return yang ada di buku

Awalnya saya terus terang tidak mengerti formula di atas harusnya bagaimana, tapi setelah melihat di sumber yang lain, formulanya adalah seperti ini:

RL-david-silver-discounted-rewards
Formula discounted reward dari kursusnya David Silver (link di sini)

Setelah melihat formulanya yang benar, baru terlihat betapa kacaunya formula yang ada di buku. Silakan Anda lihat sendiri. Superscript/subscript-nya kacau balau sehingga formulanya sama sekali salah. Parah banget kan!

Keburukan penulisan formula seperti di atas terjadi di hampir setiap formula di buku ini. Berikut contoh-contoh yang lain.

RL-python-q-star
Formula Q-star. yIrI?
RL-python-maximum-value
Formula V-star, tidak terlalu parah, tapi perhatikan penjelasan tentang simbol Y yang tidak ada di formula (adanya y kecil). Itupun seharusnya bukan Y, tapi secara konvensi γ (gamma)

Dengan tidak adanya penjelasan tentang suatu teori, dan formula yang kacau balau, maka harapan untuk mengerti tinggal dari membaca kode.

Sayangnya kualitas kode di buku ini juga sangat memprihatinkan. Pertama, kita sama sekali tidak dituntun kode ini tujuannya untuk apa. Kedua, kode-kodenya memakai librari canggih seperti TensorFlow dan OpenAI Gym yang kita tidak diajarkan cara pemakaiannya (terus terang saya membeli buku ini dengan harapan akan dikenalkan cara memakai librari-librari ini!). Ketiga, format dari kode di buku ini kacau sekali, baris-barisnya ter-wrap parah sehingga sangat sulit dibaca. Anda bisa lihat di foto berikut.

Python-RL-kode

Membaca kode kacau seperti di atas akan membikin mata (dan otak) keriting! Jadi lupakan bisa mendapat sesuatu dari membaca kodenya.

 

Buku 2: Reinforcement Learning with Python

RL-with-PythonSelesai membaca buku pertama (dan tidak mendapat ilmu apa-apa), saya lanjutkan membaca buku kedua, dan betapa terkejutnya saya.

Ternyata isinya sama! 😀

Baru saya sadar, memang judulnya ternyata sama ya, oops.. 😳

Tapi kalau mau fair, kedua buku ini secara fisik jelas-jelas beda, dijual secara terpisah, ISBN-nya juga beda, jadi siapa sangka ternyata isinya sama.

Secara kualitas, buku kedua ini sedikit lebih baik dari buku pertama. Kalau saya bilang sih, buku pertama seperti copas (copy paste) amburadul dari buku kedua ini.

Kata-kata penjelasannya sangat mirip, formula, dan kode-kodenya sama. Cuma di buku kedua ini, semuanya terlihat lebih rapih. Penjelasannya lebih panjang dan runut. Formulanya tidak terlalu kacau penulisannya (walaupun masih tidak semulus kalau memakai Latex). Tapi kode-kodenya sama persis. Mungkin mereka copas dari tempat yang sama..

Topik yang dibahas di buku ini lebih sedikit dari di buku pertama. Mungkin ada 3-4 topik yang ada di buku pertama tapi tidak ada di sini, misalnya tentang Bellman equation dan Q-value. Dan bagus juga begitu, karena buku ini memang lebih sedikit halamannya, cuma 47 halaman. Walaupun dengan ukuran yang lebih lebar sih. Dengan topik yang lebih sedikit, maka pembahasan untuk suatu topik jadi lebih panjang.

Tapi cacat di buku ini kurang lebih masih sama dengan buku pertama, yaitu penjelasannya terlalu minim untuk kita bisa mengerti sesuatu (atau apapun), formulanya tidak rapih, dan kode programnya sangat kurang penjelasannya sehingga kita tidak akan bisa mengerti apapun dari situ.

 

Kesimpulan

Sebelum saya tuliskan kesimpulan dari saya, mari kita baca bab kesimpulan dari kedua buku.

RL-python-conclusion-1

RL-python-conclusion-2

Saya hanya bisa ngakak membaca kedua kesimpulan yang “ambisius” di atas. 😀

Kalau kesimpulan saya sendiri, jangan buang-buang uang dan waktu untuk kedua buku ini. Untuk kualitas seperti ini, saya yakin ada banyak artikel daring yang lebih baik.

Tips

Bagi Anda yang ingin mulai mempelajari RL, menurut saya sumber yang paling baik adalah kursus dari David Silver (UCL, DeepMind). Anda bisa buka tautan ini untuk mendapatkan tautan ke videonya. Saya saat ini masih mengikuti kursus ini, nanti akan saya buatkan ulasannya kalau saya sudah selesai mengikuti.

 

Iklan

Satu respons untuk “Ulasan Buku: Reinforcement Learning with Python

Add yours

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 )

Foto Google+

You are commenting using your Google+ 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 )

Connecting to %s

Blog di WordPress.com.

Atas ↑

%d blogger menyukai ini: