น้ำหนักเริ่มต้นที่ดีในเครือข่ายประสาทคืออะไร


68

ฉันเพิ่งได้ยินมาว่าเป็นความคิดที่ดีที่จะเลือกน้ำหนักเริ่มต้นของโครงข่ายประสาทจากช่วงโดยที่คือ จำนวนอินพุตไปยังเซลล์ประสาทที่กำหนด สันนิษฐานว่าเซตเหล่านั้นได้รับการทำให้เป็นมาตรฐาน - หมายถึง 0, ความแปรปรวน 1 (ไม่ทราบว่ามีความสำคัญหรือไม่)d(1d,1d)d

ทำไมนี่เป็นความคิดที่ดี?


ดูวิทยานิพนธ์ของฉันหน้า 81สำหรับภาพรวมเกี่ยวกับเทคนิคการเริ่มต้น
Martin Thoma

คำตอบ:


47

ฉันคิดว่าคุณกำลังใช้เซลล์ประสาทลอจิสติกส์และคุณกำลังฝึกฝนโดยการไล่ระดับสี / การกระจายกลับ

ฟังก์ชันลอจิสติกอยู่ใกล้กับแฟลตสำหรับอินพุตบวกหรือลบขนาดใหญ่ อนุพันธ์ในการป้อนข้อมูลของเป็นเรื่องเกี่ยวกับแต่ในอนุพันธ์เป็นเรื่องเกี่ยวกับ1/22000ซึ่งหมายความว่าหากใส่ของเซลล์ประสาทโลจิสติกเป็นแล้วสำหรับสัญญาณการฝึกอบรมให้เซลล์ประสาทจะได้เรียนรู้เกี่ยวกับครั้งช้าว่าถ้าใส่เป็น21 / 10 10 1 / 22000 10 2200 221/10101/220001022002

หากคุณต้องการให้เซลล์ประสาทเรียนรู้ได้อย่างรวดเร็วคุณต้องสร้างสัญญาณการฝึกขนาดใหญ่ (เช่นด้วยฟังก์ชั่นการสูญเสียข้ามเอนโทรปี) หรือคุณต้องการให้อนุพันธ์มีขนาดใหญ่ ที่จะทำให้อนุพันธ์ขนาดใหญ่ที่คุณตั้งค่าน้ำหนักเริ่มต้นเพื่อให้คุณมักจะได้รับปัจจัยการผลิตในช่วง[-4,4][4,4]

น้ำหนักเริ่มต้นที่คุณให้อาจจะใช่หรือไม่ใช่ มันขึ้นอยู่กับวิธีการอินพุตปกติ หากอินพุตถูกทำให้เป็นมาตรฐานให้มีค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานจากนั้นจะสุ่มผลรวมของคำศัพท์มีเครื่องแบบน้ำหนักบนจะมีค่าเฉลี่ยและความแปรปรวนอิสระของdความน่าจะเป็นที่คุณได้รับผลรวมจากมีค่าน้อย นั่นหมายความว่าเมื่อคุณเพิ่มคุณไม่ได้ทำให้เซลล์ประสาทเริ่มอิ่มตัวดังนั้นพวกเขาจึงไม่เรียนรู้1 d ( - 101d01(1d,1d)0 d[-4,4]d13d[4,4]d

ด้วยอินพุตที่ไม่ได้ทำให้เป็นมาตรฐานน้ำหนักเหล่านั้นอาจไม่มีประสิทธิภาพในการหลีกเลี่ยงความอิ่มตัว


1
โดยพื้นฐานแล้วอย่างน้อยที่สุดเราควรพิจารณาการทำข้อมูลให้เป็นมาตรฐาน คุณช่วยอธิบายได้หรือไม่ว่าเหตุใดค่าเบี่ยงเบนมาตรฐานจะเป็น 1/3 และความน่าจะเป็นของผลรวมอินพุทที่อยู่นอกช่วง <-4,4> น้อยเพียงใด
elmes

1
มีคุณสมบัติพื้นฐานของความแปรปรวนซึ่งบ่งบอกถึงสิ่งนี้: ถ้าและเป็นอิสระแล้วและถ้าและมีความเป็นอิสระและมีความหมายถึงแล้ว(Y) Y Var ( X + Y ) = Var ( X ) + Var ( Y ) X Y 0 Var ( X Y ) = Var ( X ) Var ( Y )XYVar(X+Y)=Var(X)+Var(Y)XY0Var(XY)=Var(X)Var(Y)
Douglas Zare

1
คุณสามารถประเมินความน่าจะเป็นที่ตัวแปรสุ่มจะมีค่าเบี่ยงเบนมาตรฐานอย่างน้อยค่าจากค่าเฉลี่ยโดยใช้อสมการ Chebyshev ในทางปฏิบัติสิ่งนี้ไม่คมชัด แต่ผลลัพธ์ที่แน่นอนขึ้นอยู่กับการแจกแจง 12
Douglas Zare

โดยวิธีการที่ฉันคาดผิด ความแปรปรวนเป็นดังนั้นค่าเบี่ยงเบนมาตรฐานเป็นfrac13} 1313
Douglas Zare

