Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ແກ້ໄຂບັນຫາ Overfitting ໃນໂມເດວ Deep Learning

ໂພສເມື່ອ # Deep Learning # Optimization # Machine Learning

ແກ້ໄຂບັນຫາ Overfitting ໃນໂມເດວ Deep Learning

ສະບາຍດີນັກພັດທະນາ ແລະ ຜູ້ສົນໃຈ AI ທຸກທ່ານ! ຖ້າທ່ານເຄີຍຝຶກສອນ (Train) ໂມເດວ Deep Learning ມາກ່ອນ, ທ່ານອາດຈະເຄີຍພົບບັນຫາໜຶ່ງທີ່ພາໃຫ້ເຈັບຫົວທີ່ສຸດນັ້ນກໍຄື: ໂມເດວເຮັດວຽກໄດ້ດີຢ່າງສົມບູນແບບກັບຂໍ້ມູນທີ່ໃຊ້ຝຶກສອນ (Training Data) ແຕ່ພາຍຫຼັງນຳໄປໃຊ້ກັບຂໍ້ມູນຈິງ (Test Data) ພັດໃຫ້ຜົນຮັບທີ່ຜິດຮູບຜິດຮອຍ.

ລອງນຶກພາບວ່າ ທ່ານກຳລັງສ້າງໂມເດວພະຍາກອນສະພາບການຈະລາຈອນຢູ່ເສັ້ນທາງສາຍຫຼັກໃນນະຄອນຫຼວງວຽງຈັນ. ໂມເດວຂອງທ່ານຈື່ຈຳໄດ້ທຸກແຍກໄຟແດງ, ທຸກຈຸດຕິດຂັດຂອງມື້ວານນີ້ໄດ້ 100%, ແຕ່ພໍຮອດມື້ອື່ນທີ່ມີການປ່ຽນແປງເລັກນ້ອຍ ເຊັ່ນ: ມີງານບຸນທາດຫຼວງ ຫຼື ມີຝົນຕົກໜັກ, ໂມເດວພັດພະຍາກອນຜິດພາດໝົດ. ສະຖານະການນີ້ໃນທາງ Machine Learning ຮຽກວ່າ Overfitting.

ມື້ນີ້ ເຮົາຈະມາເຈາະເລິກວິທີການທາງເຕັກນິກ ໃນການຈັດການກັບບັນຫາ Overfitting ເພື່ອໃຫ້ໂມເດວຂອງທ່ານມີຄວາມຢືດຢຸ່ນ ແລະ ໃຊ້ໃນສະຖານະການຈິງໄດ້ດີຂຶ້ນ.


ບັນຫາ Overfitting ແມ່ນຫຍັງກັນແທ້?

ເວົ້າງ່າຍໆ, Overfitting ຄືສະຖານະການທີ່ໂມເດວຂອງທ່ານ “ຈື່ຈຳ” (Memorize) ຂໍ້ມູນລວມເຖິງສິ່ງລົບກວນ (Noise) ໃນ Training Data ຫຼາຍເກີນໄປ ແທນທີ່ຈະ “ຮຽນຮູ້” (Learn) ຮູບແບບ (Pattern) ທີ່ແທ້ຈິງ.

ໃນທາງເຕັກນິກ, ທ່ານຈະສັງເກດເຫັນວ່າຄ່າຄວາມຜິດພາດໃນການຝຶກສອນ (Training Loss) ຕ່ຳລົງເລື້ອຍໆ, ແຕ່ຄ່າຄວາມຜິດພາດໃນການທົດສອບ (Validation Loss) ກັບຢຸດຫຼຸດລົງ ແລະ ປິ່ນໜ້າສູງຂຶ້ນແທນ.


ເຕັກນິກການແກ້ໄຂ (Techniques to Handle Overfitting)

ເພື່ອປ້ອງກັນບໍ່ໃຫ້ໂມເດວທ່ອງຈຳຂໍ້ມູນ, ເຮົາຈຳເປັນຕ້ອງມີກົນໄກບາງຢ່າງມາກຳກັບ (Regularize) ການຮຽນຮູ້ຂອງມັນ. ລຸ່ມນີ້ຄືວິທີທີ່ນິຍົມໃຊ້ໃນວົງການ:

1. L1 ແລະ L2 Regularization (Weight Decay)

Regularization ຄືການເພີ່ມຄ່າປັບໃໝ (Penalty Term) ເຂົ້າໃນ Loss Function ເພື່ອບີບບັງຄັບບໍ່ໃຫ້ Weights (ຄ່ານ້ຳໜັກ) ຂອງໂມເດວມີຄ່າໃຫຍ່ເກີນໄປ.

ໃນ Framework ເຊັ່ນ PyTorch, ເຮົາສາມາດນຳໃຊ້ L2 Regularization ໄດ້ງ່າຍໆຜ່ານພາລາມິເຕີ weight_decay ໃນ Optimizer:

import torch.optim as optim

# ຕົວຢ່າງການໃຊ້ L2 Regularization (weight_decay) ໃນ PyTorch Optimizer
optimizer = optim.Adam(model.parameters(), lr=0.001, weight_decay=1e-4) # 1e-4 ຄືຄ່າ Penalty 

2. ການນຳໃຊ້ Dropout

