สัญชาตญาณเบื้องหลัง Boltzmann เครื่อง จำกัด (RBM)


15

ฉันผ่านหลักสูตร Neural Networks ของ Geoff Hinton ใน Coursera และผ่านการแนะนำเครื่องจักร boltzmann ที่ จำกัดแต่ฉันก็ยังไม่เข้าใจสัญชาตญาณของ RBMs

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

เมื่อเพิ่มด้านบนฉันไม่แน่ใจว่าฟังก์ชันความน่าจะเป็นมีไว้เพื่ออะไร?


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

สิ่งเดียวที่เข้ามาในหัวคือมีสามขั้นตอนคือขั้นตอนแรกบวกจากนั้นลบด้านที่ตามมาด้วยการสร้างน้ำหนัก แต่แล้วพลังงานและความน่าจะเป็นเป็นอย่างไร การใช้ที่นี่คืออะไร และกี่ครั้งที่เราต้องทำกระบวนการนี้ (เฟสบวก -> เฟสลบ> การสร้างน้ำหนักใหม่)
Born2Code

คำตอบ:


5

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

RBM มีเซลล์ประสาทสองชุดที่แตกต่างกันซึ่งมองเห็นและซ่อนอยู่ฉันจะแสดงมันเป็นและตามลำดับ ด้วยการกำหนดค่าเฉพาะของและเราได้แมปพื้นที่ความน่าจะเป็นเอชวีเอชvhvh

p(v,h)=eE(v,h)Z

มีสองสามสิ่งที่จะกำหนดเพิ่มเติม ฟังก์ชั่นตัวแทนเราใช้ในการ map จากการกำหนดค่าเฉพาะพื้นที่น่าจะเรียกว่าฟังก์ชั่นการใช้พลังงาน(วีเอช) คงเป็นปัจจัยการฟื้นฟูเพื่อให้มั่นใจว่าเราจริง map ไปยังพื้นที่ความน่าจะเป็น ทีนี้มาถึงสิ่งที่เรากำลังมองหา ความน่าจะเป็นของชุดเซลล์ประสาทที่มองเห็นได้กล่าวอีกนัยหนึ่งคือความน่าจะเป็นของข้อมูลของเรา Z Z = v V h H e - E ( v , h ) p ( v ) = h H p ( v , h ) = h H e - e ( v , h )E(v,h)Z

Z=vVhHeE(v,h)
p(v)=hHp(v,h)=hHeE(v,h)vVhHeE(v,h)

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

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

log(p(v))=log[hHeE(v,h)]log[vVhHeE(v,h)]
ลองไล่ระดับสีเทียบกับ paremeters ในp(v)

log(p(v))θ=1hHeE(v,h)hHeE(v,h)E(v,h)θ+1vVhHeE(v,h)vVhHeE(v,h)E(v,h)θ

ตอนนี้ฉันทำสิ่งนี้ลงบนกระดาษและเขียนสมการกึ่งสุดท้ายลงเพื่อไม่ให้เปลืองเนื้อที่บนไซต์นี้ ฉันแนะนำให้คุณหาสมการเหล่านี้ด้วยตัวเอง ทีนี้ฉันจะเขียนสมการลงไปเพื่อช่วยในการสืบสานของเรา โปรดทราบว่า: ,และZp(v,h)=eE(v,h)p(v)=hHp(v,h)p(h|v)=p(v,h)p(h)

log(p(v))θ=1p(v)hHp(v,h)E(v,h)θ+vVhHp(v,h)E(v,h)θlog(p(v))θ=hHp(h|v)E(v,h)θ+vVhHp(v,h)E(v,h)θ

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

หมายเหตุเกี่ยวกับฟังก์ชั่นพลังงานและการสุ่มของเซลล์ประสาท

อย่างที่คุณเห็นด้านบนในที่มาของฉันฉันออกจากนิยามของฟังก์ชันพลังงานค่อนข้างคลุมเครือ และเหตุผลในการทำเช่นนั้นก็คือ RBM รุ่นต่าง ๆ ใช้ฟังก์ชันพลังงานต่าง ๆ สิ่งที่ฮินตันอธิบายไว้ในการบรรยายที่เชื่อมโยงข้างต้นและแสดงโดย @ Laurens-Meeus คือ:

E(v,h)=aTvbThvTWh.

มันอาจจะง่ายกว่าที่จะให้เหตุผลเกี่ยวกับเงื่อนไขการไล่ระดับสีด้านบนผ่านแบบฟอร์มการคาดการณ์

log(p(v))θ=Ep(h|v)E(v,h)θ+Ep(v,h)E(v,h)θ

ความคาดหวังของเทอมแรกนั้นง่ายมากในการคำนวณและนั่นคืออัจฉริยะที่อยู่เบื้องหลัง RBM โดยการ จำกัด การเชื่อมต่อความคาดหวังตามเงื่อนไขเพียงแค่กลายเป็นการแพร่กระจายไปข้างหน้าของ RBM กับหน่วยที่มองเห็นหนีบ นี่คือช่วงการปลุกที่เรียกว่าในเครื่อง Boltzmann ตอนนี้การคำนวณระยะที่สองนั้นยากกว่ามากและโดยปกติแล้ววิธีการของมอนติคาร์โลจะถูกนำมาใช้เพื่อทำเช่นนั้น เขียนการไล่ระดับสีโดยเฉลี่ยของการวิ่ง Monte Carlo

log(p(v))θE(v,h)θp(h|v)+E(v,h)θp(v,h)

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


เราจะสร้างไบนารีเลเยอร์ที่ซ่อนอยู่ได้อย่างไร Bcoz หลังจากการใช้งานฟังก์ชั่นการเปิดใช้งานเราจะได้รับค่าในช่วงระหว่าง 0 ถึง 1
Born2Code

โดยปกติจะทำโดยการเปิดใช้งานซ้ำอีกครั้ง อะไรก็ตามที่สูงกว่า 0.5 จะกลายเป็น 1 สิ่งใดด้านล่างจะเป็นศูนย์
Armen Aghajanyan

แต่ในลิงค์นี้ในส่วนที่ 3.1: ฮินตันได้ระบุว่า "หน่วยที่ซ่อนอยู่จะเปิดขึ้นหากความน่าจะเป็นนี้มากกว่าตัวเลขสุ่มที่กระจายอย่างสม่ำเสมอระหว่าง 0 ถึง 1" สิ่งนี้หมายความว่าอย่างไร และในลิงค์นี้พวกเขาพูดว่า "จากนั้นหน่วย jth จะเปิดถ้าเลือกสุ่มหมายเลขสุ่มระหว่าง 0 ถึง 1 เราพบว่าค่าของมันน้อยกว่า sig [j] มิฉะนั้นจะปิด" ฉันไม่ได้รับสิ่งนี้
Born2Code

????? จะบอกได้อย่างไรว่าหน่วยนั้นเปิดหรือปิด?
Born2Code

ฉันได้เพิ่มการแก้ไข ฉันขอแนะนำให้อ่านวิธีการมอนติคาร์โลเนื่องจากความคงตัวของอัลกอริทึมนี้มาจากที่นั่น
Armen Aghajanyan

5

นอกเหนือจากคำตอบที่มีอยู่แล้วฉันต้องการพูดคุยเกี่ยวกับฟังก์ชั่นพลังงานนี้และปรีชาที่อยู่เบื้องหลังนั้นเล็กน้อย ขออภัยถ้านี่เป็นบิตที่ยาวนานและมีอยู่จริง

ฟังก์ชั่นพลังงานอธิบายถึงโมเดล Isingซึ่งเป็นแบบจำลองเฟอร์ริกติสม์ในแง่ของกลศาสตร์เชิงสถิติ / กลศาสตร์ควอนตัม ในกลศาสตร์เชิงสถิติเราใช้ตัวดำเนินการ Hamiltonian เพื่ออธิบายพลังงานของระบบควอนตัมเชิงกล และระบบพยายามอยู่ในสถานะที่ใช้พลังงานต่ำที่สุดเสมอ

