← สารบัญหนังสือ
3.5 — คณิตเบื้องหลัง ML
Linear Algebra & Optimization แบบเข้าใจ
ภาค 3 · คณิต-สถิติ · อ่าน ~7 นาที · ไม่ต้องเป็นนักคณิต — แค่รู้ว่า ML จัดการข้อมูลยังไง
ทุกครั้งที่ได้ยินว่า "ML ใช้ linear algebra" หรือ "neural network train ด้วย gradient descent" — ฟังแล้วก็ผ่าน ไม่รู้ว่ามันหมายถึงอะไรจริงๆ
บทนี้ไม่ได้สอนให้คำนวณ — แต่สอนให้ "เห็นภาพ" ว่า ML จัดการข้อมูลในหัวมันยังไง · พอเห็นภาพแล้ว จะไม่กลัวคำศัพท์พวกนี้อีกเลย
1. Vector — ราคาไม่ใช่ตัวเลขเดี่ยวๆ แต่คือจุดในอวกาศ
เริ่มจากสิ่งที่ง่ายที่สุด: เราเห็นราคา "42,350" — แต่ ML ไม่เห็นแค่นั้น · ML เห็นว่าแท่งนี้มี หลายคุณสมบัติพร้อมกัน เช่น:
แท่งเทียนหนึ่งแท่ง ในสายตา ML:
[ 42350, 41200, 42800, 41100, 85000, 1.82 ]
^ปิด ^เปิด ^สูง ^ต่ำ ^volume ^RVOL
นั่นคือ vector ขนาด 6 — ตัวเลข 6 ตัวที่อธิบายแท่งนี้ครบ
Vector คือแค่ "รายการตัวเลขที่อธิบายสิ่งหนึ่งๆ" — ไม่มีอะไรน่ากลัว · ในโลก ML ข้อมูลทุกอย่างถูกแปลงเป็น vector ก่อน เพราะคอมพิวเตอร์เข้าใจเลขได้ ไม่เข้าใจ "กราฟสีเขียว"
ลองนึกภาพ: ถ้าแท่งเทียนมีแค่ 2 คุณสมบัติ (volume กับ spread) เราวาดได้บนกระดาษ XY · ถ้ามี 3 คุณสมบัติ วาดได้ใน 3D · ถ้ามี 100 คุณสมบัติ — มนุษย์วาดไม่ได้ แต่คอมพิวเตอร์ยังคำนวณในอวกาศ 100 มิติได้สบาย · ML เก่งตรงนี้พอดี: หาแพทเทิร์นในอวกาศที่มนุษย์มองไม่เห็น
2. Matrix — ตารางข้อมูลคือ Matrix ที่ ML อ่าน
ถ้า vector คือ "แท่งเดียว" แล้ว 100 แท่งเรียงกัน = ตาราง 100 แถว × 6 คอลัมน์ = Matrix
Matrix ข้อมูล 4 แท่ง × 3 คุณสมบัติ (ปิด · volume · RVOL):
[ 42350 85000 1.82 ] ← แท่งวันจันทร์
[ 42100 63000 1.21 ] ← แท่งวันอังคาร
[ 43200 120000 2.43 ] ← แท่งวันพุธ (volume พุ่ง!)
[ 43050 71000 1.35 ] ← แท่งวันพฤหัส
ML อ่านข้อมูลทั้งหมดนี้พร้อมกัน หาความสัมพันธ์ระหว่างทุกคอลัมน์
ทุกอย่างที่ ML ทำ ทำบน matrix — การคูณ matrix คือวิธีที่ ML "รวม" ข้อมูลหลายมิติเข้าด้วยกัน · ไม่ต้องรู้วิธีคูณ matrix ด้วยมือ แต่รู้ว่ามันคือ "การผสมข้อมูลเพื่อหาแพทเทิร์น" ก็พอ
3. สิ่งที่ ML "หา" จริงๆ คืออะไร?
ML ไม่ได้ "똑똑" ด้วยตัวเอง — มันทำงานง่ายมาก: หาชุดตัวเลข (เรียกว่า weights/parameters) ที่ทำให้ความผิดพลาดน้อยที่สุด
ตัวอย่างง่ายสุด — ML พยากรณ์ราคาพรุ่งนี้:
กฎของ ML: ราคาพรุ่งนี้ = (w1 × ราคาวันนี้) + (w2 × volume) + (w3 × RVOL) + ค่าคงที่
ML ไม่รู้ว่า w1, w2, w3 ควรเป็นเท่าไร · มันเดาตัวเลขเหล่านี้ ลองกับข้อมูลจริง ดูว่าผิดพลาดเท่าไร แล้วปรับ · ทำซ้ำหมื่นรอบ จนผิดพลาดน้อยที่สุดเท่าที่ทำได้
นั่นคือทั้งหมด · สูตรซับซ้อนแค่ไหน หรือ neural network ลึกกี่ชั้น — สุดท้ายทำแค่ "หาตัวเลขที่ทำให้ผิดพลาดน้อยที่สุด" ทั้งนั้น · เปลี่ยนแค่ว่าตัวเลขที่หา ซับซ้อนขึ้นและมีเป็นล้านตัว
4. Gradient Descent — เดินลงเขา ไม่ใช่บินข้ามเขา
คำถามคือ: ML หา "ตัวเลขที่ผิดพลาดน้อยที่สุด" ยังไง ในเมื่อมีตัวเลขเป็นล้านตัวที่เป็นไปได้?
ลองนึกภาพ: คุณถูกวางไว้บนเทือกเขา ตาบอด อยากหาหุบเขาที่ต่ำที่สุด (= ความผิดพลาดต่ำสุด) · คุณทำได้แค่ — เอาเท้าสัมผัสพื้นรอบๆ ตัว แล้วเดินไปทางที่ลาดลง · ทำซ้ำๆ ทีละก้าว จนพื้นแบนราบ = ถึงหุบเขาแล้ว
Gradient Descent ในชีวิตจริง:
รอบที่ 1: weights เดิม → ความผิดพลาด = 0.82 · ปรับ weights ไปทาง "ลด error"
รอบที่ 2: weights ใหม่ → ความผิดพลาด = 0.74 · ดีขึ้น · ปรับต่อ
รอบที่ 3: weights ใหม่ → ความผิดพลาด = 0.68 · ดีขึ้นอีก · ปรับต่อ
...
รอบที่ 5000: ความผิดพลาด = 0.21 · แบนแล้ว · หยุด — นี่คือ "trained model"
"Gradient" แปลว่าความชัน — ชันมากขึ้นไป ชันน้อยลง · Descent แปลว่าลง · รวมกัน = "ลงตามความชัน" · ทำซ้ำจนถึงก้นหุบเขา
💡 Hyperparameter ที่สำคัญที่สุดตัวหนึ่ง: Learning Rate
ก้าวของการเดินลงเขา — ใหญ่เกินไป: กระโดดข้ามหุบเขาต่ำ แล้วไปติดในหุบเขาที่ไม่ใช่ต่ำสุด (local minimum) · เล็กเกินไป: เดินช้ามาก training ใช้เวลานานเป็นล้านรอบ · ต้องปรับให้พอดี — เป็นหนึ่งในสิ่งที่ quant ต้องตั้งด้วยมือ ไม่ใช่ ML คิดให้เอง
5. Overfitting — หุบเขาเล็กกับหุบเขาใหญ่
กลับมาที่เปรียบเทียบเขา: ระหว่างทางลงเขา บางทีเจอ "หุบเขาเล็กๆ" ก่อน — ดูเหมือนลงต่ำแล้ว แต่จริงๆ ยังมีหุบเขาใหญ่กว่า (ต่ำกว่า) ข้างหน้า · นี่คือ local minimum และเป็นปัญหาของ ML ในทางปฏิบัติ
ในโลกเทรด หุบเขาเล็กที่น่ากลัวสุดคือ overfitting: ML หาหุบเขาต่ำสุดในข้อมูล ที่ฝึกมา ได้เป๊ะ แต่นั่นเป็นหุบเขาที่ถูกแกะสลักตามข้อมูลอดีต — พอลองกับข้อมูลใหม่ ภูเขามีรูปร่างต่างออกไป ก็ตกหน้าผาทันที
สัญญาณ Overfitting ที่เห็นได้ชัด:
ผล in-sample ดีมาก (accuracy 85%) → ผล out-of-sample แย่ (accuracy 52%) = ML จำข้อมูลเก่า ไม่ได้เรียนรู้กฎ · ยิ่ง feature เยอะ (คอลัมน์เยอะ) ยิ่ง overfit ง่าย โดยเฉพาะถ้าข้อมูลน้อย
6. สิ่งที่ ML ทำได้ดี และทำได้ไม่ดีในตลาด
| ML ทำได้ดี | ML ทำได้ไม่ดี |
| จับแพทเทิร์นในข้อมูลเยอะๆ ที่มนุษย์มองไม่เห็น | ทำนายเหตุการณ์ที่ไม่เคยเกิดในข้อมูลเก่า (black swan) |
| ประมวลผลพร้อมกันหลายร้อยตัวแปร | อธิบายว่า "ทำไม" ตัดสินใจแบบนั้น (black box) |
| ไม่เหนื่อย ไม่มีอารมณ์ ทำงาน 24/7 | รู้ตัวเองว่ากำลัง overfit หรือเปล่า (ต้องคนดูแล) |
| ปรับ weights ล้านตัวพร้อมกันได้รวดเร็ว | ตลาดเปลี่ยน regime — model ที่ train ไว้อาจหมดอายุ |
7. พอรู้เรื่องนี้แล้ว — อ่านโลก ML ได้ยังไง
เวลาได้ยินศัพท์ต่อไปนี้ ตอนนี้รู้แล้วว่าหมายถึงอะไรจริงๆ:
"Train the model" = ปล่อยให้ gradient descent วิ่งหาหุบเขาต่ำสุด
"Features" = คอลัมน์ใน matrix ข้อมูล (RVOL · spread · ATR etc.)
"Parameters / Weights" = ตัวเลขที่ ML ปรับระหว่าง training (w1, w2, w3...)
"Loss function" = ตัววัดความผิดพลาด — "ความสูงของเขา" ที่เราอยากลดให้น้อยสุด
"Epoch" = รอบการ train — 1 epoch = ML ดูข้อมูลทั้งหมดครบรอบหนึ่ง
"Overfitting" = model จำข้อมูลเก่าแทนที่จะเรียนรู้กฎ = ใช้กับข้อมูลใหม่ไม่ได้
8. เหตุผลที่ต้องรู้เรื่องนี้ แม้ไม่ได้เขียน ML เอง
เหตุผลที่ 1: ถ้าวันหนึ่งใช้ ML tools (มีเยอะมากที่เปิดให้ใช้ฟรี) จะไม่ตกหลุม "accuracy 95% ในข้อมูล train = ระบบเทพ" — รู้ว่าต้องดู out-of-sample ก่อนเชื่อ
เหตุผลที่ 2: เวลาอ่านงานวิจัย paper ต่างๆ หรือฟังใครอธิบาย model ของเขา จะตั้งคำถามถูกจุดได้: "ใช้ feature อะไร · train กับข้อมูลช่วงไหน · ทดสอบ out-of-sample ยังไง"
เหตุผลที่ 3: ML กับ Wyckoff ไม่ได้ขัดกัน — Wyckoff ของหลิวบอกว่า "ราคา+volume มีแพทเทิร์นที่สม่ำเสมอ" · ML คือเครื่องมือที่ช่วยหาแพทเทิร์นเหล่านั้นในข้อมูลเยอะๆ โดยไม่ต้องนั่งดูด้วยตาเอง
📌 ใจความทั้งบทในสามบรรทัด:
Vector = ข้อมูลแท่งหนึ่ง · Matrix = ข้อมูลทั้งหมด · ML หาตัวเลขที่ผิดพลาดน้อยสุด
Gradient Descent = เดินลงเขาทีละก้าว จนถึงหุบเขา = model ที่ train แล้ว
Overfitting = หุบเขาที่แกะสลักตามข้อมูลเก่า ใช้กับอนาคตไม่ได้ — วิธีป้องกัน: out-of-sample เสมอ