เหตุใด NLP และชุมชนการเรียนรู้ของเครื่องจึงมีความสนใจในการเรียนรู้ลึก


24

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


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

2
ฉันอยากจะแนะนำไม่ให้ใช้ NLP และ ML ร่วมกันในบริบทเช่นว่าพวกเขาเป็นหน่วยงานที่เทียบเคียง มันเป็นเขตข้อมูล IMHO สองเขตที่แยกจากกันอย่างชัดเจน แม้จะมีข้อเท็จจริงที่ว่า NLP ใช้วิธีการ ML วิธีการอัลกอริธึมและเครื่องมือจำนวนมาก แต่ NLP เป็นฟิลด์ที่ใช้ในขณะที่ ML เป็นแบบทั่วไป (มากกว่า)
Aleksandr Blekh

คำตอบ:


27

ทำไมต้องใช้เครือข่ายลึก

ก่อนอื่นเราลองมาแก้ปัญหาการแบ่งประเภทอย่างง่าย ๆ สมมติว่าคุณกลั่นกรองฟอรัมเว็บซึ่งบางครั้งน้ำท่วมด้วยข้อความสแปม ข้อความเหล่านี้สามารถระบุตัวได้ง่าย - บ่อยครั้งที่พวกเขามีคำเฉพาะเช่น "ซื้อ", "สื่อลามก" ฯลฯ และ URL ไปยังแหล่งข้อมูลภายนอก คุณต้องการสร้างตัวกรองที่จะแจ้งเตือนคุณเกี่ยวกับข้อความที่น่าสงสัยดังกล่าว มันกลายเป็นเรื่องง่าย - คุณจะได้รับรายการฟีเจอร์ (เช่นรายการคำที่น่าสงสัยและการปรากฏตัวของ URL) และฝึกการถดถอยโลจิสติกอย่างง่าย (aka perceptron) เช่นโมเดล:

g(w0 + w1*x1 + w2*x2 + ... + wnxn)

x1..xnฟีเจอร์ของคุณอยู่ที่ไหน(ไม่ว่าจะมีคำเฉพาะหรือ URL), w0..wn- สัมประสิทธิ์เรียนรู้และg()เป็นฟังก์ชันลอจิสติกเพื่อให้ได้ผลลัพธ์ระหว่าง 0 ถึง 1 มันเป็นตัวจำแนกที่ง่ายมาก แต่สำหรับงานง่าย ๆ นี้ ขอบเขตการตัดสินใจเชิงเส้น สมมติว่าคุณใช้คุณสมบัติ 2 อย่างขอบเขตนี้อาจมีลักษณะดังนี้:

ขอบเขตเชิงเส้น

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

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

ขอบเขตที่ไม่ใช่เชิงเส้น

ขอบเขตการตัดสินใจที่ไม่ใช่เชิงเส้นใหม่นี้มีความยืดหยุ่นมากกว่าเช่นสามารถใส่ข้อมูลได้ใกล้ชิดมากขึ้น มีหลายวิธีที่จะบรรลุเป้าหมายนี้ไม่ใช่เส้นตรงมี - คุณสามารถใช้คุณลักษณะพหุนาม (เช่นx1^2) หรือการรวมกันของพวกเขา (เช่นx1*x2) หรือโครงการพวกเขาออกไปมิติที่สูงขึ้นเช่นเดียวกับในวิธีการเคอร์เนล แต่ในเครือข่ายนิวรัลมันเป็นเรื่องธรรมดาที่จะแก้มันด้วยการรวม perceptronsหรืออีกนัยหนึ่งด้วยการสร้างperceptron หลายชั้น. Non-linearity ที่นี่มาจากฟังก์ชันลอจิสติกระหว่างเลเยอร์ เลเยอร์ยิ่งมากขึ้นลวดลายที่ซับซ้อนมากขึ้นอาจถูกปกคลุมด้วย MLP Single layer (perceptron) สามารถจัดการกับการตรวจจับสแปมอย่างง่ายเครือข่ายที่มี 2-3 เลเยอร์สามารถตรวจจับการรวมกันของฟีเจอร์และเครือข่าย 5-9 เลเยอร์ใช้โดยห้องปฏิบัติการวิจัยขนาดใหญ่และ บริษัท เช่น Google อาจทำตัวเป็นภาษาทั้งหมดหรือตรวจจับแมว ในภาพ

