นี่คือตัวอย่างรหัส keras ที่ใช้:
from keras.constraints import max_norm
model.add(Convolution2D(32, 3, 3, input_shape=(3, 32, 32),
border_mode='same', activation='relu', kernel_constraint=max_norm(3)))
นี่คือตัวอย่างรหัส keras ที่ใช้:
from keras.constraints import max_norm
model.add(Convolution2D(32, 3, 3, input_shape=(3, 32, 32),
border_mode='same', activation='relu', kernel_constraint=max_norm(3)))
คำตอบ:
จากhttp://cs231n.github.io/neural-networks-2/#reg :
ข้อ จำกัด บรรทัดฐานสูงสุด การทำให้เป็นมาตรฐานอีกรูปแบบหนึ่งคือการบังคับใช้ขอบเขตบนแบบสัมบูรณ์บนขนาดของเวกเตอร์น้ำหนักสำหรับทุกเซลล์ประสาทและใช้การไล่ระดับสีที่คาดการณ์ไว้เพื่อบังคับใช้ข้อ จำกัด ในทางปฏิบัติสิ่งนี้สอดคล้องกับการดำเนินการอัปเดตพารามิเตอร์ตามปกติแล้วบังคับใช้ข้อ จำกัด โดยการจับเวกเตอร์น้ำหนักของทุกเซลล์ประสาทเพื่อตอบสนองค่าทั่วไปของอยู่ในคำสั่งของ 3 หรือ 4 บางคนรายงานการปรับปรุงเมื่อใช้รูปแบบของการทำให้เป็นปกติ หนึ่งในคุณสมบัติที่น่าดึงดูดของมันคือเครือข่ายไม่สามารถ "ระเบิด" แม้ว่าอัตราการเรียนรู้จะถูกตั้งค่าสูงเกินไปเนื่องจากการอัปเดตนั้นจะถูก จำกัด ขอบเขตเสมอ
ฉันพบคำตอบของ McLawrenceในคำถามอื่นที่มีประโยชน์มาก ทำซ้ำด้านล่าง:
น้ำหนัก จำกัด
max_norm
ทำอะไรได้บ้าง?
maxnorm(m)
จะถ้า L2-บรรทัดฐานของน้ำหนักเกิน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
ตามปกติแล้ว
maxnorm
จะมีการaxis
โต้แย้งตามที่มีการคำนวณบรรทัดฐาน ในตัวอย่างของคุณคุณไม่ได้ระบุแกนดังนั้นค่าพื้นฐานจะถูกคำนวณผ่านเมทริกซ์น้ำหนักทั้งหมด ตัวอย่างเช่นถ้าคุณต้องการที่จะ จำกัด บรรทัดฐานของทุกกรองสับสนสมมติว่าคุณกำลังใช้การสั่งซื้อมิติเมทริกซ์น้ำหนักจะมีรูปร่างtf
(rows, cols, input_depth, output_depth)
การคำนวณบรรทัดฐานเหนือaxis = [0, 1, 2]
จะ จำกัด ตัวกรองแต่ละตัวให้เป็นบรรทัดฐานที่กำหนดทำไมต้องทำ?
การ จำกัด เมทริกซ์น้ำหนักโดยตรงเป็นอีกวิธีหนึ่งในการทำให้เป็นมาตรฐาน หากคุณใช้คำศัพท์ธรรมดา L2 อย่างสม่ำเสมอคุณจะลงโทษน้ำหนักที่สูงด้วยฟังก์ชันการสูญเสียของคุณ ด้วยข้อ จำกัด นี้คุณทำให้เป็นมาตรฐานโดยตรง ขณะที่ยังมีการเชื่อมโยงใน
keras
รหัสนี้ดูเหมือนว่าจะทำงานได้ดีโดยเฉพาะในการรวมกันกับdropout
ชั้น ข้อมูลเพิ่มเติมดูบทที่ 5.1 ในเอกสารนี้
axis=0
แต่บรรทัดฐานที่มีการคำนวณแล้วกว่าเริ่มต้น