เมื่อเร็ว ๆ นี้ฉันได้อ่านเกี่ยวกับการเรียนรู้อย่างลึกซึ้งและฉันสับสนเกี่ยวกับข้อกำหนด (หรือพูดเทคโนโลยี) อะไรคือความแตกต่างระหว่าง
- เครือข่ายประสาทเทียม (CNN),
- เครื่อง Boltzmann ที่ จำกัด (RBM) และ
- -เข้ารหัสอัตโนมัติ?
เมื่อเร็ว ๆ นี้ฉันได้อ่านเกี่ยวกับการเรียนรู้อย่างลึกซึ้งและฉันสับสนเกี่ยวกับข้อกำหนด (หรือพูดเทคโนโลยี) อะไรคือความแตกต่างระหว่าง
คำตอบ:
Autoencoderเป็น 3 ชั้นเครือข่ายประสาทง่ายๆที่หน่วยการส่งออกมีการเชื่อมต่อโดยตรงกลับไปยังหน่วยการป้อนข้อมูล เช่นในเครือข่ายเช่นนี้:
output[i]
มีขอบกลับไปทุกครั้งinput[i]
i
โดยทั่วไปจำนวนหน่วยที่ซ่อนอยู่จะน้อยกว่าจำนวนที่มองเห็นได้ (อินพุต / เอาต์พุต) ด้วยเหตุนี้เมื่อคุณส่งข้อมูลผ่านเครือข่ายดังกล่าวอันดับแรกจะบีบอัด (เข้ารหัส) เวกเตอร์อินพุตให้ "พอดี" ในรูปแบบที่เล็กลงแล้วจึงพยายามสร้างใหม่ (ถอดรหัส) กลับมาใหม่ ภารกิจของการฝึกอบรมคือการลดข้อผิดพลาดหรือการสร้างใหม่ให้น้อยที่สุดเช่นค้นหาการแทนค่าแบบกะทัดรัด (การเข้ารหัส) ที่มีประสิทธิภาพที่สุดสำหรับข้อมูลอินพุต
RBMแชร์แนวคิดที่คล้ายกัน แต่ใช้วิธีสุ่ม แทนที่จะเป็นการกำหนดขึ้น (เช่น logistic หรือ ReLU) มันใช้หน่วยสุ่มที่มีการแจกแจงแบบพิเศษ ขั้นตอนการเรียนรู้ประกอบด้วยหลายขั้นตอนของการสุ่มตัวอย่างกิ๊บส์ (เผยแพร่: ตัวอย่าง hiddens ให้ visibles; สร้างใหม่: ตัวอย่าง visibles ให้ hiddens ซ้ำ) และปรับน้ำหนักเพื่อลดข้อผิดพลาดในการสร้างใหม่
สัญชาตญาณเบื้องหลัง RBMs คือมีตัวแปรสุ่มบางอย่างที่มองเห็นได้ (เช่นบทวิจารณ์ภาพยนตร์จากผู้ใช้ที่แตกต่างกัน) และตัวแปรซ่อนเร้น (เช่นประเภทภาพยนตร์หรือคุณลักษณะภายในอื่น ๆ ) และหน้าที่ของการฝึกอบรมคือการค้นหาว่าชุดตัวแปรทั้งสองนี้เป็นอย่างไร เชื่อมต่อกัน (เพิ่มเติมในตัวอย่างนี้อาจพบได้ที่นี่ )
Convolutional Neural Networksค่อนข้างคล้ายกับสองสิ่งนี้ แต่แทนที่จะเรียนรู้เมทริกซ์น้ำหนักทั่วโลกเดี่ยวระหว่างสองเลเยอร์พวกเขาตั้งเป้าหมายที่จะหาชุดของเซลล์ประสาทที่เชื่อมต่อในพื้นที่ ซีเอ็นเอ็นส่วนใหญ่จะใช้ในการรับรู้ภาพ ชื่อของพวกเขามาจากโอเปอเรเตอร์ "convolution"หรือเพียงแค่ "filter" ในระยะสั้นตัวกรองเป็นวิธีที่ง่ายในการดำเนินการที่ซับซ้อนโดยการเปลี่ยนเคอร์เนล convolution อย่างง่าย ใช้เคอร์เนลเบลอเกาส์และคุณจะทำให้มันราบรื่น ใช้เคอร์เนล Canny และคุณจะเห็นขอบทั้งหมด ใช้เคอร์เนล Gabor เพื่อรับคุณสมบัติการไล่ระดับสี
(ภาพจากที่นี่ )
เป้าหมายของเครือข่ายประสาทสับสนไม่ได้ที่จะใช้หนึ่งในเมล็ดที่กำหนดไว้ล่วงหน้า แต่แทนที่จะไปเรียนรู้เมล็ดข้อมูลที่เฉพาะเจาะจง แนวคิดนั้นเหมือนกับ autoencoders หรือ RBMs - แปลคุณสมบัติระดับต่ำจำนวนมาก (เช่นบทวิจารณ์จากผู้ใช้หรือพิกเซลภาพ) ไปสู่การแสดงระดับสูงที่ถูกบีบอัด (เช่นประเภทภาพยนตร์หรือขอบ) - แต่ตอนนี้น้ำหนักได้เรียนรู้จากเซลล์ประสาทเท่านั้น ใกล้เชิงพื้นที่ซึ่งกันและกัน
ทั้งสามรุ่นมีกรณีการใช้ข้อดีและข้อเสีย แต่คุณสมบัติที่สำคัญที่สุดคือ:
UPD
การลดขนาด
เมื่อเราแสดงวัตถุบางอย่างเป็นเวกเตอร์ขององค์ประกอบเราบอกว่านี่เป็นเวกเตอร์ในพื้นที่ -dimensional ดังนั้นการลดมิติหมายถึงกระบวนการของข้อมูลการกลั่นในลักษณะที่ว่าแต่ละข้อมูลเวกเตอร์จะแปลเป็นอีกเวกเตอร์ในพื้นที่มิติ (เวกเตอร์กับองค์ประกอบ) ที่<n น่าจะเป็นวิธีที่ใช้กันมากที่สุดของการทำเช่นนี้คือPCA PCA พูดอย่างหยาบ ๆ ว่า "แกนภายใน" ของชุดข้อมูล (เรียกว่า "ส่วนประกอบ") และเรียงลำดับตามความสำคัญ แรกส่วนประกอบที่สำคัญที่สุดจะถูกใช้เป็นพื้นฐานใหม่ แต่ละองค์ประกอบเหล่านี้อาจถูกมองว่าเป็นคุณสมบัติระดับสูงโดยอธิบายเวกเตอร์ข้อมูลได้ดีกว่าแกนดั้งเดิม
ทั้ง - ตัวเข้ารหัสอัตโนมัติและ RBM ทำสิ่งเดียวกัน การเวกเตอร์ในพื้นที่มิติที่พวกเขาแปลเป็นมิติหนึ่งพยายามที่จะให้ข้อมูลเป็นสิ่งที่สำคัญมากที่สุดเท่าที่เป็นไปได้และในเวลาเดียวกันลบเสียงรบกวน หากการฝึกอบรม autoencoder / RBM ประสบความสำเร็จแต่ละองค์ประกอบของผลเวกเตอร์ (เช่นแต่ละหน่วยที่ซ่อนอยู่) แสดงถึงสิ่งที่สำคัญเกี่ยวกับวัตถุ - รูปร่างของคิ้วในภาพประเภทของภาพยนตร์สาขาการศึกษาในบทความทางวิทยาศาสตร์ ฯลฯ คุณ ใช้ข้อมูลที่มีเสียงดังเป็นข้อมูลนำเข้าจำนวนมากและให้ข้อมูลที่น้อยลงในรูปแบบที่มีประสิทธิภาพมากกว่า
สถาปัตยกรรมลึก
ดังนั้นถ้าเรามี PCA แล้วทำไมเราถึงสร้างระบบเข้ารหัสอัตโนมัติและ RBM ขึ้นมา? ปรากฎว่า PCA อนุญาตการแปลงเชิงเส้นของเวกเตอร์ข้อมูลเท่านั้น นั่นคือมีองค์ประกอบหลักคุณสามารถเป็นตัวแทนของเวกเตอร์เท่านั้นxมันค่อนข้างดีอยู่แล้ว แต่ก็ไม่เพียงพอ ไม่ว่าคุณจะใช้ PCA กับข้อมูลกี่ครั้งก็ตามความสัมพันธ์จะยังคงเป็นเส้นตรงเสมอ
ในทางกลับกัน Autoencoders และ RBMs นั้นมีลักษณะไม่เป็นเส้นตรงดังนั้นจึงสามารถเรียนรู้ความสัมพันธ์ที่ซับซ้อนระหว่างหน่วยที่มองเห็นและที่ซ่อนอยู่ได้ ยิ่งไปกว่านั้นพวกมันยังสามารถเรียงซ้อนกันซึ่งทำให้มีประสิทธิภาพยิ่งขึ้น เช่นคุณรถไฟ RBM กับที่มองเห็นและหน่วยที่ซ่อนแล้วคุณใส่ RBM อื่นที่มีที่มองเห็นและหน่วยที่ซ่อนอยู่ด้านบนของคนแรกและฝึกมันมากเกินไป ฯลฯ และตรงทางเดียวกันกับ autoencoders
แต่คุณไม่เพียงเพิ่มเลเยอร์ใหม่ ในแต่ละเลเยอร์คุณพยายามที่จะเรียนรู้การแสดงข้อมูลที่ดีที่สุดจากอันก่อนหน้านี้:
ในภาพด้านบนมีตัวอย่างของเครือข่ายที่ลึก เราเริ่มต้นด้วยพิกเซลธรรมดาดำเนินการต่อด้วยฟิลเตอร์อย่างง่ายจากนั้นมีองค์ประกอบใบหน้าและในที่สุดก็จบลงด้วยใบหน้าทั้งหมด! นี่คือสาระสำคัญของการเรียนรู้ลึก
ตอนนี้โปรดทราบว่าในตัวอย่างนี้เราทำงานกับข้อมูลภาพและใช้พื้นที่พิกเซลที่มีขนาดใหญ่ขึ้นและใหญ่ขึ้นตามลำดับ มันฟังดูไม่เหมือนกันเหรอ? ใช่เพราะเป็นตัวอย่างของเครือข่ายการสนทนาที่ลึกซึ้ง ไม่ว่าจะเป็นตาม autoencoders หรือ RBMs มันใช้ convolution เพื่อเน้นความสำคัญของท้องถิ่น นั่นเป็นเหตุผลที่ CNN ค่อนข้างแตกต่างจากระบบเข้ารหัสอัตโนมัติและ RBM
การจำแนกประเภท
ไม่มีรุ่นใดที่กล่าวถึงที่นี่ทำงานเป็นอัลกอริทึมการจำแนกประเภทต่อ se แต่จะใช้สำหรับการเตรียมการล่วงหน้า - การเรียนรู้การแปลงจากการเป็นตัวแทนระดับต่ำและยากต่อการบริโภค (เช่นพิกเซล) เป็นระดับสูง เมื่อเครือข่ายที่ลึก (หรืออาจจะไม่ลึก) ถูกพินิจพิเคราะห์เวกเตอร์อินพุตจะถูกเปลี่ยนให้เป็นตัวแทนที่ดีกว่าและเวกเตอร์ที่ได้จะถูกส่งผ่านไปยังลักษณนามจริง (เช่น SVM หรือการถดถอยโลจิสติก) ในภาพด้านบนหมายความว่าที่ด้านล่างสุดมีส่วนประกอบอีกหนึ่งอย่างที่จำแนกได้
สถาปัตยกรรมเหล่านี้ทั้งหมดสามารถตีความได้ว่าเป็นเครือข่ายประสาท ข้อแตกต่างที่สำคัญระหว่าง AutoEncoder และ Convolutional Network คือระดับของการเดินสายเครือข่าย ตาข่าย Convolutional ค่อนข้างเดินสายมาก การทำงานของ Convolution นั้นค่อนข้างเฉพาะในโดเมนรูปภาพซึ่งหมายถึงการกระจัดกระจายในจำนวนการเชื่อมต่อในมุมมองเครือข่ายประสาท การดำเนินการรวมกลุ่ม (การสุ่มตัวอย่าง) ในโดเมนอิมเมจเป็นชุดการเชื่อมต่อโครงข่ายประสาทในโดเมนประสาท ข้อ จำกัด ทอพอโลยีดังกล่าวในโครงสร้างเครือข่าย ด้วยข้อ จำกัด ดังกล่าวการฝึกอบรมของ CNN จะเรียนรู้น้ำหนักที่ดีที่สุดสำหรับการดำเนินการโน้มน้าวใจนี้ (ในทางปฏิบัติมีตัวกรองหลายตัว) ซีเอ็นเอ็นมักใช้สำหรับงานด้านรูปภาพและการพูดที่มีข้อ จำกัด ทาง convolutional เป็นข้อสันนิษฐานที่ดี
ในทางตรงกันข้าม Autoencoders แทบไม่ได้ระบุอะไรเลยเกี่ยวกับทอพอโลยีของเครือข่าย พวกเขามีทั่วไปมากขึ้น ความคิดคือการหาการเปลี่ยนแปลงของระบบประสาทที่ดีในการสร้างอินพุตใหม่ พวกเขาประกอบด้วย encoder (โครงการอินพุตไปยังเลเยอร์ที่ซ่อนอยู่) และถอดรหัส (reprojects เลเยอร์ที่ซ่อนอยู่เพื่อเอาท์พุท) เลเยอร์ที่ซ่อนอยู่จะเรียนรู้ชุดคุณสมบัติแฝงหรือปัจจัยแฝง ระบบเข้ารหัสอัตโนมัติเชิงเส้นตรงจะขยายพื้นที่ย่อยเดียวกันด้วย PCA ให้ชุดข้อมูลพวกเขาเรียนรู้จำนวนพื้นฐานเพื่ออธิบายรูปแบบพื้นฐานของข้อมูล
RBMs ยังเป็นเครือข่ายประสาท แต่การตีความเครือข่ายแตกต่างกันโดยสิ้นเชิง RBM ตีความเครือข่ายว่าไม่ใช่ feedforward แต่เป็นกราฟสองส่วนที่ความคิดคือการเรียนรู้การกระจายความน่าจะเป็นแบบร่วมของตัวแปรซ่อนและอินพุต พวกเขาถูกมองว่าเป็นรูปแบบกราฟิก โปรดจำไว้ว่าทั้ง AutoEncoder และ CNN เรียนรู้ฟังก์ชันที่กำหนดไว้ ในทางกลับกัน RBMs เป็นรูปแบบกำเนิด มันสามารถสร้างตัวอย่างจากการเรียนรู้ที่เป็นตัวแทนที่ซ่อนอยู่ มีอัลกอริทึมต่าง ๆ ในการฝึกอบรม RBM อย่างไรก็ตามในตอนท้ายของวันหลังจากเรียนรู้ RBM คุณสามารถใช้น้ำหนักเครือข่ายของมันเพื่อตีความว่าเป็นเครือข่าย feedforward
RBM สามารถมองได้ว่าเป็นตัวเข้ารหัสอัตโนมัติที่น่าจะเป็น ที่จริงแล้วมันแสดงให้เห็นว่าภายใต้เงื่อนไขบางอย่างที่พวกเขากลายเป็นเทียบเท่า
อย่างไรก็ตามมันยากมากที่จะแสดงความเท่าเทียมกันนี้มากกว่าเพียงแค่เชื่อว่าพวกมันเป็นสัตว์ที่แตกต่างกัน อันที่จริงฉันพบว่ามันยากที่จะหาสิ่งที่คล้ายคลึงกันมากในหมู่ทั้งสามทันทีที่ฉันเริ่มมองอย่างใกล้ชิด
เช่นถ้าคุณจดบันทึกฟังก์ชั่นที่ใช้โดยตัวเข้ารหัสอัตโนมัติ RBM และ CNN คุณจะได้รับนิพจน์ทางคณิตศาสตร์ที่แตกต่างกันสามแบบ
ฉันไม่สามารถบอกคุณเกี่ยวกับ RBM ได้มากนัก แต่ระบบเข้ารหัสอัตโนมัติและ CNN เป็นสองสิ่งที่แตกต่างกัน autoencoder เป็นเครือข่ายประสาทที่ได้รับการฝึกฝนในแบบที่ไม่มีผู้ดูแล เป้าหมายของเครื่องสร้างรหัสอัตโนมัติคือการหาข้อมูลที่มีขนาดกะทัดรัดมากขึ้นโดยการเรียนรู้โปรแกรมเปลี่ยนไฟล์ซึ่งแปลงข้อมูลให้เป็นตัวแทนขนาดกะทัดรัดที่สอดคล้องกันและถอดรหัสซึ่งสร้างข้อมูลต้นฉบับขึ้นใหม่ ส่วนเข้ารหัสของ autoencoders (และ RBM เดิม) ถูกใช้เพื่อเรียนรู้น้ำหนักเริ่มต้นที่ดีของสถาปัตยกรรมที่ลึกกว่า แต่มีแอปพลิเคชันอื่น ๆ โดยพื้นฐานแล้วตัวเข้ารหัสอัตโนมัติเรียนรู้การจัดกลุ่มของข้อมูล ในทางตรงกันข้ามคำว่า CNN หมายถึงเครือข่ายประสาทชนิดหนึ่งซึ่งใช้ตัวดำเนินการแบบ Convolution (มักจะเป็นแบบ 2D เมื่อใช้สำหรับงานการประมวลผลภาพ) เพื่อแยกคุณสมบัติออกจากข้อมูล ในการประมวลผลภาพตัวกรอง ที่ซับซ้อนกับรูปภาพได้เรียนรู้โดยอัตโนมัติเพื่อแก้ปัญหาในมือเช่นงานจัดหมวดหมู่ ไม่ว่าจะเป็นเกณฑ์การฝึกอบรมการถดถอย / การจัดหมวดหมู่ (ภายใต้การดูแล) หรือการสร้างใหม่ (ไม่ได้รับการดูแล) นั้นไม่เกี่ยวข้องกับแนวคิดเรื่องการโน้มน้าวใจเป็นทางเลือกในการแปลงเลียนแบบ คุณยังสามารถมีตัวเข้ารหัสอัตโนมัติของ CNN