วิธีรับเอาท์พุทอย่างต่อเนื่องมูลค่าจริงจาก Neural Network


14

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

คำถามของฉันคือ:

1. Should I still scale the input features using feature scaling? What range?
2. What transformation function should I use in place of the sigmoid?

ฉันกำลังมองหาแรกใช้มัน PyBrain ซึ่งอธิบายเหล่านี้ประเภทชั้น

ดังนั้นฉันคิดว่าฉันควรมี 3 เลเยอร์ให้เริ่ม (อินพุต, ซ่อนเร้นและเลเยอร์เอาท์พุท) นั่นคือเลเยอร์เชิงเส้นทั้งหมดหรือไม่ นั่นเป็นวิธีที่สมเหตุสมผลหรือไม่ หรือฉันจะ "ยืด" ฟังก์ชั่น sigmoid ในช่วง -5 ถึง 5 ได้หรือไม่?


1
[,][5,5]

มีเหตุผลบางอย่างที่คุณหลีกเลี่ยงการใช้เลเยอร์ที่ซ่อนอยู่สองชั้นหรือไม่? นั่นจะเป็นวิธีที่ง่ายที่สุดในการรับเอาท์พุทอย่างต่อเนื่องที่มีมูลค่าจริงจากเครือข่ายประสาท "ฟังก์ชั่นใด ๆ สามารถประมาณความถูกต้องตามอำเภอใจโดยเครือข่ายที่มีเลเยอร์ที่ซ่อนอยู่สองชั้น" (กล่าวถึงในหมายเหตุจากเครื่อง Mitchell ที่เรียนรู้การสไลด์ข้อความ 26: cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/ www / mlbook / ch4.pdf )
Chris Simokat

@ChrisSimokat: ไม่ แต่สิ่งที่ฉันได้อ่านส่วนใหญ่แล้วชี้ให้เห็นว่าเลเยอร์ที่ซ่อนอยู่เดียวเป็นจุดเริ่มต้นที่เหมาะสม เครือข่ายเลเยอร์ที่ซ่อนอยู่เดียวไม่สามารถประมาณฟังก์ชั่นใด ๆ ได้หรือไม่?
ผู้ใช้

1
@ChrisSimokat: บางทีฉันขาดอะไรบางอย่าง แต่ฉันคิดว่าชั้นเดียวที่ซ่อนอยู่ไม่เท่ากับ "single layer perceptron" ใช่ไหม?
ผู้ใช้งาน

1
ไม่คุณไม่ได้พลาดอะไรเลยที่ฉันเพิ่งอ่านมาไม่ได้ใกล้พอที่จะขอโทษเกี่ยวกับเรื่องนั้น
Chris Simokat

คำตอบ:


12

1 . ฉันควรจะปรับขนาดคุณสมบัติการป้อนข้อมูลโดยใช้การปรับขนาดคุณสมบัติหรือไม่ ช่วงไหน

การขยายไม่ทำให้อะไรแย่ลง อ่านคำตอบนี้จากคำถามที่พบบ่อยเกี่ยวกับเครือข่ายประสาทของ Sarle: หัวเรื่อง: ฉันควรทำให้เป็นมาตรฐาน / มาตรฐาน / ลดขนาดข้อมูล .

2 . ฉันควรใช้ฟังก์ชันการแปลงใดแทน sigmoid

[0,1][1,1][5,5]


วิธีที่ถูกต้องในการปรับขนาดเอาท์พุทเครือข่ายประสาทเทียมให้อยู่ในช่วง [-5,5] คืออะไร?
ผู้ใช้งาน

3
e[a,b][c,d]eaba(dc)+c

2
แต่เนื่องจาก sigmoid ไม่ใช่แบบเส้นตรงด้วยการกระจายการสุ่มตัวอย่างค่าของ sigmoid เราอาจจะได้ค่าใกล้เคียง 1 หรือใกล้กับ 0 ซึ่งหมายความว่าเราต้องเรียนรู้เครือข่ายเพื่อเลือกค่าตรงกลางอย่างระมัดระวังมากขึ้น sigmoid + scaling เป็นตัวเลือกที่ดีหรือไม่?
Smarty77

0

คำเตือน: แนวทางที่นำเสนอไม่เป็นไปได้สำหรับค่าต่อเนื่อง แต่ฉันเชื่อว่ามีน้ำหนักในการตัดสินใจสำหรับโครงการ Smarty77 นำจุดที่ดีเกี่ยวกับการใช้ฟังก์ชั่น sigmoid ช่วย ฟังก์ชั่น sigmoid สร้างความน่าจะเป็นซึ่งอธิบายถึงอัตราความสำเร็จของการสุ่มตัวอย่าง (เช่น 95 จาก 100 ภาพที่มีคุณสมบัติเหล่านี้คือ 'dog') ผลลัพธ์สุดท้ายที่อธิบายไว้คือไบนารีหนึ่งและการฝึกอบรมโดยใช้ 'binary cross-entropy' อธิบายกระบวนการแยกผลลัพธ์ที่ไม่เห็นด้วย diametrically ซึ่งทำให้ผลลัพธ์ในช่วงกลางโดยเนื้อแท้ ความต่อเนื่องของผลลัพธ์เป็นเพียงการปรับขนาดตามจำนวนตัวอย่าง (เช่นผลลัพธ์จาก 0.9761 หมายความว่า 9761 จาก 10,000 ตัวอย่างที่แสดงเหล่านั้นหรือ triats ที่คล้ายกันคือ 'dog') แต่ผลลัพธ์แต่ละตัวจะต้องพิจารณาว่ายังเป็นไบนารีและไม่ละเอียดโดยพลการ ดังนั้นจึงไม่ควรเข้าใจผิดและนำไปใช้เป็นตัวเลขจริงและอาจไม่สามารถใช้ได้ที่นี่ แม้ว่าฉันจะไม่แน่ใจในการใช้เครือข่าย แต่ฉันก็จะทำให้เวกเตอร์เอาต์พุตปกติ ซึ่งสามารถทำได้ด้วย softmax สิ่งนี้จะต้องมี 11 เอาต์พุตเชิงเส้น (ถังขยะ) จากเครือข่าย (หนึ่งสำหรับแต่ละเอาต์พุต -5 ถึง +5) หนึ่งสำหรับแต่ละคลาส มันจะให้ค่าการรับรองสำหรับ 'ถังขยะ' ใด ๆ ที่เป็นคำตอบที่ถูกต้อง สถาปัตยกรรมนี้จะสามารถฝึกได้ด้วยการเข้ารหัสแบบหนึ่งครั้งโดยที่ 1 ระบุถึงถังขยะที่ถูกต้อง ผลลัพธ์สามารถตีความได้ในลักษณะของวิธีเช่นกลยุทธ์โลภหรือการสุ่มตัวอย่างความน่าจะเป็น อย่างไรก็ตามการเปลี่ยนรูปให้เป็นตัวแปรต่อเนื่อง ความเชื่อมั่นของแต่ละดัชนีสามารถใช้เป็นน้ำหนักเพื่อทำเครื่องหมายบนตัวเลขบรรทัด (คล้ายกับพฤติกรรมของหน่วย sigmoid) แต่สิ่งนี้ยังเน้นประเด็นหลัก: หากเครือข่ายค่อนข้างแน่ใจผลลัพธ์ที่ได้คือ -2 หรือ +3 แต่แน่นอนว่าไม่ใช่สิ่งอื่นใด +1 เป็นผลที่เป็นไปได้หรือไม่ ขอขอบคุณสำหรับการพิจารณาของคุณ. ขอให้โชคดีในโครงการของคุณ

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