ตอนนี้ Ising แบบพื้นอธิบายปฏิสัมพันธ์ระหว่างอิเล็กตรอนกับสปินทั้ง +1 หรือ -1 ในการปรากฏตัวของสนามแม่เหล็กภายนอกชั่วโมงการทำงานร่วมกันระหว่างสองอิเล็กตรอนและอธิบายโดยค่าสัมประสิทธิ์{IJ} มิลโตเนียน (หรือฟังก์ชันพลังงาน) นี้คือ ซึ่งหมายถึง Hamiltonian ขั้นตอนมาตรฐานที่จะได้รับจากฟังก์ชั่นพลังงานจนถึงความน่าจะเป็นที่ระบบอยู่ในสถานะที่กำหนด (เช่นที่นี่: การกำหนดค่าของสปินเช่นσkhijJij

H^=i,jJijσiσjμjhjσj
H^σ1=+1,σ2=1,...) คือการใช้การกระจาย Boltzmann ซึ่งบอกว่าที่อุณหภูมิความน่าจะเป็นของระบบอยู่ในสถานะมีพลังงานได้รับโดย ณ จุดนี้คุณควรตระหนักว่าทั้งสองสมการเป็นสมการเดียวกันกับในวิดีโอโดยฮินตันและคำตอบจากอาร์เมน Aghajanyan สิ่งนี้ทำให้เรามีคำถาม:TpiiEi
pi=exp(Ei/kT)iexp(Ei/kt)

RBM เกี่ยวข้องอะไรกับรูปแบบควอนตัมเชิงกลของเฟอร์นิติสซึ่ม

เราจำเป็นต้องใช้ปริมาณทางกายภาพสุดท้าย: เอนโทรปี ดังที่เราทราบจากอุณหพลศาสตร์ระบบจะตั้งอยู่ในสถานะที่มีพลังงานน้อยที่สุดซึ่งสอดคล้องกับสถานะที่มีค่าเอนโทรปีสูงสุด

ตามที่แนะนำโดย Shanon ในปี 1946 ในทฤษฎีสารสนเทศเอนโทรปีสามารถถูกมองว่าเป็นการวัดเนื้อหาข้อมูลในซึ่งกำหนดโดยผลรวมต่อไปนี้ในทุกสถานะของ : ตอนนี้วิธีที่มีประสิทธิภาพมากที่สุดในการเข้ารหัสข้อมูลเนื้อหาในคือการใช้วิธีการที่ช่วยเพิ่มข้อมูลข่าวสารHX X H ( X ) = - i P ( x i ) บันทึกP ( x i ) X HHXX

H(X)=iP(xi)logP(xi)
XH

สุดท้ายนี้เป็นที่ที่เราได้รับกลับไป RBMs: โดยทั่วไปเราต้องการ RBM นี้เพื่อเข้ารหัสเป็นมากข้อมูลที่เป็นไปได้ ดังนั้นในขณะที่เราต้องเพิ่มเอนโทรปี (ข้อมูล - ทฤษฎี) ในระบบ RBM ของเราให้มากที่สุด ตามที่เสนอโดย Hopfield ในปี 1982 เราสามารถเพิ่มเอนโทรปีของข้อมูลตามหลักทฤษฎีเหมือนกับเอนโทรปีทางกายภาพ: โดยการสร้างแบบจำลอง RBM เช่นเดียวกับแบบจำลอง Ising ด้านบนและใช้วิธีการเดียวกันเพื่อลดพลังงาน และนั่นคือเหตุผลที่เราต้องการฟังก์ชั่นพลังงานที่แปลกประหลาดนี้ใน RBM!

การคำนวณทางคณิตศาสตร์ที่ดีในคำตอบของ Armen Aghajanyanแสดงทุกสิ่งที่เราต้องทำเพื่อลดพลังงานจึงเพิ่มเอนโทรปีและเก็บ / บันทึกข้อมูลให้มากที่สุดใน RBM ของเรา

