คำถามเกี่ยวกับ Deep...
 
Notifications
Clear all

คำถามเกี่ยวกับ Deep learning ที่เหมาะสมสำหรับการทำนายอายุการใช้งานของชิ้นส่วนในอุตสาหกรรม (Predictive Maintenance)

12 ข้อความ
3 Users
10 Likes
10.2 K Views
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 412
 

สวัสดีอีกครั้งครับคุณ @KWN ในเบื้องต้นขอตอบคำถามข้อ 2, 3 ก่อนนะครับ 

ข้อ 2. ถูกต้องครับ ใช้ทำนายความน่าจะเป็นว่าอุปกรณ์นี้จะอยู่ในเฟสใดครับ

ข้อ 3. ถูกต้องตามรูปที่แปะไว้ข้างบนเลยครับ อย่างไรก็ตามรูปข้างต้นเป็นเพียงไอเดียเริ่มต้นครับ ในทางปฏิบัติ จำนวน Hidden Layers และจำนวน Nodes ในแต่ละ Layers นั้นมักต้อง Tune เพื่อให้ได้ค่า Validation Performance ที่ดีที่สุดครับ (ขั้นตอนนี้เรียกว่า Hyperparameters Optimization ซึ่งคิดว่าน่าจะมีใน MachineLearningMastery.com เว็บที่คุณ @KWN อ้างอิงครับ เว็บนี้มีบทความเยอะมากๆ จริงๆ ครับ)

เดี๋ยวขออนุญาตมาตอบข้อที่เหลือภายหลังนะครับผม

ปล. แจ้งข่าวดี ในช่วงไม่กี่วันนี้เราสามารถโหลดหนังสือ Deep Learning ที่ใช้ SciKit-Learn + TF + Keras ได้ฟรีที่นี่ครับ เอาไว้อ้างอิงในหลายๆ เรื่องได้ดีเลยครับ

https://get.oreilly.com/ind_hands-on-machine-learning.html?utm_medium=social&utm_source=plus.google.com&utm_campaign=awareness&utm_content=ebook+er+scikit+reddit+jj&fbclid=IwAR3-PI9FtowZXvJJXDBVtH6LBK_iq_3CbhtUaVJP-ZKTRORnG6F4ipJ33ZI


   
KWN reacted
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 412
 

ขออภัยที่ตอบช้านะครับ

ข้อ 1. สามารถทดลองนำโมเดลของคุณ Jason มาประยุกต์ใช้ได้เลยครับ โดยน่าจะเริ่มต้นที่ 2-3 layers และ layer สุดท้ายอาจจะลองมี Dimension 2 หรือ 3 เพื่อที่ว่าเมื่อเรา extract embedding vector ออกมาแล้ว เราอาจจะทดลอง plot ดูได้ด้วยครับว่าสมเหตุสมผลหรือไม่

ในขั้นตอนการทำ validation ตรงนี้งานของคุณ @KWN อาจต้องทำสองขั้นตอนครับ คือ ขั้นที่ 1 validation เพื่อตรวจสอบความแม่นยำในการทำ classification และขั้นที่ 2 หาวิธีเช็คว่าค่า probability ที่ได้จาก distance ของ embedding vectors ว่าสมเหตุสมผลหรือไม่

ข้อ 4. เมื่อเทรน model สำเร็จแล้ว เราสามารถถอด layer สุดท้ายได้ด้วยคำสั่ง

model.layers.pop()

