19 poin oleh GN⁺ 2025-01-07 | 1 komentar | Bagikan ke WhatsApp
  • Awalnya sama sekali tidak berniat bekerja di bidang AI/ML
  • Hanya karena menggunakan alat yang dibutuhkan untuk pekerjaan, saya secara alami mulai memakai AI atau ML, dan akhirnya terjun ke bidang ini (profesor madya CMU)
  • Menyambut tahun baru, ia menengok kembali ke tahun 2000 dan merefleksikan proyek-proyek AI/ML utama yang pernah diikutinya

Pernyataan if dan angka acak: pengalaman pemrograman awal

  • Dimulai dari video game:
    • Terinspirasi oleh Tamagotchi, mencoba mengembangkan game hewan peliharaan virtual dengan VB6.
    • Menerapkan logika sederhana dengan timer dan pernyataan kondisi:
      • Nilai kelaparan meningkat setiap 10 detik.
      • Jika kelaparan melewati tingkat tertentu, kesehatan berkurang setiap 3 detik.
      • Jika kesehatan menjadi 0, peliharaan pingsan.
    • Hasil: game yang monoton dan tidak menyenangkan.
  • Pengembangan game saat SMA:
    • Mengembangkan game tembak-menembak luar angkasa 2D:
      • Pemain bertahan dari gelombang musuh sambil mengumpulkan power-up.
    • Pola kemunculan musuh dibuat dengan pernyataan if yang panjang, memanfaatkan angka acak dan statistik permainan (waktu bermain, jumlah tembakan, HP, dan sebagainya).
    • Hasil:
      • Game terasa agak dinamis dan tidak mudah ditebak.
      • Namun pemain cepat berhenti karena ketertarikannya tidak bertahan lama.
  • Menjelajahi konsep AI:
    • Pada pertengahan 2000-an, membeli buku Programming Game AI by Example untuk mempelajari cara menerapkan AI ke dalam game.
    • Awalnya belum bisa dimanfaatkan, tetapi kemudian sangat membantu dalam proyek-proyek berikutnya.
  • Pengalaman pada masa ini menjadi landasan untuk bereksperimen dengan mekanisme game yang lebih kompleks dan menarik

State machine dan higher-order function: pengembangan game saat kuliah

  • Evolusi game:
    • Saat kuliah, tingkat pengembangan game naik satu level dan berhasil membuat game yang dimainkan jutaan orang.
    • Beberapa game bahkan berhasil menghasilkan pendapatan.
    • Seiring kemampuan pemrograman yang makin matang, isi buku yang dipelajari bisa diterapkan dalam praktik.
  • Penerapan teknologi:
    • Finite State Machine:
      • Digunakan untuk menerapkan pola perilaku musuh.
    • Factory pattern:
      • Untuk pembuatan dan pengelolaan objek.
    • Higher-order Functions:
      • Dirancang agar perilaku musuh dan senjata dapat dikombinasikan.
      • Contoh:
        • Senjata berayun dengan amplitudo 25 derajat ke kiri dan kanan sambil menembakkan peluru dalam bentuk kerucut sempit.
        • Peluru sedikit mengarah ke target terdekat, dengan kemungkinan 1% memantul.
  • Game menjadi lebih hidup:
    • Secara bertahap menambahkan unsur dinamis berdasarkan status game dan input pemain.
    • Menambah variasi lewat keacakan dan kombinasi.
    • Pendekatan ini diterapkan secara berlapis ke seluruh game, bukan hanya perilaku musuh tetapi juga sprite, particle effect, efek suara, peluru, animasi, dan lain-lain.
  • Hasil:
    • Game menjadi lebih hidup dan lebih menyenangkan.
    • Namun tersadar bahwa ini bukan AI, melainkan hanya kombinasi pernyataan if dan pemanggilan fungsi yang dirancang dengan baik.
  • Meski game bisa memberi kesan seolah-olah "hidup", pada tahap ini ia menyadari bahwa semuanya masih berupa logika dan fungsi yang dirancang secara manual.