1
"ฟังก์ชั่นลอจิสติกใกล้จะแบนสำหรับอินพุตบวกหรือลบขนาดใหญ่อนุพันธ์ที่อินพุตของ ... " หัวเรื่องที่เกี่ยวข้องไม่ควรเป็นอนุพันธ์ของฟังก์ชันต้นทุนของการถดถอยโลจิสติกส์? ทำไมอินพุตของอนุพันธ์ของฟังก์ชันต้นทุนได้ถูกปรับอัตราส่วนโดยฟังก์ชันโลจิสติกส์ไปที่ (0,1) โดยไม่คำนึงถึงขนาดของน้ำหนักและสัญญาณ
Moobie

28

[1] ตอบคำถาม:

ก่อนอื่นไม่ควรตั้งค่าตุ้มน้ำหนักให้เป็นศูนย์เพื่อให้สมมาตรแตกหักเมื่อทำการ backprogragating:

โดยทั่วไปอคติสามารถเริ่มต้นได้ที่ศูนย์ แต่น้ำหนักจะต้องเริ่มต้นใหม่อย่างระมัดระวังเพื่อแยกสมมาตรระหว่างหน่วยที่ซ่อนอยู่ในชั้นเดียวกัน เนื่องจากหน่วยเอาท์พุทที่แตกต่างกันได้รับสัญญาณการไล่ระดับสีที่แตกต่างกันปัญหาการแตกหักแบบสมมาตรนี้ไม่เกี่ยวข้องกับตุ้มน้ำหนักเอาต์พุต (เป็นหน่วยเอาต์พุต) ซึ่งสามารถตั้งค่าเป็นศูนย์ได้เช่นกัน

กลยุทธ์การเริ่มต้นบางอย่าง:

  • [2] และ [3] แนะนำการปรับสเกลโดยอินเวอร์สของสแควร์รูทของพัดลมอิน
  • Glorot และ Bengio (2010) และบทเรียนการเรียนรู้แบบลึกใช้การผสมผสานระหว่าง fan-in และ fan-out:
    • สำหรับหน่วยไฮเพอร์โบลิกแทนเจนต์: ตัวอย่างชุด (-r, r) ด้วยr=6fan-in+fan-out
    • r=46fan-in+fan-out
  • ในกรณีของ RBMs, Gaussian แบบ zero-Mean ที่มีค่าเบี่ยงเบนมาตรฐานขนาดเล็กประมาณ 0.1 หรือ 0.01 ทำงานได้ดี (Hinton, 2010) เพื่อเริ่มต้นน้ำหนัก
  • การกำหนดค่าเริ่มต้นแบบสุ่มเมทริกซ์แบบมุมฉากเช่นW = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W)นั้นใช้uเป็นเมทริกซ์การเริ่มต้นของคุณ

