Apple CreateML vs Kaggle

Selama WWDC baru-baru ini Apple mempresentasikan alat terbaru mereka yang disebut CreateML. Sebagai penggemar ML saya sangat terkesan dengan apa yang saya lihat di sesi khusus (703), jadi saya pikir akan bernilai untuk menyelidiki seberapa kuatnya itu sebenarnya.

1. BuatML singkatnya (Anda bisa melewatkan jika Anda menonton presentasi WWDC).

Create ML adalah kerangka kerja baru yang dirancang untuk membantu pengembang dengan mudah dan cepat membangun model pembelajaran mesin menggunakan Swift dan Xcode. Adapun saat ini ia dapat bekerja dengan 3 jenis data: gambar, teks dan data tabular. Alur kerjanya sangat sederhana, Anda hanya perlu mengirimkan set data pelatihan, menulis beberapa baris kode dan keajaiban terjadi, model CoreML kecil siap digunakan di aplikasi Anda. Apple berjanji untuk secara signifikan mengurangi waktu pelatihan, yang dalam hal 10.000 gambar harus dihitung dalam hitungan menit (seperti biasa Apple menghindari memberikan rincian). Pelatihan sangat cepat, karena (dalam hal penggolong gambar) Apple menggunakan Transfer Learning. Kami tidak tahu apa yang menjadi dasar Neural Network, tetapi selama presentasi, Inception-v3 disebutkan sebagai contoh solusi canggih untuk klasifikasi gambar.

2. Presentasi Demo WWDC secara singkat (Anda dapat melewati jika Anda menonton presentasi WWDC).

Selama WWDC, presenter menunjukkan betapa mudahnya kita dapat membangun model yang berbeda, pertama adalah penggolong gambar, dibangun hanya menggunakan beberapa baris kode:

Contoh kedua sangat mirip, Text Classifier memutuskan apakah teks positif atau negatif, seperti dalam kasus gambar, hanya beberapa baris kode yang cukup untuk melatihnya:

Bagi saya, demo yang paling menarik adalah demo terakhir, menyajikan karya dengan data tabular. Dalam hal ini, CreateML menggunakan format data baru, yang disebut MLDataTable, pada pandangan pertama itu hanya pembungkus untuk matriks data normal, untungnya memiliki parser CSV dan JSON bawaan.

Dalam hal data tabular, CreateML menawarkan 2 jalur: satu jalur mudah dan sedikit lebih canggih. Pada awalnya perhatikan cara paling sederhana untuk menemukan formula harga rumah, tampilannya hampir sama dengan kedua contoh sebelumnya:

Masalah data tabular mungkin diselesaikan (tergantung kasus) menggunakan MLRegressor untuk masalah regresi dan MLClassifier untuk klasifikasi. Tapi itu tidak semua yang benar-benar menarik, saat mengerjakan data tabular, Anda dapat secara manual memutuskan metode klasifikasi / regresi apa yang akan digunakan, sebagai pasangan dukungan CreateML yang paling umum digunakan dalam industri:

3. CreateML dalam masalah kehidupan nyata

Aplikasi demo selalu sesederhana mungkin, membuatnya mudah dimengerti dan tidak apa-apa. Namun dalam hal Pembelajaran Mesin, fakta bahwa sesuatu bekerja dengan contoh sederhana, tidak benar-benar menyiratkan bahwa itu akan bekerja dengan yang lebih canggih. Pengguna target CreateML adalah pengembang, bukan pakar ML atau ilmuwan data, jadi saya memutuskan untuk berperilaku seperti pemula ML rata-rata, jangan menganalisis data secara mendalam, cukup masukkan set ke dalam CreateML dan biarkan ia melakukan keajaiban. Saya memutuskan untuk menggunakan kompetisi Kaggle sebagai tolok ukur, dan kemudian membandingkan kualitas model dengan apa yang dicapai Kagglers, saya juga ingin memeriksa seberapa cepat CreateML. Dalam banyak kasus, kunci dari model sukses adalah pemahaman dan pemrosesan data, jika pengembang hanya akan mengimpor CSV dan menjalankan MLRegressor mengharapkan hasil berkualitas tinggi untuk masalah canggih ... ia mungkin benar-benar kecewa dengan efeknya. Karena itu saya memutuskan untuk memilih contoh, yang dekat dengan masalah kehidupan nyata tetapi tidak terlalu kompleks, karena ini akan menjadi sia-sia tanpa preprocessing data.

Konfigurasi Macbook Pro saya sebagai referensi:

