Smashing Podcast Episode 33 Dengan Charlie Gerard: Apa itu Machine Learning?

Diterbitkan: 2022-03-10
Ringkasan cepat Dalam episode ini, kita berbicara tentang Pembelajaran Mesin. Jenis tugas apa yang dapat kita lakukan dalam konteks pengembangan web? Drew McLellan berbicara dengan pakar Charlie Gerard untuk mencari tahu.

Dalam episode ini, kita berbicara tentang Machine Learning. Jenis tugas apa yang dapat kita lakukan dalam konteks pengembangan web? Saya berbicara dengan ahli Charlie Gerard untuk mencari tahu.

Tampilkan Catatan

  • Pembelajaran Mesin Praktis dalam JavaScript: TensorFlow.js untuk Pengembang Web
  • Charlie di Twitter
  • Situs pribadi Charlie

Update mingguan

  • Pengantar Praktis Untuk Injeksi Ketergantungan
    ditulis oleh Jamie Corkhill
  • Menuju Web Bebas Iklan: Mendiversifikasi Ekonomi Online
    ditulis oleh Frederick O'Brien
  • Haruskah Web Mengekspos Kemampuan Perangkat Keras?
    ditulis oleh Noam Rosenthal
  • Cara Menghasilkan Lebih Banyak Uang Dengan Menjual Aplikasi Shopify Pada Tahun 2021
    ditulis oleh Suzanne Scacca
  • Memulai Dengan Paket GetX Dalam Aplikasi Flutter
    ditulis oleh Kelvin Omereshone

Salinan

Foto Charlie Gerard Drew McLellan: Dia adalah pengembang front-end senior di Netlify, pakar Pengembang Google dalam teknologi web dan pembicara teknologi Mozilla. Di waktu luangnya, ia menjelajahi bidang interaksi komputer manusia, dan membangun prototipe interaktif menggunakan perangkat keras, pembelajaran mesin, dan pengkodean kreatif. Dia secara teratur berbicara di konferensi dan menulis posting blog untuk berbagi hal-hal yang dia pelajari. Dan yang terbaru, adalah penulis buku, Pembelajaran Mesin Praktis dalam JavaScript untuk Apress.

Drew: Jadi kita tahu dia ahli front-end, tetapi apakah dia pernah melarikan diri dari penjara menggunakan file logam yang dia rajut dari mimpi. Teman-temanku yang hebat, selamat datang, Charlie Gerard. Hai Charlie. Apa kabar?

Charlie Gerard: Saya hebat.

Drew: Saya ingin berbicara dengan Anda hari ini tentang pembelajaran mesin, yang mungkin tampak seperti topik yang sedikit aneh untuk podcast yang berfokus terutama pada jenis akhir browser dari pengembangan web. Saya cenderung menganggap pembelajaran mesin sebagai sesuatu yang terjadi di pusat data raksasa atau laboratorium dengan orang-orang berjas putih. Ini pasti sedikit semacam kata kunci hari ini. Apa yang sebenarnya kita maksudkan ketika kita mengatakan pembelajaran mesin?

Charlie: Jadi secara umum, definisi standarnya adalah memberikan kemampuan bagi komputer untuk menghasilkan prediksi tanpa diberi tahu apa yang harus dilakukan. Mudah-mudahan, ini akan masuk akal ketika kita terus membicarakannya, tapi itulah jenis definisi percakapan umum. Anda tidak benar-benar memberi tahu algoritme atau model untuk pergi dan mencari hal-hal tertentu. Mereka belajar melalui data yang Anda berikan dan kemudian dapat menghasilkan prediksi.

Drew: Jadi daripada harus membuat kode khusus untuk keadaan tertentu, Anda membuat kasus umum di mana perangkat lunak dapat belajar bagaimana melakukan hal itu sendiri?

Charlie: Ya, persis.

Drew: Kedengarannya hampir sedikit menyeramkan. Ini semacam mendekati sisi kecerdasan buatan itu. Apakah Anda perlu menjadi kutu buku matematika hardcore atau ilmuwan data untuk melakukan ini? Atau adakah hal-hal di luar sana seperti algoritme mapan dan hal-hal yang dapat Anda panggil untuk memulai?

Charlie: Ya. Jadi untungnya Anda tidak perlu menjadi kutu buku matematika hardcore atau ilmuwan data. Kalau tidak, saya pasti tidak akan membicarakan ini. Tetapi ada algoritme yang telah ditemukan dan alat yang sudah tersedia yang memungkinkan Anda menggunakan algoritme ini tanpa harus menulis semuanya sendiri dari awal. Jadi jika kita menggunakan ekosistem front-end sebagai perbandingan, Anda dapat menggunakan API web, seperti navigator untuk mendapatkan media pengguna ketika Anda ingin memiliki akses ke webcam atau mikrofon.

Charlie: Dan Anda tidak perlu tahu bagaimana API itu sebenarnya diimplementasikan di bawah tenda. Yang penting adalah Anda tahu untuk apa API ini dan bagaimana menggunakannya, jika Anda mau. Kemudian nanti Anda dapat pergi dan melihat ke dalam kode sumber dari browser favorit Anda untuk mengetahui cara kerjanya, tapi itu benar-benar tidak berguna di tempat pertama. Dan itu bisa berguna jika Anda ingin menulis algoritma Anda sendiri nanti. Tapi sejujurnya, sangat tidak mungkin Anda ingin melakukan ini.

Drew: Oke. Jadi ini seperti cara Anda menulis CSS untuk memposisikan elemen pada halaman. Anda tidak peduli bagaimana browser melakukannya. Anda cukup menulis beberapa CSS dan browser akan menanganinya.

Charlie: Ya. Ketika Anda memulai, sebagian besar seperti itu.

Drew: Itu bagus. Itu lebih seperti tingkat ilmu data saya.

Charlie: Aku juga.

Drew: Jadi, masalah apa yang bisa Anda gunakan untuk pembelajaran mesin? Hal-hal seperti apa yang baik untuknya?

Charlie: Itu tergantung apa yang ingin Anda lakukan di tempat pertama, karena ketika Anda ingin membangun hal tertentu, saya sarankan untuk terlebih dahulu memikirkan jenis masalah yang ingin Anda pelajari yang kemudian akan membantu Anda memilih algoritma yang Anda inginkan. dapat digunakan untuk memperbaiki atau menemukan solusi untuk masalah Anda. Jadi secara umum, saya akan mulai dengan memikirkan jenis masalah yang saya coba selesaikan, dan ada tiga masalah utama. Saya pikir mungkin ada sedikit lagi, tetapi secara umum, untuk apa yang telah saya lakukan dan apa yang telah saya baca, ada tiga hal utama yang disebutkan.

Charlie: Jika Anda ingin saya membahas ini, ada pembelajaran yang diawasi, pembelajaran tanpa pengawasan, dan pembelajaran penguatan. Anda juga memiliki begitu banyak yang diawasi, tetapi sejujurnya, saya tidak begitu tahu banyak tentang itu karena saya dapat membangun proyek saya dengan tiga yang pertama.

Drew: Diawasi, tanpa pengawasan, dan penguatan, katamu?

Charlie: Ya, pembelajaran penguatan.

Drew: Oke. Jadi apa itu pembelajaran terawasi? Bisakah Anda memberi kami contoh apa artinya itu?

Charlie: Pembelajaran yang diawasi, adalah saat kumpulan data Anda terbuat dari fitur dan label dan Anda memasukkannya ke dalam algoritme. Jadi jika kita mengambil contoh yang mudah-mudahan kebanyakan orang akan dapat berhubungan dengan, jika Anda memiliki rumah dan Anda ingin menjualnya, dan Anda ingin mencari tahu berapa harga Anda akan menjual rumah Anda atau Anda mobil, sebenarnya, omong-omong, itu akan menjadi hal yang sama. Dan Anda akan menggunakan kumpulan data rumah di lingkungan yang sama atau tipe rumah yang sama dan mengetahui harganya di pasar, Anda akan dapat menggunakan fitur rumah Anda sendiri; jadi berapa banyak kamar dan apakah itu memiliki taman dan di lingkungan mana itu? Dan hal-hal seperti itu.

Charlie: Ini adalah fitur dan label harganya, dan menggunakan semua kumpulan data rumah yang sudah ada di sekitar Anda, Anda dapat menggunakan algoritme pembelajaran mesin yang akan mempelajari korelasi antara fitur rumah Anda dan harga di pasar, untuk kemudian mendapatkan fitur rumah Anda dan dapat menghasilkan harga dari itu. Jadi yang paling penting adalah dalam pembelajaran terawasi, Anda memiliki banyak fitur dan label juga, sehingga Anda dapat benar-benar menarik korelasi antara keduanya.

Drew: Anda akan, Anda akan memberi makan model dengan kumpulan data yang luas tentang rumah dalam contoh ini, di mana Anda tahu harganya dan kemudian Anda tahu semua fitur tentang mereka. Katakanlah kamar tidur dan apa yang Anda miliki, seperti luas persegi, dan saya kira lokasi akan menjadi hal lain yang mungkin diperhitungkan?

Charlie: Ya. Jadi, salah satu masalah dengan pembelajaran mesin adalah Anda dapat memiliki banyak fitur dan beberapa di antaranya tidak akan seefisien yang lain juga. Jadi Anda bisa saja, misalnya, warna rumah Anda, mungkin sebenarnya tidak memiliki korelasi dengan harga, tetapi Anda dapat memberikan banyak fitur dan modelnya sendiri akan menemukan korelasi di antara keduanya. Anda kemudian dapat mengubah dataset Anda, jika Anda mau, dan menghapus warnanya, atau Anda menyadari bahwa ukuran taman tidak masalah atau hal-hal seperti itu.

Charlie: Jadi secara umum, bahkan jika Anda memasukkan kumpulan data ke model, Anda tidak akan memiliki prediksi yang sempurna untuk pertama kalinya. Biasanya Anda men-tweak beberapa hal yang berbeda dan Anda lihat. Anda agak men-tweaknya sampai mendapatkan prediksi yang menurut Anda cukup akurat.

Drew: Dan kemudian setelah model itu dibuat, atau katakanlah Anda membuatnya menggunakan data dari satu kota, dapatkah Anda mengambilnya dan memberinya makan… apakah Anda perlu memasukkannya data dari kota lain? Apakah Anda dapat mengambilnya dan menggunakannya di tempat lain setelah pelatihan selesai atau apakah itu khusus untuk kumpulan data itu atau bagaimana cara kerjanya?

Charlie: Saya pikir itu akan khusus untuk kumpulan data. Jadi itu berarti Anda dapat membuat kumpulan data lain dengan format yang sama, katakanlah. Jika Anda memiliki Spreadsheet Excel dengan kolom yang berbeda, Anda akan dapat mempertahankan label dan fitur yang sama, tetapi Anda harus menggantinya dengan nilai kota tersebut. Tetapi secara umum, itu berarti bahwa mengumpulkan kumpulan data dapat memakan banyak waktu juga, tetapi jika Anda sudah tahu apa yang Anda lakukan untuk kota Paris, misalnya, dan bahwa struktur kumpulan data Anda sama, tetapi Anda mengganti nilainya, ini sedikit lebih cepat dan Anda dapat membuat ulang modelnya.

Charlie: Anda tidak boleh menggunakan kembali model yang sama, jika data Anda berbeda karena harga rumah di Paris berbeda dengan kota kecil di Australia, misalnya. Jadi Anda tidak ingin memiliki data yang salah karena inti dari kumpulan data Anda pada awalnya tidak persis sama.

Drew: Kami berbicara banyak tentang model dengan pembelajaran mesin. Jadi modelnya seperti hasil akhir dari semua analisis kumpulan data. Dan itu kemudian digunakan untuk membuat prediksi selanjutnya. Itu modelnya ya?

Charlie: Ya, persis seperti itu. Ini adalah model sehingga agak mirip dengan fungsi yang akan Anda berikan masukan baru yang belum pernah dilihat sebelumnya, tetapi berdasarkan apa yang dipelajari pada langkah pelatihan. itu akan dapat menghasilkan prediksi.

Drew: Jadi pembelajaran yang terawasi, maka itu membuat model prediktif ini dari label pada fitur. Apa itu pembelajaran tanpa pengawasan?

