Ini adalah modul python untuk bereksperimen dengan berbagai algoritma pembelajaran aktif. Ada beberapa komponen kunci untuk menjalankan eksperimen pembelajaran aktif:
Skrip eksperimen utama adalah run_experiment.py
dengan banyak tanda untuk opsi proses yang berbeda.
Kumpulan data yang didukung dapat diunduh ke direktori tertentu dengan menjalankan utils/create_data.py
.
Metode pembelajaran aktif yang didukung ada di sampling_methods
.
Di bawah ini saya akan membahas setiap komponen secara lebih rinci.
PENOLAKAN: Ini bukan produk resmi Google.
Ketergantungannya ada di requirements.txt
. Harap pastikan paket-paket ini diinstal sebelum menjalankan eksperimen. Jika tensorflow
berkemampuan GPU diinginkan, ikuti petunjuk di sini.
Sangat disarankan agar Anda menginstal semua dependensi ke dalam virtualenv
terpisah untuk memudahkan manajemen paket.
Secara default, kumpulan data disimpan ke /tmp/data
. Anda dapat menentukan direktori lain melalui flag --save_dir
.
Mengunduh ulang semua dataset akan sangat memakan waktu jadi harap bersabar. Anda dapat menentukan subkumpulan data yang akan diunduh dengan meneruskan string kumpulan data yang dipisahkan koma melalui tanda --datasets
.
Ada beberapa tanda kunci untuk run_experiment.py
:
dataset
: nama dataset, harus sesuai dengan nama penyimpanan yang digunakan di create_data.py
. Harus juga ada di data_dir.
sampling_method
: metode pembelajaran aktif yang akan digunakan. Harus ditentukan dalam sampling_methods/constants.py
.
warmstart_size
: kumpulan awal contoh sampel yang seragam untuk digunakan sebagai data awal. Float menunjukkan persentase total data pelatihan dan bilangan bulat menunjukkan ukuran mentah.
batch_size
: jumlah titik data yang akan diminta di setiap batch. Float menunjukkan persentase total data pelatihan dan bilangan bulat menunjukkan ukuran mentah.
score_method
: model yang digunakan untuk mengevaluasi kinerja metode pengambilan sampel. Harus dalam metode get_model
dari utils/utils.py
.
data_dir
: direktori dengan kumpulan data yang disimpan.
save_dir
: direktori untuk menyimpan hasil.
Ini hanyalah sebagian dari semua bendera. Ada juga opsi untuk pra-pemrosesan, memperkenalkan gangguan pelabelan, subsampling kumpulan data, dan menggunakan model yang berbeda untuk memilih daripada menilai/mengevaluasi.
Semua metode pembelajaran aktif yang disebutkan ada di sampling_methods/constants.py
.
Anda juga dapat menentukan campuran metode pembelajaran aktif dengan mengikuti pola [sampling_method]-[mixture_weight]
yang dipisahkan dengan tanda hubung; yaitu mixture_of_samplers-margin-0.33-informative_diverse-0.33-uniform-0.34
.
Beberapa metode pengambilan sampel yang didukung meliputi:
Seragam: sampel dipilih melalui pengambilan sampel yang seragam.
Margin: metode pengambilan sampel berdasarkan ketidakpastian.
Informatif dan beragam: metode pengambilan sampel berbasis margin dan klaster.
k-center serakah: strategi representatif yang dengan rakus membentuk kumpulan titik untuk meminimalkan jarak maksimum dari titik berlabel.
Kepadatan grafik: strategi representatif yang memilih titik-titik di wilayah kumpulan yang padat.
Exp3 bandit: metode pembelajaran meta-aktif yang mencoba mempelajari metode pengambilan sampel optimal menggunakan algoritma multi-armed bandit yang populer.
Terapkan sampler dasar yang mewarisi dari SamplingMethod
atau meta-sampler yang memanggil sampler dasar yang mewarisi dari WrapperSamplingMethod
.
Satu-satunya metode yang harus diterapkan oleh sampler mana pun adalah select_batch_
, yang dapat memiliki argumen bernama sembarang. Satu-satunya batasan adalah bahwa nama untuk input yang sama harus konsisten di seluruh sampler (yaitu indeks untuk contoh yang sudah dipilih, semuanya memiliki nama yang sama di seluruh sampler). Menambahkan argumen bernama baru yang belum pernah digunakan dalam metode pengambilan sampel lainnya akan memerlukan memasukkannya ke dalam panggilan select_batch
di run_experiment.py
.
Setelah mengimplementasikan sampler Anda, pastikan untuk menambahkannya ke constants.py
agar dapat dipanggil dari run_experiment.py
.
Semua model yang tersedia ada dalam metode get_model
dari utils/utils.py
.
Metode yang didukung:
SVM Linear: metode scikit dengan pembungkus pencarian grid untuk parameter regularisasi.
Kernel SVM: metode scikit dengan pembungkus pencarian grid untuk parameter regularisasi.
Regresi Logistik: metode scikit dengan pembungkus pencarian grid untuk parameter regularisasi.
CNN Kecil: CNN 4 lapis dioptimalkan menggunakan rmsprop yang diimplementasikan di Keras dengan backend tensorflow.
Klasifikasi Kernel Least Squares: pemecah penurunan gradien blok yang dapat menggunakan banyak inti sehingga seringkali lebih cepat daripada scikit Kernel SVM.
Model baru harus mengikuti scikit learn api dan menerapkan metode berikut
fit(X, y[, sample_weight])
: menyesuaikan model dengan fitur input dan target.
predict(X)
: memprediksi nilai fitur masukan.
score(X, y)
: mengembalikan metrik target berdasarkan fitur pengujian dan target pengujian.
decision_function(X)
(opsional): probabilitas kelas kembalian, jarak ke batas keputusan, atau metrik lain yang dapat digunakan oleh margin sampler sebagai ukuran ketidakpastian.
Lihat small_cnn.py
sebagai contoh.
Setelah mengimplementasikan model baru Anda, pastikan untuk menambahkannya ke metode get_model
dari utils/utils.py
.
Saat ini model harus ditambahkan satu kali dan tidak semua pengklasifikasi scikit-learn didukung karena kebutuhan masukan pengguna tentang apakah dan bagaimana menyesuaikan hyperparameter model. Namun, sangat mudah untuk menambahkan model scikit-learn dengan pencarian hyperparameter sebagai model yang didukung.
Skrip utils/chart_data.py
menangani pemrosesan data dan pembuatan bagan untuk kumpulan data dan direktori sumber tertentu.