Saya mulai dengan menguji Image Classifier, untuk pengujian saya menggunakan "Klasifikasi Bibit Tanaman" (https://www.kaggle.com/c/plant-seedlings-classification), yang tujuannya adalah untuk menentukan spesies bibit dari gambar. Dataset secara signifikan lebih besar daripada yang disajikan pada demo, itu berisi lebih dari 4.300 gambar, saya menjalankan kode hanya menggunakan 2 baris kode, hasilnya terlihat di bawah:

Saya sangat terkesan dengan hasilnya, butuh 5 menit pada laptop pengembang khas untuk melatih model yang cukup bagus, menggunakan data pelatihan 1,7GB. Apakah ada cara yang lebih baik untuk membangun model Proof of Concept dan menjalankan aplikasi iOS / macOS untuk memverifikasi sebuah ide? Saya kira tidak. Apple, Anda melakukan pekerjaan yang hebat, sungguh. Yang juga menarik untuk diperhatikan, adalah bahwa CreateML secara otomatis membuat set validasi dari yang disediakan sebagai pelatihan, sehingga pengembang tidak perlu membagi data ini secara manual, satu langkah kecil untuk menyederhanakan proses.

Oke, tidak semua orang akan membangun aplikasi "Not Hotdog", jadi mari kita lihat kasus lain yang sangat umum dalam pembelajaran mesin, "Data Tabular" dan masalah regresi / klasifikasi. Dalam hal ini saya mulai dengan "Memulai Penyintas Titanic" (https://www.kaggle.com/c/titanic), tujuan kompetisi ini adalah untuk menentukan apakah penumpang tertentu akan selamat dari tabrakan dengan gunung es berdasarkan data seperti usia, jenis kelamin , jenis tiket, geladak, dll.

Saya mengunduh file CSV, membuat MLClassifier, menekan play dan…

Oke, itu tidak berfungsi, CreateML membutuhkan data yang bersih sempurna. Itu bukan masalah besar, saya bisa menghapus baris dengan kolom kosong menggunakan beberapa baris Python, namun itu mengurangi jumlah data pelatihan dari 891 contoh menjadi hanya 183, tetapi setidaknya itu berfungsi. Selama menjalankan xCode berikutnya memberi tahu saya bahwa: "Fitur \ 'Tiket \' bukan tipe (angka, string, array, atau kamus). \ N" jadi saya menjatuhkan kolom ini dan akhirnya mendapatkan model kerja:

Sekali lagi, saya terkesan dengan hasilnya, data relatif mudah, tetapi dekat dengan apa yang mungkin dihadapi banyak pengembang di aplikasi biasa. CreateML berfungsi, cepat dan efisien.

Upaya kedua adalah kompetisi "Prediksi Pendapatan Restoran" (https://www.kaggle.com/c/restaurant-revenue-prediction/data), di mana tujuannya adalah untuk memperkirakan pendapatan restoran pada tahun tertentu, menggunakan tanggal pembukaan, kota, jenis restoran dll. Sama seperti dalam kasus Titanic, saya baru saja mengunduh data dan menjalankan taman bermain:

Dalam hal ini CreateML memutuskan untuk menggunakan Boosted Tree Regressor dan sebagai hasilnya MSE bahkan lebih rendah daripada yang memenangkan kompetisi 3 tahun lalu. Tentu saja alasan untuk itu mungkin fakta bahwa papan peringkat dibuat berdasarkan data yang tidak publik, tetapi tetap saja, CreateML mampu membangun dengan sangat baik, mungkin bahkan dapat dibandingkan dengan model pemenang dalam beberapa detik. Inilah yang sebagian besar pengembang butuhkan.

4. Pro dan Kontra dari CreateML

Pro:

  • saat ini merupakan cara termudah untuk membangun model ML untuk iOS / macOS, terutama untuk aplikasi Proof Of Concept, atau yang bekerja dengan data yang relatif sederhana
  • CreateML membuka dunia ML untuk ribuan pengembang iOS / macOS
  • sangat efisien dan mudah digunakan

Kekurangan:

  • sangat sedikit cara untuk menyetel dan men-debug model akhir
  • tidak ada pengetahuan umum model apa yang digunakan untuk mengklasifikasikan gambar
  • tidak ada alat pemrosesan data (tapi itu jelas, target Apple bukanlah ilmuwan data, tetapi pengembang perangkat lunak)

5. Pendapat saya

Sepertinya CreateML benar-benar alat yang hebat, terutama bagi pengembang, yang sama sekali tidak bekerja dengan Machine Learning, ini cepat, sangat efisien dan sangat mudah untuk memulai. Jika Anda adalah pengembang iOS / macOS, coba saja.

6. Pertanyaan terbuka

Apakah masalah model ML besar untuk klasifikasi gambar hanya disembunyikan oleh fakta bahwa semua bobot disimpan dalam iOS / macOS dan CreateML membangun model CoreML yang hanya memuat bobot untuk lapisan terakhir yang dilatih ulang (Inception-V3)?