답변:
다른 질문 에 McLawrence 의 답변 이 매우 도움이된다는 것을 알았 습니다 . 아래에서 재현 :
무게 제한은
max_norm
무엇입니까?
maxnorm(m)
체중의 L2-Norm이을 초과하면m
전체 중량 매트릭스의 크기를로 줄m
입니다. keras 코드 에서 찾을 수 있듯이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
Aditionally,
maxnorm
갖는axis
표준 계산 된 따라 인수. 귀하의 예에서는 축을 지정하지 않으므로 전체 가중치 행렬에 대해 표준이 계산됩니다. 예를 들어,tf
차원 순서를 사용한다고 가정 할 때 모든 컨볼 루션 필터의 표준을 제한하려는 경우 가중치 행렬의 모양은(rows, cols, input_depth, output_depth)
입니다. 기준을 계산하면axis = [0, 1, 2]
각 필터가 주어진 기준으로 제한됩니다.왜해야합니까?
가중치 매트릭스를 직접 제한하는 것은 또 다른 종류의 정규화입니다. 간단한 L2 정규화 용어를 사용하면 손실 함수로 높은 가중치를 페널티합니다. 이 제약 조건을 사용하면 직접 정규화 할 수 있습니다.
keras
코드에 링크 된 것처럼 이것은dropout
레이어 와 함께 특히 잘 작동하는 것 같습니다 . 자세한 내용은 이 백서의 5.1 장을 참조하십시오.
axis=0
됩니다.