Ma trận đạo hàm bậc hai Hessian và phân tích độ cong (Hessian Matrix)
Ma trận Hessian H ∈ RD × D của hàm vô hướng khả vi hai lần f: RD → R chứa tất cả các đạo hàm riêng bậc 2:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: numerical-gradient-finite-differences, jacobian-matrix-vector-valued-function.
Nội dung đề bài
Mô tả bài toán
Ma trận Hessian H ∈ RD × D của hàm vô hướng khả vi hai lần f: RD → R chứa tất cả các đạo hàm riêng bậc 2: Hi, j = ∂2 f∂ xi ∂ xj Theo định lý Schwarz, nếu các đạo hàm bậc 2 liên tục thì H là ma trận đối xứng (H = HT). Giá trị riêng (eigenvalues) của H xác định tính chất cực trị cục bộ:
- Mọi giá trị riêng λi > 0: H xác định dương ⇒ điểm cực tiểu cục bộ (local minimum), hàm lồi cục bộ.
- Mọi λi < 0: H xác định âm ⇒ điểm cực đại cục bộ (local maximum).
- Có cả λi > 0 và λj < 0: điểm yên ngựa (saddle point) - trở ngại lớn nhất trong huấn luyện Deep Learning!
Hãy viết hàm compute_hessian_and_curvature(f, x, h=1e-4):
- Tính ma trận Hessian H ∈ RD × D bằng sai phân hữu hạn cấp hai:
Hi, i ≈ f(x + h ei) - 2f(x) + f(x - h ei)h2 Hi, j ≈ f(x + h ei + h ej) - f(x + h ei - h ej) - f(x - h ei + h ej) + f(x - h ei - h ej)4 h2 (i ≠ j)
- Đảm bảo đối xứng: H = 12(H + HT).
- Tính các giá trị riêng bằng
np.linalg.eigvalsh(H). - Phân loại độ cong thành 1 trong 4 chuỗi:
"MINIMUM","MAXIMUM","SADDLE","INCONCLUSIVE". - Trả về
(H: np.ndarray, eigenvalues: np.ndarray, curvature_type: str).
Input
- Hàm
compute_hessian_and_curvature(f,x,h): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
compute_hessian_and_curvature: Trả về kết quả kiểuTuple[np.ndarray, np.ndarray, str]theo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
f = lambda v: v[0] ** 2 + 2.0 * v[1] ** 2
x = np.array([0.0, 0.0])
H, evals, ctype = compute_hessian_and_curvature(f, x)Output
([[2., 0.],
[0., 4.]], [2., 4.], 'MINIMUM')Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
f = lambda v: v[0] ** 2 - v[1] ** 2
x = np.array([0.0, 0.0])
H, evals, ctype = compute_hessian_and_curvature(f, x)Output
([[ 2., 0.],
[ 0., -2.]], [-2., 2.], 'SADDLE')Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