Charlie: Jadi tanpa pengawasan adalah konsep yang sedikit sama, tetapi Anda menghapus labelnya. Jadi dalam hal ini, Anda dapat berpikir bahwa masalah kami menjual rumah tidak akan benar-benar menjadi masalah pembelajaran tanpa pengawasan, karena jika Anda hanya mengetahui fitur tentang rumah di sekitar Anda, tetapi Anda tidak memiliki label harga, Anda benar-benar tidak dapat memprediksi harga. Itu bahkan tidak akan tahu berapa harganya.

Charlie: Jadi tanpa pengawasan lebih ketika Anda memiliki satu set data dan Anda hanya memiliki fitur tentangnya. Anda dapat menghasilkan lebih banyak tren atau kelompok hal bersama-sama. Anda tidak akan menggunakan pembelajaran tanpa pengawasan jika Anda menginginkan hasil tertentu, jika Anda memiliki pertanyaan tertentu, seperti, "Berapa harganya?" Itu bukan penggunaan yang benar-benar baik dari tanpa pengawasan, tetapi lebih dari itu, jika Anda ingin mengelompokkan entitas bersama, bisa jadi orang atau hal-hal seperti itu.

Charlie: Jadi biasanya, kasus penggunaan untuk itu adalah rekomendasi seperti rekomendasi Amazon atau rekomendasi Spotify, seperti, "Orang-orang seperti Anda juga mendengarkan ini," dan itu lebih tentang di mana fitur-fiturnya dalam kasus ini adalah ... yah, mereka punya data tentang Anda, sehingga mereka tahu apa yang Anda dengarkan, negara mana yang biasanya Anda kunjungi, atau berapa kali sehari Anda mendengarkan sesuatu? Jadi dengan menggunakan fitur tentang orang ini, mereka kemudian dapat menempatkan Anda di kelompok yang sama atau jenis pendengar yang sama, atau jenis orang yang sama yang membeli barang tertentu di Amazon. Dan dengan menggunakan pembelajaran tanpa pengawasan semacam itu, mereka dapat mengetahui apa yang harus diiklankan kepada Anda atau apa yang direkomendasikan untuk Anda dengarkan berdasarkan orang-orang seperti Anda. Jadi masalahnya lebih seperti itu.

Drew: Oke, jadi ini semua jauh lebih masuk akal bagi saya sekarang sebagai pengembang web, karena penggunaan semacam ini yang telah kita bicarakan, harga dan rekomendasi rumah, serta penayangan iklan dan hal-hal lain, pada akhirnya, ini adalah segala macam hal yang harus kami tangani dan fitur yang mungkin ingin kami masukkan ke dalam situs atau produk, atau apa pun yang Anda miliki. Jadi kami memiliki, berbagai jenis pembelajaran berdasarkan materi pelajaran yang ingin kami prediksi. Apakah ada jenis aplikasi lain yang dapat kita gunakan juga? Apakah ada contoh bagus yang telah dibuat orang yang dapat menggunakan ini?

Charlie: Ya. Ada begitu banyak contoh. Itu sebabnya, ketika saya berbicara tentang memprediksi harga rumah, mungkin itu bukan sesuatu yang berhubungan dengan Anda. Mungkin tidak terlalu menarik, tapi sebenarnya masih banyak lagi yang bisa Anda lakukan. Ada contoh yang sangat bagus di sekitar. Saya pikir yang pertama saya lihat adalah seputar teks seni yang dihasilkan secara dinamis untuk gambar. Jadi tentu saja itu adalah sesuatu yang dapat Anda lakukan sendiri ketika Anda menambahkan gambar ke situs.

Charlie: Tapi bagaimana jika Anda memiliki situs yang benar-benar memiliki banyak gambar, dan alih-alih melakukannya secara manual, Anda dapat memasukkan setiap gambar ke algoritme pembelajaran mesin, dan itu akan menghasilkan teks seni tentang apa gambar itu, dan mungkin satu-satunya langkah manusia adalah memverifikasi bahwa ini benar, tetapi itu akan benar-benar memungkinkan Anda untuk memfokuskan waktu Anda untuk membangun aplikasi.

Charlie: Dan Anda masih akan membuat situs web Anda dapat diakses dengan memiliki teks seni untuk gambar, tetapi itu akan dihasilkan oleh mesin. Jadi itulah salah satu contoh yang saya lihat ketika saya memulai ini, tetapi Anda juga memiliki prototipe pemfilteran yang tidak aman untuk konten kerja. Dan saya berpikir bahwa ekstensi Chrome akan cukup bagus, Anda dapat memiliki ekstensi Chrome yang setiap kali Anda membuka halaman web, Anda hanya perlu memeriksa bahwa apa yang ada di halaman tersebut adalah jenis konten yang aman.

Charlie: Misalnya, jika Anda memiliki anak yang menggunakan laptop atau hal-hal seperti itu, Anda dapat menyembunyikan gambar atau mengganti gambar ini dengan panda, jika Anda mau atau semacamnya. Tapi itu adalah jenis aplikasi di mana Anda dapat menggunakan pembelajaran mesin untuk melakukan sesuatu secara otomatis untuk Anda sehingga Anda tidak perlu khawatir tentang tugas-tugas tertentu, atau Anda dapat menggunakan kekuatan otak Anda untuk melakukan hal-hal lain.

Charlie: Tapi kemudian ada yang lebih maju dengan contoh pengenalan gerakan, menggunakan webcam yang kemudian berkomunikasi dengan Amazon Alexa dan pengenalan suara dan semua itu. Jadi Anda benar-benar dapat menggabungkan banyak teknologi yang berbeda dengan suara dan webcam dan pembelajaran mesin hanya untuk pengenalan dan dapat berinteraksi dengan teknologi yang berbeda, tetapi dengan cara yang baru. Jadi itu benar-benar bisa sangat menyenangkan.

Drew: Itu cukup menarik, karena kami telah melihat semacam menganalisis model data seperti itu, dan sekarang kami berpikir untuk melihat konten gambar dan menganalisis konten gambar menggunakan pembelajaran mesin, yang cukup menarik. Saya rasa itulah jenis fitur yang dimiliki Facebook, jika seseorang memposting gambar yang menurut mereka mungkin berdarah atau menunjukkan cedera atau sesuatu, dan itu mengaburkannya, dan kemudian Anda hanya perlu mengklik untuk mengungkapkannya. Hal semacam itu, jelas, Facebook tidak dapat memiliki tim moderator yang melihat setiap gambar yang diunggah.

Charlie: Saya harap mereka tidak melakukannya.