นอกจากนี้การฝึกอบรมล่วงหน้าที่ไม่มีผู้ดูแลอาจช่วยในบางสถานการณ์:

ทางเลือกที่สำคัญคือควรใช้การฝึกอบรมล่วงหน้าแบบไม่สำรอง (และอัลกอริทึมการเรียนรู้คุณลักษณะที่ไม่ได้รับอนุญาตให้ใช้) เพื่อเริ่มต้นพารามิเตอร์ ในการตั้งค่าส่วนใหญ่เราพบว่าไม่มีการฝึกอบรมล่วงหน้าเพื่อช่วยเหลือและไม่ค่อยจะเจ็บปวด แต่แน่นอนว่ามันหมายถึงเวลาการฝึกอบรมเพิ่มเติมและพารามิเตอร์ไฮเปอร์เพิ่มเติม

ห้องสมุด ANN บางแห่งมีรายการที่น่าสนใจเช่นLasagne :

Constant([val]) Initialize weights with constant value.
Normal([std, mean]) Sample initial weights from the Gaussian distribution.
Uniform([range, std, mean]) Sample initial weights from the uniform distribution.
Glorot(initializer[, gain, c01b])   Glorot weight initialization.
GlorotNormal([gain, c01b])  Glorot with weights sampled from the Normal distribution.
GlorotUniform([gain, c01b]) Glorot with weights sampled from the Uniform distribution.
He(initializer[, gain, c01b])   He weight initialization.
HeNormal([gain, c01b])  He initializer with weights sampled from the Normal distribution.
HeUniform([gain, c01b]) He initializer with weights sampled from the Uniform distribution.
Orthogonal([gain])  Intialize weights as Orthogonal matrix.
Sparse([sparsity, std]) Initialize weights as sparse matrix.

[1] Bengio, Yoshua " คำแนะนำการปฏิบัติสำหรับการฝึกอบรมสถาปัตยกรรมเชิงลึกแบบไล่โทนสี " Neural Networks: Tricks of the Trade Springer Berlin Heidelberg, 2012 437-478

[2] LeCun, Y. , Bottou, L. , Orr, GB และ Muller, K. (1998a) backprop ที่มีประสิทธิภาพ ในโครงข่ายประสาท, เทคนิคของการค้า

[3] Glorot, Xavier และ Yoshua Bengio " ทำความเข้าใจกับความยากลำบากของการฝึกอบรมเครือข่ายนิวรัลไปข้างหน้าอย่างลึกซึ้ง " การประชุมระหว่างประเทศเกี่ยวกับปัญญาประดิษฐ์และสถิติ 2010


2
ฉันต้องการเพิ่มการอ้างอิงที่มีประโยชน์สองรายการ: 1) การเจาะลึกลงไปในวงจรเรียงกระแส: ประสิทธิภาพที่เหนือกว่าระดับของมนุษย์ในการจัดประเภท ImageNet - เกี่ยวกับความสำคัญของการปรับขนาดแบบเปิดใช้งานarxiv.org/abs/1502.01852 2) การเรียนรู้ในเครือข่ายนิวรัลเชิงเส้นลึกarxiv.org/abs/1312.6120 - เมทริกซ์แบบออร์โธปรกติดีกว่าเสียงเกาส์เซียนมาก
old-ufo

1
บรรณาธิการแนะนำการเริ่มต้นสำหรับ sigmoid และไฮเพอร์โบลิกแทนเจนต์ควรเปลี่ยนเพื่อให้ตรงกับกระดาษต้นฉบับ
gung - Reinstate Monica

2
คุณต้องการเก็บการแก้ไขนี้ไว้ไหม Frank? ถ้าไม่คุณสามารถย้อนกลับได้
gung - Reinstate Monica

ฉันต้องคิดถึงบางสิ่ง มันจะบอกว่าในกระดาษ Glorot และ Bengio (2010) ที่พวกเขาแนะนำให้ใช้ 4 เท่าของค่าสมการ 16 เมื่อใช้ฟังก์ชั่นการเปิดใช้งาน logistic sigmoid? สมการที่ 16 ตามมาจากการใช้สมการที่ 12 และความแปรปรวนของการแจกแจงแบบสม่ำเสมอ แต่สมการที่ 16 นั้นมาจากการสมมุติการเปิดใช้งานแบบสมมาตรกับอนุพันธ์ของหน่วยที่ 0 ดังนั้นเช่นฟังก์ชันการเปิดใช้งาน tanh แต่ไม่ใช่ฟังก์ชันการกระตุ้นโลจิสติก นอกจากนี้พวกเขาไม่ได้ทดสอบการเริ่มต้นที่เสนอนี้ด้วย sigmoid โลจิสติก; พวกเขาทดสอบด้วย tanh และ softsign เท่านั้น
Tommy L

10

<xi>=0
<xi2>=1

คำถามคือจะเลือกน้ำหนักอย่างไรดีที่สุด แนวคิดคือการเลือกค่าของน้ำหนักแบบสุ่มหลังจากการกระจายซึ่งช่วยให้กระบวนการปรับให้เหมาะสมมาบรรจบกับโซลูชันที่มีความหมาย

y=g(a)
a=i=0dwixi
<a>=i=0d<wixi>=i=0d<wi><xi>=0
<a2>=(i=0dwixi)(i=0dwixi)=i=0d<wi2><xi2>=σ2d
<wiwj>=δij

<xi2>=10

σααα

นี่เป็นความจริงอย่างยิ่งสำหรับเครือข่ายประสาทลึกที่ซึ่งหน่วยมักจะอิ่มตัวอย่างรวดเร็วเมื่อคุณเพิ่มเลเยอร์ มีเอกสารจำนวนหนึ่งที่เกี่ยวข้องกับคำถามนั้น จุดเริ่มต้นที่ดีอาจเป็น "การทำความเข้าใจกับความยากลำบากในการฝึกอบรมเครือข่ายนิวรัลไปข้างหน้าอย่างลึกซึ้ง" โดย glorot และ bengio
jpmuc

10

เช่นเดียวกับการอัปเดตการเจาะลึกในวงจรเรียงกระแส: ประสิทธิภาพที่เหนือกว่าระดับมนุษย์และการจัดหมวดหมู่ ImageNet โดย He et alแนะนำการเริ่มต้นโดยเฉพาะด้วยการกำหนดค่าเริ่มต้นw = U([0,n]) * sqrt(2.0/n)โดยที่nจำนวนอินพุตของ NN ของคุณ ฉันได้เห็นการเริ่มต้นนี้ใช้ในงานล่าสุดหลายงาน (เช่นเดียวกับ ReLU) พวกเขาแสดงให้เห็นว่าสิ่งนี้เริ่มต้นอย่างไรเพื่อลดอัตราความผิดพลาดได้เร็วกว่า (-1 / n, 1 / n) ที่คุณกล่าวถึง สำหรับคำอธิบายอย่างละเอียดให้ดูกระดาษ แต่นี่เป็นวิธีที่มันบรรจบกันอย่างรวดเร็ว: การบรรจบกันของแบบจำลองขนาดใหญ่ 22 ชั้น


ว้าว! การปรับปรุงที่สำคัญสำหรับฉัน
Thomas W

ไม่ใช่สำหรับอินพุตจำนวนมากแม้ว่า ... ล้มเหลวด้วย MNIST
โทมัส W

โปรดทราบว่าเขาเริ่มต้นได้รับการออกแบบมาโดยเฉพาะสำหรับ (P) ReLUs และบัญชีสำหรับความจริงที่ว่ามันไม่ได้เป็นสมมาตร (ซึ่งเป็นหนึ่งในสมมติฐานในซาเวียร์ - เริ่มต้น) อย่าหลงกลโดยกราฟนี้นอกบริบท!
นาย Tsjolder

