สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

AI / Machine Learning

The brief history of artificial intelligence - ประวัติศาสตร์ AI ฉบับย่อ Jupyter Notebook on AWS Pandas Tutorials ตรวจจับตำแหน่งของมือจากกล้องเว็บแคมแบบเรียลไทม์ด้วย Python ง่าย ๆ ใน 2 นาที ตรวจจับวัตถุด้วย Python ใน 5 Steps ใช้ AI แบ่งส่วนภาพคนกับฉากหลังแบบง่าย ๆ แป๊บเดียวเสร็จ ใช้ AI บอกท่าทางคนด้วย Code เพียง 15 บรรทัด สร้างแอนิเมชันจากตัวการ์ตูนที่เราวาดเองด้วย Code 2 บรรทัด สร้างไฟล์ท่าเต้นสุดคิวท์ให้ตัวการ์ตูนเต้นตามใน 1 คำสั่ง Artificial Intelligence (AI) Machine Learning 8 Fun Machine Learning ProjectsFor Beginner การหาค่าเหมาะที่สุด (Optimization) Mathematical Optimization Top 20 Python Machine Learning Open Source Projects Introduction to Neural Networks Introduction to Deep Learning with TensorFlow Installing TensorFlow for Deep Learning - OPTIONAL Deep Learning with TensorFlow - Creating the Neural Network Model Deep Learning with TensorFlow - How the Network will run พื้นฐาน TensorFlow - TensorFlow คืออะไร พื้นฐาน TensorFlow - การติดตั้ง TensorFlow บน Windows, macOS, และ Linux พื้นฐาน TensorFlow - การติดตั้ง TensorFlow สำหรับ GPU พื้นฐาน TensorFlow - การติดตั้ง TensorFlow บน Google Colab พื้นฐาน TensorFlow - ความเข้าใจพื้นฐานเกี่ยวกับ Tensor (Tensor คืออะไร) พื้นฐาน TensorFlow - การใช้ tf.constant() เพื่อสร้าง Tensor พื้นฐาน TensorFlow - การใช้ tf.Variable() เพื่อสร้างตัวแปร พื้นฐาน TensorFlow - การเปลี่ยนแปลงค่าของ Tensor พื้นฐาน TensorFlow - การทำงานกับ Operations ใน TensorFlow พื้นฐาน TensorFlow - การใช้ tf.add(), tf.subtract(), tf.multiply() TensorFlow การจัดการกับ Tensors - การเปลี่ยนรูปทรงของ Tensor ด้วย tf.reshape() TensorFlow การจัดการกับ Tensors - การเปลี่ยนชนิดข้อมูลของ Tensor ด้วย tf.cast() TensorFlow การจัดการกับ Tensors - การตัดแบ่งและรวม Tensor ด้วย tf.split() และ tf.concat() TensorFlow การจัดการกับ Tensors - การสร้าง Tensors แบบสุ่มด้วย tf.random() TensorFlow การจัดการกับ Tensors - การใช้งาน Broadcasting ใน TensorFlow TensorFlow การจัดการกับ Tensors - การคำนวณค่าเฉลี่ยและผลรวมของ Tensor TensorFlow การจัดการกับ Tensors - การหาค่าสูงสุดและต่ำสุดใน Tensor TensorFlow การจัดการกับ Tensors - การสร้าง Identity Matrix ด้วย tf.eye() TensorFlow การจัดการกับ Tensors - การหา Trace ของ Matrix TensorFlow การจัดการกับ Tensors - การคำนวณ Determinant ของ Matrix TensorFlow การทำงานกับกราฟ - การสร้าง Computational Graph TensorFlow การทำงานกับกราฟ - การใช้ Autograph ใน TensorFlow TensorFlow การทำงานกับกราฟ - การใช้ tf.function เพื่อเร่งความเร็วการทำงาน TensorFlow การทำงานกับกราฟ - การตรวจสอบ Graph ด้วย tf.summary TensorFlow การทำงานกับกราฟ - การใช้ TensorBoard เพื่อแสดงผล Graph TensorFlow การทำงานกับกราฟ - การทำงานกับ Control Flow (เช่น tf.while_loop, tf.cond) TensorFlow การทำงานกับกราฟ - การสร้าง Custom Operations TensorFlow การทำงานกับกราฟ - การใช้ Gradient Tape เพื่อคำนวณอนุพันธ์ TensorFlow การทำงานกับกราฟ - การทำ Automatic Differentiation TensorFlow การทำงานกับกราฟ - การใช้งาน Gradient Descent Optimizer TensorFlow การสร้างและจัดการโมเดล - การใช้ Sequential API ในการสร้างโมเดล TensorFlow การสร้างและจัดการโมเดล - การสร้างโมเดลด้วย Functional API TensorFlow การสร้างและจัดการโมเดล - การสร้าง Custom Layers ใน TensorFlow TensorFlow การสร้างและจัดการโมเดล - การสร้างและฝึกโมเดลด้วย Model.fit() TensorFlow การสร้างและจัดการโมเดล - การปรับแต่งโมเดลด้วย Model.compile() TensorFlow การสร้างและจัดการโมเดล - การใช้ Loss Functions เช่น MeanSquaredError, CategoricalCrossentropy TensorFlow การสร้างและจัดการโมเดล - การใช้งาน Optimizers เช่น Adam, SGD TensorFlow การสร้างและจัดการโมเดล - การทำ Regularization ในโมเดล (L1, L2) TensorFlow การสร้างและจัดการโมเดล - การสร้างโมเดลด้วย Keras API ใน TensorFlow TensorFlow การสร้างและจัดการโมเดล - การบันทึกและโหลดโมเดลที่ฝึกแล้วด้วย Model.save() และ Model.load_model() TensorFlow การทำงานกับข้อมูล - การโหลดข้อมูลจาก CSV ด้วย tf.data.Dataset TensorFlow การทำงานกับข้อมูล - การใช้ tf.data.Dataset.from_tensor_slices() เพื่อสร้าง Dataset TensorFlow การทำงานกับข้อมูล - การปรับขนาดและแปลงรูปภาพใน Dataset TensorFlow การทำงานกับข้อมูล - การทำงานกับ Batch Data ด้วย Dataset.batch() TensorFlow การทำงานกับข้อมูล - การใช้ Dataset.map() เพื่อแปลงข้อมูล TensorFlow การทำงานกับข้อมูล - การทำ Shuffling ข้อมูลด้วย Dataset.shuffle() TensorFlow การทำงานกับข้อมูล - การโหลดข้อมูลจาก TFRecord Files TensorFlow การทำงานกับข้อมูล - การเขียนข้อมูลเป็น TFRecord Files TensorFlow การทำงานกับข้อมูล - การทำ Prefetching ข้อมูลเพื่อเพิ่มความเร็ว TensorFlow การทำงานกับข้อมูล - การทำงานกับ Sequence Data ใน TensorFlow TensorFlow การประมวลผลภาพ - การใช้ TensorFlow กับชุดข้อมูล MNIST TensorFlow การประมวลผลภาพ - การโหลดและแสดงรูปภาพด้วย TensorFlow TensorFlow การประมวลผลภาพ - การทำงานกับ tf.image สำหรับการจัดการรูปภาพ TensorFlow การประมวลผลภาพ - การทำการเปลี่ยนขนาดรูปภาพ (Resizing) TensorFlow การประมวลผลภาพ - การทำการหมุนและสะท้อนรูปภาพ TensorFlow การประมวลผลภาพ - การทำ Image Augmentation TensorFlow การประมวลผลภาพ - การทำ Normalization ของภาพ TensorFlow การประมวลผลภาพ - การทำการปรับแต่งข้อมูลสำหรับการฝึกโมเดล (Data Preprocessing) TensorFlow การประมวลผลภาพ - การทำการจัดแบ่งข้อมูลเป็น Training และ Testing Sets TensorFlow การประมวลผลภาพ - การใช้ ImageDataGenerator ในการจัดการข้อมูลภาพ TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การสร้าง Convolutional Neural Network (CNN) TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การใช้งาน Convolution Layers TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การใช้ Max Pooling และ Average Pooling TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การใช้ Dropout เพื่อป้องกัน Overfitting TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การสร้างโมเดล CNN สำหรับการรู้จำภาพ TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การใช้ Transfer Learning ด้วยโมเดลที่ถูกฝึกมาแล้ว (Pre-trained Models) TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การใช้งานโมเดลเช่น VGG16, ResNet, Inception TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การประยุกต์ใช้ Fine-Tuning ในโมเดล Pre-trained TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การทำการทำนายภาพด้วยโมเดลที่ถูกฝึก TensorFlow การสร้างโมเดลการรู้จำภาพ (Image Classification) - การประเมินผลการทำนายด้วย Accuracy และ Confusion Matrix TensorFlow การทำงานกับ Sequential Data และ Time Series - การสร้าง Recurrent Neural Network (RNN) TensorFlow การทำงานกับ Sequential Data และ Time Series - การใช้งาน Simple RNN Layers TensorFlow การทำงานกับ Sequential Data และ Time Series - การใช้งาน Long Short-Term Memory (LSTM) TensorFlow การทำงานกับ Sequential Data และ Time Series - การใช้งาน Gated Recurrent Unit (GRU) TensorFlow การทำงานกับ Sequential Data และ Time Series - การสร้างโมเดลเพื่อทำนาย Time Series TensorFlow การทำงานกับ Sequential Data และ Time Series - การจัดการกับ Sequence Padding TensorFlow การทำงานกับ Sequential Data และ Time Series - การทำงานกับ Variable Length Sequences TensorFlow การทำงานกับ Sequential Data และ Time Series - การใช้ Attention Mechanism ใน Time Series TensorFlow การทำงานกับ Sequential Data และ Time Series - การสร้างและฝึก Transformer Networks TensorFlow การทำงานกับ Sequential Data และ Time Series - การประยุกต์ใช้โมเดล RNN/LSTM ในการสร้าง Text Generation TensorFlow การประมวลผลข้อความ (Text Processing) - การทำงานกับข้อความใน TensorFlow TensorFlow การประมวลผลข้อความ (Text Processing) - การใช้ Tokenization เพื่อแปลงข้อความเป็นตัวเลข TensorFlow การประมวลผลข้อความ (Text Processing) - การสร้าง Embeddings ด้วย tf.keras.layers.Embedding TensorFlow การประมวลผลข้อความ (Text Processing) - การใช้ Word2Vec ใน TensorFlow TensorFlow การประมวลผลข้อความ (Text Processing) - การทำการรู้จำความหมายในประโยคด้วย Sentiment Analysis TensorFlow การประมวลผลข้อความ (Text Processing) - การสร้างโมเดลสำหรับการจำแนกข้อความ TensorFlow การประมวลผลข้อความ (Text Processing) - การทำ Sequence to Sequence Learning TensorFlow การประมวลผลข้อความ (Text Processing) - การใช้ Attention Mechanism ใน NLP TensorFlow การประมวลผลข้อความ (Text Processing) - การสร้างโมเดลสำหรับ Machine Translation TensorFlow การประมวลผลข้อความ (Text Processing) - การใช้ Pre-trained Transformers เช่น BERT, GPT-2 ใน TensorFlow TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การทำงานกับ Generative Adversarial Networks (GANs) TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การสร้าง Discriminator และ Generator ใน GAN TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การสร้าง Conditional GAN (cGAN) TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การสร้าง Variational Autoencoders (VAEs) TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การทำงานกับ Self-Supervised Learning TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การประยุกต์ใช้ Reinforcement Learning ด้วย TensorFlow TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การใช้ Proximal Policy Optimization (PPO) TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การใช้ Deep Q-Learning (DQN) TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การสร้างและฝึกโมเดล Deep Reinforcement Learning TensorFlow การเรียนรู้เชิงลึกขั้นสูง - การใช้ TensorFlow Lite เพื่อ Deploy โมเดลบน Mobile พื้นฐาน Keras - Keras คืออะไร พื้นฐาน Keras - ความแตกต่างระหว่าง Keras และ TensorFlow พื้นฐาน Keras - การติดตั้ง Keras ผ่าน TensorFlow พื้นฐาน Keras - Keras API คืออะไร พื้นฐาน Keras - การใช้ Keras กับ TensorFlow พื้นฐาน Keras - การใช้ Keras บน Google Colab พื้นฐาน Keras - ความเข้าใจเกี่ยวกับ Sequential API ใน Keras พื้นฐาน Keras - การใช้ Functional API ใน Keras พื้นฐาน Keras - การใช้ Model Subclassing ใน Keras พื้นฐาน Keras - การใช้ Input() ในการสร้าง Input Layer การสร้างโมเดลพื้นฐานใน Keras - การสร้างโมเดล Sequential ด้วย Keras การสร้างโมเดลพื้นฐานใน Keras - การเพิ่มเลเยอร์ในโมเดลด้วย model.add() การสร้างโมเดลพื้นฐานใน Keras - การสร้างโมเดลด้วย Functional API การสร้างโมเดลพื้นฐานใน Keras - การเชื่อมโยงเลเยอร์หลายทางด้วย Functional API การสร้างโมเดลพื้นฐานใน Keras - การสร้างโมเดลแบบมีหลายอินพุตและหลายเอาต์พุต การสร้างโมเดลพื้นฐานใน Keras - การใช้เลเยอร์ Dense ใน Keras การสร้างโมเดลพื้นฐานใน Keras - การใช้เลเยอร์ Activation เพื่อเพิ่มฟังก์ชันการกระตุ้น การสร้างโมเดลพื้นฐานใน Keras - การใช้เลเยอร์ Dropout เพื่อป้องกันการ Overfitting การสร้างโมเดลพื้นฐานใน Keras - การใช้เลเยอร์ BatchNormalization เพื่อเร่งความเร็วในการฝึกโมเดล การสร้างโมเดลพื้นฐานใน Keras - การใช้เลเยอร์ Flatten เพื่อทำให้ Tensor แบนราบ Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การใช้ model.compile() เพื่อเตรียมโมเดลสำหรับการฝึก Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การเลือกใช้ Optimizers เช่น SGD, Adam, RMSprop Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การใช้ Loss Functions เช่น MeanSquaredError, CategoricalCrossentropy Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การเพิ่ม Metrics ในการประเมินโมเดล เช่น Accuracy Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การใช้ Custom Loss Function Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การสร้าง Custom Metric Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การใช้ Custom Optimizer Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การทำงานกับ Learning Rate Scheduling Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การใช้ Early Stopping เพื่อป้องกันการ Overfitting Keras การทำงานกับ Optimizers, Loss Functions, และ Metrics - การใช้ ReduceLROnPlateau เพื่อลดค่า Learning Rate อัตโนมัติ การฝึกโมเดลใน Keras - การฝึกโมเดลด้วย model.fit() การฝึกโมเดลใน Keras - การฝึกโมเดลด้วย Mini-batch Gradient Descent การฝึกโมเดลใน Keras - การประเมินผลโมเดลด้วย model.evaluate() การฝึกโมเดลใน Keras - การทำนายผลลัพธ์ด้วย model.predict() การฝึกโมเดลใน Keras - การใช้ Validation Data ในการฝึกโมเดล การฝึกโมเดลใน Keras - การปรับแต่งจำนวน Epochs และ Batch Size การฝึกโมเดลใน Keras - การทำ Cross-Validation ใน Keras การฝึกโมเดลใน Keras - การใช้ fit_generator() สำหรับการฝึกข้อมูลขนาดใหญ่ การฝึกโมเดลใน Keras - การใช้ Callbacks ใน Keras การฝึกโมเดลใน Keras - การเก็บข้อมูลการฝึกด้วย History Object การบันทึกและโหลดโมเดลใน Keras - การบันทึกโมเดลด้วย model.save() การบันทึกและโหลดโมเดลใน Keras - การบันทึกโมเดลในรูปแบบ HDF5 การบันทึกและโหลดโมเดลใน Keras - การบันทึกโมเดลในรูปแบบ SavedModel (TensorFlow) การบันทึกและโหลดโมเดลใน Keras - การโหลดโมเดลด้วย load_model() การบันทึกและโหลดโมเดลใน Keras - การบันทึกเฉพาะน้ำหนักโมเดลด้วย model.save_weights() การบันทึกและโหลดโมเดลใน Keras - การโหลดน้ำหนักโมเดลด้วย model.load_weights() การบันทึกและโหลดโมเดลใน Keras - การใช้ Checkpoint เพื่อบันทึกโมเดลระหว่างการฝึก การบันทึกและโหลดโมเดลใน Keras - การบันทึกโมเดลแบบ Sequential และ Functional API การบันทึกและโหลดโมเดลใน Keras - การทำการบันทึกโมเดลหลายเวอร์ชันด้วย Checkpoints การบันทึกและโหลดโมเดลใน Keras - การบันทึกโมเดลที่ดีที่สุดด้วย EarlyStopping และ Checkpoints การทำงานกับข้อมูลใน Keras - การโหลดข้อมูลจากไฟล์ CSV ด้วย Keras การทำงานกับข้อมูลใน Keras - การใช้ ImageDataGenerator สำหรับการโหลดและแปลงข้อมูลภาพ การทำงานกับข้อมูลใน Keras - การทำ Image Augmentation ด้วย ImageDataGenerator การทำงานกับข้อมูลใน Keras - การโหลดข้อมูลจาก tf.data.Dataset การทำงานกับข้อมูลใน Keras - การทำงานกับ Sequence Data ด้วย TimeseriesGenerator การทำงานกับข้อมูลใน Keras - การใช้ pad_sequences เพื่อจัดการกับข้อมูลที่ไม่สมดุล การทำงานกับข้อมูลใน Keras - การทำ Normalization ของข้อมูลด้วย StandardScaler การทำงานกับข้อมูลใน Keras - การทำ One-Hot Encoding ของข้อมูลที่เป็นหมวดหมู่ การทำงานกับข้อมูลใน Keras - การแยกข้อมูลเป็นชุดการฝึกและชุดการทดสอบ การทำงานกับข้อมูลใน Keras - การโหลดข้อมูล MNIST ใน Keras Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การสร้างเลเยอร์ Convolution ด้วย Conv2D Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การใช้เลเยอร์ MaxPooling และ AveragePooling Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การสร้างโมเดล CNN สำหรับการรู้จำภาพ Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การใช้เลเยอร์ GlobalMaxPooling และ GlobalAveragePooling Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การใช้เลเยอร์ Dropout ร่วมกับ CNN เพื่อป้องกัน Overfitting Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การเพิ่ม BatchNormalization ใน CNN เพื่อเร่งความเร็วการฝึก Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การใช้ Padding กับเลเยอร์ Convolution Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การใช้ Dilated Convolution ใน Keras Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การทำ Fine-Tuning โมเดล CNN Keras การสร้างโมเดล Convolutional Neural Networks (CNN) - การใช้ Transfer Learning ร่วมกับโมเดล CNN Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การสร้างเลเยอร์ Simple RNN Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การสร้างเลเยอร์ Long Short-Term Memory (LSTM) Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การสร้างเลเยอร์ Gated Recurrent Unit (GRU) Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การประยุกต์ใช้ RNN ในการทำนาย Time Series Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การสร้าง Text Generation ด้วย RNN Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การใช้ Bidirectional RNN ใน Keras Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การใช้ Attention Mechanism ใน RNN Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การทำ Sequence-to-Sequence Learning ด้วย RNN Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การจัดการกับ Sequence Padding ใน RNN Keras การสร้างโมเดล Recurrent Neural Networks (RNN) - การประยุกต์ใช้ RNN ในงาน NLP Keras การสร้างโมเดลการประมวลผลภาพ - การสร้างโมเดลการรู้จำภาพด้วย CNN Keras การสร้างโมเดลการประมวลผลภาพ - การใช้ Pre-trained Models เช่น VGG16, ResNet Keras การสร้างโมเดลการประมวลผลภาพ - การใช้ Transfer Learning ในงานการรู้จำภาพ Keras การสร้างโมเดลการประมวลผลภาพ - การใช้โมเดล MobileNet สำหรับการรู้จำภาพ Keras การสร้างโมเดลการประมวลผลภาพ - การทำการ Segment ภาพด้วย Fully Convolutional Networks (FCN) Keras การสร้างโมเดลการประมวลผลภาพ - การทำการ Segmentation ด้วย UNet Keras การสร้างโมเดลการประมวลผลภาพ - การทำการตรวจจับวัตถุด้วย YOLO (You Only Look Once) Keras การสร้างโมเดลการประมวลผลภาพ - การใช้โมเดล SSD (Single Shot Multibox Detector) Keras การสร้างโมเดลการประมวลผลภาพ - การทำ Image Captioning ด้วย CNN + RNN Keras การสร้างโมเดลการประมวลผลภาพ - การสร้างโมเดลการรู้จำใบหน้า Keras การทำงานกับ Natural Language Processing (NLP) - การใช้ Tokenizer ในการจัดการกับข้อความ Keras การทำงานกับ Natural Language Processing (NLP) - การสร้าง Word Embedding ด้วย Embedding Layer Keras การทำงานกับ Natural Language Processing (NLP) - การใช้ Pre-trained Word Embeddings เช่น GloVe Keras การทำงานกับ Natural Language Processing (NLP) - การทำงานกับ One-Hot Encoding ในงาน NLP Keras การทำงานกับ Natural Language Processing (NLP) - การสร้างโมเดลสำหรับ Sentiment Analysis Keras การทำงานกับ Natural Language Processing (NLP) - การสร้างโมเดลสำหรับการจำแนกข้อความ Keras การทำงานกับ Natural Language Processing (NLP) - การทำงานกับ Seq2Seq Models ในการแปลภาษา Keras การทำงานกับ Natural Language Processing (NLP) - การสร้างโมเดล Text Generation Keras การทำงานกับ Natural Language Processing (NLP) - การใช้ Attention Mechanism ในงาน NLP Keras การทำงานกับ Natural Language Processing (NLP) - การประยุกต์ใช้ BERT และ GPT-2 ใน Keras

