สารบัญ:
- บทนำสู่ห้องสมุดเทนเซอร์ของ Torch
- กราฟการคำนวณและความแตกต่างโดยอัตโนมัติ
- การสร้างบล็อกการเรียนรู้ลึก: แผนที่เสริมความไม่เป็นเชิงเส้นและวัตถุประสงค์
- การเพิ่มประสิทธิภาพและการฝึกอบรม
- การสร้างส่วนประกอบเครือข่ายใน Pytorch
- ตัวอย่าง: ตัวจําแนกตัวจําแนกกระเป๋าการถดถอยโลจิสติก
- Word Embeddings: การเข้ารหัสความหมายคำศัพท์
- ตัวอย่าง: การสร้างแบบจำลองภาษา N-Gram
- แบบฝึกหัด: กระเป๋าคำต่อเนื่องสำหรับการเรียนรู้คำที่ฝังอยู่
- การสร้างแบบจำลองลำดับและเครือข่ายหน่วยความจำระยะยาวสั้น
- ตัวอย่าง: LSTM สำหรับการติดแท็กส่วนหนึ่งของคำพูด
- แบบฝึกหัด: การเพิ่ม LSTM Tagger ด้วยคุณสมบัติระดับตัวละคร
- ขั้นสูง: ชุดเครื่องมือแบบไดนามิกการเขียนโปรแกรมแบบไดนามิกและ Bilstm-CRF
- ตัวอย่าง: BI-LSTM แบบสุ่มแบบมีเงื่อนไขสำหรับการรับรู้ชื่อ-เอนไซม์
- แบบฝึกหัด: ฟังก์ชั่นการสูญเสียใหม่สำหรับการติดแท็กการเลือกปฏิบัติ
บทช่วยสอนนี้คืออะไร?
ฉันกำลังเขียนบทช่วยสอนนี้เพราะแม้ว่าจะมีบทเรียนอื่น ๆ อีกมากมาย แต่พวกเขาทั้งหมดดูเหมือนจะมีหนึ่งในสามปัญหา:
- พวกเขามีเนื้อหาจำนวนมากเกี่ยวกับการมองเห็นคอมพิวเตอร์และอวน Conv ซึ่งไม่เกี่ยวข้องกับ NLP ส่วนใหญ่ (แม้ว่าอวน Conv ได้ถูกนำไปใช้ในวิธีที่ยอดเยี่ยมในการแก้ไขปัญหา NLP)
- Pytorch เป็นแบรนด์ใหม่และการเรียนรู้อย่างลึกซึ้งมากมายสำหรับบทเรียน NLP อยู่ในกรอบเก่าและมักจะไม่ได้อยู่ในกรอบแบบไดนามิกเช่น Pytorch ซึ่งมีรสชาติที่แตกต่างกันโดยสิ้นเชิง
- ตัวอย่างไม่ได้ก้าวไปไกลเกินกว่ารูปแบบภาษา RNN และแสดงสิ่งที่ยอดเยี่ยมที่คุณสามารถทำได้เมื่อพยายามทำนายโครงสร้าง lingusitic ฉันคิดว่านี่เป็นปัญหาเพราะกราฟไดนามิกของ Pytorch ทำให้การทำนายโครงสร้างเป็นหนึ่งในจุดแข็งที่ใหญ่ที่สุด
โดยเฉพาะฉันกำลังเขียนบทช่วยสอนนี้สำหรับชั้นเรียนการประมวลผลภาษาธรรมชาติที่ Georgia Tech เพื่อบรรเทาปัญหาที่ฉันเขียนสำหรับชั้นเรียนเกี่ยวกับการแยกวิเคราะห์การเปลี่ยนแปลงลึก ชุดปัญหาใช้เทคนิคขั้นสูงบางอย่าง ความตั้งใจของการสอนนี้คือการครอบคลุมพื้นฐานเพื่อให้นักเรียนสามารถมุ่งเน้นไปที่แง่มุมที่ท้าทายมากขึ้นของชุดปัญหา จุดมุ่งหมายคือการเริ่มต้นด้วยพื้นฐานและเลื่อนขึ้นไปสู่การทำนายโครงสร้างทางภาษาซึ่งฉันรู้สึกว่าเกือบจะขาดหายไปในบทช่วยสอน pytorch อื่น ๆ พื้นฐานการเรียนรู้เชิงลึกทั่วไปมีงานแสดงสั้น ๆ หัวข้อที่เฉพาะเจาะจงมากขึ้นได้รับการอภิปรายเชิงลึกมากขึ้นแม้ว่าฉันจะอ้างถึงแหล่งข้อมูลอื่น ๆ เมื่อฉันรู้สึกว่าคำอธิบายเต็มรูปแบบจะเป็นการคิดค้นวงล้อใหม่และใช้พื้นที่มากเกินไป
ชุดปัญหาการแยกวิเคราะห์การพึ่งพา
ดังที่ได้กล่าวไว้ข้างต้นนี่คือชุดปัญหาที่ต้องผ่านการใช้ตัวแยกวิเคราะห์การพึ่งพาที่มีประสิทธิภาพสูงใน Pytorch ฉันต้องการเพิ่มลิงค์ที่นี่เนื่องจากอาจมีประโยชน์หากคุณไม่สนใจสิ่งที่เฉพาะเจาะจงสำหรับชั้นเรียน หมายเหตุเล็กน้อย:
- มีรหัสจำนวนมากดังนั้นจุดเริ่มต้นของชุดปัญหาจึงเป็นหลักเพื่อให้คนคุ้นเคยกับวิธีที่รหัสของฉันแสดงข้อมูลที่เกี่ยวข้องและอินเทอร์เฟซที่คุณต้องใช้ ส่วนที่เหลือของชุดปัญหาคือการใช้ส่วนประกอบสำหรับตัวแยกวิเคราะห์ เนื่องจากเราไม่ได้เรียนรู้อย่างลึกซึ้งในชั้นเรียนมาก่อนฉันจึงพยายามให้ความคิดเห็นและคำแนะนำจำนวนมหาศาลเมื่อเขียน
- มีการทดสอบหน่วยสำหรับการส่งมอบทุกครั้งซึ่งคุณสามารถทำงานด้วย nosetests
- เนื่องจากเราใช้ปัญหานี้ในชั้นเรียนโปรดอย่าโพสต์โซลูชั่นต่อสาธารณะ
- repo เดียวกันมีบันทึกย่อบางส่วนที่มีส่วนเกี่ยวกับการแยกการพึ่งพาการลดการเปลี่ยนแปลงหากคุณกำลังมองหาแหล่งข้อมูลที่เป็นลายลักษณ์อักษรเพื่อเติมเต็มชุดปัญหา
- ลิงค์ด้านบนอาจไม่ทำงานหากถูกนำมาใช้ในช่วงเริ่มต้นของภาคการศึกษาใหม่
ข้อมูลอ้างอิง:
- ฉันได้เรียนรู้มากมายเกี่ยวกับการทำนายโครงสร้างที่ลึกซึ้งที่ EMNLP 2016 จากบทช่วยสอนเรื่อง Dynet ที่ได้รับจาก Chris Dyer และ Graham Neubig แห่ง CMU และ Yoav Goldberg จาก Bar Ilan University Dynet เป็นแพ็คเกจที่ยอดเยี่ยมโดยเฉพาะอย่างยิ่งหากคุณต้องการใช้ C ++ และหลีกเลี่ยงการพิมพ์แบบไดนามิก การออกกำลังกาย Bilstm CRF ครั้งสุดท้ายและการออกกำลังกายระดับตัวละครเป็นสิ่งที่ฉันเรียนรู้จากบทช่วยสอนนี้
- หนังสือที่ยอดเยี่ยมเกี่ยวกับการทำนายโครงสร้างคือการทำนายโครงสร้างทางภาษาโดยโนอาห์สมิ ธ มันไม่ได้ใช้การเรียนรู้อย่างลึกซึ้ง แต่ก็โอเค
- หนังสือเรียนรู้ลึกที่ดีที่สุดที่ฉันรู้คือการเรียนรู้อย่างลึกซึ้งซึ่งเป็นผู้มีส่วนร่วมหลักบางคนในสาขาและครอบคลุมมากแม้ว่าจะไม่มีการมุ่งเน้น NLP ออนไลน์ฟรี แต่คุ้มค่าที่จะอยู่บนชั้นวางของคุณ
แบบฝึกหัด:
มีแบบฝึกหัดสองสามอย่างในบทช่วยสอนซึ่งไม่ว่าจะเป็นการใช้โมเดลยอดนิยม (CBOW) หรือเพิ่มหนึ่งในโมเดลของฉัน การออกกำลังกายคุณสมบัติระดับตัวละครโดยเฉพาะอย่างยิ่งไม่ใช่เรื่องสำคัญ แต่มีประโยชน์มาก (ฉันไม่สามารถอ้างอิงตัวเลขที่แน่นอนได้ แต่ฉันได้ทำการทดลองมาก่อนและโดยปกติแล้วคุณสมบัติระดับตัวละครจะเพิ่มความแม่นยำ 2-3%) เนื่องจากพวกเขาไม่ใช่แบบฝึกหัดง่าย ๆ ฉันจะนำพวกเขาไปใช้ในไม่ช้าและเพิ่มพวกเขาลงใน repo
ข้อเสนอแนะ:
โปรดเปิดปัญหา GitHub หากคุณพบข้อผิดพลาดใด ๆ หรือคิดว่ามีรูปแบบเฉพาะที่จะเป็นประโยชน์ในการเพิ่ม