Drew: Itu akan menjadi tugas yang tak ada habisnya.

Charlie: Itu juga bukan pekerjaan yang bagus.

Drew: Saya dulu bekerja di situs web iklan gratis tempat orang bisa memasang iklan. Dan ada banyak moderasi yang terlibat di dalamnya, bahkan saya, sebagai pengembang web, harus terlibat, hanya dengan melihat semua gambar ini dan berkata, "Ya, tidak, ya, tidak."

Charlie: Saya melakukan itu sedikit juga. Saya berharap pada waktu itu ada pembelajaran mesin, hanya alat utilitas kecil untuk melakukannya untuk saya, dan sekarang sudah ada. Jadi itu cukup keren.

Drew: Ya, itu sangat bagus. Dan itu cukup menarik kemudian memikirkan input langsung dari webcam dan mampu menganalisisnya secara real time, sehingga Anda dapat melakukan interaksi berbasis gerakan. Apakah itu…

Charlie: Ya, jadi pada intinya ini sebenarnya menggunakan lebih banyak klasifikasi gambar, karena webcam Anda, sebuah gambar adalah kumpulan piksel, tetapi kemudian saat Anda membuat gerakan tertentu, Anda dapat melatih model untuk mengenali bahwa tangan kanan Anda terangkat dan mungkin Anda akan mengontrol mouse seperti ini, atau akan melihat koordinat tangan Anda dan layar, dan Anda akan mengikuti mouse. Anda benar-benar dapat melakukan apa pun yang Anda inginkan. Anda mungkin bisa memiliki pengenalan warna.

Charlie: Anda dapat melakukan hal-hal yang sangat menyenangkan. Salah satu prototipe yang saya buat, yang pada titik tertentu saya menyerah, tetapi saya membangun sedikit… Saya ingin itu menjadi ekstensi Chrome, tetapi itu tidak berhasil. Saya membuat aplikasi desktop kecil dengan Electron. Juga dalam JavaScript di mana saya dapat menelusuri halaman web hanya dengan memiringkan kepala. Jadi itu akan mengenali bahwa ketika saya memiringkan kepala saya ke bawah, maka itu bergulir ke bawah, dan ketika saya naik, itu naik. Itu hanya eksperimen kecil semacam ini di mana saya berpikir, "Yah, jika saya bisa mengubahnya menjadi ekstensi Chrome, itu bisa berguna untuk beberapa orang."

Charlie: Bahkan jika Anda hanya makan di depan komputer Anda dan Anda sedang membaca berita dan saya tidak ingin keyboard saya kotor, maka saya hanya bisa memiringkan kepala saya, tetapi kemudian juga mudah-mudahan, untuk aksesibilitas, bisa benar-benar membantu orang menavigasi halaman web tertentu atau hal-hal seperti itu. Ada banyak alat yang tersedia dan ini tentang gagasan yang dapat Anda temukan dengan mengamati situasi di sekitar Anda, dan bagaimana Anda dapat memecahkan beberapa masalah ini dengan menggunakan pembelajaran mesin?

Drew: Untuk pembelajaran mesin, kita sering memikirkan bahasa, Python. Saya pikir di situlah banyak jenis perkembangan tampaknya terjadi lebih dulu. Tetapi sebagai pengembang web, kami jelas lebih nyaman dengan JavaScript secara umum. Apakah pembelajaran mesin adalah sesuatu yang secara realistis dapat kita harapkan untuk dilakukan. Maksud saya contoh kecil yang menyenangkan adalah satu hal, tetapi apakah itu benar-benar berguna untuk pekerjaan nyata dalam JavaScript?

Charlie: Maksud saya, saya pikir begitu, tetapi kemudian saya tahu bahwa sebagian besar hal yang saya lakukan adalah prototipe, tetapi saya pikir itu tergantung pada situasi tempat Anda bekerja. Ada beberapa cara untuk menerapkan pembelajaran mesin sebagai pengembang dalam pekerjaan Anda sehari-hari. Tetapi yang sangat saya sukai dari JavaScript adalah kenyataan bahwa jika Anda sudah menjadi pengembang front-end, Anda tidak perlu pergi dan mempelajari ekosistem baru atau seperangkat alat baru atau sintaks baru, bahasa baru. Anda sudah berada di lingkungan tempat Anda bekerja setiap hari.

Charlie: Biasanya ketika Anda mempelajari hal-hal semacam itu, Anda harus memulai dari waktu Anda sendiri, jika itu bukan pekerjaan Anda sehari-hari dan waktu semua orang sangat berharga dan Anda tidak memilikinya sebanyak itu. Jadi, jika Anda dapat menghilangkan beberapa penghalang dan tetap berada di ekosistem yang sama seperti yang Anda tahu, maka menurut saya itu cukup bagus, tetapi Anda juga dapat memulai… kekuatan JavaScript bagi saya adalah Anda dapat memulai dengan membuat prototipe kecil untuk meyakinkan orang bahwa mungkin ada ide yang perlu diselidiki, dan dengan dapat memutar sesuatu dengan cepat di JavaScript, Anda dapat memvalidasi bahwa ide Anda benar.

Charlie: Kemudian Anda bisa mendapatkan dukungan dari kepemimpinan untuk menghabiskan lebih banyak waktu atau lebih banyak uang, atau Anda kemudian dapat memberikannya kepada pengembang Python, jika Anda ingin membangunnya dengan Python. Tetapi bagi saya, kemampuan untuk memvalidasi ide dengan cepat ini sangat penting. Terutama, mungkin jika Anda bekerja untuk sebuah startup dan semuanya berjalan cepat dan Anda dapat menunjukkan bahwa ada sesuatu yang layak untuk dilihat, saya pikir itu cukup penting.

Charlie: Dan juga fakta bahwa benar-benar ada ekosistem alat yang besar dan semakin banyak kerangka kerja dan aplikasi pembelajaran mesin. Dalam JavaScript, tidak hanya di halaman web kita dapat menambahkan pembelajaran mesin. Seperti yang saya katakan sebelumnya, Anda dapat membuat ekstensi Chrome dan aplikasi desktop dengan Electron, dan aplikasi seluler dengan React Native, serta perangkat keras dan IoT dengan kerangka kerja seperti Johnny-Five.

Charlie: Jadi dengan bahasa yang sudah Anda ketahui, Anda sebenarnya memiliki akses ke ekosistem besar dari berbagai platform yang dapat Anda gunakan untuk menjalankan eksperimen yang sama. Dan saya pikir, bagi saya, itu sangat menakjubkan. Dan di situlah saya melihat kekuatan sebenarnya dari melakukan pembelajaran mesin dalam JavaScript. Dan seiring semakin baik, mungkin Anda benar-benar dapat mengintegrasikannya, dalam aplikasi yang kami buat setiap hari.

Drew: JavaScript ada di mana-mana, bukan?

Charlie: Ya.

Drew: Baik atau buruk, itu ada di mana-mana. Siapa yang menyangka? Ini kedengarannya bagus tetapi juga terdengar seperti banyak pekerjaan. Dan saya berpikir tentang kumpulan data dan hal-hal lainnya, bagaimana Anda memulai melakukan tugas-tugas semacam ini?

Charlie: Saat ini, setidaknya dengan TensorFlow.JS, ada tiga hal yang dapat Anda lakukan dengan framework. Dan katakanlah yang paling sederhana adalah mengimpor model pra-terlatih yang ada. Jadi ada beberapa dari mereka, ada model berbeda yang telah dilatih dengan kumpulan data yang berbeda, dan saya akan merekomendasikan untuk memulai dengan ini karena Anda, Anda dapat mempelajari dasar-dasar yang sebenarnya tentang bagaimana sebenarnya menggunakan kerangka kerja itu sendiri, dan apa yang dapat Anda lakukan dengan model-model ini.

Charlie: Jadi Anda memiliki model pengenalan gambar tertentu yang telah dilatih dengan gambar yang berbeda. Beberapa dari mereka lebih baik untuk pengenalan objek. Beberapa di antaranya lebih baik untuk dikenali orang, dan dengan memahami model apa yang akan digunakan, kami kemudian dapat dengan bebas membangun apa pun yang Anda inginkan dalam batasan model itu.

Charlie: Tapi menurut saya, itu cara yang baik untuk memulai. Saya masih menggunakan model pra-terlatih untuk banyak eksperimen saya karena itu juga, mengapa Anda menemukan kembali roda jika sudah ada di sana? Mari kita gunakan saja alat-alat yang diberikan. Kemudian ketika Anda ingin melangkah, mungkin selangkah lebih maju, Anda bisa melakukan apa yang disebut transfer learning, ketika Anda melatih kembali sebuah model penting. Jadi Anda masih menggunakan salah satu model yang telah dilatih sebelumnya, tetapi kemudian Anda diberi kesempatan untuk melatihnya kembali secara langsung dengan sampel Anda sendiri.

Charlie: Misalnya, jika Anda ingin menggunakan klasifikasi gambar di mana Anda memiliki orang yang berbeda, maka Anda mungkin ingin melakukan klasifikasi gerakan. Jika model Anda, misalnya, dilatih dengan orang-orang yang selalu memiliki, saya tidak tahu, tangan kanan mereka ke atas atau semacamnya, tetapi untuk aplikasi Anda, Anda menginginkan tangan kiri, Anda dapat melatih kembali model itu dengan sampel kiri Anda tangan, dan kemudian Anda akan memiliki model yang sudah cukup terlatih untuk mengenali tangan kanan, tetapi kemudian Anda akan menambahkan sampel Anda sendiri dan Anda dapat melatihnya kembali dengan cukup cepat di browser, tergantung pada jumlah data input baru yang Anda berikan. , dibutuhkan sedikit waktu, tetapi dalam beberapa detik Anda memiliki model terlatih yang sangat baik dalam mengenali dua gerakan ini yang kemudian dapat Anda gunakan, di aplikasi Anda.

Charlie: Jadi seperti itu biasanya langkah kedua. Dan kemudian langkah ketiga yang sedikit lebih rumit adalah ketika Anda melakukan semuanya di browser. Jadi Anda menulis model Anda sendiri dari awal dan Anda melatihnya di browser dan Anda benar-benar melatih dan menjalankan dan menghasilkan model, semua yang ada di browser. Tetapi secara umum, satu-satunya aplikasi yang saya lihat untuk ini adalah visualisasi bangunan. Saat Anda ingin memvisualisasikan proses model yang sedang dilatih dan jumlah langkah yang diperlukan, berapa lama waktu yang dibutuhkan, dan Anda dapat melihat akurasi naik atau turun, tergantung pada fitur yang Anda pilih dan parameter yang Anda sesuaikan .

Charlie: Jadi saya belum benar-benar bermain dengan yang itu karena saya belum menemukan aplikasi untuk saya yang ingin saya buat, tetapi dua langkah pertama hanya menggunakan model pra-latihan atau melatihnya dengan sampel saya sendiri adalah di mana secara pribadi saya telah melihat. Aku sudah bersenang-senang dengan itu.

Drew: Jadi biasanya akan menjadi kasus pembuatan model sebelumnya, semacam offline, dan kemudian browser kemudian menggunakan model terlatih itu, atau mungkin menambahkan sedikit, itu melakukan sedikit pelatihan ulang, tapi secara umum, model itu akan dibuat sebelum digunakan di browser pengguna?

Charlie: Secara umum, ya. Maka Anda pasti dapat membuat model Anda sendiri. Jika Anda melakukannya, saya tidak akan merekomendasikan untuk melatihnya di browser, tetapi Anda juga dapat melakukannya di NodeJS. Jika Anda tahu, sedikit NodeJS. Saya sudah pasti membuat model saya sendiri, tetapi saya biasanya menjalankannya di NodeJS karena performanya sedikit lebih baik. Dan kemudian saya menggunakan model yang dihasilkan yang saya buat kemudian di browser.

Drew: Alat apa yang tersedia untuk melakukan ini dengan JavaScript? Anda menyebutkan TensorFlow JS tapi apa itu, di mana itu? Apakah itu dari Google?

Charlie: Ya. Pada awalnya Google memiliki alat TensorFlow di Python dan sekarang, untuk masa lalu, mungkin beberapa tahun, mungkin sedikit lebih mereka membuat versi JavaScript, sehingga cenderung mengalir dengan JS. Tapi ada juga ML5 JS yang sedikit abstrak di atasnya. Jadi jika Anda agak bingung atau jika TensorFlow JS terlihat agak menakutkan dengan beberapa kosakata yang mereka gunakan dalam dokumentasi mereka, Anda dapat menggunakan ML5 JS yang memiliki fitur yang sebagian besar sama, tetapi katakanlah API atau Sintaksnya sedikit lebih ramah pemula.

Charlie: Anda bisa mulai dengan ML5, lihat apakah Anda menyukai pembelajaran mesin, atau jika Anda berpikir tentang aplikasi keren, dan kemudian jika mungkin Anda memiliki beberapa pemblokir di ML5 atau kerangka kerja tidak memiliki hal-hal tertentu yang ingin Anda lakukan, Anda kemudian dapat beralih ke TensorFlow JS jika Anda mau. Dan jika Anda benar-benar tidak tertarik untuk benar-benar menulis kode Anda sendiri tetapi Anda hanya ingin menggunakan alat yang sudah ada, ada beberapa API dari Amazon, Google, dan Microsoft untuk melakukan pengenalan gambar atau pengenalan suara juga. Jadi, jika Anda lebih tertarik untuk melihat apa yang dapat dilakukannya, tetapi Anda tidak ingin menghabiskan terlalu banyak waktu untuk menulis kode, Anda dapat melakukan ping ke beberapa API dan mencoba beberapa alat mereka juga.

Drew: Itu cukup menarik. Jadi Anda mungkin dapat menggunakan browser untuk menangkap input dari webcam atau mikrofon atau apa pun yang Anda miliki, dan kemudian mengirimkannya ke Amazon, Microsoft atau siapa pun dan kemudian biarkan mereka melakukan kerja keras?

Charlie: Ya.

Drew: Dan kemudian Anda hanya mendapat manfaat dari hasilnya.

Charlie: Tepat sekali.

Drew: Kedengarannya seperti cara yang bagus dan menggoda hanya untuk memulai dengan ide-ide. Kedengarannya bagus tapi masalah apa yang bisa kita terapkan ini di front end? Kita telah membicarakan beberapa hal kecil, tetapi apakah ada cara lain yang dapat kita gunakan untuk menggunakannya?

Charlie: Ada banyak cara. Jika saya mulai dengan klasifikasi gambar, ya Anda bisa. Anda dapat menggunakan gambar dari web atau dari webcam di ponsel Anda. Jika Anda hanya menggunakan situs web Anda di ponsel Anda dan Anda dapat mengambil gambar dan mengenali objek, dan keduanya melakukan… Hal kecil yang saya buat adalah seputar daur ulang, di mana jika saya tidak benar-benar tahu di mana harus meletakkan benda-benda tertentu di tempat sampah, kami memiliki bin kuning, hijau, itu tergantung pada negara. Mereka memiliki warna yang berbeda, tetapi kadang-kadang saya tidak begitu pandai mengetahui di mana sebenarnya harus membuang barang sehingga Anda dapat membuat alat-alat kecil seperti ini, hidup dapat mengenali dua objek di depan Anda dan kemudian mengklasifikasikannya dan Anda dapat membuat hal-hal tertentu seperti ini.

Charlie: Jika tidak, Anda memiliki klasifikasi teks di mana awal tahun ini, saya menggunakan salah satu model TensorFlow GS untuk melihat komentar yang ditulis, masalah GitHub, dan PR GitHub untuk kemudian mengklasifikasikan dan berkata, “Hei, jika itu adalah komentar beracun, maka Anda memiliki bot kecil yang mengatakan, "Hei, mungkin Anda seharusnya tidak menulis ini," atau, "Hati-hati, ini agak beracun. Kami ingin ini menjadi tempat yang aman.”” Jadi Anda bisa menggunakan klasifikasi teks seperti itu.

Charlie: Ada klasifikasi suara jika Anda mau, di mana ketika Apple merilis jam tangan baru mereka, OS, mereka memiliki sesuatu untuk mengenali suara air mengalir, untuk memberi tahu orang-orang, untuk mencuci tangan selama 20 detik dengan pandemi COVID, tetapi Anda dapat melakukannya bahwa dalam JavaScript juga. Dan hal yang sangat menarik, saya menonton beberapa video dan saya seperti, "Oh, saya tahu bagaimana melakukannya di JavaScript."

Charlie: Dan saya membuat prototipe kecil. Saya tidak tahu apakah itu berjalan di jam tangan Apple. Mungkin. Saya tidak memilikinya, tetapi saya tahu itu berjalan di ponsel dan laptop saya. Dan kemudian itu dapat memulai beberapa ide untuk orang lain juga, di mana seorang teman saya, Ramon Huidobro, @hola_soy_milk di Twitter. Dia telah mengikuti banyak konferensi online tahun ini. Dan salah satu masalahnya adalah ketika dia bertepuk tangan untuk memberi tepuk tangan kepada seseorang, maka dia tidak punya waktu untuk menambahkan emoji tepuk tangan di obrolan juga. Dan yang ingin dia lakukan adalah mendengarkan suara tepukannya dan itu akan mengirim emoji tepuk tangan secara otomatis di obrolan.

Charlie: Dan hal-hal kecil seperti inilah yang jika Anda mau, mungkin aplikasi yang benar-benar lebih berguna dalam pekerjaan Anda sehari-hari adalah seputar prefetching prediktif. Itu juga menggunakan pembelajaran mesin di ujung depan di mana melihat analitik situs web Anda. Jadi halaman mana yang biasanya dilihat setelah itu, dan hal-hal seperti ini. Anda dapat mengambil sumber daya terlebih dahulu berdasarkan halaman yang kemungkinan besar akan dikunjungi setelahnya. Itu adalah sesuatu yang saya ingin lihat sepanjang tahun ini, tetapi saya tidak punya waktu, tetapi itu memungkinkan Anda untuk benar-benar meningkatkan kinerja dan UX halaman Anda. Dan Anda tidak meminta sumber daya yang tidak Anda perlukan, sehingga dapat benar-benar meningkat, dan itu juga merupakan aplikasi pembelajaran mesin.

Charlie: Jadi kamu bisa melakukan hal-hal yang menyenangkan, atau kamu bisa melakukan hal-hal yang lebih berguna, tapi tidak ada aplikasi yang salah, mungkin ada aplikasi yang salah. Saya mengambilnya kembali, tetapi saya hanya mengatakan bahwa jika Anda benar-benar memulai, tidak ada salahnya memulai dengan sesuatu yang menyenangkan, dan kemudian saya dapat menemukan beberapa ide tentang sesuatu yang dapat Anda lakukan di pekerjaan sebagai dengan baik.

