Machine Learning › Deep learning เบื้องต้น

ชุดฝึกท้าย module: Deep learning เบื้องต้น

โจทย์คละหัวข้อทั้ง module โดยไม่บอกว่าต้องใช้เทคนิคไหน ให้เลือกวิธีเองเหมือนตอนทำงานจริง

🟢 พื้นฐานยังไม่ได้ทำ

neuron หนึ่งตัวมีน้ำหนัก w = [0.4, −0.6], bias b = 0.2 และรับ x = [2.0, 1.0]: คำนวณ z, ผลผ่าน ReLU และผลผ่าน sigmoid (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร z, relu_out, sigmoid_out

🟢 พื้นฐานยังไม่ได้ทำ

จำนวนพารามิเตอร์ (น้ำหนัก + bias) ของ MLP ที่มี input 21 → hidden 32 → output 1 (n_params_32) และ 21 → 16 → 8 → 1 (n_params_16_8) เก็บไว้ในตัวแปรตามชื่อ

🟢 พื้นฐานยังไม่ได้ทำ

MLPClassifier(hidden_layer_sizes=(8,), max_iter=200, random_state=42) บน Z_train: accuracy บนชุดทดสอบ ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร test_acc

🟢 พื้นฐานยังไม่ได้ทำ

โมเดล ŷ = w·x + b ที่ w = 1, b = 0 บนข้อมูลตัวอย่าง (x, y ที่ให้ไว้): MSE loss เก็บไว้ในตัวแปร mse

🟢 พื้นฐานยังไม่ได้ทำ

gradient ของ MSE ที่ w = 1, b = 0 (ข้อมูลเดิม): grad_w = 2·mean((ŷ − y)·x), grad_b = 2·mean(ŷ − y) เก็บไว้ในตัวแปร grad_w, grad_b

🟡 ประยุกต์ยังไม่ได้ทำ

เริ่มที่ w = b = 0 ทำ gradient descent 10 ก้าวด้วย lr = 0.05 (ข้อมูล x, y ที่ให้ไว้) เก็บ w และ b ที่ได้ (ปัด 4 ตำแหน่ง) ไว้ในตัวแปร w10, b10

🟡 ประยุกต์ยังไม่ได้ทำ

ด้วย lr = 0.1 เริ่ม w = b = 0 ต้องใช้กี่ก้าวจึงทำให้ MSE ต่ำกว่า 0.001 เป็นครั้งแรก (นับก้าวที่หนึ่งเป็น 1) เก็บไว้ในตัวแปร steps_needed

🟡 ประยุกต์ยังไม่ได้ทำ

MLP (16,) (max_iter=200, random_state=42) ที่ alpha = 3.0: accuracy บน train และ test (ปัด 4 ตำแหน่ง) และจำนวน iteration ที่ใช้ เก็บไว้ในตัวแปร train_acc, test_acc, iters

🟡 ประยุกต์ยังไม่ได้ทำ

MLP (4,) (max_iter=200, random_state=42): จำนวนพารามิเตอร์ทั้งหมด และ ROC-AUC บนชุดทดสอบ (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร n_params, mlp_auc

🟡 ประยุกต์ยังไม่ได้ทำ

MLP (16,) ที่เปิด early_stopping=True และ n_iter_no_change=5 (max_iter=200, random_state=42): หยุดที่กี่รอบ และ accuracy บนชุดทดสอบ (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร stopped_at, test_acc

🟡 ประยุกต์ยังไม่ได้ทำ

fit MLP (8,) (max_iter=200, random_state=42) แล้ว forward pass ด้วยมือสำหรับแถวแรกของชุดทดสอบ (ReLU ที่ hidden, sigmoid ที่ output): เก็บความน่าจะเป็นที่คำนวณเอง (ปัด 4 ตำแหน่ง) ไว้ใน manual_proba และคลาสที่ทำนาย (1 ถ้า proba ≥ 0.5 ไม่งั้น 0, เป็น int) ไว้ใน manual_class

🔴 ท้าทายยังไม่ได้ทำ

เทรน MLP (16,) (early_stopping=True, max_iter=200) ด้วย random_state = 0..4 แล้ววัด ROC-AUC บนชุดทดสอบของแต่ละ seed: ค่าเฉลี่ยและ std (np.std) ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร auc_mean, auc_std

🔴 ท้าทายยังไม่ได้ทำ

MLP (16,) (max_iter=200, random_state=42): loss_curve_ ที่รอบที่ 1, 50, 100 และ 200 (ปัด 4 ตำแหน่ง; รอบที่ k อยู่ที่ index k−1) เก็บไว้ในตัวแปร loss_1, loss_50, loss_100, loss_200

🔴 ท้าทายยังไม่ได้ทำ

ผลของขนาดข้อมูลเทรน: fit MLP (8,) ที่เปิด early_stopping=True (max_iter=200, random_state=42) บน 500 แถวแรกของ Z_train, 1,000 แถวแรก และทั้งหมด แล้ววัด accuracy บน Z_test (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร acc_500, acc_1000, acc_all

🔴 ท้าทายยังไม่ได้ทำ

CV 5-fold (StratifiedKFold shuffle=True, random_state=42) บน X, y ทั้งชุด วัด ROC-AUC เฉลี่ยของ pipeline StandardScaler + MLPClassifier((8,), early_stopping=True, max_iter=200, random_state=42) และ StandardScaler + LogisticRegression(max_iter=2000) ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร mlp_cv_auc, logreg_cv_auc

🔴 ท้าทายยังไม่ได้ทำ

ด้วยข้อมูล x, y ที่ให้ไว้ ทำ gradient descent 100 ก้าวจาก w = b = 0 ที่ lr = 0.2: เก็บ MSE สุดท้าย (float) ไว้ใน loss_02 และ True/False ว่า MSE < 1e-6 ไว้ใน converged