นี่คือเหตุผลสำคัญที่จะมีสถาปัตยกรรมลึก - พวกเขาสามารถจำลองรูปแบบที่ซับซ้อนมากขึ้น

ทำไมเครือข่ายแบบลึกจึงฝึกยาก

มีเพียงหนึ่งคุณลักษณะและขอบเขตการตัดสินใจเชิงเส้นในความเป็นจริงเพียงพอที่จะมีเพียง 2 ตัวอย่างการฝึกอบรม - หนึ่งบวกและลบหนึ่ง ด้วยคุณสมบัติหลายประการและ / หรือขอบเขตการตัดสินใจที่ไม่ใช่เชิงเส้นที่คุณจำเป็นต้องสั่งซื้อหลายตัวอย่างเพิ่มเติมให้ครอบคลุมถึงกรณีที่เป็นไปได้ทั้งหมด (เช่นที่คุณต้องไม่เพียง แต่หาตัวอย่างที่มีword1, word2และword3แต่ยังมีเป็นไปได้ทั้งหมดรวมกันของพวกเขา) และในชีวิตจริงคุณต้องจัดการกับฟีเจอร์นับแสน (เช่นคำในภาษาหรือพิกเซลในภาพ) และอย่างน้อยก็หลายเลเยอร์เพื่อให้มีความไม่เชิงเส้นพอ ขนาดของชุดข้อมูลที่จำเป็นในการฝึกอบรมเครือข่ายดังกล่าวอย่างเต็มที่เกิน 10 ^ 30 ตัวอย่างได้อย่างง่ายดายทำให้เป็นไปไม่ได้เลยที่จะได้รับข้อมูลที่เพียงพอ กล่าวอีกนัยหนึ่งด้วยคุณสมบัติมากมายและเลเยอร์มากมายฟังก์ชันการตัดสินใจของเราจะยืดหยุ่นเกินไปเพื่อให้สามารถเรียนรู้ได้อย่างแม่นยำ

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

ในเครือข่ายนิวรัลมีความพยายามลดความซับซ้อน (ความยืดหยุ่น) ในการตัดสินใจ ตัวอย่างเช่นเครือข่าย convolutional ที่ใช้อย่างกว้างขวางในการจัดประเภทภาพสมมติว่ามีการเชื่อมต่อในพื้นที่ระหว่างพิกเซลใกล้เคียงเท่านั้นดังนั้นจึงลองเรียนรู้การรวมกันของพิกเซลใน "windows" ขนาดเล็ก (พูด, 16x16 พิกเซล = 256 เซลล์ประสาทอินพุต 256) 100x100 พิกเซล = 10000 เซลล์ประสาทนำเข้า) วิธีการอื่น ๆ รวมถึงคุณสมบัติทางวิศวกรรมเช่นการค้นหาตัวบ่งชี้เฉพาะของข้อมูลอินพุต

คุณสมบัติที่ค้นพบด้วยตนเองนั้นมีแนวโน้มที่จะเกิดขึ้นจริง ตัวอย่างเช่นในการประมวลผลภาษาธรรมชาติบางครั้งการใช้พจนานุกรมพิเศษ (เช่นคำที่มีคำเฉพาะสแปม) หรือการปฏิเสธ (เช่น " ไม่ดี") และในสิ่งที่ต้องใช้คอมพิวเตอร์วิสัยทัศน์เช่นSURF descriptorsหรือคุณสมบัติเหมือน Haarแทบจะไม่สามารถถูกแทนที่ได้

แต่ปัญหาเกี่ยวกับวิศวกรรมคุณลักษณะด้วยตนเองคือใช้เวลาหลายปีกว่าจะมีตัวอธิบายที่ดี นอกจากนี้คุณสมบัติเหล่านี้มักจะเฉพาะเจาะจง

