ฉันจะทำให้เครือข่ายประสาทของฉันดีขึ้นในการทำนายคลื่นไซน์ได้อย่างไร


21

ดูที่นี่: สร้างคลื่นไซน์ คุณสามารถดูได้ว่าข้อมูลการฝึกอบรมสิ้นสุดลงที่ใด การฝึกอบรมข้อมูลไปจากที่จะ1-11

ฉันใช้ Keras และเครือข่ายหนาแน่น 1-100-100-2 ด้วยการเปิดใช้งาน tanh ฉันคำนวณผลลัพธ์จากสองค่าคือ p และ q เป็น p / q ด้วยวิธีนี้ฉันสามารถบรรลุขนาดใดก็ได้โดยใช้ค่าน้อยกว่า 1 ค่า

โปรดทราบว่าฉันยังเป็นผู้เริ่มต้นในสาขานี้ดังนั้นไปง่าย ๆ กับฉัน


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

11
คุณสามารถลองฟูริเยร์เปลี่ยนทุกอย่างและทำงานในโดเมนความถี่
Nick Alger

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

1
ฉันคิดว่ามันเป็นคำถามที่สมเหตุสมผลสำหรับผู้เริ่มต้นภายในขอบเขตของการเรียนรู้ของเครื่องซึ่งเราควรรองรับที่นี่ ฉันจะไม่ปิดมัน
Aksakal

1
ฉันไม่รู้ว่าสิ่งนี้จะช่วยได้หรือไม่ แต่กล่องวานิลลา NN จะสามารถเรียนรู้ฟังก์ชันพหุนามเท่านั้น ในทางปฏิบัตินั้นใช้ได้เนื่องจากคุณสามารถปิดพหุนามโดยพลการในช่วงเวลาคงที่ แต่หมายความว่าคุณไม่สามารถเรียนรู้คลื่นไซน์ที่ทอดตัวผ่านจุดสิ้นสุดของช่วงเวลาที่ผ่านมาได้ เคล็ดลับที่เป็นคำตอบอื่น ๆ ได้ชี้ไปที่ด้านล่างคือการแปลงปัญหาเป็นหนึ่งที่สามารถแก้ไขได้ด้วยวิธีนี้ นั่นคือสิ่งที่การแปลงฟูริเยร์แนะนำและในกรณีนั้นการเรียนรู้คลื่นไซน์ก็แค่เรียนรู้อย่างต่อเนื่อง
Ukko

คำตอบ:


19

คุณกำลังใช้เครือข่าย feed-forward คำตอบอื่น ๆ นั้นถูกต้องที่ FFNNs ไม่สามารถคาดการณ์ได้ดีกว่าช่วงของข้อมูลการฝึกอบรม

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

(xผม,บาป(xผม))xผม+1...xผม+nnผม

