สารบัญ[ซ่อน][แสดง]
ในช่วงไม่กี่ปีมานี้ โครงข่ายประสาทเทียมได้รับความนิยมเพิ่มขึ้น เนื่องจากเครือข่ายนี้ทำงานได้ดีมากในงานต่างๆ ที่หลากหลาย
พวกเขาแสดงให้เห็นว่าเป็นตัวเลือกที่ยอดเยี่ยมสำหรับการจดจำภาพและเสียง การประมวลผลภาษาธรรมชาติ และแม้กระทั่งการเล่นเกมที่ซับซ้อน เช่น โกะและหมากรุก
ในโพสต์นี้ ฉันจะแนะนำคุณตลอดกระบวนการฝึกอบรมโครงข่ายประสาทเทียม ฉันจะพูดถึงและอธิบายขั้นตอนทั้งหมดในการฝึกโครงข่ายประสาทเทียม
ในขณะที่ฉันจะอธิบายทีละขั้นตอน ฉันต้องการเพิ่มตัวอย่างง่ายๆ เพื่อให้แน่ใจว่ามีตัวอย่างที่ใช้ได้จริงเช่นกัน
เอาล่ะ มาเรียนรู้วิธีการประมวลผลนิวรัลเน็ตเวิร์กกันเถอะ
มาเริ่มกันง่ายๆ แล้วถามว่าคืออะไร เครือข่ายประสาทเทียม ในที่แรก.
โครงข่ายประสาทเทียมคืออะไรกันแน่?
โครงข่ายประสาทเทียมเป็นซอฟต์แวร์คอมพิวเตอร์ที่จำลองการทำงานของสมองมนุษย์ พวกเขาสามารถเรียนรู้จากข้อมูลจำนวนมหาศาลและรูปแบบจุดที่ผู้คนอาจตรวจพบได้ยาก
โครงข่ายประสาทเทียมได้รับความนิยมเพิ่มขึ้นในช่วงไม่กี่ปีที่ผ่านมา เนื่องจากความสามารถรอบด้านในงานต่างๆ เช่น การจดจำภาพและเสียง การประมวลผลภาษาธรรมชาติ และการสร้างแบบจำลองเชิงทำนาย
โดยรวมแล้วโครงข่ายประสาทเทียมเป็นเครื่องมือที่แข็งแกร่งสำหรับการใช้งานที่หลากหลาย และมีโอกาสที่จะเปลี่ยนวิธีที่เราเข้าหางานที่หลากหลาย
ทำไมเราควรรู้เกี่ยวกับพวกเขา?
การทำความเข้าใจโครงข่ายประสาทเทียมมีความสำคัญอย่างยิ่ง เนื่องจากสิ่งเหล่านี้นำไปสู่การค้นพบในหลากหลายสาขา รวมถึงการมองเห็นด้วยคอมพิวเตอร์ การรู้จำเสียง และการประมวลผลภาษาธรรมชาติ
ตัวอย่างเช่น โครงข่ายประสาทเทียมเป็นหัวใจสำคัญของการพัฒนาล่าสุดในรถยนต์ไร้คนขับ บริการแปลภาษาอัตโนมัติ และแม้แต่การวินิจฉัยทางการแพทย์
การทำความเข้าใจว่าโครงข่ายประสาทเทียมทำงานอย่างไรและออกแบบอย่างไรช่วยให้เราสร้างแอปพลิเคชันใหม่และสร้างสรรค์ได้ และบางทีอาจนำไปสู่การค้นพบที่ยิ่งใหญ่กว่านี้ในอนาคต
หมายเหตุเกี่ยวกับบทช่วยสอน
อย่างที่กล่าวไปข้างต้น ผมขออธิบายขั้นตอนการฝึกโครงข่ายประสาทเทียมโดยยกตัวอย่าง ในการทำเช่นนี้ เราควรพูดถึงชุดข้อมูล MNIST เป็นตัวเลือกยอดนิยมสำหรับผู้เริ่มต้นที่ต้องการเริ่มต้นใช้งานโครงข่ายประสาทเทียม
MNIST เป็นตัวย่อที่ย่อมาจาก Modified National Institute of Standards and Technology เป็นชุดข้อมูลหลักที่เขียนด้วยลายมือที่ใช้กันทั่วไปสำหรับการฝึกอบรมและทดสอบโมเดลแมชชีนเลิร์นนิง โดยเฉพาะโครงข่ายประสาทเทียม
คอลเลกชั่นนี้ประกอบด้วยภาพถ่ายระดับสีเทาจำนวน 70,000 ภาพที่มีตัวเลขที่เขียนด้วยลายมือตั้งแต่ 0 ถึง 9
ชุดข้อมูล MNIST เป็นเกณฑ์มาตรฐานยอดนิยมสำหรับ การจำแนกภาพ งาน มักใช้สำหรับการเรียนการสอนเนื่องจากมีขนาดกะทัดรัดและง่ายต่อการจัดการ ในขณะที่อัลกอริทึมการเรียนรู้ของเครื่องจะตอบคำถามได้ยาก
ชุดข้อมูล MNIST ได้รับการสนับสนุนโดยเฟรมเวิร์กการเรียนรู้ของเครื่องและไลบรารีต่างๆ รวมถึง TensorFlow, Keras และ PyTorch
ตอนนี้เรารู้เกี่ยวกับชุดข้อมูล MNIST แล้ว เรามาเริ่มกันที่ขั้นตอนการฝึกอบรมโครงข่ายประสาทเทียมกัน
ขั้นตอนพื้นฐานในการฝึกโครงข่ายประสาทเทียม
นำเข้าไลบรารีที่จำเป็น
เมื่อเริ่มฝึกโครงข่ายประสาทเทียมเป็นครั้งแรก จำเป็นต้องมีเครื่องมือที่จำเป็นในการออกแบบและฝึกโมเดล ขั้นตอนเริ่มต้นในการสร้างโครงข่ายประสาทเทียมคือการนำเข้าไลบรารีที่จำเป็น เช่น TensorFlow, Keras และ NumPy
ไลบรารีเหล่านี้ทำหน้าที่เป็นส่วนประกอบสำคัญสำหรับการพัฒนาโครงข่ายประสาทเทียมและมอบความสามารถที่สำคัญ การรวมกันของไลบรารีเหล่านี้ช่วยให้สามารถสร้างการออกแบบโครงข่ายประสาทเทียมที่ซับซ้อนและการฝึกอบรมที่รวดเร็ว
เพื่อเริ่มต้นตัวอย่างของเรา เราจะนำเข้าไลบรารีที่จำเป็น ซึ่งรวมถึง TensorFlow, Keras และ NumPy TensorFlow เป็นเฟรมเวิร์กแมชชีนเลิร์นนิงแบบโอเพ่นซอร์ส Keras เป็น API เครือข่ายประสาทระดับสูง และ NumPy เป็นไลบรารี Python สำหรับการคำนวณเชิงตัวเลข
import tensorflow as tf
from tensorflow import keras
import numpy as np
โหลดชุดข้อมูล
ตอนนี้ต้องโหลดชุดข้อมูล ชุดข้อมูลคือชุดข้อมูลที่จะฝึกโครงข่ายประสาทเทียม ซึ่งอาจเป็นข้อมูลประเภทใดก็ได้ รวมถึงภาพถ่าย เสียง และข้อความ
สิ่งสำคัญคือต้องแบ่งชุดข้อมูลออกเป็นสองส่วน ส่วนหนึ่งสำหรับการฝึกอบรมโครงข่ายประสาทเทียม และอีกส่วนสำหรับการประเมินความถูกต้องของแบบจำลองที่ผ่านการฝึกอบรม อาจใช้ไลบรารีต่างๆ รวมถึง TensorFlow, Keras และ PyTorch เพื่อนำเข้าชุดข้อมูล
ตัวอย่างเช่น เราใช้ Keras เพื่อโหลดชุดข้อมูล MNIST มีภาพถ่ายการฝึกอบรม 60,000 ภาพและภาพการทดสอบ 10,000 ภาพในชุดข้อมูล
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
ประมวลผลข้อมูลล่วงหน้า
การประมวลผลข้อมูลล่วงหน้าเป็นขั้นตอนสำคัญในการฝึกอบรมโครงข่ายประสาทเทียม มันเกี่ยวข้องกับการเตรียมและทำความสะอาดข้อมูลก่อนที่จะป้อนเข้าสู่โครงข่ายประสาทเทียม
การปรับขนาดค่าพิกเซล การทำให้ข้อมูลเป็นมาตรฐาน และการแปลงฉลากเป็นการเข้ารหัสแบบ one-hot คือตัวอย่างของขั้นตอนการประมวลผลล่วงหน้า กระบวนการเหล่านี้ช่วยให้โครงข่ายประสาทเทียมเรียนรู้ได้อย่างมีประสิทธิภาพและแม่นยำยิ่งขึ้น
การประมวลผลข้อมูลล่วงหน้ายังสามารถช่วยลดการทำงานเกินพอดีและปรับปรุงประสิทธิภาพของโครงข่ายประสาทเทียม
คุณต้องประมวลผลข้อมูลล่วงหน้าก่อนที่จะฝึกโครงข่ายประสาทเทียม ซึ่งรวมถึงการเปลี่ยนป้ายกำกับเป็นการเข้ารหัสแบบ one-hot และปรับขนาดค่าพิกเซลให้อยู่ระหว่าง 0 ถึง 1
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
กำหนดรูปแบบ
กระบวนการกำหนดโมเดลโครงข่ายประสาทเกี่ยวข้องกับการสร้างสถาปัตยกรรมของมัน เช่น จำนวนเลเยอร์ จำนวนเซลล์ประสาทต่อเลเยอร์ ฟังก์ชันการเปิดใช้งาน และประเภทเครือข่าย
การออกแบบโครงข่ายประสาทเทียมที่คุณใช้นั้นพิจารณาจากประเภทของปัญหาที่คุณกำลังพยายามแก้ไข การออกแบบโครงข่ายประสาทเทียมที่ชัดเจนสามารถช่วยในการเรียนรู้โครงข่ายประสาทเทียมโดยทำให้มีประสิทธิภาพและแม่นยำยิ่งขึ้น
ถึงเวลาอธิบายแบบจำลองเครือข่ายประสาท ณ จุดนี้ ใช้โมเดลอย่างง่ายที่มีเลเยอร์ซ่อนอยู่ 128 เลเยอร์ แต่ละเลเยอร์มีเซลล์ประสาท 10 เซลล์ และเลเยอร์เอาท์พุตแบบซอฟต์แม็กซ์ซึ่งมีเซลล์ประสาท XNUMX เซลล์ สำหรับตัวอย่างนี้
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
รวบรวมโมเดล
ต้องระบุฟังก์ชันการสูญเสีย ตัวเพิ่มประสิทธิภาพ และเมตริกในระหว่างการรวบรวมโมเดลโครงข่ายประสาทเทียม ความสามารถของโครงข่ายประสาทเทียมในการพยากรณ์เอาต์พุตได้อย่างถูกต้องนั้นวัดจากฟังก์ชันการสูญเสีย
เพื่อเพิ่มความแม่นยำของโครงข่ายประสาทเทียมระหว่างการฝึก เครื่องมือเพิ่มประสิทธิภาพจะแก้ไขน้ำหนักของมัน ประสิทธิภาพของโครงข่ายประสาทเทียมระหว่างการฝึกอบรมนั้นวัดโดยใช้เมตริก ต้องสร้างแบบจำลองก่อนที่จะสามารถฝึกโครงข่ายประสาทเทียมได้
ในตัวอย่างของเรา ตอนนี้เราต้องสร้างแบบจำลอง
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
ฝึกโมเดล
การส่งชุดข้อมูลที่เตรียมไว้ผ่านโครงข่ายประสาทเทียมในขณะที่ปรับเปลี่ยนน้ำหนักของเครือข่ายเพื่อลดการสูญเสียฟังก์ชัน เรียกว่าการฝึกอบรมโครงข่ายประสาทเทียม
ชุดข้อมูลการตรวจสอบจะใช้ในการทดสอบโครงข่ายประสาทเทียมระหว่างการฝึกอบรมเพื่อติดตามประสิทธิภาพและป้องกันการโอเวอร์ฟิต กระบวนการฝึกอบรมอาจใช้เวลาสักครู่ ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องแน่ใจว่าโครงข่ายประสาทเทียมได้รับการฝึกอบรมอย่างเหมาะสมเพื่อป้องกันการทำงานเกินมาตรฐาน
เมื่อใช้ข้อมูลการฝึก เราสามารถฝึกโมเดลได้แล้ว ในการทำเช่นนี้ เราต้องกำหนดขนาดแบทช์ (จำนวนของตัวอย่างที่ประมวลผลก่อนที่โมเดลจะได้รับการอัปเดต) และจำนวนของยุค (จำนวนของการทำซ้ำในชุดข้อมูลทั้งหมด)
model.fit(train_images, train_labels, epochs=10, batch_size=32)
การประเมินแบบจำลอง
การทดสอบประสิทธิภาพของโครงข่ายประสาทเทียมในชุดข้อมูลทดสอบคือขั้นตอนการประเมิน ในขั้นตอนนี้ โครงข่ายประสาทเทียมที่ผ่านการฝึกอบรมจะใช้ในการประมวลผลชุดข้อมูลทดสอบ และประเมินความแม่นยำ
เครือข่ายนิวรัลมีประสิทธิภาพเพียงใดที่สามารถคาดการณ์ผลลัพธ์ที่ถูกต้องจากข้อมูลใหม่เอี่ยมที่ยังไม่ผ่านการทดสอบเป็นการวัดความแม่นยำ การวิเคราะห์แบบจำลองอาจช่วยพิจารณาว่าโครงข่ายประสาทเทียมทำงานได้ดีเพียงใด และยังแนะนำวิธีที่จะทำให้ดียิ่งขึ้นไปอีก
ในที่สุดเราก็สามารถประเมินประสิทธิภาพของโมเดลโดยใช้ข้อมูลการทดสอบหลังการฝึกอบรม
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
นั่นคือทั้งหมด! เราฝึกโครงข่ายประสาทเทียมเพื่อตรวจหาตัวเลขในชุดข้อมูล MNIST
ตั้งแต่การเตรียมข้อมูลไปจนถึงการประเมินประสิทธิภาพของโมเดลที่ผ่านการฝึกอบรม การฝึกอบรมโครงข่ายประสาทเทียมเกี่ยวข้องกับกระบวนการหลายอย่าง คำแนะนำเหล่านี้ช่วยมือใหม่ในการสร้างและฝึกอบรมโครงข่ายประสาทเทียมได้อย่างมีประสิทธิภาพ
ผู้เริ่มต้นที่ต้องการใช้โครงข่ายประสาทเทียมเพื่อจัดการกับปัญหาต่างๆ สามารถทำได้โดยทำตามคำแนะนำเหล่านี้
การแสดงภาพตัวอย่าง
ลองนึกภาพสิ่งที่เราได้ทำกับตัวอย่างนี้เพื่อทำความเข้าใจให้ดียิ่งขึ้น
แพ็คเกจ Matplotlib ใช้ในข้อมูลโค้ดนี้เพื่อวางแผนการเลือกรูปภาพแบบสุ่มจากชุดข้อมูลการฝึกอบรม ขั้นแรก เรานำเข้าโมดูล "pyplot" ของ Matplotlib และเรียกมันว่า "plt" จากนั้น ด้วยขนาดรวม 10 คูณ 10 นิ้ว เราสร้างตัวเลขที่มี 5 แถวและ 5 คอลัมน์ของแผนย่อย
จากนั้น เราใช้ for วนซ้ำเพื่อวนซ้ำแผนย่อย โดยแสดงรูปภาพจากชุดข้อมูลการฝึกอบรมในแต่ละรายการ ในการแสดงรูปภาพ จะใช้ฟังก์ชัน “imshow” โดยตั้งค่าตัวเลือก “cmap” เป็น 'สีเทา' เพื่อแสดงภาพถ่ายในโทนสีเทา ชื่อเรื่องของแผนย่อยแต่ละรายการจะถูกตั้งค่าเป็นป้ายกำกับของรูปภาพที่เกี่ยวข้องในคอลเลกชัน
สุดท้าย เราใช้ฟังก์ชัน "แสดง" เพื่อแสดงรูปภาพที่วางแผนไว้ในรูป ฟังก์ชันนี้ช่วยให้เราสามารถประเมินตัวอย่างภาพถ่ายจากชุดข้อมูลได้ด้วยสายตา ซึ่งสามารถช่วยให้เราเข้าใจข้อมูลและระบุข้อกังวลที่อาจเกิดขึ้นได้
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
โมเดลเครือข่ายประสาทที่สำคัญ
- โครงข่ายประสาทเทียมป้อนไปข้างหน้า (FFNN): โครงข่ายประสาทเทียมแบบธรรมดาที่ข้อมูลเดินทางได้ทางเดียวเท่านั้น จากชั้นอินพุตไปยังชั้นเอาต์พุตผ่านชั้นที่ซ่อนอยู่อย่างน้อยหนึ่งชั้น
- Convolutional Neural Networks (ซีเอ็นเอ็น): โครงข่ายประสาทเทียมที่ใช้กันทั่วไปในการตรวจจับและประมวลผลภาพ CNN มีวัตถุประสงค์เพื่อจดจำและแยกคุณสมบัติจากรูปภาพโดยอัตโนมัติ
- เครือข่ายประสาทกำเริบ (RNN): โครงข่ายประสาทเทียมที่ใช้กันทั่วไปในการตรวจจับและประมวลผลภาพ CNN มีวัตถุประสงค์เพื่อจดจำและแยกคุณสมบัติจากรูปภาพโดยอัตโนมัติ
- เครือข่ายหน่วยความจำระยะสั้นระยะยาว (LSTM): รูปแบบของ RNN ที่สร้างขึ้นเพื่อแก้ปัญหาการไล่ระดับสีที่หายไปใน RNN มาตรฐาน การพึ่งพาระยะยาวในข้อมูลตามลำดับสามารถบันทึกได้ดีขึ้นด้วย LSTM
- ตัวเข้ารหัสอัตโนมัติ: เครือข่ายประสาทการเรียนรู้ที่ไม่มีผู้ดูแลซึ่งเครือข่ายได้รับการสอนให้ทำซ้ำข้อมูลอินพุตที่ชั้นเอาต์พุต การบีบอัดข้อมูล การตรวจจับสิ่งผิดปกติ และการลดจุดรบกวนของภาพอาจทำได้ทั้งหมดด้วยโปรแกรมเข้ารหัสอัตโนมัติ
- เครือข่ายปฏิปักษ์ทั่วไป (GAN): โครงข่ายประสาทกำเนิดเป็นรูปแบบหนึ่งของโครงข่ายประสาทเทียมที่ได้รับการสอนให้สร้างข้อมูลใหม่ที่เทียบได้กับชุดข้อมูลการฝึกอบรม GAN ประกอบด้วยสองเครือข่าย: เครือข่ายตัวสร้างที่สร้างข้อมูลใหม่และเครือข่ายตัวแยกแยะที่ประเมินคุณภาพของข้อมูลที่สร้างขึ้น
สรุป ขั้นตอนต่อไปของคุณควรเป็นอย่างไร
สำรวจแหล่งข้อมูลออนไลน์และหลักสูตรต่างๆ เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการฝึกอบรมโครงข่ายประสาทเทียม การทำงานในโครงการหรือตัวอย่างเป็นวิธีการหนึ่งในการทำความเข้าใจโครงข่ายประสาทเทียมให้ดียิ่งขึ้น
เริ่มต้นด้วยตัวอย่างง่ายๆ เช่น ปัญหาการจัดประเภทไบนารีหรืองานการจัดประเภทรูปภาพ จากนั้นไปที่งานที่ยากขึ้น เช่น การประมวลผลภาษาธรรมชาติ หรือ การเรียนรู้การเสริมแรง.
การทำงานในโครงการช่วยให้คุณได้รับประสบการณ์จริงและพัฒนาทักษะการฝึกอบรมโครงข่ายประสาทเทียมของคุณ
คุณยังสามารถเข้าร่วมการเรียนรู้ของเครื่องออนไลน์และกลุ่มเครือข่ายนิวรัลและฟอรัมเพื่อโต้ตอบกับผู้เรียนและผู้เชี่ยวชาญคนอื่นๆ แบ่งปันงานของคุณ และรับความคิดเห็นและความช่วยเหลือ
แอลเอสอาร์เอส มอนราด-โครห์น
⁶ĵ อยากเห็นโปรแกรม python เพื่อลดข้อผิดพลาดให้เหลือน้อยที่สุด โหนดการเลือกพิเศษสำหรับการเปลี่ยนแปลงน้ำหนักไปยังเลเยอร์ถัดไป