5

แนวคิดก็คือคุณต้องการเริ่มต้นน้ำหนักด้วยวิธีที่ช่วยให้มั่นใจว่าการส่งข้อมูลไปข้างหน้าและย้อนกลับที่ดีผ่านเครือข่าย นั่นคือคุณไม่ต้องการให้การเปิดใช้งานลดลงหรือเพิ่มขึ้นอย่างต่อเนื่องในขณะที่คุณดำเนินการผ่านเครือข่าย

ภาพนี้แสดงการเปิดใช้งานของ 5 ReLU Multi-Layer Perceptron ภายใต้กลยุทธ์การเริ่มต้น 3 แบบที่แตกต่างกันหลังจากผ่านหนึ่งครั้งของ MNIST ผ่านเครือข่าย

การเปิดใช้งานใน ReLU MLP ด้วยกลยุทธ์การเริ่มต้นที่แตกต่างกัน

ในทั้งสามกรณีน้ำหนักถูกดึงมาจากการแจกแจงแบบปกติที่มีศูนย์เป็นศูนย์ซึ่งพิจารณาจากค่าเบี่ยงเบนมาตรฐาน คุณจะเห็นได้ว่าหากตุ้มน้ำหนักเริ่มต้นมีขนาดเล็กเกินไป (ค่าเบี่ยงเบนมาตรฐานมีขนาดเล็ก) การเปิดใช้งานจะทำให้หายใจไม่ออกและหากมีขนาดใหญ่เกินไปการเปิดใช้งานจะระเบิด ค่ากลางที่อยู่ทางขวานั้นสามารถพบได้โดยการตั้งค่าตุ้มน้ำหนักซึ่งความแปรปรวนของการเปิดใช้งานและการปรับปรุงการไล่ระดับสีจะยังคงเหมือนเดิมเมื่อคุณผ่านเครือข่าย

ฉันเขียนโพสต์บล็อกเกี่ยวกับการเริ่มต้นน้ำหนักซึ่งมีรายละเอียดเพิ่มเติม แต่แนวคิดพื้นฐานมีดังนี้

x(i)iniw(i)(i+1)ff(s)1

Var(x(i+1))=niVar(x(i))Var(w(i))

Var(x(i+1))=Var(x(i))

Var(w(i))=1ni.

Lxj(i)Δj(i)

Var(Δ(i))=ni+1Var(Δ(i+1))Var(w(i)).

ni=ni+1

Var(w(i))=2ni+ni+1.

N(0,σ)σ=2ni+ni+1U(a,a)a=6ni+ni+1Var(U(a,a))=a2/3

tanhReLUf(s)=ReLU(s)

Var(w(i))=2ni.

3

μB=1mi=1Mxi   and   σB2=1mi=1m(xiμB)2x^i=xiμBσB2+ϵ   and   BN(xi)=γx^i+β
xiBN(xi)x^iγβ

γβx^ixixix^iβγระหว่างการฝึก ดังนั้น Batch Normalization ทำให้การเรียนรู้มีเสถียรภาพ

เป็นผลให้Batch Normalization ช่วยให้การฝึกอบรมเร็วขึ้นโดยใช้อัตราการเรียนรู้ที่สูงขึ้นมากและบรรเทาปัญหาของการเริ่มต้นที่ไม่ดี BN ยังทำให้สามารถใช้การไม่อิ่มตัวเชิงเส้นด้วยการป้องกันเครือข่ายไม่ให้ติดขัดในโหมดความอิ่มตัว โดยสรุปการปรับสภาพแบทช์ให้เป็นรูปแบบที่เปลี่ยนแปลงได้ซึ่งนำเสนอการเปิดใช้งานปกติสู่เครือข่าย ในทางปฏิบัติชั้น BN สามารถแทรกทันทีหลังจากชั้นที่เชื่อมต่ออย่างสมบูรณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.