ไม่มีการเตรียมการฝึกอบรมล่วงหน้า

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

การเรียนรู้ลึก

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

และอื่น ๆ ...

pretraining ที่ไม่มีผู้ดูแลได้มาถึงที่นี่มาระยะหนึ่งแล้ว แต่เมื่อไม่นานมานี้พบว่าอัลกอริทึมอื่น ๆ เพื่อปรับปรุงการเรียนรู้ทั้งสองพร้อมกับการเตรียมการล่วงหน้าและไม่ใช้มัน ตัวอย่างที่โดดเด่นอย่างหนึ่งของอัลกอริธึมดังกล่าวคือdropout - เทคนิคง่าย ๆ ที่สุ่ม "ดรอป" นิวรอนบางอย่างระหว่างการฝึกอบรมสร้างการบิดเบือนและป้องกันเครือข่ายของข้อมูลต่อไปนี้อย่างใกล้ชิดเกินไป นี่ยังคงเป็นหัวข้อวิจัยที่น่าสนใจดังนั้นฉันจึงทิ้งเรื่องนี้ไว้กับผู้อ่าน


3
คำอธิบายที่สวยงามนี่คือ!
Dawny33

6

ก่อนอื่นเราต้องเข้าใจว่าทำไมเราต้องเรียนรู้ลึก ในการสร้างแบบจำลอง ML จำเป็นต้องมีข้อมูลการทดสอบพร้อมป้ายกำกับ (แบบมีผู้ดูแลหรือไม่ได้รับการดูแล) ในหลายโดเมนเมื่อข้อมูลเติบโตขึ้นเรื่อย ๆ การรักษาข้อมูลด้วยป้ายกำกับนั้นเป็นเรื่องยาก เครือข่ายการเรียนรู้ขั้นสูงไม่จำเป็นต้องมีข้อมูลกำกับ อัลกอริทึมการเรียนรู้อย่างลึกซึ้งสามารถค้นหาฉลาก ดังนั้นสิ่งนี้จึงจำเป็นต้องให้ผู้เชี่ยวชาญด้านโดเมนออกมาพร้อมกับป้ายชื่อสำหรับข้อมูลซึ่งมีความสำคัญมากในด้านการรู้จำเสียงพูดการมองเห็นคอมพิวเตอร์และการเข้าใจภาษา การจดจำรูปภาพ Google Cat เป็นการทดลองที่น่าสนใจมาก นอกจากนี้ยังเป็นที่น่าสนใจที่จะรู้ว่า "เจฟฟรีย์ฮินตัน" อาจารย์ที่ได้รับการว่าจ้างจาก Google

http://www.wired.com/2014/01/geoffrey-hinton-deep-learning/

คุณอาจได้รับข้อมูลเชิงลึกมากขึ้นเมื่อคุณสำรวจในกรอบนี้


1
การเรียนรู้อย่างลึกซึ้งไม่สามารถแยกแยะฉลากได้ (เป็นไปได้อย่างไร) แต่เรียนรู้คุณลักษณะเท่านั้น คุณยังต้องการข้อมูลที่มีป้ายกำกับจำนวนหนึ่งและการเรียนรู้แบบมีผู้สอนเพื่อแก้ไขงานต่างๆเช่นการจำแนกประเภทหรือการถดถอย
แฟน

0

การเรียนรู้อย่างลึกซึ้งได้ดำเนินมาเป็นเวลานานแล้ว เครื่องจักรของ CNN, RNN, Boltzmann นั้นดูเหมือนว่าจะเป็นเทคนิคใหม่ แต่ก็พัฒนามานานแล้ว ตรวจสอบประวัติของการเรียนรู้อย่างลึกซึ้ง

https://en.wikipedia.org/wiki/Deep_learning#History

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

ฉันเชื่อว่าเนื่องจากปัจจัยเหล่านี้เราสามารถเห็นชุมชน NLP / ML จำนวนมากได้เปลี่ยนการมุ่งเน้นไปที่การเรียนรู้ลึก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.