Drew: Saya kira hal yang sangat berguna di sini adalah mengetahui bahwa hal-hal ini mungkin. Dan sebenarnya hanya cara-cara kreatif untuk memecahkan masalah yang bisa kita lakukan sendiri. Secara tradisional kami membangun sesuatu dengan moderasi konten yang dikirimkan pengguna, dan itu cukup primitif dan pada dasarnya kami harus meminta manusia untuk melihat hal-hal dan membuat keputusan tentangnya. Tetapi dengan akses ke pembelajaran mesin, dalam contoh itu, kita dapat menyerahkan lebih banyak dari itu dan kemudian hanya meminta manusia untuk melihat kasus tepi, misalnya, hal-hal yang tidak memiliki kecocokan yang meyakinkan.

Drew: Tentu saja itu akan terjadi, itu sedikit waktu di depan untuk mengembangkan hal itu dan menempatkannya di tempatnya, tetapi kemudian Anda memikirkan penghematan karena tidak memiliki manusia yang memeriksa barang secara manual. Hal apa yang menurut Anda dapat digunakan untuk masa depan seiring dengan peningkatan teknologi?

Charlie: Bagi saya, mungkin di masa depan, saya pikir ketika model menjadi lebih kecil untuk dimuat dan mereka menjadi lebih berperforma dan kami mungkin meningkatkan kumpulan data yang mereka latih. Saya berharap dapat melihat alat yang lebih bermanfaat. Maksud saya, secara pribadi, saya tertarik dengan model pembelajaran mesin kecil yang dapat berjalan di mikrokontroler untuk membuat sesuatu. Tetapi jika kita lebih banyak tinggal di dunia front-end, saya berharap pengenalan suara yang lebih baik karena saya merasa seperti kita terbiasa menjelajahi web dengan track pad atau keyboard, tetapi saat ini, masih ada pengenalan suara, tetapi tidak selalu super akurat, atau tidak akurat dengan aksen, misalnya. Dan saya berharap saat kami mengembangkan model yang lebih baik, orang-orang yang lebih kecil tidak akan terlalu takut untuk menambahkannya ke situs web mereka karena itu tidak akan berdampak buruk pada kinerjanya.

Charlie: Saya tertarik menggunakan pembelajaran mesin dalam hal-hal seperti prefetching prediktif sehingga kami dapat membangun situs web yang lebih cerdas yang meningkatkan pengalaman pada spektrum, karena bagi pengguna, itu lebih baik karena halaman akan dimuat lebih cepat, oleh karena itu kinerja secara umum situs Anda, itu lebih baik. Tetapi juga katakanlah jika kita berpikir tentang keberlanjutan, tidak meminta sumber daya yang tidak berguna juga membantu, jejak karbon situs web Anda. Tapi kemudian ada juga jejak karbon dari model pembelajaran mesin. Itu tidak terlalu bagus. Jadi mungkin kita tidak akan membicarakan ini. Saya akan berpikir untuk masa depan, saya hanya berharap untuk memiliki model yang mungkin lebih berkinerja atau lebih kecil sehingga orang akan lebih mungkin untuk mencobanya, karena katakanlah akan ada lebih sedikit pemblokiran bagi orang untuk masuk ke ini , tapi mari kita lihat.

Drew: Apakah ada batasan dan kendala yang diketahui yang harus kita waspadai sebelum memulai proyek pembelajaran mesin?

Charlie: Ya. Ada. Saya pikir, tidak masalah jika Anda melakukannya dalam JavaScript atau Python, ada batasannya. I think if you do want to build something, that's very customed, that there is no pre-trained model for, one of the limits is that you might need quite a lot of data and not everybody has that. So if you're doing something on your own as a side project, and you can't find the data set, it would actually take you quite a long time to get one that would allow you to generate good predictions. You can build a small data set, but you will not be able to push it to production or something if you don't actually have a data set that's consistent enough. So I think the amount of data that you need, training the models can take a lot of time.

Charlie: That depends on the amount of data that you feed it, but depending on the application that you want to will build it with, you have to be aware that it can take a lot of time. I remember when I got started and I was doing it in Python and I wanted to… I forgot what I wanted to do, but my model was running for, it was training for eight hours. And at the end it told me that it failed because of something. And I was like, “You're telling me that at the end, after eight hours,” so it can be a bit frustrating and it can still be experimental and you have to be comfortable with it not being a pure science, not everything is always accurate.

Charlie: At the moment, as some of the models are still, they can be a few megabytes, if you are building something that you know, is most likely going to be seen on a mobile screen, you might want to take into consideration that, well, you don't want to load all that data over 4G network. You might want to warn people that they should be on Wi-Fi or the battery use, or the type of phones can't really handle all of this as well. And then more seriously in terms of liability, you do have to understand why your model predicted certain things. And that can be difficult because the model is a black box. It's a function that you don't really know what's inside. You know what it predicted and based on what you're building, if it makes certain decisions about, I don't know, who gets a loan or who goes to prison, based on whatever, you want to be able to explain how you got to that decision.

Charlie: If you decided to use machine learning to kind of abstract some of the work, so it wouldn't be done by people. That can be quite dangerous, so you have to know what you're doing, and in the end, just remember that it's not perfect. I think people sometimes assume that because we talk about artificial intelligence is just as smart as people, but no, it's still computers. It's still data that is given to them and they make up some predictions and somehow we just trust it, which is scary. But yeah, that's some of the limitations.

Drew: Ya. I guess it may seem like it's intelligent, but it is still artificial. There've been some quite high profile cases in recent times particularly around some of the machine learning stuff with image recognition that have raised issues of bias in machine learning, for example, a model only detecting humans if they have light skin. Are there ethical considerations that we should be making here?

Charlie: To me, that sounds like a really interesting side of machine learning. And that's also why, before I was saying that, remember that it's not perfect. Sometimes I feel like people think that the machine just happens to be right and know all the things by itself, but it's still something that we program. And when an algorithm products or generates a biased result, the algorithm just generated things based on the data that it was given before. So an algorithm itself or a model is not going to know the difference in society between light-skinned people or dark-skinned people. It doesn't know and it doesn't care. The only thing that it knows is that I got given pictures of certain people and I'm just going to generate based on what I know.

