คำตอบสั้น ๆ :
ใช่การดำเนินการถดถอยเชิงเส้นแบบขนานนั้นเสร็จสิ้นแล้ว ตัวอย่างเช่น Xiangrui Meng et al (2016) สำหรับการเรียนรู้ของเครื่องใน Apache Spark วิธีการทำงานคือการใช้การไล่ระดับสีแบบสุ่ม (SGD) ในส่วนที่ 3 คุณสมบัติหลักผู้เขียนกล่าวถึง:
โมเดลเชิงเส้นทั่วไปจะได้เรียนรู้ผ่านอัลกอริธึมการออปติไมซ์ซึ่งทำการคำนวณแบบไล่ระดับสีแบบขนานโดยใช้ไลบรารี่พีชคณิตเชิงเส้นที่รวดเร็วในภาษาซีพลัสพลัสสำหรับการคำนวณของคนงาน
ตัวอย่างเกี่ยวกับการทำงานของ SGD สามารถพบได้ในคำตอบของฉันที่นี่: วิธีสืบเชื้อสายการไล่ระดับสีแบบสุ่มสามารถประหยัดเวลาได้อย่างไรเมื่อเปรียบเทียบกับการไล่ระดับสีแบบมาตรฐาน
คำตอบยาว:
หมายเหตุสัญกรณ์ไม่สอดคล้องกับลิงค์ที่ฉันให้ฉันรู้สึกว่าสัญกรณ์เมทริกซ์ดีกว่าในคำถามนี้
เพื่อทำการถดถอยเชิงเส้นที่เราพยายามทำ
minimize ∥Xβ−y∥2
อนุพันธ์คือ
2XT(Xβ−y)
ในการตั้งค่าข้อมูลขนาดเล็กเราสามารถตั้งค่าอนุพันธ์เป็นและแก้ได้โดยตรง (เช่นการสลายตัวของ QR ในอาร์) ในการตั้งค่าข้อมูลขนาดใหญ่ data matrixนั้นใหญ่เกินไปที่จะเก็บไว้ในหน่วยความจำและอาจแก้ไขได้ยาก (ฉันไม่คุ้นเคยกับวิธีการแยกสลาย QR หรือ Cholesky สำหรับการฝึกอบรมขนาดใหญ่)0X
วิธีหนึ่งในการทำให้ขนานนี้คือการพยายามใช้วิธีวนซ้ำ: การไล่ระดับสีแบบสุ่มสุ่มซึ่งเราสามารถประมาณการไล่ระดับสีโดยใช้ชุดย่อยของข้อมูล (ถ้าเราใช้ ,เพื่อเป็นตัวแทนของชุดย่อยของข้อมูลการไล่ระดับสีสามารถประมาณได้โดยและเราสามารถอัปเดตด้วยการไล่ระดับสีโดยประมาณ)Xsys2XTs(Xsβ−ys)β
นอกจากนี้สำหรับสถิติเราสามารถคำนวณสำหรับข้อมูลทั้งหมดในแบบขนานหรือใกล้เคียงโดยใช้ชุดย่อยของข้อมูลR2R2
สัญชาตญาณในการทำงาน (mapreduce กระบวนทัศน์):
ฉันพูดประมาณโดยใช้ชุดย่อย; สัญชาตญาณว่าทำไมงานนี้สามารถอธิบายได้ในตัวอย่างต่อไปนี้: สมมติว่าฉันมีจุดข้อมูล 100 พันล้านจุดและเราต้องการคำนวณค่าเฉลี่ยของจุดข้อมูลทั้งหมด สมมติว่าการดำเนินการดังกล่าวใช้เวลานานมากและยิ่งกว่านั้นข้อมูลทั้งหมดไม่สามารถเก็บไว้ในหน่วยความจำได้
สิ่งที่เราทำได้คือเอาเซ็ตย่อยพูด 1 พันล้านรายการแล้วคำนวณค่าเฉลี่ยของสิ่งเหล่านี้ การประมาณที่เกิดขึ้นจึงไม่ควรอยู่ห่างจากความจริง (เช่นใช้ข้อมูลทั้งหมด)
ในการขนานเราสามารถใช้คอมพิวเตอร์ 100 เครื่องโดยแต่ละเครื่องใช้ชุดย่อยของจุดข้อมูล 1 พันล้านชุดที่แตกต่างกันและคำนวณค่าเฉลี่ยของคอมพิวเตอร์เหล่านี้ (โดยทั่วไปเรียกว่าขั้นตอน MAP) ในที่สุดเรียกใช้ค่าเฉลี่ยอื่นในจำนวน 100 เหล่านี้ (หรือที่รู้จักว่าขั้นตอนการลดซ้ำ)
หมายเหตุ "กระบวนทัศน์ mapreduce" จะทำงานได้ดีในบางกรณี แต่อาจไม่ดีในบางกรณี สำหรับตัวอย่างการดำเนินการ "เฉลี่ย" ที่กล่าวถึงก่อนหน้านี้นั้นง่ายมากเพราะเรารู้ , ( สมมติว่าความยาวของและเท่ากัน) สำหรับวิธีการทำซ้ำบางอย่างเช่นการทำซ้ำปัจจุบันขึ้นอยู่กับผลการทำซ้ำก่อนหน้านี้มันยากที่จะขนาน โคตรการไล่ระดับสีแบบสุ่มแก้ปัญหานี้โดยการประมาณการไล่ระดับสีโดยใช้ชุดย่อยของข้อมูล และรายละเอียดสามารถพบได้ในคำตอบของ @ user20160mean(<x,y>)=mean(x)+mean(y)xy
อ้างอิง:
เซียงรุยเหมิงและคณะ (2016) MLlib: การเรียนรู้ของเครื่องใน Apache Spark