Mathematical Optimization

หมายเหตุ: บทความนี้เป็นส่วนหนึ่งของ "บทความชุด Article with Machine Translation" ซึ่งเป็นการแปลบทความจากต้นฉบับภาษาต่างประเทศด้วย Machine translation ดังนั้นจึงมีข้อผิดพลาดอยู่หลายจุด ขอให้ผู้อ่านโปรดใช้วิจารณญาณในการอ่าน ทาง EPT ไม่ขอรับประกันว่าข้อมูลที่ท่านได้อ่านเป็นข้อมูลที่ถูกต้อง และไม่ขอรับผิดชอบความเสียหายใด ๆ ที่เกิดต่อผู้อ่านทั้งทางร่างกาย จิตใจ ทรัพย์สิน ฯลฯ นะครับ

การหาค่าที่เหมาะสุดทางคณิตศาสตร์

 

“การเขียนโปรแกรมเชิงคณิตศาสตร์” เปลี่ยนเส้นทางได้ที่นี่ สำหรับวารสาร peer-reviewed ดูที่นี่ Mathematical Programming  

“การหาค่าที่เหมาะสุด” และ “Optimum” เปลี่ยนเส้นทางได้ที่นี่ สำหรับการใช้งาน อื่นๆ ดูที่ Optimization (disambiguation) และ Optimum (disambiguation)