Logika orde pertama, representasi pengetahuan, support vector machine, neural network: pengalaman awal di pascasarjana

  • Memulai program master:
    • Setelah lulus, mendaftar program master tepat menjelang tenggat.
    • Pilihan mata kuliah terbatas, sehingga mengambil kuliah AI dan neural network.
    • Merasa kecewa dengan mata kuliah yang dipilih sebagai pengganti kuliah compiler yang sebenarnya diinginkan:
      • Berfokus pada teori tingkat tinggi tanpa praktik atau implementasi.
      • Banyak diskusi berputar pada definisi.
  • Kuliah AI:
    • Menggunakan buku Artificial Intelligence: A Modern Approach (Third Edition).
    • Mempelajari konsep seperti planning, agent, logika orde pertama, dan representasi pengetahuan.
    • Mendapat kosakata baru untuk memikirkan masalah, tetapi sulit menerapkannya secara nyata.
  • Kuliah neural network:
    • Mempelajari teori perceptron, support vector machine (SVM), feedforward network, model Hopfield, backpropagation, dan lain-lain.
    • Kurangnya panduan jelas untuk praktik:
      • Merasa frustrasi ketika dosen hanya menjawab, "coba cari paket MATLAB."
  • Mengembangkan program video chat bandwidth rendah:
    • Dengan OpenCV melakukan deteksi wajah dan ekstraksi area:
      • Mengklasifikasikan kondisi sudut mulut, posisi alis kiri, apakah mata kanan terbuka, dan sebagainya.
      • Mengumpulkan ratusan gambar wajah berlabel dari database.
      • Mengirim status biner hasil klasifikasi lewat socket, lalu merender avatar dengan OpenGL.
    • Hasil:
      • Sangat sensitif terhadap perubahan pencahayaan, sulit menyesuaikan parameter, dan membutuhkan waktu lama untuk pelatihan.
      • OpenCV sulit digunakan dan programnya merepotkan untuk dimodifikasi.
  • Pencapaian:
    • Belajar banyak melalui berbagai trial and error.
    • Pada Januari 2013, mengunggah dan membagikan video demo awal:
      • Video demo meskipun amatir, tetap mencatat lebih dari 1.000 penayangan.
  • Masa ini merupakan proses pertumbuhan penting untuk belajar bagaimana menerapkan teori secara nyata dan memecahkan masalah

Decision tree, clustering, algoritme rekomendasi: pengalaman selama doktoral

  • Tujuan riset:
    • Mencoba memecahkan masalah berikut dengan menganalisis data log editor kode:
      • Mengidentifikasi apakah programmer sedang buntu atau kehilangan arah di dalam kode.
      • Memprediksi file berikutnya yang akan dijelajahi programmer.
      • Merekomendasikan kode yang relevan dengan tepat.
  • Metode statistik yang digunakan:
    • Algoritme C4.5: membuat decision tree.
    • K-means dan DBSCAN: clustering event.
    • Apriori dan collaborative filtering: mencari keterkaitan antar-event.
    • Hasil:
      • Metodenya sederhana, tetapi menunjukkan performa yang sangat kuat.
      • Dalam banyak kasus, metode ini cukup efektif dibanding neural network yang lebih kompleks.
  • Pencapaian:
    • Menerbitkan paper, menjalani beberapa internship, dan membuat developer tool.
    • Berhasil lulus program doktoral.
  • Materi terkait:
    1. Paper: analisis data tentang cara developer mencari informasi
      Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF))
    2. Laporan internship Microsoft: pengalaman membuat bot code review
      When users never use the features they asked for
  • Selama doktoral, ia mencapai hasil yang bermakna baik di akademia maupun praktik dengan memakai teknik statistik untuk menyelesaikan masalah nyata