Charlie: And the data set that is given to the algorithm is in general generated by us, by people. Maybe it's not the developer using the model, but at some point somebody put together a data set. And I think it's important to remember that we are responsible for making sure that the predictions generated are as fair as possible and as unbiased as possible. And that creates interesting questions then, because then you can go into, “Well, what is fair for people?” or if we think about my example of the GitHub action that I created to look at toxic comments, well, maybe what I think is toxic is not the same thing as what other people think is toxic.

Charlie: It's interesting. There's a really interesting collection of videos by MIT media lab around the ethics and governance of artificial intelligence, and I find that fascinating because it's not about telling people, “Oh, you're a bad person because you used in algorithm that's biased,” or, “You're a bad person because you produced a model that's biased.” Its more about raising certain questions and helping you realize, “Well, actually, maybe I could be better,” because that surface that, “Yes, I forgot to add diverse people to my data set. Let me fix that.” It's not really about say, “Let's not use that model ever again.” Just retrain it. Realize that, “Oh, I forgot this. I can retrain it and we can make it better.” And that's something that I definitely think is interesting.

Charlie: And you have companies really trying to improve on that. When the issue of Google who was translating certain neutral languages into gendered languages, and all of a sudden engineer was male and cook was female. Now they know they've really reworked on that and it's a lot more unbiased and they use the 'they' pronoun as well. They also really try to make it better, but then you have also weird stuff where I think IBM had created a data set called Diversity in Faces, that was supposed to be one of the very few that I said that actually had a diverse spectrum of people. But when I tried to find it to use it, it's not available anymore. So I'm like, “Oh, you had this good initiative. You try to do better than a lot of other people, and now people are going to actually use it.” I don't know, but I think the question is really fascinating because he can really help us improve. And then we improve the tool as well that we're using.

Drew: I guess it pays just to be really careful to be balanced and be diverse when selecting data for training models. I guess that's what it comes down to, isn't it?

Charlie: Yeah. Well, I mean, you're building a tool for the public, in general, right? If it's a tool that everybody can use, so it should reflect everybody really, or you should be really clear and say, “This tool can only be used by these people because the model was trained that way, but it's not really what we should do.” I understand that sometimes it if you've never thought about it, it can be I don't know, you can see it as a burden. I hate that people would think of it that way, but it's also, if you spent all this time, maybe writing your own algorithm or generating your own model and doing all of this work, you can't tell me that finding a diverse data set is the hardest part. I don't think it would be. So I'm hopeful, and I think as more people raise concerns about this, and I think people are watching this space, which is really good because if companies don't do it, they'll do it if we tell them that it's not right. And if you want the adoption of machine learning models, you have to make sure that everybody can use them.

Drew: Of the various tools that are available for doing machine learning in JavaScript, you've worked a lot with TensorFlow JS and you've written a book about it. Tell us about your book.

Charlie: Yes, I did. I did write a book this year about TensorFlow JS. So to help JavaScript developers learn more about machine learning and understand it better. And I think the main goal of this book was to help people dive into machine learning, but making it less scary, because I know that at first I thought about machine learning as this big thing, completely different from the web development that I would never understand anything about. I didn't think that I would have to write my own algorithms and really understand math. And as I've dived into this over the past two and a half years, I realized that it's not really like that. And I was hoping that writing this book could help people realize as well that they can do it and what can be done.

Charlie: And there's also a few projects that you can really put in practice what you're learning, but it was really aimed at people who haven't really looked into ML yet, or who just are curious to learn more. I'm not really diving into the algorithms like the source code of the algorithms, but it's really more telling people, trying to understand what an algorithm does and which one to use and for what. A bit of what we just talked about, but it's explaining contents in a clear way, so hopefully it's less scary and people want to hopefully dive a bit more into it.

Drew: So it's called Practical Machine Learning In JavaScript and is available from Apress, and we'll link it up in the show notes. So I've been learning all about machine learning today. What have you been learning about lately, Charlie?

Charlie: Let's say a thing that I'm diving into that is related to machine learning or I will use machine learning with it, but it's digital signal processing that I want to use with machine learning. As we've talked about the fact that machine learning needs a lot of data, if you want to build your own models, sometimes you have to filter your data to actually get the right prediction. And if we think about it, let's think about noise canceling headphones. In your day-to-day life, you have a lot of noise around you. Let's say you're trying to watch a video on the train and there's people talking around you, and there's a sound of the train. And what you want to focus on is the sound of the video.

Charlie: With digital signal processing, that would be a little bit like your noise canceling headphones, where there's some noise around that you don't care about. So there's some data that you don't want to listen to, and the noise canceling headphones allow you to focus on the sound coming from the video on your phone, so that you can really truly listen and focus on that. What I'm doing with digital signal processing is that I have a bunch of data from a piece of hardware, like an Arduino, but I know that there's a lot of it that I might not care about. I want to filter out the things that I don't care about, so that then I can feed that to a model and get better predictions about gestures or things like that. So you have your data signal that you can either transform or filter.

Charlie: It's like when you use the web API to get sound from your microphone, you can either see the arrays of numbers on your dev tools, or you can transform it into a spectrogram to see the picture of the sound. And that's a little bit of that. To have a better prediction for gestures based on hardware data, I can transform that signal. I've been wanting to do this for a couple of years, but it's something that I know nothing about. It takes time to learn, but now that I know a bit more about the machine learning side, I can learn the digital processing side and I'm getting there. I like this moment where I'm like, “Oh, I start to get it because I spent all this time on it.” And yeah, that's, that's really interesting. I'm going to have you going a bit.

Drew: Charlie you're such a nerd. If you dear listener would like to hear more from Charlie, you can find her on Twitter, where she's @devdevcharlie and her personal website includes links to lots of our experiments and projects, and it's really worth checking out at charliegerard.dev. Her book Practical Machine Learning In JavaScript is available now, and we'll link to that in the show notes. Thanks for joining us today. Charlie, did you have any parting words?

Charlie: Ingatlah untuk bersenang-senang. Kami berbicara banyak hari ini tentang hal-hal menyenangkan, dan kemudian hal-hal praktis, tetapi jika Anda ingin melihat ini, ingatlah untuk bersenang-senang, tidak peduli apa yang Anda putuskan untuk dibangun.