ทำไมการไล่ระดับสีที่ไม่มีประสิทธิภาพสำหรับชุดข้อมูลขนาดใหญ่?


13

สมมติว่าชุดข้อมูลของเรามีตัวอย่าง 1 ล้านตัวอย่างเช่นและเราต้องการใช้การไล่ระดับสีแบบไล่ระดับเพื่อทำการโลจิสติกหรือการถดถอยเชิงเส้นบนชุดข้อมูลเหล่านี้x1,,x106

อะไรคือวิธีการไล่ระดับสีที่ทำให้มันไม่มีประสิทธิภาพ?

จำได้ว่าขั้นตอนการไล่ระดับสีในเวลามอบให้โดย:t

wt+1=wt+ηtf(x)

โดยที่คือฟังก์ชันการสูญเสียf

ฉันไม่เห็นอะไรผิดปกติกับขั้นตอนข้างต้นที่ทำให้อัลกอริทึมไม่มีประสิทธิภาพ มันเป็นการคำนวณของหรือไม่? การดำเนินการนี้ไม่สามารถคำนวณได้ล่วงหน้าเช่นคำนวณแล้วและประเมินได้ที่แต่ละจุดข้อมูลff(x) xฉัน?fxxi?


1
ไม่มีประสิทธิภาพสัมพันธ์กับ ... ? อย่างน้อยกำลังสองที่ไม่มีประสิทธิภาพสำหรับชุดข้อมูลขนาดใหญ่ คุณต้องการสัญกรณ์ O ขนาดใหญ่ที่จะมีความคิดที่มีความหมายเกี่ยวกับสิ่งที่ทำกับอัลกอริทึม ไม่ใช่ว่าอัลกอริทึมของ GD ทั้งหมดจะมี O. ขนาดใหญ่เท่ากันหรือไม่n
AdamO

คำตอบ:


7

มันจะช่วยถ้าคุณให้บริบทที่อ้างว่าการไล่ระดับสีที่ไม่มีประสิทธิภาพ ไม่มีประสิทธิภาพสัมพันธ์กับอะไร

ฉันเดาว่าบริบทที่หายไปที่นี่คือการเปรียบเทียบกับการไล่ระดับสีแบบสุ่มหรือการไล่ระดับแบทช์ในการเรียนรู้ของเครื่อง ต่อไปนี้เป็นวิธีตอบคำถามในบริบทนี้ คุณกำลังปรับพารามิเตอร์ของโมเดลให้เหมาะสมแม้กระทั่งพารามิเตอร์หลายมิติ ดังนั้นคุณมีฟังก์ชั่นค่าใช้จ่ายโดยที่ - ข้อมูลของคุณและ - เวกเตอร์ของพารามิเตอร์และฟังก์ชัน - สูญเสีย ในการลดค่าใช้จ่ายนี้ให้น้อยที่สุดคุณใช้การไล่ระดับสีตามพารามิเตอร์ : i=1nL(xi|Θ)xiΘL() θj

θji=1nL(Θ|xi)

ดังนั้นคุณจะเห็นว่าคุณต้องการที่จะได้รับผลบวกมากกว่าทุกข้อมูลn} นี่เป็นโชคร้ายเพราะหมายความว่าคุณวนลูปผ่านข้อมูลสำหรับการไล่ระดับสีในแต่ละขั้นตอน นั่นคือวิธีที่การไล่ระดับสีแบบแบทช์และสุ่มสุ่มเกิดขึ้น: ถ้าเราสุ่มตัวอย่างจากชุดข้อมูลและคำนวณการไล่ระดับสีบนตัวอย่างไม่ใช่ชุดเต็ม? นี่เป็นจำนวนของการสังเกตในตัวอย่างsดังนั้นหากตัวอย่างของคุณคือ 1/100 ของชุดทั้งหมดคุณจะเพิ่มความเร็วในการคำนวณได้ถึง 100 เท่า! เห็นได้ชัดว่าสิ่งนี้แนะนำเสียงซึ่งจะช่วยเพิ่มการเรียนรู้ แต่เสียงจะลดลงในอัตราxi=1,,n

θjk=1nsL(Θ|xk)
nssnในขณะที่จำนวนการคำนวณเพิ่มขึ้นที่ดังนั้นเคล็ดลับนี้อาจใช้งานได้n

อีกวิธีหนึ่งคือรอจนกว่าจะคำนวณผลรวมทั้งหมดคุณสามารถแยกสิ่งนี้ออกเป็นแบทช์และทำขั้นตอนสำหรับแต่ละแบทช์{n_s} วิธีนี้คุณจะทำขั้นตอน M ตามเวลาที่คำนวณผลรวมของชุดข้อมูลทั้งหมด สิ่งเหล่านี้จะเป็นขั้นตอนที่น่าดู แต่เสียงจะถูกยกเลิกเมื่อเวลาผ่านไปi=1ns=1Mis=1ns


19

มีสองวิธีในการสืบเชื้อสายการไล่ระดับสีอาจไม่มีประสิทธิภาพ ที่น่าสนใจพวกเขาแต่ละคนนำไปสู่วิธีการของตนเองในการแก้ไขซึ่งเป็นวิธีแก้ปัญหาที่ตรงกันข้าม ปัญหาสองประการคือ:

(1) ต้องมีการอัพเดทโคตรลาดมากเกินไป

(2) แต่ละขั้นตอนการไล่ระดับสีไล่ระดับนั้นแพงเกินไป

ในเรื่องที่เกี่ยวกับ (1) การเปรียบเทียบการไล่ระดับสีไล่ระดับกับวิธีการที่คำนึงถึงข้อมูลเกี่ยวกับตราสารอนุพันธ์ลำดับที่สองนั้นการไล่ระดับสีแบบลาดเอียงมีแนวโน้มที่จะไม่มีประสิทธิภาพสูงในการปรับปรุงการสูญเสียในแต่ละรอบ วิธีการมาตรฐานมากวิธีของนิวตันโดยทั่วไปใช้การวนซ้ำน้อยกว่ามากในการรวมกันเช่นสำหรับการถดถอยโลจิสติกการทำซ้ำ 10 ครั้งของวิธีการของนิวตันมักจะมีการสูญเสียต่ำกว่าวิธีแก้ปัญหาที่กำหนดโดย สำหรับการถดถอยเชิงเส้นนี่ยิ่งรุนแรงมากขึ้น มีวิธีแก้ปัญหาแบบปิด! อย่างไรก็ตามเนื่องจากจำนวนผู้ทำนายมีขนาดใหญ่มาก (เช่น 500+) วิธีของนิวตัน / การแก้ปัญหาโดยตรงสำหรับการถดถอยเชิงเส้นอาจมีราคาแพงเกินไปต่อการทำซ้ำ เนื่องจากจำนวนของการดำเนินการเมทริกซ์ที่ต้องการในขณะที่การไล่ระดับสีจะมีต้นทุนต่อการทำซ้ำน้อยกว่ามาก

ในเรื่องที่เกี่ยวกับ (2) เป็นไปได้ที่จะมีชุดข้อมูลขนาดใหญ่ดังกล่าวว่าการคำนวณการไล่ระดับสีซ้ำแต่ละครั้งมีราคาแพงเกินไปที่จะคำนวณ การคำนวณการไล่ระดับสีจะต้องใช้การดำเนินการ ( = ขนาดตัวอย่าง, = จำนวนโควาเรีย) ในขณะที่ไม่ได้เป็นปัญหาสำหรับคอมพิวเตอร์ที่ทันสมัยสำหรับค่าแน่นอนว่าบางอย่างเช่น ,จะเป็น ในกรณีนี้วิธีการที่ใกล้เคียงกับที่ดัดแปลงมาจากส่วนย่อยขนาดเล็กของข้อมูลที่มีความน่าสนใจมากขึ้นเช่นโคตรลาดสุ่มO(nk)nkn=106k<100n=1012k=103

ฉันบอกว่าการแก้ไขเหล่านี้เกือบจะตรงกันข้ามในสิ่งที่วิธีของนิวตันนั้นมีราคาแพงกว่า แต่มีประสิทธิภาพมากกว่า (ในแง่ของการเปลี่ยนแปลงในการสูญเสีย) ต่อการอัปเดตในขณะที่การไล่ระดับสีแบบสุ่ม


ขอบคุณสำหรับคำตอบที่น่าอัศจรรย์ คุณหมายถึงอะไรโดย = จำนวนผู้ร่วมแข่งขัน? ฉันไม่คุ้นเคยกับคำศัพท์นี้k
คาร์ลอส - พังพอน - อันตราย

2
@Learningonepageatatime: covariates = ตัวแปรตัวทำนาย
หน้าผา AB

10

ก่อนอื่นให้ฉันแนะนำการปรับปรุงสัญกรณ์ของคุณ โดยเฉพาะอย่างยิ่งขอแสดงฟังก์ชั่นการสูญเสียโดยมากกว่า(x) การใช้ตัวอักษรเป็นความชอบส่วนตัวของฉันเพราะมันทำให้ฉันนึกถึงว่าเรากำลังติดต่อกับL oss การเปลี่ยนแปลงที่สำคัญมากขึ้นจะทำให้มันชัดเจนว่าการสูญเสียเป็นหน้าที่ของน้ำหนักมากกว่าข้อมูลxที่สำคัญการไล่ระดับสีเป็นส่วนที่เกี่ยวกับไม่xดังนั้น ที่คือมิติของคุณ ข้อมูล.L(w)f(x)LwxwxD

L(w)=(Lw1,,LwD),
D

แม้จะมีความจริงที่ว่าเราควรคิดของการสูญเสียเป็นหน้าที่ของน้ำหนักที่ , ฟังก์ชั่นการสูญเสียใด ๆ ที่เหมาะสมจะยังคงขึ้นอยู่กับชุดข้อมูลทั้งหมด (ถ้ามันไม่ได้มันจะเป็นไปไม่ได้ที่จะเรียนรู้อะไรจากข้อมูล! ) ตัวอย่างเช่นในการถดถอยเชิงเส้นเรามักใช้ฟังก์ชันการสูญเสียผลรวมกำลังสอง ดังนั้นการประเมินผลการไล่ระดับสีสำหรับชุดหนึ่งของน้ำหนักจะต้องมีผลรวมทั้งหมดกว่าคะแนนในชุดข้อมูลxถ้าทุกขั้นตอนที่เพิ่มขึ้นในการเพิ่มประสิทธิภาพการไล่ระดับสีแบบไล่ระดับจะต้องใช้ในการดำเนินการหนึ่งล้านครั้งซึ่งมีราคาค่อนข้างแพงx L ( W ) = N Σฉัน= 1 ( Y ฉัน - W T x ฉัน) 2 L ( w ) w N x N = 10 6wx

L(w)=i=1N(yiwTxi)2.
L(w)wNxN=106

3

คำตอบสั้น ๆ : การคำนวณการไล่ระดับสีจำเป็นต้องรวมจุดข้อมูลทั้งหมด หากเรามีข้อมูลจำนวนมากก็จะใช้เวลานาน

ฉันมีคำตอบโดยละเอียดที่นี่

โคตรการไล่ระดับสีแบบสุ่มสามารถประหยัดเวลาได้อย่างไรเมื่อเปรียบเทียบกับการไล่ระดับสีแบบมาตรฐาน


ในทางกลับกันโปรดจำไว้เสมอว่ามีวิธีการโดยตรงนอกเหนือจากวิธีการวนซ้ำ (การไล่ระดับสีที่เหมาะสม) หากเราต้องการแก้ปัญหาที่มีกำลังสองน้อยที่สุดวิธีการโดยตรงอาจมีประสิทธิภาพสูงสุด ตัวอย่างเช่นการย่อยสลาย QR หากเราไม่มีคุณสมบัติมากเกินไปมันเร็วมาก

เมื่อคุณตรวจสอบมันอาจทำให้คุณประหลาดใจ: 5 ล้านจุดข้อมูลด้วย 2 คุณสมบัติการแก้การถดถอยเชิงเส้น / สี่เหลี่ยมน้อยใช้เวลาสองสามวินาที!

x=matrix(runif(1e7),ncol=2)
y=runif(5e6)
start_time <- Sys.time()
lm(y~x)
end_time <- Sys.time()
end_time - start_time
# Time difference of 4.299081 secs

1

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

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