PS: ได้โปรดนักฟิสิกส์ที่รักให้อภัยความผิดพลาดใด ๆ อย่าลังเลที่จะแสดงความคิดเห็นหรือแก้ไขความไม่ถูกต้อง (หรือแม้แต่ความผิดพลาด)


ฉันเห็นวิดีโอนี้เพิ่งดูวิดีโอจากจุดนั้น คุณจะได้รับหมายเลขตัวอย่างได้อย่างไร ไม่ว่าเราจะรัน rand () ใน MATLAB แล้วรับมัน แล้วมันจะแตกต่างกันสำหรับแต่ละชั่วโมง (i) โอ้โห! ฉันไม่คิดว่าเครื่องจะเรียนรู้อย่างถูกต้อง
Born2Code

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


0

คำตอบของ @Armen ทำให้ฉันมีความเข้าใจอย่างถ่องแท้ ยังไม่มีใครตอบคำถามหนึ่งข้อ

vvh

E(v,h)=aTvbThvTWh

ตัวแปรของเราคือ ,และซึ่งจะต้องผ่านการฝึกอบรม ฉันค่อนข้างแน่ใจว่าการฝึกอบรมนี้จะเป็นเป้าหมายสูงสุดของ RBMb WabW


เราจะสร้างไบนารีเลเยอร์ที่ซ่อนอยู่ได้อย่างไร Bcoz หลังจากการใช้งานฟังก์ชั่นการเปิดใช้งานเราจะได้รับค่าในช่วงระหว่าง 0 ถึง 1
Born2Code

@ Born2Code: ฟังก์ชั่นการเปิดใช้งานจะช่วยให้คุณน่าจะเป็นที่เซลล์ประสาทมีค่า 1. ดังนั้นจะ "ทำให้มันไบนารี" คุณลิ้มลองจากความน่าจะเป็นสำหรับการคำนวณอย่างใดอย่างหนึ่งหรือ - ในคำอื่น ๆ ที่คุณอย่างแท้จริงทำสิ่งที่ชอบ- นี้จะต้องมีการ ทำสำหรับแต่ละเซลล์ประสาทและแต่ละครั้งที่คุณต้องการตัวอย่าง วีhvh_bin = (rand() < h_val) ? 1 : 0
Neil Slater

@ NeilSlater: แต่ทำไมตัวเลขสุ่ม? นอกจากนี้ควรสร้างแบบสุ่มสำหรับการวนซ้ำแต่ละครั้งหรือควรใช้เลขซ้ำกันสำหรับการวนซ้ำทั้งหมดหรือไม่ อีกหนึ่งข้อสงสัยที่ร้ายแรงต้องทำซ้ำอีกกี่ครั้ง? ฉันมีชุดฝึกอบรม V ซึ่งมีเวกเตอร์เดียวเท่านั้นนั่นคือ v1 ด้วย v1 ฉันต้องทำซ้ำกี่ครั้ง?
Born2Code

@NeilSlater: อีกหนึ่งข้อสงสัยคือไม่ว่าจะเป็นตัวเลขสุ่มเดียวกันที่จะนำมาเปรียบเทียบกับค่าทั้งหมดของเลเยอร์ที่ซ่อนอยู่? ฉันรู้ว่านี่เป็นคำถามที่งี่เง่า แต่ก็ยัง
Born2Code

1
มันเป็นตัวเลขสุ่มเพราะนั่นคือวิธีที่คุณแก้ไขความน่าจะเป็นค่าไบนารี มันเป็นจำนวนที่แตกต่างกันสำหรับแต่ละเซลล์ประสาทภายในhหรือv- คุณกำลังสุ่มตัวอย่างเวกเตอร์ของค่าไบนารีสำหรับhหรือvเพื่อสร้างตัวอย่างที่เครือข่าย "เชื่อ" มีอยู่ - นั่นคือตัวอย่างที่มีโอกาสสูงทางสถิติในการเป็นตัวแทนของ ชุดฝึกอบรม ในระหว่างการฝึกคุณกำหนดว่ามันตรงกับตัวอย่างการฝึกอบรมที่มีอยู่แล้วและปรับน้ำหนักให้เหมาะสม
Neil Slater
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.