กราฟ paraboloid ได้ให้ z = f(x, y) = −(x² + y²) + 4. จุดสูงสุดของโค้งอยู่ที่

(x, y, z) = (0, 0, 4) ถูกชี้ให้เห็นโดยจุดสีฟ้า
 

Nelder-Mead การค้นหาที่น้อยที่สุดของ Simionescu's function จุดยอด Simplex ถูกเรียงลำดับโดยค่าของพวกมัน ที่ๆ 1 มีค่าต่ำที่สุด (ดีที่สุด)

ในทางคณิตศาสตร์ , วิทยาศาสตร์คอมพิวเตอร์และงานวิจัยการดำเนินการ , การ หาค่าที่เหมาะที่สุดทางคณิตศาสตร์หรือการเขียนโปรแกรมทางคณิตศาสตร์ เป็นการ เลือกสรรขององค์ประกอบที่ดีที่สุด (เกี่ยวกับเกณฑ์บางอย่าง) จากบางชุดของทาง เลือกที่มีอยู่

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

ปัญหาการหาค่าเหมาะสุด

บทความหลัก : Optimization problem

ปัญหาการหาค่าเหมาะสุดถูกเป็นตัวแทนได้ในวิถีทางด้านล่างนี้ :

ให้ : ฟังก์ชั่น จาก set A ไปยังจำนวนจริง

ค้นหา : ตัว x0 ใน A ดังนั้น (การลด) หรือ ดังนั้น (การเพิ่ม) 

สูตรนี้เรียกว่าปัญหาการหาค่าเหมาะสุดหรือปัญหาการเขียนโปรแกรมทาง คณิตศาสตร์ (ในแง่ที่ไม่ตรงมากนักเกี่ยวเนื่องกับ computer programming [การ เขียนโปรแกรมคอมพิวเตอร์] แต่ยังคงถูกใช้ในตัวอย่างใน linear programming [การเขียนโปรแกรมเส้นตรง]) หลายๆปัญหาในโลกจริงๆหรือปัญหาทางทฤษฎีอาจ จะเป็นต้นแบบใน framework ปกตินี้ ปัญหาจำลองโดยการใช้เทคนิคนี้ในสาขา ของฟิสิกส์และวิสัยทัศน์คอมพิวเตอร์อาจจะถูกอ้างถึงเทคนิคเป็น energy minimization (การลดพลังงาน) ซึ่งจะบอกค่าของฟังก์ชั่น f เป็นตัวแทนพลังงาน ของระบบที่ถูกทำเป็นต้นแบบ

โดยปกติแล้ว A เป็นสับเซ็ตของ Euclidean space Rn ซึ่งถูกระบุบ่อยครั้งโดยชุด ของข้อจำกัด , ความเท่าเทียมกันหรือความไม่เท่าเทียมกันที่สมาชิกของ A ต้องพอใจ โดเมน A ของ  f ถูกเรียกว่า search space (พื้นที่ว่างการค้นหา) หรือ choice set (ชุดของตัวเลือก) ขณะที่ตัวต่างๆของ A ถูกเรียกว่า candidate solutions (การแก้ปัญหาผู้เข้าร่วม) หรือ feasible solutions (การแก้ไขปัญหาที่ เป็นไปได้)

ฟังก์ชั่น f ถูกเรียกอย่างหลากหลายว่า objective function (ฟังก์ชั่นเป้าหมาย) ,loss function (ฟังก์ชั่นการสูญเสีย) หรือ cost function (ฟังก์ชั่นค่าใช้จ่าย) (การลด) , utility function (ฟังก์ชั่นสารประโยชน์) หรือ fitness function (การเพิ่ม) หรือในบางสาขา คือ energy function (ฟังก์ชั่นพลังงาน) หรือ energy functional (การทำงานของพลังงาน) การแก้ปัญหาที่เป็นไปได้ที่ลด (หรือลด ถ้ามันคือเป้าหมาย) ฟังก์ชั่นเป้าหมายที่เรียกว่า optimal solution (การแก้ปัญหาที่ดี ที่สุด)

ในทางคณิตศาสตร์ ปัญหาการหาค่าเหมาะสุดแบบดั้งเดิมมักถูกระบุอยู่ในแง่ของ การลดเป็นปกติ เว้นแต่ทั้งฟังก์ชั่นเป้าหมายและบริเวณที่เป็นไปได้ (feasible region) เป็นconvex ในปัญหาการลด พวกมันอาจจะเป็น minima ท้องที่หลายๆอัน 

local minimum x* ถูกกำหนดให้เป็นจุดที่มีบาง δ> 0 ดังนั้น สำหรับ x ทั้งหมด ที่ๆ

 

นิพจน์

 

    

รองรับ; นั่นคือสิ่งที่จะพูดถึง บางบริเวณรอบๆ x* ค่าของฟังก์ชั่นทั้งหมดมากกว่า หรือเท่ากับค่าที่จุดนั้น Maxima ท้องถิ่นถูกกำหนดในลักษณะที่คล้ายกัน

ในขณะที่ระดับต่ำสุดในท้องถิ่นอย่างน้อยก็ดีพอๆกับจุดที่ใกล้เคียง ส่วน global minimum ดีพอๆกับจุดที่เป็นไปได้ทุกๆจุด สำหรับปัญหา convex ถ้ามันมี local minimum ที่อยู่ภายใน (ไม่ได้อยู่บนมุมของชุดของจุดที่เป็นไปได้) มันเป็น  global minimum ด้วย แต่ปัญหา nonconvex อาจจะมีมากกว่า 1 local minimum บางส่วนต้องการที่จะเป็น global minima 

อัลกอริทึมจำนวนมากมีจุดประสงค์เพื่อที่จะแก้ปัญหา nonconvex — ส่วนใหญ่ ของนักแก้ปัญหาที่มีอยู่ในท้องตลาด — ไม่สามารถสร้างความแตกต่างได้ระหว่าง การแก้ปัญหาการหาค่าที่เหมาะสุดอย่างบ้านๆกับการแก้ปัญหาการหาค่าที่เหมาะสุด โดยสากลและจะปฏิบัติต่อผู้ขึ้นรูปเป็นการแก้ปัญหาที่เกิดขึ้นจริงกับปัญหาเดิม Global optimization คือ สาขา ของคณิตศาสตร์ประยุกต์และการวิเคราะห์เชิงตัวเลข ที่เกี่ยวข้องกับการพัฒนาของ อัลกอริทึม deterministic ที่มีความสามารถในการรับ ประกัน convergence ในเวลาที่จำกัด เพื่อแก้ปัญหาในทางที่เหมาะสุดสำหรับปัญหา nonconvex 

สัญกรณ์

ปัญหาการ Obtimization มักแสดงด้วยสัญกรณ์พิเศษ นี่เป็นตัวอย่าง :

ค่ามากสุดและน้อยสุดของฟังก์ชั่น

พิจารณาสัญกรณ์ต่อไปนี้ : 

สิ่งนี้หมายถึงค่าน้อยที่สุดของฟังก์ชั่นวัตถุ เมื่อเลือก x จากชุดของ จำนวนจริง  ค่าที่น้อยที่สุดในกรณีนี้ คือ 1 เกิดขึ้นที่

คล้ายกันกับ

ร้องขอสำหรับค่าที่มากที่สุดของฟังก์ชั่นเป้าหมาย 2x ที่ๆ x อาจจะเป็นจำนวน จริงใดๆก็ได้ ในกรณีนี้ ไม่มีฟังก์ชั่นเป้าหมายสูงสุดที่กำหนดไว้ (คือไม่มีขอบเขต) ดังนั้น คำตอบก็คือ "infinity" หรือ "หาค่าไม่ได้"  

 

Optimal Input Arguments

บทความหลัก : Arg max

พิจารณาสัญกรณ์ต่อไปนี้ :

หรือที่สมดุลกัน

ขึ้นอยู่กับ :

แทนคู่ของ ( x , y ) ที่ลดค่าของฟังก์ชั่นเป้าหมาย ที่ถูกเพิ่มข้อจำกัดว่า x อยู่ในช่วงของ [-5,5] (อีกครั้งนึง ค่าสูงสุดจริงๆของนิพจน์ไม่ได้สำคัญอะไร) ในกรณีนี้ การแก้ปัญหาเป็นคู่ของ (5, 2kπ) และ (−5,(2k+1)π) ที่ๆ k มีช่วงมาก กว่าจำนวนเต็มทั้งหมด arg min และ arg max บางครั้งอาจจะเขียนว่า argmin และ argmax ก็ได้ ซึ่งมันย่อมาจาก argument of the minimum และ argument of the maximum

Multi-objective optimization

บทความหลัก : Multi-objective optimization

การเพิ่มจุดประสงค์มากกว่า 1 จุดไปยังปัญหาการหาค่าเหมาะสุดเป็นการเพิ่มความ ซับซ้อนเข้าไปอีก ยกตัวอย่างเช่น เพื่อที่จะ optimize การออกแบบเชิงโครงสร้าง อย่างหนึ่งที่ต้องการการออกแบบ คือ เบาและแข็ง เมื่อ 2 วัตถุขัดแย้งกัน  trade-off จะถูกสร้างขึ้นมา มันอาจจะเป็นการออกแบบที่เบาที่สุดอันนึง แข็งที่สุดอันนึงและ จำนวนการออกแบบที่นับไม่ถ้วนนั่นคือการประนีประนอมน้ำหนักและความแข็ง แกร่งบางอย่าง ชุดของการออกแบบ trade-off ที่ไม่สามารถปรับปรุงได้ตามเกณฑ์ หนึ่งโดยไม่ทำร้ายเกณฑ์อื่น รู้จักกันในฐานะที่เป็น Pareto set การโค้งเว้าหรือ curve สร้างการพล็อตน้ำหนักซึ่งต่อต้านความแข็งของการออกแบบที่ดีที่สุดที่รู้จักกันดีใน ฐานะที่เป็น Pareto frontier

 

การออกแบบถูกตัดสินว่าเป็น "Pareto ที่ดีที่สุด" ("ประสิทธิภาพของ Pareto" หรือ ในชุด Pareto ที่เท่าเทียมกัน) ถ้ามันไม่ได้ถูกครอบครองโดยการออกแบบอันอื่นๆ : ถ้ามันแย่กว่าการออกแบบอันอื่นๆ ในบางอย่างและไม่ดีที่สุดในประการใดๆ มันถูก ครอบงำและไม่ใช่ Pareto ที่ดีที่สุด

 

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


ปัญหาการหาค่าที่เหมาะสุดแบบหลายวัตถุประสงค์ได้ถูก generalized ต่อไปเป็น ปัญหาการหาค่าเวกเตอร์ที่ดีที่สุดที่ๆการจัดอันดับไม่ได้ยาวมาก (บางส่วน) ถูกให้โดย การเรียงลำดับ Pareto  

 

การหาค่า Multi-modal ที่เหมาะที่สุด

ปัญหาการหาค่าที่เหมาะที่สุดมักจะเป็น multi-modal; นั่นแหละ พวกเขามีการแก้ ปัญหาที่ดีมากมาย พวกเขาดีมากๆในทางระดับโลก (เหมือนกับค่า cost function) หรือมันมีการรวมกันระดับโลกที่ดีหลายๆอย่างและการแก้ปัญหาแบบบ้านๆที่ดีด้วย  

การได้รับการแก้ปัญหาที่หลากหลายทั้งหมด (อย่างน้อยบางอย่าง) เป็นเป้าหมาย ของตัวหาค่าที่ดีที่สุดของ multi-modal

 

เทคนิคการหาค่าที่ดีที่สุดแบบคลาสสิคเนื่องจากการเข้าถึงซ้ำๆของพวกเขาไม่ได้มี
ประสิทธิภาพอย่างน่าพึงพอใจ เมื่อพวกเขาเคยได้รับการแก้ปัญหาที่หลากหลาย เพราะว่ามันไม่ได้ถูกการันตีว่าการแก้ปัญหาที่แตกต่างจะได้รับแม้แต่จุดเริ่มต้นที่แตกต่างในการรันที่หลากหลายของอัลกอริทึม อย่างไรก็ตาม Evolutionary algorithms เป็นการเข้าถึงที่ได้รับความนิยมมากๆเพื่อที่จะได้รับการแก้ปัญหาที่หลากหลายใน งานการหาค่าที่ดีที่สุดของ multi-modal  

 

การจัดกลุ่มของประเด็นสำคัญและ extrema

ปัญหาความเป็นไปได้ 

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

 

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

 

การมีอยู่

ทฤษฎีบทค่าสุดขีดของ Karl Weierstrass กล่าวว่า ฟังก์ชั่นค่าจริงๆที่ต่อเนื่องบนชุด

compact บรรลุถึงค่ามากสุดและน้อยสุดของมันแล้ว โดยปกติ ฟังก์ชั่นที่ต่ำกว่าแบบ กึ่งต่อเนื่องบนชุด compact บรรลุค่าน้อยสุดของมัน ; ฟังก์ชั่นที่สูงกว่าแบบกึ่งต่อ เนื่องบนชุด compact บรรลุค่ามากสุดของมัน


 

เงื่อนไขจำเป็นสำหรับการหาค่าที่ดีที่สุด

1 ในทฤษฎีบทของ Fermat กว่าวว่า optima ของปัญหาที่ไม่มีข้อจำกัดถูกค้นพบที่ จุดคงที่ ที่ๆอนุพันธ์แรกหรือการไล่ระดับสีของฟังก์ชั่นจุดประสงค์เป็น 0 (ดูที่ first derivative test) โดยปกติ พวกเขาอาจจะถูกพบที่ประเด็นสำคัญที่ๆ อนุพันธ์แรก หรือการไล่ระดับสีของฟังก์ชั่นจุดประสงค์เป็น 0 หรือหาค่าไม่ได้หรือบนขอบเขต ของชุดตัวเลือกสมการ (หรือชุดของสมการ) กว่าอนุพันธ์แรกๆเท่ากับ 0 ที่ๆภายใน ที่เหมาะสมถูกเรียกว่า 'เงื่อนไข first-order' หรือชุดของเงื่อนไข first-order

 

Optima ของปัญหาความเสมอภาคที่ถูกจำกัดสามารถถูกพบได้โดยวิธีการ Lagrange multiplier Optima ของปัญหาด้วยข้อจำกัดความเสมอภาคและ/หรือความไม่เสมอ ภาคสามารถถูกพบโดยการใช้ 'Karush–Kuhn–Tucker conditions

 

เงื่อนไขที่เพียงพอสำหรับการหาค่าที่ดีที่สุด

ขณะที่บททดสอบของอนุพันธ์แรกระบุว่าอาจจะเป็น extrema การทดสอบนี้ไม่ได้ แยกแยะจุดที่น้อยที่สุดจากอันหนึ่งที่มากที่สุดหรืออันอื่นที่ไม่ทั้งสอง เมื่อฟังก์ชัน วัตถุประสงค์มีความแตกต่างกันสองครั้ง กรณีเหล่านี้จะถูกแยกแยะโดยการตรวจ สอบอนุพันธ์ที่ 2 หรือเมทริกซ์ของอนุพันธ์ที่ 2 (เรียกว่า Hessian matrix) ในปัญหาที่ไม่จำกัดหรือเมทริกซ์ของอนุพันธ์ที่ 2 ของฟังก์ชั่นวัตถุประสงค์และ ข้อจำกัดที่เรียกว่า bordered Hessian ในปัญหาที่จำกัด เงื่อนไขที่แยกแยะ maxima หรือ minima จากจุดคงที่อื่นๆ เรียกว่า ‘เงื่อนไข second-order’ (ดูที่ 'Second derivative test') ถ้าการแก้ปัญหาของผู้เข้าสมัครทำให้เงื่อนไข first-order พึงพอใจ แล้วเงื่อนไข second-order มันก็พึงพอใจด้วย มันมากเพียงพอในการก่อตั้งอย่าง น้อยก็การหาค่าที่ดีที่สุดระดับท้องถิ่น 

 

ความละเอียดอ่อนและความต่อเนื่องของ optima

ทฤษฎีบทซองจดหมายอธิบายถึงวิธีการที่ค่าของการแก้ปัญหาที่ดีที่สุดเปลี่ยนไป

เมื่อพารามิเตอร์พื้นฐานเปลี่ยน กระบวนการคำนวณการเปลี่ยนแปลงนี้เรียกว่า comparative statics

 

ทฤษฎีบทค่ามากสุดของ Claude Berge (1963) อธิบายความต่อเนื่องของวิธีการแก้ ปัญหาที่ดีที่สุดเป็นฟังก์ชั่นของพารามิเตอร์พื้นฐาน

แคลคูลัสของการหาค่าที่ดีที่สุด

บทความหลัก : Karush–Kuhn–Tucker conditions

ยังสามารถดูได้ที่ : Critical point (mathematics), Differential calculus, Gradient, Hessian matrix, Positive definite matrix, Lipschitz continuity, Rademacher's theorem, Convex function, และ Convex analysis

 

สำหรับปัญหาที่ไม่จำกัดด้วยฟังก์ชั่น twice-differentiable บางจุดที่สำคัญสามารถ ถูกพบโดยการหาจุดที่ๆการไล่ระดับสีของฟังก์ชั่นเป้าหมายเป็น 0 (นั่นแหละ จุดคงที่) โดยปกติมาก การไล่ระดับสีย่อยที่เป็น 0 รับรองว่าค่าต่ำสุดในท้องถิ่น ได้รับการค้นพบสำหรับปัญหาการลดด้วยฟังก์ชัน convex และฟังก์ชั่น Lipschitz ท้องถิ่นอื่นๆ

ต่อไป จุดที่สำคัญสามารถถูกจัดกลุ่มโดยการใช้ความแน่นอนของเมทริกซ์ Hessian : ถ้า Hessian เป็นบวกแน่นอนที่จุดที่สำคัญ แล้วจุดนั้นคือจุดค่าน้อยสุดท้องถิ่น; ถ้า 

Hessian matrix เป็นลบแน่นอน จุดนั้นคือค่าสูงสุดท้องถิ่น; ท้ายที่สุด จุดก็เป็น ชนิดหนึ่งของ saddle point 

ปัญหาที่จำกัดมักจะสามารถถูกแปลงร่างไปเป็นปัญหาที่ไม่จำกัดด้วยความช่วยเหลือของ Lagrange multipliers (ตัวคูณ Lagrange) Lagrangian relaxation (การผ่อน คลายแบบ Lagrangian) ยังสามารถที่จะจัดหาวิธีการแก้ปัญหาโดยประมาณให้กับ ปัญหาจำกัดที่ยากได้ 

เมื่อฟังก์ชั่นเป้าหมาย คือ convex แล้วค่าต่ำสุดท้องถิ่นใดๆจะยังสามารถเป็นค่าต่ำ สุดของโลกได้อีกด้วย มันมีเทคนิคตัวเลขที่มีประสิทธิภาพสำหรับการลดฟังก์ชัน convex อยู่ เช่น interior-point methods

 

เทคนิคการหาค่าที่ดีที่สุดเชิงการคำนวณ

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

 

อัลกอริทึมการหาค่าที่เหมาะสุด

ยังดูได้ที่ : List of optimization algorithms (ลิสต์ของอัลกอริทึมการหาค่าเหมาะสุด)

วิธีการซ้ำๆ

บทความหลัก : Iterative method

ยังสามารถดูได้ที่ :  Newton's method in optimization, Quasi-Newton method, Finite difference, Approximation theory, และ Numerical analysis

วิธีการซ้ำๆใช้เพื่อแก้ปัญหาของการเขียนโปรแกรมที่ไม่ใช่เชิงเส้นแตกต่างกันไปขึ้น อยู่กับว่าพวกเขาประเมิน Hessians , การไล่ระดับสีหรือว่าค่าฟังก์ชั่นเท่านั้น ในขณะ ที่ประเมินค่า Hessians (H) และการไล่ระดับสี (G) มันก็ปรับปรุงอัตราของ convergence สำหรับฟังก์ชั่นที่ปริมาณเหล่านี้มีอยู่และความราบลื่นที่มีประสิทธิภาพ อย่างมาก การประเมินค่านี้เพิ่มความซับซ้อนเชิงการคำนวณ (หรือค่าใช้จ่ายเชิง คำนวณ) ของแต่ละการซ้ำ ในบางกรณี ความซับซ้อนในการคำนวณอาจสูงเกินไป

เกณฑ์สำคัญประการหนึ่งสำหรับการหาค่าเหมาะสุดเป็นเพียงจำนวนของการ ประเมินฟังก์ชั่นที่จำเป็นเนื่องจากมักเป็นความพยายามอย่างมากในการคำนวณ มักจะมากกว่าความพยายามภายใต้การหาค่าเหมาะสุดของมันเองมากๆ ซึ่งโดยหลัก แล้วจะต้องดำเนินการเหนือตัวแปร N 

อนุพันธ์ให้ข้อมูลที่มีรายละเอียดสำหรับการหาค่าเหมาะสุด แต่มันยากขึ้นในการ คำนวณ เช่น การประมาณการไล่ระดับสีใช้อย่างน้อยการประเมินค่าฟังก์ชั่น N+1

สำหรับการประมาณของอนุพันธ์ที่ 2 (ถูกสะสมไว้ใน Hessian matrix) จำนวนของ การประเมินฟังก์ชั่นอยู่ในลำดับของ N² วิธีการของ Newton ต้องการลำดับที่ 2 ของ อนุพันธ์ ดังนั้นสำหรับแต่ละการทำซ้ำจำนวนของการเรียกฟังก์ชั่น คือ อยู่ในลำดับ ของ N² แต่สำหรับตัวหาค่าเหมาะสุดการไล่ระดับสีที่เรียบง่ายก็คือ N เพียงอย่าง เดียว อย่างไรก็ตาม ตัวหาค่าเหมาะสุดการไล่ระดับสี จำเป็นต้องใช้การทำซ้ำมากกว่า อัลกอริทึมของนิวตัน ที่ดีที่สุดเกี่ยวกับจำนวนของการเรียกฟังก์ชันขึ้นอยู่กับปัญหา ของตัวมันเอง

  • วิธีการที่ประเมิน Hessians (หรือ Hessians โดยประมาณ โดยใช้ความ แตกต่างที่มีขอบเขต) :
  • วิธีการของนิวตัน
  • การเขียนโปรแกรมสมการกำลังสองตามลำดับ : วิธีการที่มีพื้นฐานอยู่บน วิธีการของนิวตันสำหรับปัญหาจำกัดที่มีขนาดเล็กไปจนถึงปานกลาง บางเวอร์ชั่นสามารถรองรับปัญหาใหญ่ๆได้
  • วิธีการจุดภายใน : นี่เป็นคลาสที่ใหญ่มากของวิธีการสำหรับการหาค่าเหมาะสุด ที่จำกัด บางวิธีการจุดภายในใช้เฉพาะข้อมูล การไล่ระดับสี(ย่อย) และอันอื่นที่ ต้องการในการประเมินค่าของ Hessians
  • วิธีการประเมินค่าการไล่ระดับสี หรือการไล่ระดับสีโดยประมาณในบางวิถีทาง (หรือแม้แต่การไล่ระดับสีย่อย) :
  • วิธีการ Coordinate descent : อัลกอริทึมซึ่งอัปเดตคู่พิกัดเดี่ยวในแต่ละการซ้ำ
  • Conjugate gradient methods : วิธีการซ้ำสำหรับปัญหาใหญ่ๆ (ในทฤษฎี วิธีการเหล่านี้สิ้นสุดในจำนวนของขั้นตอนที่จำกัดด้วยฟังก์ชั่นสมการกำลัง สองแต่การสิ้นสุดที่จำกัดขอบเขตนี้ไม่ถูกสังเกตในการฝึกบนคอมพิวเตอร์ที่มีความแม่นยำจำกัด)
  • Gradient descent (หรือในอีกทางหนึ่ง คือ "steepest descent" หรือ "steepest ascent") : วิธีการ (ช้า) ที่น่าสนใจทางประวัติศาสตร์และทฤษฎีซึ่ง ถูกทำความสนใจขึ้นใหม่สำหรับการหาวิธีการโดยประมาณของปัญหาที่ใหญ่ มากๆ
  • Subgradient methods - วิธีการทำซ้ำๆสำหรับฟังก์ชั่น Lipschitz ท้องถิ่นที่มี ขนาดใหญ่ โดยการใช้ generalized gradients ตามที่ Boris T. Polyak, วิธีการ subgradient–projection เหมือนกันกับวิธีการ conjugate–gradient
  • วิธีการ Bundle ของ descent : วิธีการทำซ้ำๆสำหรับปัญหาที่มีขนาดเล็ก ไปจนถึงปานกลางด้วยฟังก์ชั่น Lipschitz ท้องถิ่น โดยเฉพาะสำหรับ ปัญหาการหาค่าต่ำสุด convex (เหมือนกันกับวิธีการ conjugate gradient) 
  • Ellipsoid method : วิธีการทำซ้ำสำหรับปัญหาเล็กๆด้วยฟังก์ชั่นเป้าหมาย quasiconvex และความสนใจที่ยิ่งใหญ่ในทางทฤษฎี โดยเฉพาะอย่างยิ่งในการ ก่อความซับซ้อนเวลาพหุนามของปัญหาการหาค่าเหมาะสุดของ combinatorial บางอัน มันมีความเหมือนกันกับวิธีการ Quasi-Newton
  • Conditional gradient method (Frank–Wolfe) สำหรับการหาค่าที่น้อยที่สุด โดยประมาณของปัญหาโครงสร้างที่มีความพิเศษด้วยข้อจำกัดเชิงเส้น โดยเฉพาะอย่างยิ่งกับเครือข่ายการจราจร สำหรับปัญหาที่ไม่จำกัดโดยทั่วไป วิธีนี้จะลดวิธีการไล่ระดับสี ซึ่งถูกเห็นว่าล้าสมัย (สำหรับปัญหาส่วนใหญ่ ทั้งหมด)
  • Quasi-Newton methods : วิธีการซ้ำสำหรับปัญหาที่มีขนาดปานกลางไปจน ถึงใหญ่ (เช่น N<1000)
  • Simultaneous perturbation stochastic approximation (SPSA) วิธีการ สำหรับการหาค่าที่เหมาะสุด stochastic ; ใช้การสุ่ม (มีประสิทธิภาพ) การประมาณการไล่ระดับสี
  • วิธีการที่ประเมินค่าเฉพาะค่าฟังก์ชั่น : ถ้าปัญหามีความแตกต่างที่ต่อเนื่องกัน แล้วการไล่ระดับสีสามารถถูกประมาณโดยใช้ความแตกต่างที่จำกัดเขต ในกรณีของวิธีการที่มีพืื้นฐานอยู่บนการไล่ระดับสีสามารถถูกใช้งานได้
  • Interpolation methods (วิธีการการแก้ไข)
  • วิธีการ Pattern search ซึ่งมีคุณสมบัติ convergence ที่ดีกว่า  Nelder–Mead heuristic (with simplices) ซึ่งถูกลิสต์ไว้ที่ด้านล่าง  

การรวมกันทั่วโลก

โดยปกติ ถ้าฟังก์ชั่นเป้าหมายไม่ใช่ฟังก์ชั่นสมการกำลังสอง วิธีการที่มากมายของ การหาค่าที่เหมาะสุดจะใช้วิธีการอื่นๆในการทำให้มั่นใจว่าว่าบางส่วนของการวนซ้ำถูกประจบกันกับการแก้ปัญหาที่ดีที่สุด วิธีการแรกและยังคงได้รับ ความนิยมสำหรับการ ทำให้มั่นใจว่า convergence พึ่งพากับ line searches ซึ่งหาค่า ฟังก์ชั่นที่ดีสุดพร้อม กันในมิติเดียว วิธีการอันที่ 2 และได้รับความนิยมมากขึ้น สำหรับการทำให้มั่นใจว่า convergence ใช้ trust regions ทั้ง line searches และ trust regions ถูกใช้ในวิธีการ ที่ทันสมัยของการหาค่าที่เหมาะสุดที่ไม่แตกต่างกัน โดยปกติแล้วตัวหาค่าเหมาะสุด ของโลกจะช้ากว่าตัวหาค่าเหมาะสุดท้องถิ่นที่แอดวานซ์มากๆ (เช่น BFGS) ดังนั้น บ่อยครั้งที่ตัวหาค่าที่เหมาะสุดของโลกที่มีประสิทธิภาพสามารถถูกสร้างโดยการเริ่ม ต้นตัวหาค่าเหมาะสุดท้องถิ่นจากจุดเริ่มต้นที่แตกต่างกัน

การวิเคราะห์พฤติกรรม

บทความหลัก : Heuristic algorithm

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

ลิสต์ของบางการวิเคราะห์พฤติกรรมที่รู้จักกันดี :

การนำไปประยุกต์ใช้

  • ระบบเครื่องยนต์กลไก

ปัญหาในไดนามิกส์ที่บอดี้แข็ง (โดยเฉพาะไดนามิกส์ที่บอดี้แข็งอย่างชัดเจน) มักจะ ต้องการเทคนิคการเขียนโปรแกรมเชิงคณิตศาสตร์ เพราะว่าคุณสามารถที่จะมอง ไดนามิกส์ที่บอดี้แข็งเป็นการตั้งใจที่จะแก้ปัญหาสมการความแตกต่างธรรมดาๆบน ข้อจำกัดที่หลากหลาย ;  ข้อจำกัดของข้อจำกัดทางเรขาคณิตที่ไม่ใช่เชิงเส้นต่างๆ เช่น “2 จุดนี้จะต้องเหมือนกันตลอด” , “พื้นผิวนี้จะ ต้องไม่แทรกซึมเข้าไปยัง อันอื่น” หรือ “จุดนี้จะต้องอยู่ที่ไหนซักที่บน curve นี้เสมอ” อีกอย่างนึง คือ ปัญหาของการคำนวณแรงที่ติดต่อกันจะสามารถถูกทำให้เสร็จโดยการแก้ปัญหา linear complementarity problem (ปัญหาการรวมกันเชิงเส้น) ซึ่งสามารถมองเป็น ปัญหา QP (การเขียนโปรแกรมสมการกำลังสอง) ได้ 

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

  • เศรษฐศาสตร์และการเงิน

เศรษฐศาตร์มีการเชื่อมโยงอย่างใกล้ชิดกับการหาค่าที่ดีที่สุดของตัวแทน ซึ่งคำ นิยามที่มีอิทธิพลหมายถึงเศรษฐศาตร์เกี่ยวกับวิทยาศาสตร์เป็น “การศึกษา พฤติกรรมของมนุษย์เป็นความสัมพันธ์ระหว่างตอนจบและวิธีที่หายาก” ด้วยการใช้ แบบทดแทน ทฤษฎีการหาค่าที่เหมาะที่สุดที่ทันสมัยรวมทฤษฎีการหาค่าที่เหมาะสุด แบบดั้งเดิมแต่ยังซ้อนทับกับทฤษฎีเกมและการศึกษาความสมดุลทางเศรษฐกิจ วารสารของรหัสวรรณกรรมทางเศรษฐศาสตร์จำแนกการเขียนโปรแกรมทาง คณิตศาสตร์ , เทคนิคการหาค่าที่เหมาะสุดและหัวข้อที่เกี่ยวข้องภายใต้ JEL:C61- C63 ในเศรษฐศาตร์จุลภาค ปัญหาคุณประโยชน์ของการหาค่ามากที่สุดและปัญหาคู่ ของมัน , ปัญหาการลดรายจ่ายให้น้อยที่สุด เป็นปัญหาการหาค่าที่เหมาะสุดทาง เศรษฐศาตร์ ตราบเท่าที่พวกเขาทำงานอย่างสม่ำเสมอ consumers จะถือว่ามี ประโยชน์สูงสุด ในขณะที่ firms มักจะถือว่าเป็นการเพิ่มผลกำไรสูงสุด นอกจากนี้ ตัวแทนมักจะถูกสร้างแบบจำลองว่าเป็นผู้ที่เสี่ยงต่อการเกลียด ดังนั้น มันดีกว่าที่ จะหลีกเลี่ยงความเสี่ยง ราคาสินทรัพย์ยังเป็นแบบจำลองโดยใช้ทฤษฎี การหาค่าที่ดี ที่สุด แม้ว่าคณิตศาสตร์พื้นฐานอาศัยการหาค่าที่ดีที่สุดของกระบวนการ stochastic มากกว่าการหาค่าที่ดีที่สุดคงที่ ทฤษฎีการค้านานาชาติยังใช้การหาค่า ที่ดีที่สุดเพื่อ ที่จะอธิบายรูปแบบการค้าระหว่างชาติ การหาค่าที่ดีที่สุดของ portfolios เป็นตัวอย่าง ของการหาค่าที่ดีที่สุดในหลายๆวัตถุประสงค์ในทางเศรษฐศาสตร์ 

ตั้งแต่ปี 1970 เมื่อเวลาผ่านไปนักเศรษฐศาสตร์ได้ทำโมเดลการตัดสินใจไดนามิกส์ โดยการใช้ทฤษฎีการควบคุม ยกตัวอย่างเช่น นักเศรษฐศาสตร์จุลภาคใช้โมเดลการ ค้นหาแบบไดนามิกส์ในการศึกษาพฤติกรรมตลาดแรงงาน ความแตกต่างที่สำคัญ คือ ระหว่างโมเดล deterministic และ stochastic นักเศรษฐศาสตร์มหภาคสร้างโมเดล dynamic stochastic general equilibrium (DSGE) ที่อธิบายไดนามิกส์ของทั้ง เศรษฐศาสตร์เป็นผลมาจากการตัดสินใจหาค่าที่ดีที่สุดของการพึ่งพาอาศัยกันของคนงาน , ผู้บริโภค , นักลงทุนและรัฐบาล

  • วิศวกรรมไฟฟ้า

บางแอพพลิเคชั่นธรรมดาของเทคนิคการหาค่าที่ดีที่สุดในวิศวกรรมทางไฟฟ้ารวมถึง การออกแบบ active filter , การลดสาขาที่เร่ร่อนในระบบจัดเก็บข้อมูลที่เป็น พลังงานแม่เหล็กยิ่งยวด , การออกแบบ space mapping ของโครงสร้างไมโครเวฟ ,

เสาอากาศโทรศัพท์มือถือ , การออกแบบทางแม่เหล็กไฟฟ้า การหาค่าที่ดีที่สุดของ การออกแบบชิ้นส่วนไมโครเวฟและเสาอากาศได้รับการตรวจสอบโดยเชิง Electromagnetically ทำให้มีการใช้แบบจำลองทางฟิสิกส์หรือการจำลองเชิงพื้นที่ ที่เหมาะสมและวิธีการทำแผนที่พื้นที่ตั้งแต่การค้นพบการทำแผนที่พื้นที่ในปี 1993

  • วิศวกรรมโยธา

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

  • การวิจัยการดำเนินการ

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

  • วิศวกรรมควบคุม

การหาค่าที่เหมาะที่สุดเชิงคณิตศาสตร์ถูกใช้ในการออกแบบตัวควบคุมที่ทันสมัย มากๆ ตัวควบคุมในระดับสูง เช่น แบบจำลองการทำนายการควบคุม(MPC) หรือการหาค่าที่เหมาะสุดแบบเวลาจริงๆ (RTO) ใช้งานการหาค่าที่เหมาะสุดเชิง คณิตศาสตร์ อัลกอริทึมเหล่านี้รันออนไลน์และมีการกำหนดค่าซ้ำๆสำหรับตัวแปร การตัดสินใจ เช่น การเปิดการอุดตันในโรงงานการผลิต ด้วยการแก้ปัญหาซ้ำๆที่ ปัญหาการหาค่าเหมาะสุดเชิงคณิตศาสตร์ รวมไปถึงข้อจำกัดและโมเดลของระบบที่ จะควบคุมอีกด้วย

  • ธรณีฟิสิกส์

เทคนิคการหาค่าที่เหมาะที่สุดถูกใช้เป็นปกติในปัญหาการประมาณค่าพารามิเตอร์ทางธรณีฟิสิกส์ ให้ชุดของการวัดเชิงธรณีฟิสิกส์ เช่น seismic recordings (การบันทึก คลื่นไหวสะเทือน) มันเป็นเรื่องปกติที่ใช้ในการแก้ปัญหาสำหรับคุณสมบัติทาง กายภาพและรูปร่างทางเรขาคณิตของหินและของเหลวพื้นฐาน

  • การจำลองแบบโมเลกุล

บทความหลัก : Molecular modeling

วิธีการหาค่าเหมาะสุดที่ไม่ใช่เชิงเส้นถูกใช้อย่างแพร่หลายใน conformational analysis

 

References :

https://en.wikipedia.org/wiki/Mathematical_optimization


Tag ที่น่าสนใจ: mathematical_optimization mathematical_programming optimization machine_translation mathematics computer_science programming linear_programming euclidean_space candidate_solutions feasible_solutions objective_function loss_function cost_function optimal_solution


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา