วิธีการที่จะหลอกการตรวจสอบพล็อตการเรียนรู้?


23

กว่าที่นี่เดฟคล๊าร์คเสนอว่าในการสั่งซื้อเพื่อเปรียบเทียบการเจริญเติบโต asymptotic พล็อตที่คุณควรฟังก์ชั่นที่อยู่ในมือ ในฐานะที่เป็นนักวิทยาศาสตร์คอมพิวเตอร์ที่มีความโน้มเอียงทางทฤษฎีฉันเรียก (v) vodoo นี้ว่าพล็อตไม่สามารถพิสูจน์ได้ ในความคิดที่สองฉันต้องยอมรับว่านี่เป็นวิธีที่มีประโยชน์มากซึ่งบางครั้งก็ใช้น้อยเกินไป พล็อตเป็นวิธีที่มีประสิทธิภาพในการรับแนวคิดแรกและบางครั้งก็เป็นสิ่งที่คุณต้องการ

เมื่อสอน TCS มักจะมีนักเรียนที่ถามว่า: "ฉันต้องมีหลักฐานอะไรบ้างถ้าฉันสามารถทำ X ซึ่งใช้งานได้ตลอด?" มันขึ้นอยู่กับครูของเขาเพื่อชี้ให้เห็นและแสดงให้เห็นถึงการเข้าใจผิด มีตัวอย่างที่ยอดเยี่ยมของรูปแบบที่ปรากฏชัดเจนซึ่งในที่สุดก็ล้มเหลวที่ math.SE แต่สิ่งเหล่านี้เป็นสถานการณ์ทางคณิตศาสตร์ที่ค่อนข้างยุติธรรม

ดังนั้นคุณจะหลอกการวิเคราะห์การตรวจสอบพล็อตได้อย่างไร มีบางกรณีที่ความแตกต่างยากที่จะบอก appart เช่น

ตัวอย่าง ตัวอย่าง ตัวอย่าง
[ แหล่งที่มา ]

คาดเดาจากนั้นตรวจสอบแหล่งที่มาสำหรับฟังก์ชั่นจริง แต่สิ่งเหล่านี้ไม่น่าตื่นเต้นอย่างที่ฉันคาดหวังโดยเฉพาะอย่างยิ่งเพราะความสัมพันธ์ที่แท้จริงนั้นง่ายต่อการสังเกตจากฟังก์ชั่นเพียงอย่างเดียวแม้แต่สำหรับมือใหม่

มีตัวอย่างของการเติบโตแบบเชิงสัมพัทธ์ (สัมพัทธ์) ที่ความจริงไม่ชัดเจนจากฟังก์ชั่นการกำหนดและการตรวจสอบพล็อตสำหรับขนาดใหญ่พอสมควรnให้ความคิดที่ผิดอย่างสมบูรณ์หรือไม่? ฟังก์ชั่นทางคณิตศาสตร์และชุดข้อมูลจริง (เช่นรันไทม์ของอัลกอริทึมเฉพาะ) ยินดีต้อนรับทั้งคู่; โปรดหลีกเลี่ยงการใช้ฟังก์ชั่นที่กำหนดเป็นชิ้น ๆ


2
ที่จริงฉันเสนอให้เป็นเคล็ดลับในการทำความเข้าใจปัญหา
Dave Clarke

@DaveClarke: ฉันรู้ ฉันใช้สูตรเริ่มต้นของคุณเป็นเพียงเครื่องมือเปิดเท่านั้น ไม่มีเจตนากระทำความผิด
Raphael

คำตอบ:


23

พูดจากประสบการณ์เมื่อพยายามที่จะคิดออกอัตราการเจริญเติบโตสำหรับฟังก์ชั่นที่สังเกตบาง (พูด, ห่วงโซ่มาร์คอฟผสมเวลาหรืออัลกอริทึมเวลาทำงาน) มันเป็นเรื่องยากมากที่จะบอกปัจจัยจากn ตัวอย่างเช่นO ( (เข้าสู่ระบบn)anมีลักษณะเหมือนO(n 0.6 ):O(nเข้าสู่ระบบn)O(n0.6)

พล็อต
[ แหล่งที่มา ]

ยกตัวอย่างเช่นใน"บางคนที่ไม่คาดคิดผลพฤติกรรมที่คาดหวังสำหรับถังบรรจุ"เบนท์ลีย์ et al., อัตราการเติบโตของพื้นที่ว่างสำหรับที่ดีที่สุด Fit และ First Fit bin ขั้นตอนวิธีการบรรจุเมื่อบรรจุรายการเครื่องแบบเป็นที่คาดกันสังเกตุว่าเป็นn 0.6และn 0.7ตามลำดับ การแสดงออกที่ถูกต้องn 1 / 2บันทึก3[0,1]n0.6n0.7n1/2เข้าสู่ระบบ3/4nn2/3


15

นี่เป็นอีกตัวอย่าง (ค่อนข้างเป็นที่ยอมรับแล้ว) แต่ก็ยังมีอีกอย่างที่ฉันคิดว่าน่าทึ่ง มันมีจุดมุ่งหมายเพื่อแสดงให้เห็นว่าแปลงสามารถทำให้เข้าใจผิดมากสำหรับการตัดสินการเจริญเติบโตของอาการ

แปลงต่อไปนี้แสดงสองฟังก์ชัน ก.

คุณสามารถเดาได้ไหมว่าฟังก์ชั่นใดที่เพิ่มขึ้น (asymptotically) เร็วขึ้น?

พล็อตของ f และ g สูงสุด 2000 พล็อต f และ g สูงสุด 10,000 พล็อต f และ g สูงสุด 200,000

~ก.

(x)=x2
ก.(x)=บาป(เข้าสู่ระบบ(x))+1dxdx=x2(1-35cos(เข้าสู่ระบบ(x))+15บาป(เข้าสู่ระบบ(x))).

ก.x2204

สำหรับตัวอย่างนี้เราสามารถ demask การแกว่งโดยพิจารณาจาก log-log-plot:

log-log-plot ของ f และ g สูงสุด 200,000

แน่นอนว่าสิ่งนี้ไม่ได้ช่วยอะไรโดยทั่วไป ตัวอย่างเช่นเราอาจมีคาบกำลังทวีคูณเป็นสองเท่า ...


12

ยังไม่มีข้อความ=(Q,SQ,FQ,RQ×Σ×Q)เราสามารถคำนวณหุ่นยนต์ จำกัด ขั้นต่ำที่กำหนดได้จาก:

Mผมnผมม.ผมZอี:ยังไม่มีข้อความFADFA=Dอีเสื้ออีRม.ผมnผมZอีRอีโวลต์อีRsอีDอีเสื้ออีRม.ผมnผมZอีRอีโวลต์อีRsอี

เห็นได้ชัดว่านี่เป็นอัลกอริธึมเวลาเอ็กซ์โพเนนเชียลกรณีเลวร้ายที่สุดเนื่องจากสามารถใช้ออโตเมติก nondeterministic และให้ค่าที่กำหนดได้ (หรือชัดเจนยิ่งกว่า

O(n2)O(nเข้าสู่ระบบ(n))

นี่เป็นการแตะส่วน "พล็อต" ของ "การตรวจสอบการวิเคราะห์พล็อต" --- เราต้องเลือกจุดที่จะสุ่มตัวอย่างเมื่อวาดพล็อตและคุณสามารถหลอกพล็อตที่ไร้เดียงสาได้หากคุณไม่เลือกคะแนนอย่างระมัดระวัง นี่ก็เป็นจริงสำหรับตัวอย่างอื่น ๆ เช่น Quicksort และอัลกอริทึม Simplex แต่สำหรับการสอนฉันชอบอัลกอริทึมนี้กับทั้งสอง

ความแตกต่างของ Quicksort คือ "เท่านั้น" กำลังสองกับ log-linear ซึ่งน้อยกว่าความแตกต่างของพหุนาม / เอ็กซ์โปเนนเชียล อัลกอริทึมแบบซิมเพล็กซ์มีความแตกต่างที่น่าประทับใจในทำนองเดียวกัน แต่การวิเคราะห์นั้นซับซ้อนกว่าอัลกอริทึมของ Brzozowski มาก

(นอกจากนี้ฉันรู้สึกว่าอัลกอริทึมการย่อขนาด DFA ของ Brzozowski นั้นเป็นที่รู้จักน้อยกว่าที่ควรจะเป็น แต่แน่นอนว่าเป็นเรื่องของรสนิยม)


ขออภัยฉันไม่เห็นการเชื่อมต่อกับการตีความฟังก์ชั่นการแปลง
Raphael

3
ฉันสมมติว่าคุณจะทำอะไรบางอย่างเช่นประสิทธิภาพการทำงานของพล็อตเทียบกับขนาดของอินสแตนซ์สำหรับการสุ่มตัวอย่างอินสแตนซ์และอัลกอริทึมของ Brzozowski จะ "ดู" พหุนามยกเว้นว่าคุณเลือกอินสแตนซ์
Neel Krishnaswami

1
ฉันเห็น. นั่นคือแน่นอนปัญหาเมื่อเปรียบเทียบขั้นตอนวิธีการและการวางแผนเวลาการทำงานเฉลี่ยคือปัญหาของการวางแผนข้อมูลที่ถูกต้อง เมื่อฉันโพสต์คำถามที่ฉันคิดเพียงเกี่ยวกับการตีความพล็อตได้อย่างถูกต้องซึ่งเป็นสัตว์ร้ายอื่นทั้งหมด คุณช่วยเพิ่มมุมมองนี้ในคำตอบได้ไหม?
Raphael

คุณมีปัญหาเดียวกันสำหรับอัลกอริทึมทั้งหมดที่มีพฤติกรรมกรณีและค่าเฉลี่ยแตกต่างกัน Quicksort และ Simplex เป็นที่จดจำ
Raphael

8

เทคนิคทางคณิตศาสตร์ของการปรับเส้นโค้งสามารถใช้เพื่อให้คำตอบสำหรับคำถามของคุณได้ไม่ จำกัด เมื่อกำหนดเส้นโค้งและช่วงหนึ่งเราจะสามารถค้นหาพหุนามที่เหมาะสมกับเส้นโค้งตามระดับความแม่นยำใด ๆ ตัวอย่างจากวิกิพีเดียแสดงให้เห็นว่าคลื่นบาปสามารถปรับให้พอดีกับพหุนามลำดับที่ 4 (เส้นโค้งสีน้ำเงิน) ได้อย่างไร

ป้อนคำอธิบายรูปภาพที่นี่

ฉันสามารถใช้พหุนามคำสั่งที่สูงขึ้นและหลอกการตรวจสอบการลงจุดได้ดีกว่ากราฟนี้


2
นั่นเป็นเรื่องจริง นอกจากนี้ยังมีรสชาติเทียมแม้ว่า แน่นอนว่าฉันสามารถสร้างตัวอย่างตอบโต้สำหรับนักเรียนด้วยวิธีนี้ แต่ฉันไม่เห็นว่ามีความเชื่อที่น่าสงสัยมากกว่านี้ มีปรากฏการณ์ "ธรรมชาติ" ของปรากฏการณ์นี้ (เช่นฟังก์ชันพหุนามในระดับสูงกว่าที่สามารถเข้าใจผิดสำหรับฟังก์ชันอื่น ๆ ) ซึ่งการตีความที่ผิดพลาดคือ "ร้ายแรง" หรือไม่
Raphael

ฉันรู้ว่ามันไม่ใช่คำตอบที่คุณต้องการ
Dave Clarke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.