ครับ (อาจดูเพิ่มเติมที่  https://stackoverflow.com/questions/49108256/popping-upper-layers-in-keras)

และสามารถใช้คำสั่ง

embed_vector = model.predict(x) 

ได้เลยครับโดย x เป็น numpy array ของ input data (ที่ต้องการหา embedding vector)

This post was modified 6 years ago 3 times by The Neural Engineer

   
KWN reacted
ตอบกลับอ้างอิง
KWN
 KWN
(@kwn)
Active Member
เข้าร่วมเมื่อ: 6 years ago
ข้อความ: 7
Topic starter  

ขอบคุณมากครับสำหรับคำแนะนำของคุณ @neural-engineer

ผมยังคงมีความสับสนในบางจุด จึงขอรบกวนถามเพิ่มเติมครับ

1. embedding vectors ที่ได้จาก output แต่ละ layer คือ vector ของ matrix A^[layer x] ที่มี dimension เป็น (# nodes, # examples) ตาม notation ใน lecture ของ Andrew Ng หรือเปล่าครับ

2. ผมเข้าใจว่า output ของ softmax จะอยู่ในรูป ตัวอย่างเช่น

Prob(Phase 1) = 0.22, Prob(Phase 2) = 0.95, และ Prob(Phase 3) = 0.03

ผลที่ได้คือ อุปกรณ์นี้มีความน่าจะเป็นอยู่ในเฟส 2 เท่ากับ 95% ส่วนค่า Prob(Phase 1), Prob(Phase 2), Prob(Phase 3) มีความสัมพันธ์กับค่า probability ที่ได้จาก distance ของ embedding vectors หรือไม่ครับ

This post was modified 6 years ago by KWN

   
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 412
 

สวัสดีครับคุณ @KWN,

ข้อ 1) สมมติเรายึดตามรูปนี้

Embedding Vectors ของแต่ละ layer เช่น FC1, FC2, FC3 ก็จะเป็น matrix ขนาด (N, 256), (N, 64) และ (N, 16) ตามลำดับครับ เมื่อ N คือจำนวนข้อมูลทดสอบที่เราต้องการหา embedding vector  นั่นคือใน layer สุดท้ายก่อน softmax, embedding vector ของแต่ละข้อมูลก็จะเป็นเวกเตอร์ขนาด 16 มิติครับ

ในทางปฏิบัติเริ่มต้น เราอาจให้ FC2 หรือ 3 มีจำนวน nodes สัก 2-3 เพื่อจะได้ visualize embedding vectors ได้ง่ายๆ (เช่นกรอบสีเขียวในรูปข้างบน)

ข้อ 2) ตรงนี้อาจจะเกี่ยวบางส่วนครับผม คุณ @KWN เข้าใจถูกแล้วว่า output ของ softmax จะบอกความน่าจะเป็นที่ข้อมูลนี้จะอยู่ใน class ใด

ทว่าสิ่งที่เราต้องการจริงๆ (จากโจทย์แรกที่คุณ @KWN เล่า) คือเราต้องการทราบ “[ความน่าจะเป็น] หรือ [ระยะเวลา] ที่อุปกรณ์แต่ละชิ้น จะเปลี่ยนเฟสจาก เฟส A ไป เฟส B” ซึ่งข้อมูลนี้จะบอกไม่ได้จาก softmax ตรงๆ (และถ้าให้ดีที่สุดเราควรมีข้อมูลนี้เพื่อสอนโมเดล ดั่งที่ได้กล่าวไปในโพสต์ก่อนหน้า)

ในกรณีที่เราไม่มีข้อมูลตรงนี้มาสอนโมเดล เราเลยอาจต้อง “ประมาณ” (approximate) “[ความน่าจะเป็น] หรือ [ระยะเวลา] ที่อุปกรณ์แต่ละชิ้น จะเปลี่ยนเฟสจาก เฟส A ไป เฟส B” จาก distance ของ embedding vector ซึ่งไม่ได้เป็น solution ที่สมบูรณ์ แต่พอจะตอบโจทย์ได้เท่าที่ข้อมูลเอื้ออำนวยครับ

This post was modified 6 years ago by The Neural Engineer

   
KWN reacted
ตอบกลับอ้างอิง
The Neural Engineer
(@neural-engineer)
Honorable Member Admin
เข้าร่วมเมื่อ: 7 years ago
ข้อความ: 412
 

สวัสดีครับ แวะเอาตัวอย่าง predictive maintenance ที่แก้ด้วย Deep Learning บน Kaggle มาฝากครับ

https://www.kaggle.com/nafisur/predictive-maintenance-using-lstm-on-sensor-data

https://www.kaggle.com/billstuart/predictive-maintenance-ml-iiot

 

และขออนุญาตนำบทความเกี่ยวเนื่องเก่ียวกับ predictive maintenance และ machine learning มาลงไว้ที่นี่เผื่อเป็นประโยชน์กับท่านอื่นครับ

https://www.blognone.com/node/98970

 

This post was modified 6 years ago by The Neural Engineer

   
ตอบกลับอ้างอิง
Page 2 / 2
Share: