สมัครเรียนโทร. 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

Introduction to Neural Networks

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

บทนำเครือข่ายประสาท

ยินดีต้อนรับสู่บทความใหม่ในชุดการเรียนการสอน Machine Learning : เรียนรู้ให้ลึกขึ้นกับเครือข่ายประสาทเทียม และ TensorFlow

อภิธานศัพท์

  1. Neural Network (NN) : เครือข่ายประสาท คำนี้ใช้แทนเครื่อข่าวประสาททั้งที่อยู่ในสมองเราและอยู่ใน Computer ที่เรียกว่า Artificial Neural Network นั้นแหละเพราะว่าโดยปกติก็จะใช้ปะปนกันระหว่าง ANN และ NN
  2. Artificail Neural Network (ANN) : ก็คือ เครือข่ายประสาทเทียมนั้นเอง
  3. Support Vector Machine (SVM) : เป็น Algorithm หนึ่งใช้ในงานด้าน Machine Learning มานานในยุคที่ผมเรียนอยู่ SVM เป็นหัวข้องานวิจัยที่ใช้ประยุกติได้หลากหลาย ทำได้ทั้งปัญหา Classification และปัญหา Regression แต่คนนิยมใช้กับ Classification มากกว่า 
  4. Linearity : ความเป็นเชิงเส้น ในอดีตปัญหา Classification ที่ไม่มีความเป็น Linearity จะไม่สามารถใช้ SVM ได้ ต้องใช้ Kernel ช่วย
  5. Kernel : แกนของ SVM ทำให้แก้ปัญหาที่ไม่เป็น Linearity ได้ แต่การหา Kernel ต้องใช้มนุษย์ช่วยอย่างมาก เรียกว่า Feature Engineering ทำให้ทำงานได้ช้าและผลไม่ค่อยดีเท่าไร Deep Neural Network พยายามแก้ปัญหา การใช้ Feature Engineering โดยให้ Machine เรียนรู้เองทั้งหมด ซึ่งต้องอาศัยข้อมูลที่มากพอและ เครื่องที่แรงพอมารัน

ประวัติของ Neural Network โดยย่อ

เครือข่ายประสาทเทียมเป็น ระบบ Algorithm ที่ได้รับแรงบันดาลใจมาจากเครือข่ายประสาทที่อยู่ในสมอง ของคุณ (เครือข่ายประสาทชีวภาพ) ในยุคเริ่มแรก Artificial Neural Network เป็นงานวิจัยที่เกิดจากการผ่าสมองของสิ่งมีชีวิตแล้วศึกษาการทำงานของระบบประสาทที่อยู่ภายใน

เครือข่ายประสาทเทียมที่ผมจะอ้างถึงตอนนี้ แท้ที่จริงแล้วไม่ใช่คอนเซ็ปต์ใหม่อะไรเลย ไอเดียนี้เริ่มมีมาตั้งแต่ปี 1940 แล้ว แต่มีสิ่งที่ทำให้มันกลับมาอยู่ในความสนใจของสาธารณะชนและนักวิจัยอีกครั้งก็คือประสิทธิภาพของมันนั้นเอง เมื่อเปรียบเทียบกับ อัลกอริทึมอย่างเครื่องเวคเตอร์สนับสนุน (Support Vector machine) (SVM) แล้ว Algorithm อย่าง เครือข่ายประสาทเทียมได้รับความนิยมมาก จนถึงกลางยุค 90 เมื่อ SVM ถูกเอามาเพิ่มความสามารถใหม่ๆ (เทคนิคของ SVM เช่นกันถูกคิดขึ้นมานานแล้วก่อนที่มันจะ ถูกนำไปใช้จริง) อย่างเช่นเทคนิค "Kernel" ทำให้ SVM มีความสามารถในการทำงานร่วมกับชุดข้อมูลที่ไม่สามารถแยกได้เป็นแบบเชิงเส้น (ไม่มีความเป็น linearity ) ด้วยKernelนี้ เครื่องจักรเว็กเตอร์สนับสนุน (Support Vector Machine) จึงมีการพัฒนาไปด้านหน้าอีกครั้งอย่างมาก โดยทิ้งห่าง Neural Network ไว้ด้านหลังและจนเกือบจะทำให้ Neural Network ไม่มีอะไรน่าสนใจ เพราะว่าผลลัพท์ทางการปฏิบัติของ Neural Network ค่อนข้างกากกว่า SVM เป็นอย่างมาก จนกระทั่งปี 2011 ที่เครือ ข่ายประสาทเทียมเชิงลึก (Deep Neural Network) เริ่มที่จะมีผลลัพธ์ดีกว่า เครื่องเวคเตอร์สนับสนุน SVM โดยการใช้เทคนิคใหม่นี้ทำให้ Deep Neural Network มีความพร้อมใช้งานกับชุดข้อมูลที่ขนาดใหญ่ขึ้น และคอมพิวเตอร์ที่มีประสิทธิภาพมากขึ้น (ก่อนหน้าที่จะมี Technic ที่เรียกว่า Deep Neural Network นี้ การใช้ Neural Network กับ ข้อมูลขนาดใหญ่ขึ้นไม่ได้ทำให้ประสิทธิภาพของ Network แต่อย่างใด)

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

โมเดลของเครือข่ายประสาทเป็นคอนเซ็ปต์ที่ง่ายมากๆ ไอเดียก็คือการเลียนแบบ เซลล์ประสาท (Perceptron) และในเซลล์ประสาท โดยพื้นฐานคุณจะมี dendrites (รับข้อมูลกระแสไฟฟ้าจาก Node อื่น ), nucleus  , axon (ปล่อย output) และ terminal axon (ปล่อย output ไปยัง Node อื่นๆ)

ต่อไป สำหรับเครือข่าย คุณจำเป็นที่จะต้องมีเซลล์ประสาท 2 ตัว เซลล์ประสาท จะส่งต่อข้อมูลผ่านทาง synapse ระหว่าง dendrites ของอันหนึ่งกับ terminal axon ของอีกอันหนึ่ง

ด้วยเหตุนี้ นี่คือวิธีการทำงานของเซลล์ประสาทที่นักประสาทวิทยาศึกษามา ตอนนี้นักวิทยาศาสตร์คอมพิวเตอร์เข้ามาทำงานต่อ จากความคิดดังกล่าว ดังนั้น เราจะเสนอโมเดลของเซลล์ ประสาทเทียมที่มีหน้าตาเหมือน :

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

วงกลม คือ เซลล์ประสาทหรือ nodes และใน node ก็จะมีการทำงานกับข้อมูล และเส้นเชื่อมต่อพวกมันจะมีน้ำหนัก (weight) แต่ละคอลัมน์เป็นชั้น (Layer) ชั้นแรกของข้อมูลของคุณ คือเลเยอร์ข้อมูลเข้า (input layer) จากนั้นยกเว้นกรณีที่ผลลัพธ์ของคุณเป็นข้อมูลขาเข้าเลย คุณมีเลเยอร์ที่ซ่อนอยู่ (Hidden Layer ) อย่างน้อยหนึ่งLayer ถ้าคุณมีเลเยอร์ที่ถูกซ่อน 1 อัน ดังนั้น คุณจะมีเครือข่ายประสาทเทียมแบบปกติคือไม่ใช่ Deep Neural Network ถ้าคุณเลือกที่จะมีเลเยอร์ที่ซ่อน(Hidden Layer) อยู่มากมายคุณจะมีเครือข่ายประสาทเทียมที่เชิงลึก(Deep Neural Network ) ง่ายไหม? อย่างน้อยๆ ก็ในแนวคิดนั้นเอง  ดังนั้นด้วยโมเดลนี้ คุณมีข้อมูล input คุณทำการน้ำหนัก (weight)มัน และส่งมัน ผ่านไปยังการทำงานในเซลล์ประสาท การทำงานในเซลล์ประสาท คือ ฟังก์ชั่น(Function) และเกณฑ์(Threshold) ซึ่งเรียกว่า Activation Function โดยทั่วไปแล้วก็คือผลรวมของค่าทั้งหมด หลังจากการน้ำหนักด้านบนหรือด้านล่างของค่าที่กำหนด ถ้าเป็นเช่นนั้น คุณจะส่งสัญญาณ (1) ออกหรือถ้าไม่มีอะไรถูกตาม Threshold ก็ Output (0) นั่นคือน้ำหนักและส่งผ่าน ไปยังเซลล์ประสาทต่อไปและการทำงานประเภทเดียวกันจะถูกเรียกใช้ในการที่จำคำนวณนี้

เพราะน้ำหนักที่พวกเขาสุ่มในการเริ่มต้น และมีเอกลักษณ์เฉพาะสำหรับแต่ละ อินพุทไปยัง node/เซลล์ประสาท ใน “feed forward” ดั้งเดิม (ชนิดที่เบสิคที่สุด ของคุณ) เครือข่ายประสาท , คุณมีการส่งผ่านข้อมูลผ่านทางเครือข่ายที่คุณได้ สร้างขึ้นและคุณก็เปรียบเทียบผลลัพธ์กับสิ่งที่คุณหวังว่าผลลัพธ์จะใช้ข้อมูล ตัวอย่างของคุณ จากตรงนี้ คุณจำเป็นที่จะต้องปรับน้ำหนักเพื่อช่วยให้คุณได้รับ output ที่ตรงกับ output ที่คุณตั้งใจเอาไว้ การกระทำการส่งข้อมูลผ่านเครือข่าย ประสาทเทียมเรียกว่าเครือข่ายประสาทเทียมแบบส่งกำลัง (feed forward neural network) ข้อมูลของเราไปจากอินพุตไปจนถึงเลเยอร์ตามลำดับจากนั้นจะส่งออก เมื่อเราถอยหลังและเริ่มปรับน้ำหนักเพื่อลดการสูญเสีย/ค่าใช้จ่ายนี้ เรียกว่าการ เผยแพร่กลับ 

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

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

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

สำหรับงานจำแนกประเภทที่เรียบง่ายเครือข่ายประสาทมีความใกล้เคียงกับ สมรรถนะของอัลกอริทึมแบบอื่น ๆ แม้แต่บางอย่างเช่น K เพื่อนบ้านที่ใกล้ เคียงที่สุด ความงามที่แท้จริงในโครงข่ายประสาทมีข้อมูลที่ใหญ่กว่ามากและคำถาม ที่ซับซ้อนมากขึ้นซึ่งทั้งสองแบบนี้ทำให้โมเดล machine learning อื่นๆ รู้สึกอับอาย ตัวอย่างเช่นปัจจุบันเครือข่ายประสาทสามารถทำสิ่งต่างๆเช่นตอบคำถาม : 

Jack อายุ 12 ปี Jane อายุ 10 ปี  Kate อายุมากกว่า Jane แต่เด็กกว่า Jack แล้ว Kate อายุเท่าไหร่? 

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

คุณจะได้รับตัวอย่างเป็นล้านๆจากสิ่งนี้ได้จากที่ไหน? คุณมีตัวเลือกบางอย่าง ตัวเลือกหนึ่งด้วยข้อมูลภาพ คือ ImageNet ซึ่งทำงานได้เหมือน wordnet ใน องค์กรของสิ่งต่างๆ  หากคุณไม่คุ้นเคยคุณสามารถกระตุ้นไปรอบๆเพื่อให้ได้ แนวคิด ทุกๆอย่างที่นี่ฟรี ต่อไปสำหรับข้อมูลข้อความ จุดหยุดแรกๆควรจะ เป็นบางสิ่งที่เหมือนกับ wikipedia data dumps นี่เป็นประโยชน์สำหรับงาน การเรียนรู้ที่ลึกซึ้งมากขึ้น ไม่มากนักสำหรับข้อมูลที่ติดฉลากถัดไปสำหรับข้อมูล ข้อความที่มากขึ้น ทำไมคุณถึง ไม่ไปหาเว็บไซต์ที่รวบรวมข้อมูลและวิเคราะห์ ข้อมูลสำหรับคุณอยู่แล้ว? ถ้าสิ่งนี้มันฟังดูน่าสนุก ไปดูที่ CommonCrawl ชุดข้อมูลนี้ไม่ใช่เรื่องตลก อย่างไรก็ตาม petabytes ของมันก็มีค่าของข้อมูล สำหรับสิ่งนี้ ผมไม่ได้รู้ทั้งหมด อีกตัวเลือกหนึ่ง คือ บางสิ่งบางอย่างที่เหมือน Tatoeba ซึ่งมีทั้งฉลากและแม้แต่การแปลบางอย่าง ซึ่งค่อนข้างที่จะมีประโยชน์ เมื่ออันอื่นๆทั้งหมดล้มเหลว คุณสามารถลองสร้าง ชุดข้อมูลของคุณเองได้ แต่ ความต้องการของขนาดค่อนข้างท้าทาย นอกจากนี้คุณ สามารถถามได้ตลอดเวลา ในประสบการณ์ของผม มันมีชุดข้อมูลสำหรับบางสิ่งบางอย่าง คุณจะต้องหามัน หลายๆครั้ง Google ทำให้คุณล้มเหลวเมื่อพยายามหาชุดข้อมูล แต่ผู้คนสามารถ ช่วยคุณได้ ในขณะนี้คุณอาจลองถามใน Machine Learning subreddit อาจเป็นไป ได้ว่า 90% ของสิ่งที่เกิดขึ้นมีเครือข่ายประสาทเทียมเกี่ยวข้องอยู่ด้วยและทุกคน จำเป็นที่จะต้องรู้เกี่ยวกับชุดข้อมูลขนาดใหญ่

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

ตอนนี้เราออกจากทางนั้นได้แล้ว เราจะมีวิธีการที่เราจะได้ทำงานเกี่ยวกับเครือข่าย ประสาทเทียมอย่างไร? เรากำลังจะใช้ TensorFlow ซึ่งเป็นแพคเกจใหม่ที่ค่อนข้าง ใหม่จาก Google ซึ่งยังอยู่ในช่วงเบต้าในขณะที่เขียนข้อมูลนี้ มีชุดอื่นๆ ที่ใช้ สำหรับ Learning Machine เช่น Theano หรือ Torch แต่มันทำงานในทิศทาง เดียวกัน เราจำเป็นที่จะต้องเลือกอย่างหนึ่ง ผมเลือก Tensorflow  ในการเรียน การสอนอันถัดไป เราจะต้องติดตั้ง Tensorflow ถ้าคุณติดตั้ง Tensorflow เรียบร้อยแล้ว คุณสามารถข้ามการเรียนการสอนอันต่อไปได้เลย (ใช้แถบนำทาง ด้านข้างหรือเพียงคลิกไปที่ ถัดไป ให้เลื่อนไปที่ด้านล่างแล้วคลิกถัดไปอีกครั้ง)

There exists 1 quiz/question(s) for this tutorial. [https://pythonprogramming. net/+=1/] for access to these, video downloads, and no ads.

การเรียนการสอนถัดไป : https://pythonprogramming.net/installing-tensorflow-machine-learning-tutorial/?completed=/neural-networks-machine-learning-tutorial/
 

References :

https://pythonprogramming.net/neural-networks-machine-learning-tutorial/

 


Tag ที่น่าสนใจ: neural_networks artificial_neural_network machine_learning deep_neural_network support_vector_machine svm linearity kernel classification regression feature_engineering perceptron synapse activation_function threshold


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

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ 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
แผนที่ ที่ตั้งของอาคารของเรา