Hạn chế maxnorm là gì? Nó hữu ích như thế nào trong Mạng nơ ron kết hợp?


Câu trả lời:


16

Từ http://cs231n.github.io/neural-networks-2/#reg :

Hạn chế định mức tối đa. Một hình thức chính quy hóa khác là thực thi một giới hạn trên tuyệt đối về độ lớn của vectơ trọng lượng cho mỗi nơ ron và sử dụng độ dốc dốc được chiếu để thực thi ràng buộc. Trong thực tế, điều này tương ứng với việc thực hiện cập nhật tham số như bình thường và sau đó thực thi ràng buộc bằng cách kẹp vectơ trọng lượng của mọi nơ ron để thỏa mãnCác giá trị tiêu biểu của là theo đơn đặt hàng 3 hoặc 4. Một số người báo cáo các cải tiến khi sử dụng hình thức chính quy này. Một trong những đặc tính hấp dẫn của nó là mạng không thể phát nổ được ngay cả khi tốc độ học tập được đặt quá cao vì các cập nhật luôn bị giới hạn.ww2<c.c


8

Tôi đã tìm thấy một câu trả lời của McLawrence trong một câu hỏi khác rất hữu ích. Sao chép dưới đây:

Một hạn chế trọng lượng max_normlàm gì?

maxnorm(m)sẽ, nếu L2-Norm về trọng lượng của bạn vượt quá m, quy mô toàn bộ ma trận trọng lượng của bạn theo một yếu tố làm giảm chỉ tiêu m. Như bạn có thể tìm thấy trong mã máy ảnh trong class MaxNorm(Constraint):

def __call__(self, w):
    norms = K.sqrt(K.sum(K.square(w), axis=self.axis, keepdims=True))
    desired = K.clip(norms, 0, self.max_value)
    w *= (desired / (K.epsilon() + norms))
    return w

Thông thường, maxnormcó một axisđối số, theo đó định mức được tính toán. Trong ví dụ của bạn, bạn không chỉ định một trục, do đó, định mức được tính trên toàn bộ ma trận trọng số. Ví dụ: nếu bạn muốn giới hạn định mức của mọi bộ lọc tích chập, giả sử rằng bạn đang sử dụng tfthứ tự thứ nguyên, ma trận trọng số sẽ có hình dạng (rows, cols, input_depth, output_depth). Tính toán định mức axis = [0, 1, 2]sẽ hạn chế mỗi bộ lọc theo định mức đã cho.

Tại sao phải làm điều đó?

Hạn chế ma trận trọng lượng trực tiếp là một loại chính quy. Nếu bạn sử dụng thuật ngữ chính quy L2 đơn giản, bạn sẽ phạt trọng số cao với chức năng mất của bạn. Với sự hạn chế này, bạn thường xuyên trực tiếp. Như được liên kết trong kerasmã, điều này dường như hoạt động đặc biệt tốt khi kết hợp với một dropoutlớp. Thêm thông tin xem chương 5.1 trong bài viết này


Câu trả lời hay, nhưng hãy cẩn thận: "Trong ví dụ của bạn, bạn không chỉ định một trục, do đó, định mức được tính trên toàn bộ ma trận trọng số." - Điều này dường như không đúng (ít nhất là bây giờ). Thay vào đó, định mức được tính theo mặc định axis=0.
Bobson Dugnutt

Tôi đồng ý, định mức tối đa được lấy là độ dài của các trọng số mà quạt vào một nút trong một lớp ẩn, nghĩa là, . Ngoài ra, bạn có nhận thấy rằng để chuẩn hóa bỏ học, định mức tối đa đã được sử dụng cho tất cả các lần chạy (xem đoạn cuối trên trang 1934 của cs.toronto.edu/~rsalakhu/ con / sastastava14a.pdf ). ||w||
NXG Logic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.