นี่คือโมดูล Python สำหรับการทดลองกับอัลกอริธึมการเรียนรู้แบบแอคทีฟต่างๆ มีองค์ประกอบสำคัญบางประการในการดำเนินการทดสอบการเรียนรู้แบบลงมือปฏิบัติ:
สคริปต์การทดสอบหลักคือ run_experiment.py
ซึ่งมีแฟล็กจำนวนมากสำหรับตัวเลือกการรันที่แตกต่างกัน
ชุดข้อมูลที่รองรับสามารถดาวน์โหลดไปยังไดเร็กทอรีที่ระบุได้โดยการรัน utils/create_data.py
วิธีการเรียนรู้แบบแอคทีฟที่รองรับอยู่ใน sampling_methods
ด้านล่างนี้ฉันจะลงรายละเอียดเพิ่มเติมในแต่ละองค์ประกอบ
การปฏิเสธความรับผิด: นี่ไม่ใช่ผลิตภัณฑ์อย่างเป็นทางการของ Google
การขึ้นต่อกันอยู่ใน requirements.txt
โปรดตรวจสอบให้แน่ใจว่าได้ติดตั้งแพ็คเกจเหล่านี้แล้วก่อนที่จะทำการทดสอบ หากต้องการ tensorflow
ที่รองรับ GPU โปรดปฏิบัติตามคำแนะนำที่นี่
ขอแนะนำอย่างยิ่งให้คุณติดตั้งการขึ้นต่อกันทั้งหมดลงใน virtualenv
ที่แยกต่างหากเพื่อการจัดการแพ็คเกจที่ง่ายดาย
ตามค่าเริ่มต้น ชุดข้อมูลจะถูกบันทึกลงใน /tmp/data
คุณสามารถระบุไดเร็กทอรีอื่นได้โดยใช้แฟล็ก --save_dir
การดาวน์โหลดชุดข้อมูลทั้งหมดซ้ำจะใช้เวลานานมาก ดังนั้นโปรดอดใจรอ คุณสามารถระบุชุดย่อยของข้อมูลที่จะดาวน์โหลดได้โดยการส่งชุดข้อมูลที่คั่นด้วยเครื่องหมายจุลภาคผ่านแฟล็ก --datasets
มีแฟล็กสำคัญบางประการสำหรับ run_experiment.py
:
dataset
: ชื่อของชุดข้อมูล ต้องตรงกับชื่อบันทึกที่ใช้ใน create_data.py
ต้องมีอยู่ใน data_dir ด้วย
sampling_method
: วิธีการเรียนรู้แบบแอคทีฟที่จะใช้ ต้องระบุใน sampling_methods/constants.py
warmstart_size
: ชุดเริ่มต้นของตัวอย่างตัวอย่างที่สม่ำเสมอเพื่อใช้เป็นข้อมูลเริ่มต้น ทศนิยมระบุเปอร์เซ็นต์ของข้อมูลการฝึกทั้งหมด และจำนวนเต็มระบุขนาดดิบ
batch_size
: จำนวนจุดข้อมูลที่จะร้องขอในแต่ละชุด ทศนิยมระบุเปอร์เซ็นต์ของข้อมูลการฝึกทั้งหมด และจำนวนเต็มระบุขนาดดิบ
score_method
: โมเดลที่จะใช้ประเมินประสิทธิภาพของวิธีการสุ่มตัวอย่าง ต้องอยู่ในเมธอด get_model
ของ utils/utils.py
data_dir
: ไดเร็กทอรีพร้อมชุดข้อมูลที่บันทึกไว้
save_dir
: ไดเร็กทอรีเพื่อบันทึกผลลัพธ์
นี่เป็นเพียงเซตย่อยของแฟล็กทั้งหมด นอกจากนี้ยังมีตัวเลือกสำหรับการประมวลผลล่วงหน้า การแนะนำสัญญาณรบกวนการติดฉลาก การสุ่มตัวอย่างชุดข้อมูล และการใช้โมเดลอื่นเพื่อเลือกแทนที่จะให้คะแนน/ประเมิน
วิธีการเรียนรู้แบบแอคทีฟที่มีชื่อทั้งหมดอยู่ใน sampling_methods/constants.py
คุณยังสามารถระบุส่วนผสมของวิธีการเรียนรู้แบบลงมือปฏิบัติได้โดยทำตามรูปแบบของ [sampling_method]-[mixture_weight]
โดยคั่นด้วยเครื่องหมายขีดกลาง เช่น mixture_of_samplers-margin-0.33-informative_diverse-0.33-uniform-0.34
วิธีการสุ่มตัวอย่างที่รองรับได้แก่:
เครื่องแบบ: ตัวอย่างจะถูกเลือกผ่านการสุ่มตัวอย่างแบบสม่ำเสมอ
ระยะขอบ: วิธีการสุ่มตัวอย่างตามความไม่แน่นอน
ข้อมูลและความหลากหลาย: วิธีการสุ่มตัวอย่างตามระยะขอบและคลัสเตอร์
k-center greedy: กลยุทธ์ตัวแทนที่สร้างจุดจำนวนมากอย่างตะกละตะกลามเพื่อลดระยะห่างสูงสุดจากจุดที่มีป้ายกำกับ
ความหนาแน่นของกราฟ: กลยุทธ์ตัวแทนที่เลือกจุดในพื้นที่หนาแน่นของพูล
Exp3 bandit: วิธีการเรียนรู้แบบ meta-active ที่พยายามเรียนรู้วิธีการสุ่มตัวอย่างที่เหมาะสมที่สุดโดยใช้อัลกอริธึมแบบ multi-armed bandit ยอดนิยม
ใช้ตัวเก็บตัวอย่างฐานที่สืบทอดมาจาก SamplingMethod
หรือตัวเก็บตัวอย่างเมตาที่เรียกตัวเก็บตัวอย่างฐานซึ่งสืบทอดมาจาก WrapperSamplingMethod
วิธีเดียวที่ต้องใช้โดยตัวเก็บตัวอย่างคือ select_batch_
ซึ่งสามารถมีอาร์กิวเมนต์ที่ตั้งชื่อตามอำเภอใจได้ ข้อจำกัดเพียงอย่างเดียวคือ ชื่อของอินพุตเดียวกันจะต้องสอดคล้องกันในทุกตัวอย่าง (กล่าวคือ ดัชนีสำหรับตัวอย่างที่เลือกไว้แล้วทั้งหมดจะมีชื่อเหมือนกันในทุกตัวอย่าง) การเพิ่มอาร์กิวเมนต์ที่มีชื่อใหม่ซึ่งไม่ได้ใช้ในวิธีการสุ่มตัวอย่างอื่นๆ จะต้องป้อนอาร์กิวเมนต์นั้นในการเรียก select_batch
ใน run_experiment.py
หลังจากใช้งานตัวอย่างของคุณแล้ว อย่าลืมเพิ่มลงใน constants.py
เพื่อให้สามารถเรียกจาก run_experiment.py
ได้
โมเดลที่มีอยู่ทั้งหมดอยู่ในเมธอด get_model
ของ utils/utils.py
วิธีการที่รองรับ:
Linear SVM: วิธี scikit พร้อม wrapper การค้นหากริดสำหรับพารามิเตอร์การทำให้เป็นมาตรฐาน
Kernel SVM: วิธี scikit พร้อม wrapper การค้นหากริดสำหรับพารามิเตอร์การทำให้เป็นมาตรฐาน
Logistc Regression: วิธี scikit พร้อม wrapper การค้นหากริดสำหรับพารามิเตอร์การทำให้เป็นมาตรฐาน
CNN ขนาดเล็ก: CNN 4 เลเยอร์ได้รับการปรับให้เหมาะสมโดยใช้ rmsprop ที่ใช้งานใน Keras พร้อมแบ็กเอนด์เทนเซอร์โฟลว์
การจำแนกประเภท Kernel Least Squares: ตัวแก้ปัญหาการไล่ระดับสีแบบบล็อกที่สามารถใช้หลายคอร์ได้ ดังนั้นจึงมักจะเร็วกว่า scikit Kernel SVM
โมเดลใหม่จะต้องเป็นไปตาม scikit เรียนรู้ API และใช้วิธีการต่อไปนี้
fit(X, y[, sample_weight])
: ปรับโมเดลให้พอดีกับคุณสมบัติอินพุตและเป้าหมาย
predict(X)
: ทำนายค่าของคุณสมบัติอินพุต
score(X, y)
: ส่งคืนตัวชี้วัดเป้าหมายที่กำหนดคุณสมบัติการทดสอบและเป้าหมายการทดสอบ
decision_function(X)
(ไม่บังคับ): ส่งกลับความน่าจะเป็นของคลาส ระยะทางถึงขอบเขตการตัดสินใจ หรือหน่วยวัดอื่นๆ ที่สามารถใช้ Margin Sampler เป็นหน่วยวัดความไม่แน่นอนได้
ดูตัวอย่างที่ small_cnn.py
หลังจากนำโมเดลใหม่ไปใช้แล้ว อย่าลืมเพิ่มลงในเมธอด get_model
ของ utils/utils.py
ปัจจุบันโมเดลจะต้องเพิ่มแบบครั้งเดียว และตัวแยกประเภท scikit-learn บางรุ่นไม่ได้รับการสนับสนุน เนื่องจากจำเป็นต้องให้ผู้ใช้ป้อนข้อมูลว่าจะปรับแต่งไฮเปอร์พารามิเตอร์ของโมเดลหรือไม่และอย่างไร อย่างไรก็ตาม การเพิ่มโมเดล scikit-learn เป็นเรื่องง่ายมากโดยมีการค้นหาไฮเปอร์พารามิเตอร์เป็นโมเดลที่รองรับ
สคริปต์ utils/chart_data.py
จัดการการประมวลผลข้อมูลและการสร้างแผนภูมิสำหรับชุดข้อมูลและไดเร็กทอรีต้นทางที่ระบุ