Antarmuka pengguna cerdas: awal riset sebagai profesor

  • Menetapkan arah riset baru:
    • Pada 2018, sebagai profesor tenure-track, memilih Intelligent Developer Tools sebagai topik riset.
    • Awalnya konsepnya masih samar, tetapi dimulai dari proyek yang menggunakan model prediktif untuk mengidentifikasi dan memperbaiki kesalahpahaman programmer terlebih dahulu.
  • Proposal riset pertama:
    • Tujuan proyek:
      1. Menggunakan teknik analisis program dan model prediktif untuk mengidentifikasi kesalahpahaman pemrogram pemula terhadap perilaku program.
      2. Memperbaiki kesalahpahaman dan menjelaskan logika tanpa mengganggu programmer.
      3. Menghasilkan kode pengujian yang menangkap perubahan perilaku program yang tidak disengaja agar kesalahpahaman serupa dapat dicegah di masa depan.
    • Ringkasan:
  • Proyek kedua:
    • Riset untuk memprediksi kebutuhan informasi programmer dan menghasilkan antarmuka pengguna secara real-time.
    • Contoh:
      • Saat programmer menelusuri riwayat Git, sistem memvisualisasikan dan menyajikan kumpulan commit yang direkomendasikan.
  • Integrasi riset:
  • Hasil dan keterbatasan:
    • Proyek ini berhasil dimulai dengan dukungan hibah, tetapi ia mengundurkan diri dari jabatan profesor sebelum riset berjalan penuh.
  • Masa ini menjadi titik balik penting untuk mengonkretkan riset tentang antarmuka pengguna cerdas dan merancang visi yang lebih besar

Program synthesis dan large language model (LLM): pengalaman di Microsoft

Penutup

  • Ini adalah 25 tahun yang menyenangkan
  • Rencana berikutnya? Tetap mengajar, belajar, dan terus membuat sesuatu

1 komentar

 
GN⁺ 2025-01-07
Opini Hacker News
  • Pernah berada di tim AI, tetapi menahan diri untuk tidak menerapkan AI kecuali ada alasan yang benar-benar meyakinkan. Memikirkan apakah yang ingin diselesaikan adalah masalah pengguna, apakah LLM memang diperlukan, atau apakah beberapa baris if saja sudah cukup. Perlu yakin juga apakah bahasa alami merupakan antarmuka yang tepat
    • Pendekatan praktis di bidang AI terasa menyegarkan. Pernah punya pengalaman membuat alat di mana model regresi sederhana berkinerja lebih baik daripada jaringan saraf. Sulit menghindari penolakan dari tim ketika tidak all-in pada AI
  • Selama 14 tahun mengalami perjalanan yang mirip, dan selalu penasaran bagaimana semuanya akan berbeda hari ini
    • Kami tumbuh bersama industrinya dan bisa secara bertahap mempelajari hal-hal yang lebih kompleks. Lulusan masa kini menghadapi kompleksitas puluhan tahun pada pekerjaan pertama mereka
  • Baru-baru ini melihat seseorang meninggalkan UTK, dan tulisan blog yang ia buat membuat saya kembali memikirkan soal masuk ke akademia setelah sekolah pascasarjana
  • Halaman web yang tidak semrawut oleh iklan dan pop-up terasa menyegarkan. Terdiri dari teks yang bersih dan tertata rapi dengan susunan yang sederhana
  • Bagi banyak orang, AI adalah perjalanan menyenangkan untuk menciptakan hal-hal yang menakjubkan. Saya setuju bahwa hasilnya memang mengagumkan. Namun, menyedihkan ketika para ilmuwan tidak memikirkan dampak lebih besar pekerjaan mereka terhadap masyarakat. Seiring posisi sosial mereka meningkat, ciptaan mereka mengubah struktur masyarakat secara mendasar. AI adalah salah satu unsur berbahaya, dan perusahaan besar yang memuja kecerdasan untuk menarik orang masuk adalah pertanda bencana