(Jimenez-Guarneros, Magdiel และ Gomez-Gil, Pilar และ Fonseca-Delgado, Rigoberto และ Ramirez-Cortes, Manuel และ Alarcon-Aquino, Vicente "การทำนายระยะยาวของฟังก์ชัน Sine โดยใช้ LSTM Neural Network ในธรรมชาติ - การออกแบบที่ได้แรงบันดาลใจของระบบ Intelligent Hybrid )


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

@ DavidJ.Harris ฉันได้อัพเดทคำตอบแล้ว
Sycorax พูดว่า Reinstate Monica

1/(2π)

นี่เป็นวิธีที่พวกเขาทำการตลาดหรือไม่
Markus Appel

3
ไม่นั่นไม่ใช่วิธีที่คุณคาดการณ์ตลาด อย่างน้อยก็ไม่ใช่วิธีการทำเงิน
Aksakal

13

หากสิ่งที่คุณต้องการทำคือการเรียนรู้ฟังก์ชั่นเป็นระยะแบบง่าย ๆ แบบนี้คุณสามารถดูได้โดยใช้กระบวนการแบบเกาส์เซียน GPs ช่วยให้คุณสามารถบังคับใช้ความรู้เกี่ยวกับโดเมนของคุณได้ในระดับหนึ่งโดยการระบุฟังก์ชันความแปรปรวนร่วมที่เหมาะสม ในตัวอย่างนี้เนื่องจากคุณทราบว่าข้อมูลเป็นระยะคุณสามารถเลือกเคอร์เนลเป็นระยะจากนั้นแบบจำลองจะประมาณโครงสร้างนี้คุณสามารถดูตัวอย่างในภาพ ที่นี่ฉันกำลังพยายามปรับให้พอดีกับข้อมูลความสูงของน้ำดังนั้นฉันรู้ว่ามันมีโครงสร้างเป็นระยะ เนื่องจากฉันใช้โครงสร้างเป็นงวดโมเดลคาดการณ์ช่วงเวลานี้ (มากหรือน้อย) อย่างถูกต้อง OFC หากคุณพยายามที่จะเรียนรู้เกี่ยวกับโครงข่ายประสาทเทียมสิ่งนี้ไม่เกี่ยวข้องกันจริง ๆ แต่นี่อาจเป็นวิธีที่ดีกว่าคุณสมบัติทางวิศวกรรมมือเล็กน้อย อนึ่งเครือข่ายประสาทและ gp นั้นมีความสัมพันธ์อย่างใกล้ชิดในทางทฤษฎีป้อนคำอธิบายรูปภาพที่นี่

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

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


2
พล็อตนี้มีความสวยงาม
Sycorax พูดว่า Reinstate Monica

11

เครื่องอัลกอริทึมการเรียนรู้ - รวมทั้งเครือข่ายประสาท - สามารถเรียนรู้ที่จะใกล้เคียงกับฟังก์ชั่นโดยพลการ แต่เพียงในช่วงเวลาที่มีความหนาแน่นเพียงพอของข้อมูลการฝึกอบรม

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

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

วิธีที่เครือข่าย (หรือ ML อื่น ๆ ) ทำงานนอกช่วงของข้อมูลการฝึกอบรมของคุณจะขึ้นอยู่กับสถาปัตยกรรมของมันรวมถึงฟังก์ชั่นการเปิดใช้งานที่ใช้

บาปบาป(x),บาป(2x+π/4)บาป


"เครือข่ายประสาทไม่เคยเรียนรู้ฟังก์ชั่นการวิเคราะห์เพียงประมาณผ่านทางสถิติ" - สามารถพูดได้เกือบทุกอย่างที่ใช้ในทางปฏิบัติเช่น FFT ไม่ได้เรียนรู้การวิเคราะห์เช่นกัน คุณสามารถเพิ่มอัตราการสุ่มตัวอย่างและระยะเวลาเป็นอนันต์และเข้าใกล้ฟังก์ชั่นจริงอย่างไม่สิ้นสุด แต่สิ่งนี้เป็นจริงเกี่ยวกับ NN
Aksakal

@Aksakal: ใช่จริง อย่างไรก็ตามฉันไม่ต้องการระบุว่า "อัลกอริทึม ML ทั้งหมดไม่เคยเรียนรู้ฟังก์ชั่นการวิเคราะห์ ... " เพราะบางคนไม่ต้องสงสัยเลยว่าจะมีตัวอย่างที่เคาน์เตอร์ของผู้เรียนวิเคราะห์ Bayesian หรือการเขียนโปรแกรมทางพันธุกรรม ฯลฯ ฉันจะพยายามแก้ไขเพื่อให้เป็นเรื่องทั่วไป
Neil Slater

9

ในบางกรณี @Neil Slater ที่แนะนำวิธีการเปลี่ยนคุณสมบัติของคุณด้วยฟังก์ชั่นเป็นระยะจะทำงานได้ดีมากและอาจเป็นทางออกที่ดีที่สุด ความยากของที่นี่คือคุณอาจต้องเลือกช่วงเวลา / ความยาวคลื่นด้วยตนเอง (ดูคำถามนี้ )

หากคุณต้องการให้ระยะเวลาฝังลึกลงในเครือข่ายมากขึ้นวิธีที่ง่ายที่สุดคือการใช้ sin / cos เป็นฟังก์ชั่นการเปิดใช้งานของคุณในเลเยอร์อย่างน้อยหนึ่งชั้น บทความนี้กล่าวถึงปัญหาและกลยุทธ์ที่อาจเกิดขึ้นสำหรับการจัดการกับฟังก์ชันการเปิดใช้งานเป็นระยะ

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


9

คุณใช้วิธีการที่ผิดไม่มีวิธีการใดที่สามารถแก้ไขปัญหานี้ได้

มีหลายวิธีในการแก้ไขปัญหา ฉันจะแนะนำสิ่งที่ชัดเจนที่สุดผ่านวิศวกรรมฟีเจอร์ แทนที่จะเสียบเวลาเป็นคุณลักษณะเชิงเส้นให้วางเป็นส่วนที่เหลือของโมดูลัส T = 1 ตัวอย่างเช่น t = 0.2, 1.2 และ 2.2 ทั้งหมดจะกลายเป็นคุณลักษณะ t1 = 0.1 เป็นต้นตราบใดที่ T มีขนาดใหญ่กว่าระยะเวลาของคลื่นสิ่งนี้จะได้ผล เสียบสิ่งนี้ลงในเน็ตของคุณและดูว่ามันทำงานอย่างไร

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

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

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