giả sử rằng tôi muốn đào tạo một thuật toán hồi quy giảm dần độ dốc ngẫu nhiên bằng cách sử dụng bộ dữ liệu có N mẫu. Vì kích thước của tập dữ liệu là cố định, tôi sẽ sử dụng lại dữ liệu T lần. Ở mỗi lần lặp hoặc "kỷ nguyên", tôi sử dụng mỗi mẫu đào tạo chính xác một lần sau khi sắp xếp lại ngẫu nhiên toàn bộ tập huấn luyện.
Việc triển khai của tôi dựa trên Python và Numpy. Do đó, sử dụng các phép toán vectơ có thể làm giảm đáng kể thời gian tính toán. Việc đưa ra một triển khai véc tơ của việc giảm độ dốc hàng loạt là khá đơn giản. Tuy nhiên, trong trường hợp giảm độ dốc ngẫu nhiên, tôi không thể tìm ra cách tránh vòng lặp bên ngoài lặp lại qua tất cả các mẫu ở mỗi kỷ nguyên.
Có ai biết bất kỳ thực hiện véc tơ của giảm dần độ dốc ngẫu nhiên?
EDIT : Tôi đã được hỏi tại sao tôi muốn sử dụng giảm dần độ dốc trực tuyến nếu kích thước của tập dữ liệu của tôi là cố định.
Từ [1], người ta có thể thấy rằng độ dốc của độ dốc trực tuyến hội tụ chậm hơn độ dốc của độ dốc hàng loạt đến mức tối thiểu của chi phí theo kinh nghiệm. Tuy nhiên, nó hội tụ nhanh hơn đến mức tối thiểu của chi phí dự kiến, đo lường hiệu suất tổng quát hóa. Tôi muốn kiểm tra tác động của các kết quả lý thuyết này trong vấn đề cụ thể của tôi, bằng phương pháp xác nhận chéo. Nếu không có triển khai véc tơ, mã giảm độ dốc trực tuyến của tôi chậm hơn nhiều so với mã giảm dần theo lô. Điều đó làm tăng đáng kể thời gian cần thiết để quá trình xác nhận chéo được hoàn thành.
EDIT : Tôi bao gồm ở đây mã giả của việc thực hiện giảm độ dốc trực tuyến của tôi, theo yêu cầu của ffriend. Tôi đang giải quyết một vấn đề hồi quy.
Method: on-line gradient descent (regression)
Input: X (nxp matrix; each line contains a training sample, represented as a length-p vector), Y (length-n vector; output of the training samples)
Output: A (length-p+1 vector of coefficients)
Initialize coefficients (assign value 0 to all coefficients)
Calculate outputs F
prev_error = inf
error = sum((F-Y)^2)/n
it = 0
while abs(error - prev_error)>ERROR_THRESHOLD and it<=MAX_ITERATIONS:
Randomly shuffle training samples
for each training sample i:
Compute error for training sample i
Update coefficients based on the error above
prev_error = error
Calculate outputs F
error = sum((F-Y)^2)/n
it = it + 1
[1] "Học trực tuyến quy mô lớn", L. Bottou, Y. Le Cunn, NIPS 2003.