Dropout ແມ່ນໜຶ່ງໃນເຕັກນິກໃໝ່ທີ່ຊົງພະລັງ ແລະ ນິຍົມທີ່ສຸດ. ຫຼັກການເຮັດວຽກແມ່ນ: ໃນລະຫວ່າງການ Train, Dropout ຈະເຮັດການ “ສຸ່ມປິດ” (Turn off) ການເຮັດວຽກຂອງ Neurons ບາງຕົວຊົ່ວຄາວ (ເຊັ່ນ: ປິດ 20% ຫຼື 50% ໃນແຕ່ລະຂັ້ນຕອນ).

ສິ່ງນີ້ບັງຄັບໃຫ້ Artificial Neural Network (ANN) ບໍ່ສາມາດເພິ່ງພາ Neuron ໃດໜຶ່ງຫຼາຍເກີນໄປ ມັນຈຶ່ງຕ້ອງກະຈາຍການຮຽນຮູ້ໄປຍັງ Neurons ອື່ນໆນຳ.

ຕົວຢ່າງການຂຽນໂຄດ Dropout ໃນ PyTorch:

import torch
import torch.nn as nn

class VientianeTrafficModel(nn.Module):
    def __init__(self):
        super(VientianeTrafficModel, self).__init__()
        self.fc1 = nn.Linear(100, 50)
        self.dropout = nn.Dropout(p=0.5) # ກະຕຸ້ນການໃຊ້ Dropout, ສຸ່ມປິດ 50% ຂອງ Neurons
        self.fc2 = nn.Linear(50, 10)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.dropout(x) # ໃຊ້ Dropout ຫຼັງຈາກຜ່ານ Activation Function
        x = self.fc2(x)
        return x

3. Data Augmentation (ການເພີ່ມປະລິມານຂໍ້ມູນ)

ບາງຄັ້ງບັນຫາ Overfitting ກໍມາຈາກການທີ່ເຮົາມີຂໍ້ມູນໜ້ອຍເກີນໄປ. ຍົກຕົວຢ່າງ: ຖ້າທ່ານກຳລັງສ້າງໂມເດວ Computer Vision ເພື່ອຈຳແນກພະຍາດໃນໃບກາເຟຢູ່ເມືອງປາກຊ່ອງ ແຕ່ທ່ານມີຮູບຖ່າຍພຽງ 500 ຮູບ ໂມເດວຍ່ອມຈຳຮູບທັງໝົດໄດ້ງ່າຍ.

ທ່ານສາມາດສ້າງຂໍ້ມູນໃໝ່ຈາກຮູບເດີມໄດ້ດ້ວຍເຕັກນິກ Data Augmentation ເຊັ່ນ:ການໝຸນຮູບ (Rotation), ການປັບຄວາມສະຫວ່າງ (Brightness), ຫຼື ການປີ້ນຮູບ (Flip). ສິ່ງນີ້ຊ່ວຍໃຫ້ໂມເດວຮຽນຮູ້ພາບໃນຫຼາຍໆມຸມມອງ ແລະ ຫຼຸດ Overfitting ໄດ້ຢ່າງມີປະສິດທິຜົນ.

4. Early Stopping (ການຢຸດຝຶກສອນກາງຄັນ)

ການປ່ອຍໃຫ້ໂມເດວ Train ເປັນຈຳນວນຮອບ (Epochs) ຫຼາຍໆ ບໍ່ແມ່ນເລື່ອງທີ່ດີສະເໝີໄປ. Early Stopping ແມ່ນເຕັກນິກການຕິດຕາມເຝົ້າເບິ່ງ Validation Loss; ຖ້າຫາກ Validation Loss ເລີ່ມຄົງທີ່ ຫຼື ມີທ່າອ່ຽງສູງຂຶ້ນຕໍ່ເນື່ອງກັນຫຼາຍຮອບ, ລະບົບຈະສັ່ງໃຫ້ຢຸດການ Train ທັນທີ ແລະ ເກັບເອົາ Weights ທີ່ດີທີ່ສຸດໄວ້ໃຊ້ງານ.


ບົດສະຫຼຸບທີ່ສຳຄັນ (Key Takeaways)

ບົດສະຫຼຸບທ້າຍ

ການພັດທະນາໂມເດວ Deep Learning ທີ່ສາມາດນຳໄປໃຊ້ງານຈິງໄດ້ໃນສັງຄົມ ແລະ ທຸລະກິດ ບໍ່ວ່າຈະເປັນການວິເຄາະຂໍ້ມູນກະສິກຳ ຫຼື ການຄາດຄະເນລະດັບນ້ຳຂອງ ບໍ່ແມ່ນພຽງແຕ່ການພະຍາຍາມເຮັດໃຫ້ຄ່າຄວາມຜິດພາດ (Loss) ໃນຕອນຝຶກສອນເຂົ້າໃກ້ສູນໃຫ້ໄດ້ຫຼາຍທີ່ສຸດ. ກົງກັນຂ້າມ, ມັນແມ່ນການສ້າງໂມເດວທີ່ຍັງຄົງເຮັດວຽກໄດ້ຢ່າງແນ່ນອນ ແລະ ໝັ້ນຄົງກັບຂໍ້ມູນໃໝ່ສະເໝີ. ການຖອດຖອນແນວຄິດ ແລະ ນຳໃຊ້ເຕັກນິກຈາກບົດຄວາມນີ້ ຈະຊ່ວຍຍົກລະດັບໂມເດວ AI ຂອງທ່ານໃຫ້ມີປະສິດທິພາບສູງຂຶ້ນຢ່າງແນ່ນອນ.