ในแคลคูลัส 101 เราเรียนรู้เกี่ยวกับวิธีเพิ่มประสิทธิภาพฟังก์ชั่นโดยใช้ "วิธีการวิเคราะห์": เราแค่ต้องได้รับอนุพันธ์ของฟังก์ชันต้นทุนและตั้งค่าอนุพันธ์เป็น 0 จากนั้นก็แก้สมการ นี่เป็นปัญหาของของเล่นจริงๆและแทบจะไม่เกิดขึ้นในโลกแห่งความเป็นจริง
ในโลกแห่งความเป็นจริงฟังก์ชั่นค่าใช้จ่ายจำนวนมากไม่มีอนุพันธ์ทุกที่ (นอกจากนี้ฟังก์ชั่นค่าใช้จ่ายอาจไม่ต่อเนื่องและไม่มีอนุพันธ์ใด ๆ เลย) นอกจากนี้คุณยังสามารถคำนวณอนุพันธ์ได้ แต่คุณไม่สามารถแก้สมการเชิงวิเคราะห์ได้ (ตัวอย่างเช่นคิดถึงวิธีแก้x7+x3-52+อีx+ l o g( x +x2) + 1 / x = 0วิเคราะห์? ฉันสามารถบอกคุณได้คำตอบเชิงตัวเลขคือx = 1.4786แต่ไม่ทราบวิธีการวิเคราะห์) เราต้องใช้วิธีการเชิงตัวเลข (ตรวจสอบสาเหตุที่นี่ในกรณีพหุนามAbel Ruffin ทฤษฎีบท )
วิธีการวนซ้ำนั้นใช้งานได้ดีและเข้าใจง่าย สมมติว่าคุณต้องการเพิ่มประสิทธิภาพหนึ่งฟังก์ชั่นแทนการแก้สมการและได้รับคำตอบคุณพยายามปรับปรุงคำตอบของคุณด้วยจำนวนการวนซ้ำ / ขั้นตอนหลังจากการทำซ้ำมากพอคุณจะได้คำตอบใกล้เคียงกับ "คำตอบที่แท้จริง" พูดว่าถ้าคุณใช้แคลคูลัสเพื่อย่อขนาดฉ( x ) =x2คุณจะได้รับโดยตรง x = 0แต่โดยใช้วิธีการเชิงตัวเลขคุณอาจได้รับ x = 1.1234 ×10- 20.
ตอนนี้มันเป็นสิ่งสำคัญที่จะเข้าใจวิธีการทำงานซ้ำเหล่านี้ แนวคิดหลักคือการรู้วิธีอัปเดตพารามิเตอร์อินพุตของคุณเพื่อรับโซลูชันที่ดีขึ้น สมมติว่าคุณต้องการลดฉ(x1,x2) =x21+x22+ |x1+x2| (โปรดทราบว่าฟังก์ชั่นค่าใช้จ่ายนี้ไม่ได้มีความแตกต่างกันไปทุกที่ แต่มีความแตกต่างกันใน "สถานที่ส่วนใหญ่" นี่เป็นสิ่งที่ดีพอสำหรับเราเนื่องจากเรารู้วิธีอัปเดตที่ "สถานที่ส่วนใหญ่") ขณะนี้คุณอยู่ ( 1 , 1 )และค่าใช้จ่ายคือ 4.0ตอนนี้คุณต้องการอัปเดต (x1,x2)เพื่อทำให้ฟังก์ชั่นวัตถุประสงค์มีขนาดเล็กลง คุณจะทำอย่างไร คุณอาจบอกว่าฉันต้องการลดทั้งสองx1 x2แต่ทำไม ในความเป็นจริงคุณมีความหมายโดยใช้แนวคิดของการไล่ระดับสี "เปลี่ยนจำนวนเล็กน้อยxจะเกิดอะไรขึ้น Y" . ใน( 1 , 1 )อนุพันธ์คือ ( 3 , 3 )ดังนั้นการไล่ระดับสีที่เป็นลบจะคูณด้วยอัตราการเรียนรู้ α = 0.001, คือ ( - 0.003 , - 0.003 )ดังนั้นเราจึงอัปเดตโซลูชันของเราจาก 1 , 1 ถึง ( 0.997 , 0.997 ) ซึ่งมีต้นทุนที่ดีกว่า